1522
1521
FLD.RDB$COLLATION_ID.NULL = TRUE;
1523
1522
FLD.RDB$CHARACTER_SET_ID.NULL = TRUE;
1524
1523
FLD.RDB$FIELD_PRECISION.NULL = TRUE;
1528
while ((verb = *(*ptr)++) != isc_dyn_end)
1526
while ((verb = *(*ptr)++) != isc_dyn_end)
1532
case isc_dyn_description:
1533
if (DYN_put_text_blob(gbl, ptr, &PRM.RDB$DESCRIPTION))
1534
PRM.RDB$DESCRIPTION.NULL = FALSE;
1536
PRM.RDB$DESCRIPTION.NULL = TRUE;
1539
case isc_dyn_prm_number:
1540
PRM.RDB$PARAMETER_NUMBER = (SSHORT) DYN_get_number(ptr);
1541
PRM.RDB$PARAMETER_NUMBER.NULL = FALSE;
1544
case isc_dyn_prm_type:
1545
PRM.RDB$PARAMETER_TYPE = (SSHORT) DYN_get_number(ptr);
1546
PRM.RDB$PARAMETER_TYPE.NULL = FALSE;
1549
case isc_dyn_fld_not_null:
1550
if (ENCODE_ODS(dbb->dbb_ods_version, dbb->dbb_minor_original) < ODS_11_1)
1552
// Feature not supported on ODS version older than %d.%d
1553
ERR_post(Arg::Gds(isc_dsql_feature_not_supported_ods) <<
1554
Arg::Num(11) << Arg::Num(1));
1557
PRM.RDB$NULL_FLAG = TRUE;
1558
PRM.RDB$NULL_FLAG.NULL = FALSE;
1561
case isc_dyn_fld_length:
1562
FLD.RDB$FIELD_LENGTH = (USHORT) DYN_get_number(ptr);
1563
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1566
case isc_dyn_fld_type:
1567
FLD.RDB$FIELD_TYPE = (USHORT) DYN_get_number(ptr);
1568
FLD.RDB$FIELD_TYPE.NULL = FALSE;
1570
switch (FLD.RDB$FIELD_TYPE)
1573
FLD.RDB$FIELD_LENGTH = 2;
1574
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1581
FLD.RDB$FIELD_LENGTH = 4;
1582
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1590
FLD.RDB$FIELD_LENGTH = 8;
1591
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1530
case isc_dyn_prm_number:
1531
PRM.RDB$PARAMETER_NUMBER = (SSHORT) DYN_get_number(ptr);
1532
PRM.RDB$PARAMETER_NUMBER.NULL = FALSE;
1535
case isc_dyn_prm_type:
1536
PRM.RDB$PARAMETER_TYPE = (SSHORT) DYN_get_number(ptr);
1537
PRM.RDB$PARAMETER_TYPE.NULL = FALSE;
1540
case isc_dyn_fld_not_null:
1541
if (ENCODE_ODS(dbb->dbb_ods_version, dbb->dbb_minor_original) < ODS_11_1)
1543
// Feature not supported on ODS version older than %d.%d
1544
ERR_post(Arg::Gds(isc_dsql_feature_not_supported_ods) <<
1545
Arg::Num(11) << Arg::Num(1));
1548
PRM.RDB$NULL_FLAG = TRUE;
1549
PRM.RDB$NULL_FLAG.NULL = FALSE;
1552
case isc_dyn_fld_length:
1553
FLD.RDB$FIELD_LENGTH = (USHORT) DYN_get_number(ptr);
1554
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1557
case isc_dyn_fld_type:
1558
FLD.RDB$FIELD_TYPE = (USHORT) DYN_get_number(ptr);
1559
FLD.RDB$FIELD_TYPE.NULL = FALSE;
1561
switch (FLD.RDB$FIELD_TYPE)
1564
FLD.RDB$FIELD_LENGTH = 2;
1565
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1572
FLD.RDB$FIELD_LENGTH = 4;
1573
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1581
FLD.RDB$FIELD_LENGTH = 8;
1582
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1586
if (FLD.RDB$FIELD_TYPE == blr_blob)
1588
FLD.RDB$FIELD_LENGTH = 8;
1589
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1595
case isc_dyn_fld_scale:
1596
FLD.RDB$FIELD_SCALE = (SSHORT) DYN_get_number(ptr);
1597
FLD.RDB$FIELD_SCALE.NULL = FALSE;
1600
case isc_dyn_fld_precision:
1601
FLD.RDB$FIELD_PRECISION = (SSHORT) DYN_get_number(ptr);
1602
FLD.RDB$FIELD_PRECISION.NULL = FALSE;
1605
case isc_dyn_fld_sub_type:
1606
FLD.RDB$FIELD_SUB_TYPE = (SSHORT) DYN_get_number(ptr);
1607
FLD.RDB$FIELD_SUB_TYPE.NULL = FALSE;
1610
case isc_dyn_fld_char_length:
1611
FLD.RDB$CHARACTER_LENGTH = (USHORT) DYN_get_number(ptr);
1612
FLD.RDB$CHARACTER_LENGTH.NULL = FALSE;
1615
case isc_dyn_fld_character_set:
1616
FLD.RDB$CHARACTER_SET_ID = (SSHORT) DYN_get_number(ptr);
1617
FLD.RDB$CHARACTER_SET_ID.NULL = FALSE;
1620
case isc_dyn_fld_collation:
1621
FLD.RDB$COLLATION_ID = (SSHORT) DYN_get_number(ptr);
1622
FLD.RDB$COLLATION_ID.NULL = FALSE;
1625
case isc_dyn_fld_segment_length:
1626
FLD.RDB$SEGMENT_LENGTH = (USHORT) DYN_get_number(ptr);
1627
FLD.RDB$SEGMENT_LENGTH.NULL = FALSE;
1630
case isc_dyn_fld_default_value:
1631
DYN_put_blr_blob(gbl, ptr, &FLD.RDB$DEFAULT_VALUE);
1632
FLD.RDB$DEFAULT_VALUE.NULL = FALSE;
1635
case isc_dyn_fld_default_source:
1636
DYN_put_text_blob(gbl, ptr, &FLD.RDB$DEFAULT_SOURCE);
1637
FLD.RDB$DEFAULT_SOURCE.NULL = FALSE;
1640
case isc_dyn_prm_mechanism:
1641
PRM.RDB$PARAMETER_MECHANISM = (prm_mech_t) DYN_get_number(ptr);
1642
PRM.RDB$PARAMETER_MECHANISM.NULL = FALSE;
1595
if (FLD.RDB$FIELD_TYPE == blr_blob)
1597
FLD.RDB$FIELD_LENGTH = 8;
1598
FLD.RDB$FIELD_LENGTH.NULL = FALSE;
1646
DYN_unsupported_verb();
1604
case isc_dyn_fld_scale:
1605
FLD.RDB$FIELD_SCALE = (SSHORT) DYN_get_number(ptr);
1606
FLD.RDB$FIELD_SCALE.NULL = FALSE;
1609
case isc_dyn_fld_precision:
1610
FLD.RDB$FIELD_PRECISION = (SSHORT) DYN_get_number(ptr);
1611
FLD.RDB$FIELD_PRECISION.NULL = FALSE;
1614
case isc_dyn_fld_sub_type:
1615
FLD.RDB$FIELD_SUB_TYPE = (SSHORT) DYN_get_number(ptr);
1616
FLD.RDB$FIELD_SUB_TYPE.NULL = FALSE;
1619
case isc_dyn_fld_char_length:
1620
FLD.RDB$CHARACTER_LENGTH = (USHORT) DYN_get_number(ptr);
1621
FLD.RDB$CHARACTER_LENGTH.NULL = FALSE;
1624
case isc_dyn_fld_character_set:
1625
FLD.RDB$CHARACTER_SET_ID = (SSHORT) DYN_get_number(ptr);
1626
FLD.RDB$CHARACTER_SET_ID.NULL = FALSE;
1629
case isc_dyn_fld_collation:
1630
FLD.RDB$COLLATION_ID = (SSHORT) DYN_get_number(ptr);
1631
FLD.RDB$COLLATION_ID.NULL = FALSE;
1634
case isc_dyn_fld_segment_length:
1635
FLD.RDB$SEGMENT_LENGTH = (USHORT) DYN_get_number(ptr);
1636
FLD.RDB$SEGMENT_LENGTH.NULL = FALSE;
1639
case isc_dyn_fld_default_value:
1640
DYN_put_blr_blob(gbl, ptr, &FLD.RDB$DEFAULT_VALUE);
1641
FLD.RDB$DEFAULT_VALUE.NULL = FALSE;
1644
case isc_dyn_fld_default_source:
1645
DYN_put_text_blob(gbl, ptr, &FLD.RDB$DEFAULT_SOURCE);
1646
FLD.RDB$DEFAULT_SOURCE.NULL = FALSE;
1649
case isc_dyn_prm_mechanism:
1650
PRM.RDB$PARAMETER_MECHANISM = (prm_mech_t) DYN_get_number(ptr);
1651
PRM.RDB$PARAMETER_MECHANISM.NULL = FALSE;
1655
DYN_unsupported_verb();
1650
END_MODIFY END_MODIFY
1659
END_MODIFY END_MODIFY
1663
1655
if (!DYN_REQUEST(drq_m_prm))
1664
1656
DYN_REQUEST(drq_m_prm) = request;
1666
catch (const Exception& ex) {
1658
catch (const Exception& ex)
1667
1660
stuff_exception(tdbb->tdbb_status_vector, ex);
1668
1661
DYN_rundown_request(request, -1);
1669
1662
DYN_error_punt(true, 100);