Build Version : T2.0.0.5521 Firebird 2.0 UNSTABLE (writeBuildNum.sh,v 1.5521 2003/11/05 09:02:29 robocop Exp ) Update of /cvsroot/firebird/firebird2/src/jrd In directory sc8-pr-cvs1:/tmp/cvs-serv32501/src/jrd Modified Files: alt.cpp constants.h cvt.cpp cvt2.cpp cvt2_proto.h cvt_proto.h dyn.epp dyn.h dyn_def.epp dyn_del.epp dyn_df_proto.h dyn_dl_proto.h dyn_md_proto.h dyn_mod.epp dyn_proto.h dyn_ut_proto.h dyn_util.epp entry.h err.cpp err_proto.h exe.cpp exe.h flu.cpp flu_proto.h gdsold.h ibase.h intl.cpp intl_builtin.cpp intl_classes.h intl_proto.h intlobj.h jrd.cpp jrd_proto.h msg.h quad.cpp quad_proto.h why.cpp Log Message: const correctness function signatures variables in local scope BOOLEAN -> bool TEXT[32] as SqlIdentifier for DYN Stop random garbage in firebird.msg's bytes 8 to 11 some cleanup Index: alt.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/alt.cpp,v retrieving revision 1.33 retrieving revision 1.34 diff -b -U3 -r1.33 -r1.34 --- alt.cpp 1 Nov 2003 10:26:39 -0000 1.33 +++ alt.cpp 5 Nov 2003 09:02:23 -0000 1.34 @@ -609,9 +609,10 @@ return isc_unwind_request(status_vector, req_handle, req_level); } -ISC_STATUS API_ROUTINE gds__ddl(ISC_STATUS * status_vector, - FRBRD **db_handle, - FRBRD **tra_handle, SSHORT ddl_length, SCHAR * ddl) +ISC_STATUS API_ROUTINE gds__ddl(ISC_STATUS* status_vector, + FRBRD** db_handle, + FRBRD** tra_handle, + SSHORT ddl_length, const SCHAR* ddl) { return isc_ddl(status_vector, db_handle, tra_handle, ddl_length, ddl); } Index: constants.h =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/constants.h,v retrieving revision 1.6 retrieving revision 1.7 diff -b -U3 -r1.6 -r1.7 --- constants.h 3 Nov 2003 17:14:44 -0000 1.6 +++ constants.h 5 Nov 2003 09:02:24 -0000 1.7 @@ -54,22 +54,26 @@ #define MAX_COLUMN_SIZE 32767 /* Bytes */ - - - /* Misc constant values */ #define USERNAME_LENGTH 31 /* Bytes */ +const int MAX_SQL_IDENTIFIER_SIZE = 32; +const int MAX_SQL_IDENTIFIER_LEN = 31; +typedef TEXT SqlIdentifier[MAX_SQL_IDENTIFIER_SIZE]; + /* literal strings in rdb$ref_constraints to be used to identify the cascade actions for referential constraints. Used by isql/show and isql/extract for now. */ -#define RI_ACTION_CASCADE "CASCADE" -#define RI_ACTION_NULL "SET NULL" -#define RI_ACTION_DEFAULT "SET DEFAULT" -#define RI_ACTION_NONE "NO ACTION" -#define RI_RESTRICT "RESTRICT" +const char* const RI_ACTION_CASCADE = "CASCADE"; +const char* const RI_ACTION_NULL = "SET NULL"; +const char* const RI_ACTION_DEFAULT = "SET DEFAULT"; +const char* const RI_ACTION_NONE = "NO ACTION"; +const char* const RI_RESTRICT = "RESTRICT"; + +const char* const IMPLICIT_DOMAIN_PREFIX = "RDB$"; +const int IMPLICIT_DOMAIN_PREFIX_LEN = 4; /******************************************/ Index: cvt.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/cvt.cpp,v retrieving revision 1.29 retrieving revision 1.30 diff -b -U3 -r1.29 -r1.30 --- cvt.cpp 3 Nov 2003 23:53:50 -0000 1.29 +++ cvt.cpp 5 Nov 2003 09:02:24 -0000 1.30 @@ -92,7 +92,7 @@ double MTH$CVT_D_G(), MTH$CVT_G_D(); #endif -/* ERR_post is used to flag whether we were called from mov.c or +/* ERR_post is used to flag whether we were called from mov.cpp or anywhere else CVT is used from (by comparing with param err) */ /* normally the following two definitions are part of limits.h @@ -175,13 +175,13 @@ static TEXT* error_string(const char*, SSHORT); #endif -static void conversion_error(const dsc*, FPTR_STATUS); -static void datetime_to_text(const dsc*, dsc*, FPTR_STATUS); -static SSHORT decompose(const char*, USHORT, SSHORT, SLONG*, FPTR_STATUS); -static void float_to_text(const dsc*, dsc*, FPTR_STATUS); -static void integer_to_text(const dsc*, dsc*, FPTR_STATUS); +static void conversion_error(const dsc*, FPTR_ERROR); +static void datetime_to_text(const dsc*, dsc*, FPTR_ERROR); +static SSHORT decompose(const char*, USHORT, SSHORT, SLONG*, FPTR_ERROR); +static void float_to_text(const dsc*, dsc*, FPTR_ERROR); +static void integer_to_text(const dsc*, dsc*, FPTR_ERROR); static void string_to_datetime(const dsc*, GDS_TIMESTAMP*, EXPECT_DATETIME, - FPTR_STATUS); + FPTR_ERROR); static double power_of_ten(const int); #ifndef NATIVE_QUAD @@ -214,12 +214,8 @@ #include "../jrd/quad.cpp" #endif -#pragma FB_COMPILER_MESSAGE("Fix this! Ugly function pointer cast!") -typedef void (*pfn_cvt_private_cludge) (int, int); -typedef void (*pfn_cvt_private_cludge2) (int, int, ...); - -double CVT_date_to_double(const dsc* desc, FPTR_STATUS err) +double CVT_date_to_double(const dsc* desc, FPTR_ERROR err) { /************************************** * @@ -281,7 +277,7 @@ } -void CVT_double_to_date(double real, SLONG fixed[2], FPTR_STATUS err) +void CVT_double_to_date(double real, SLONG fixed[2], FPTR_ERROR err) { /************************************** * @@ -303,7 +299,7 @@ } -double CVT_get_double(const dsc* desc, FPTR_STATUS err) +double CVT_get_double(const dsc* desc, FPTR_ERROR err) { /************************************** * @@ -505,7 +501,7 @@ } -SLONG CVT_get_long(const dsc* desc, SSHORT scale, FPTR_STATUS err) +SLONG CVT_get_long(const dsc* desc, SSHORT scale, FPTR_ERROR err) { /************************************** * @@ -686,7 +682,7 @@ UCHAR CVT_get_numeric(const UCHAR* string, const USHORT length, - SSHORT* scale, double* ptr, FPTR_STATUS err) + SSHORT* scale, double* ptr, FPTR_ERROR err) { /************************************** * @@ -799,7 +795,7 @@ } -SQUAD CVT_get_quad(const dsc* desc, SSHORT scale, FPTR_STATUS err) +SQUAD CVT_get_quad(const dsc* desc, SSHORT scale, FPTR_ERROR err) { /************************************** * @@ -955,7 +951,7 @@ } -SINT64 CVT_get_int64(const dsc* desc, SSHORT scale, FPTR_STATUS err) +SINT64 CVT_get_int64(const dsc* desc, SSHORT scale, FPTR_ERROR err) { /************************************** * @@ -1104,7 +1100,7 @@ USHORT CVT_get_string_ptr(const dsc* desc, USHORT* ttype, UCHAR** address, - vary* temp, USHORT length, FPTR_STATUS err) + vary* temp, USHORT length, FPTR_ERROR err) { /************************************** * @@ -1172,7 +1168,7 @@ } -GDS_DATE CVT_get_sql_date(const dsc* desc, FPTR_STATUS err) +GDS_DATE CVT_get_sql_date(const dsc* desc, FPTR_ERROR err) { /************************************** * @@ -1198,7 +1194,7 @@ } -GDS_TIME CVT_get_sql_time(const dsc* desc, FPTR_STATUS err) +GDS_TIME CVT_get_sql_time(const dsc* desc, FPTR_ERROR err) { /************************************** * @@ -1224,7 +1220,7 @@ } -GDS_TIMESTAMP CVT_get_timestamp(const dsc* desc, FPTR_STATUS err) +GDS_TIMESTAMP CVT_get_timestamp(const dsc* desc, FPTR_ERROR err) { /************************************** * @@ -1255,7 +1251,7 @@ const char** address, VARY* temp, USHORT length, - FPTR_STATUS err) + FPTR_ERROR err) { /************************************** * @@ -1305,7 +1301,7 @@ } -void CVT_move(const dsc* from, dsc* to, FPTR_STATUS err) +void CVT_move(const dsc* from, dsc* to, FPTR_ERROR err) { /************************************** * @@ -1698,7 +1694,8 @@ } if (to->dsc_dtype != from->dsc_dtype) - (*err) (gds_wish_list, gds_arg_gds, gds_blobnotsup, gds_arg_string, "move", 0); + (*err) (gds_wish_list, gds_arg_gds, gds_blobnotsup, + gds_arg_string, "move", 0); /* Note: DSC_EQUIV failed above as the blob sub_types were different, * or their character sets were different. In V4 we aren't trying @@ -1758,13 +1755,16 @@ } if (from->dsc_dtype == dtype_array || from->dsc_dtype == dtype_blob) - (*err) (gds_wish_list, gds_arg_gds, gds_blobnotsup, gds_arg_string, "move", 0); + { + (*err) (gds_wish_list, gds_arg_gds, gds_blobnotsup, + gds_arg_string, "move", 0); + } (*err) (gds_badblk, 0); /* internal error */ } -static void conversion_error(const dsc* desc, FPTR_STATUS err) +static void conversion_error(const dsc* desc, FPTR_ERROR err) { /************************************** * @@ -1800,7 +1800,7 @@ } -static void datetime_to_text(const dsc* from, dsc* to, FPTR_STATUS err) +static void datetime_to_text(const dsc* from, dsc* to, FPTR_ERROR err) { /************************************** * @@ -1845,7 +1845,7 @@ date = *(GDS_TIMESTAMP *) from->dsc_address; break; default: - fb_assert(false); + fb_assert(FALSE); (*err) (gds_badblk, 0); /* internal error */ break; } @@ -1930,7 +1930,7 @@ USHORT length, SSHORT dtype, SLONG* return_value, - FPTR_STATUS err) + FPTR_ERROR err) { /************************************** * @@ -1985,8 +1985,10 @@ (*err) (gds_arith_except, 0); else if (((*p > '8') && (sign == -1)) || ((*p > '7') && (sign != -1))) + { (*err) (gds_arith_except, 0); } + } value = value * 10 + *p - '0'; if (fraction) @@ -2097,7 +2099,7 @@ #endif -static void float_to_text(const dsc* from, dsc* to, FPTR_STATUS err) +static void float_to_text(const dsc* from, dsc* to, FPTR_ERROR err) { /************************************** * @@ -2212,7 +2214,7 @@ } -static void integer_to_text(const dsc* from, dsc* to, FPTR_STATUS err) +static void integer_to_text(const dsc* from, dsc* to, FPTR_ERROR err) { /************************************** * @@ -2357,7 +2359,7 @@ static void string_to_datetime( const dsc* desc, GDS_TIMESTAMP* date, - EXPECT_DATETIME expect_type, FPTR_STATUS err) + EXPECT_DATETIME expect_type, FPTR_ERROR err) { /************************************** * Index: cvt2.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/cvt2.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -b -U3 -r1.18 -r1.19 --- cvt2.cpp 3 Nov 2003 23:53:50 -0000 1.18 +++ cvt2.cpp 5 Nov 2003 09:02:24 -0000 1.19 @@ -97,7 +97,8 @@ dtype_long + 1 }; /* int64 goes right after long */ -SSHORT CVT2_compare(const dsc* arg1, const dsc* arg2, FPTR_STATUS err) + +SSHORT CVT2_compare(const dsc* arg1, const dsc* arg2, FPTR_ERROR err) { /************************************** * @@ -109,7 +110,6 @@ * Compare two descriptors. Return (-1, 0, 1) if a<b, a=b, or a>b. * **************************************/ - UCHAR *p1, *p2; USHORT length, length2; SSHORT fill; USHORT t1, t2; @@ -125,9 +125,10 @@ /* Handle the simple (matched) ones first */ if (arg1->dsc_dtype == arg2->dsc_dtype && - arg1->dsc_scale == arg2->dsc_scale) { - p1 = arg1->dsc_address; - p2 = arg2->dsc_address; + arg1->dsc_scale == arg2->dsc_scale) + { + const UCHAR* p1 = arg1->dsc_address; + const UCHAR* p2 = arg2->dsc_address; switch (arg1->dsc_dtype) { case dtype_short: @@ -318,6 +319,8 @@ ) return INTL_compare(tdbb, arg1, arg2, err); + UCHAR* p1 = NULL; + UCHAR* p2 = NULL; length = CVT_get_string_ptr(arg1, &t1, &p1, NULL, 0, err); length2 = CVT_get_string_ptr(arg2, &t2, &p2, NULL, 0, err); @@ -488,11 +491,8 @@ return CVT2_blob_compare(arg1, arg2, err); case dtype_array: - (*err) (gds_wish_list, - gds_arg_gds, - gds_blobnotsup, - gds_arg_string, "compare", - 0); + (*err) (gds_wish_list, gds_arg_gds, gds_blobnotsup, + gds_arg_string, "compare", 0); break; default: @@ -503,7 +503,7 @@ } -SSHORT CVT2_blob_compare(const dsc* arg1, const dsc* arg2, FPTR_STATUS err) +SSHORT CVT2_blob_compare(const dsc* arg1, const dsc* arg2, FPTR_ERROR err) { /************************************** * @@ -780,7 +780,7 @@ } -void CVT2_get_name(const dsc* desc, TEXT* string, FPTR_STATUS err) +void CVT2_get_name(const dsc* desc, TEXT* string, FPTR_ERROR err) { /************************************** * @@ -808,7 +808,7 @@ USHORT CVT2_make_string2(const dsc* desc, USHORT to_interp, UCHAR** address, - VARY* temp, USHORT length, STR* ptr, FPTR_STATUS err) + VARY* temp, USHORT length, STR* ptr, FPTR_ERROR err) { /************************************** * Index: cvt2_proto.h =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/cvt2_proto.h,v retrieving revision 1.6 retrieving revision 1.7 diff -b -U3 -r1.6 -r1.7 --- cvt2_proto.h 3 Nov 2003 17:14:44 -0000 1.6 +++ cvt2_proto.h 5 Nov 2003 09:02:24 -0000 1.7 @@ -24,11 +24,11 @@ #ifndef JRD_CVT2_PROTO_H #define JRD_CVT2_PROTO_H -SSHORT CVT2_compare(const dsc*, const dsc*, FPTR_STATUS); -SSHORT CVT2_blob_compare(const dsc*, const dsc*, FPTR_STATUS); -void CVT2_get_name(const dsc*, TEXT*, FPTR_STATUS); +SSHORT CVT2_compare(const dsc*, const dsc*, FPTR_ERROR); +SSHORT CVT2_blob_compare(const dsc*, const dsc*, FPTR_ERROR); +void CVT2_get_name(const dsc*, TEXT*, FPTR_ERROR); USHORT CVT2_make_string2(const dsc*, USHORT, UCHAR**, vary*, - USHORT, str**, FPTR_STATUS); + USHORT, str**, FPTR_ERROR); #endif // JRD_CVT2_PROTO_H Index: cvt_proto.h =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/cvt_proto.h,v retrieving revision 1.10 retrieving revision 1.11 diff -b -U3 -r1.10 -r1.11 --- cvt_proto.h 3 Nov 2003 17:14:44 -0000 1.10 +++ cvt_proto.h 5 Nov 2003 09:02:24 -0000 1.11 @@ -24,21 +24,22 @@ #ifndef JRD_CVT_PROTO_H #define JRD_CVT_PROTO_H -double CVT_date_to_double(const dsc*, FPTR_STATUS); -void CVT_double_to_date(double, SLONG[2], FPTR_STATUS); -double CVT_get_double(const dsc*, FPTR_STATUS); -SLONG CVT_get_long(const dsc*, SSHORT, FPTR_STATUS); -SINT64 CVT_get_int64(const dsc*, SSHORT, FPTR_STATUS); -UCHAR CVT_get_numeric(const UCHAR*, const USHORT, SSHORT*, double*, FPTR_STATUS); -SQUAD CVT_get_quad(const dsc*, SSHORT, FPTR_STATUS); +double CVT_date_to_double(const dsc*, FPTR_ERROR); +void CVT_double_to_date(double, SLONG[2], FPTR_ERROR); +double CVT_get_double(const dsc*, FPTR_ERROR); +SLONG CVT_get_long(const dsc*, SSHORT, FPTR_ERROR); +SINT64 CVT_get_int64(const dsc*, SSHORT, FPTR_ERROR); +UCHAR CVT_get_numeric(const UCHAR*, const USHORT, SSHORT*, double*, + FPTR_ERROR); +SQUAD CVT_get_quad(const dsc*, SSHORT, FPTR_ERROR); USHORT CVT_get_string_ptr(const dsc*, USHORT*, UCHAR**, - vary*, USHORT, FPTR_STATUS); -GDS_DATE CVT_get_sql_date(const dsc*, FPTR_STATUS); -GDS_TIME CVT_get_sql_time(const dsc*, FPTR_STATUS); -GDS_TIMESTAMP CVT_get_timestamp(const dsc*, FPTR_STATUS); + vary*, USHORT, FPTR_ERROR); +GDS_DATE CVT_get_sql_date(const dsc*, FPTR_ERROR); +GDS_TIME CVT_get_sql_time(const dsc*, FPTR_ERROR); +GDS_TIMESTAMP CVT_get_timestamp(const dsc*, FPTR_ERROR); USHORT CVT_make_string(const dsc*, USHORT, const char**, vary*, - USHORT, FPTR_STATUS); -extern "C" void CVT_move(const dsc*, dsc*, FPTR_STATUS); + USHORT, FPTR_ERROR); +extern "C" void CVT_move(const dsc*, dsc*, FPTR_ERROR); #endif // JRD_CVT_PROTO_H Index: dyn.epp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/dyn.epp,v retrieving revision 1.35 retrieving revision 1.36 diff -b -U3 -r1.35 -r1.36 --- dyn.epp 3 Nov 2003 23:53:50 -0000 1.35 +++ dyn.epp 5 Nov 2003 09:02:24 -0000 1.36 @@ -1,6 +1,6 @@ /* * PROGRAM: JRD Data Definition Utility - * MODULE: dyn.e + * MODULE: dyn.epp * DESCRIPTION: Dynamic data definition * * The contents of this file are subject to the Interbase Public @@ -81,17 +81,18 @@ -static void grant(GBL, UCHAR **); +static void grant(GBL, const UCHAR**); static bool grantor_can_grant_role(TDBB, GBL, const TEXT*, const TEXT*); static bool grantor_can_grant(GBL, const TEXT*, const TEXT*, const TEXT*, const TEXT*, bool); -static void revoke_permission(GBL, UCHAR **); +static void revoke_permission(GBL, const UCHAR**); static void store_privilege(GBL, const TEXT*, const TEXT*, const TEXT*, const TEXT*, SSHORT, SSHORT, int); static void set_field_class_name(GBL, const TEXT*, const TEXT*); -void DYN_ddl(ATT attachment, JRD_TRA transaction, USHORT length, UCHAR * ddl) +void DYN_ddl(att* attachment, jrd_tra* transaction, USHORT length, + const UCHAR* ddl) { /************************************** * @@ -110,7 +111,7 @@ DBB dbb = tdbb->tdbb_database; #endif - UCHAR* ptr = ddl; + const UCHAR* ptr = ddl; if (*ptr++ != gds_dyn_version_1) { ERR_post(gds_wrodynver, 0); @@ -192,7 +193,7 @@ } -void DYN_error(USHORT status_flag, +void DYN_error(bool status_flag, USHORT number, const TEXT* arg1, const TEXT* arg2, @@ -234,7 +235,7 @@ *v1++ = (ISC_STATUS) ERR_cstring(error_buffer); } if (status_flag) { - ISC_STATUS* v2 = tdbb->tdbb_status_vector; + const ISC_STATUS* v2 = tdbb->tdbb_status_vector; /* check every other argument for end of vector */ @@ -251,13 +252,13 @@ *v1 = gds_arg_end; ISC_STATUS* const end = v1 + 1; - ISC_STATUS* dest; - for (v1 = local_status, dest = tdbb->tdbb_status_vector; v1 < end;) + v1 = local_status; + for (ISC_STATUS* dest = tdbb->tdbb_status_vector; v1 < end;) *dest++ = *v1++; } -void DYN_error_punt(USHORT status_flag, +void DYN_error_punt(bool status_flag, USHORT number, const TEXT* arg1, const TEXT* arg2, @@ -342,17 +343,17 @@ * **************************************/ - DYN_error_punt(FALSE, 2, NULL, NULL, NULL, NULL, NULL); /* msg 2: "unsupported DYN verb" */ + DYN_error_punt(false, 2, NULL, NULL, NULL, NULL, NULL); /* msg 2: "unsupported DYN verb" */ } void DYN_execute( GBL gbl, - UCHAR ** ptr, - TEXT * relation_name, - TEXT * field_name, - TEXT * trigger_name, -TEXT * function_name, TEXT * procedure_name) + const UCHAR** ptr, + const TEXT* relation_name, + TEXT* field_name, + TEXT* trigger_name, + TEXT* function_name, TEXT* procedure_name) { /************************************** * @@ -496,7 +497,7 @@ break; case gds_dyn_def_trigger: - DYN_define_trigger(gbl, ptr, relation_name, NULL, FALSE); + DYN_define_trigger(gbl, ptr, relation_name, NULL, false); break; case gds_dyn_mod_trigger: @@ -596,7 +597,7 @@ } -SLONG DYN_get_number(UCHAR ** ptr) +SLONG DYN_get_number(const UCHAR** ptr) { /************************************** * @@ -608,11 +609,8 @@ * Pick up a number and possible clear a null flag. * **************************************/ - UCHAR *p; - USHORT length; - - p = *ptr; - length = *p++; + const UCHAR* p = *ptr; + USHORT length = *p++; length |= (*p++) << 8; *ptr = p + length; @@ -620,7 +618,7 @@ } -USHORT DYN_get_string(TEXT ** ptr, TEXT * field, USHORT size, USHORT err_flag) +USHORT DYN_get_string(const TEXT** ptr, TEXT* field, USHORT size, bool err_flag) { /************************************** * @@ -631,29 +629,31 @@ * Functional description * Pick up a string, move to a target, and, if requested, * set a null flag. Return length of string. - * If destination field size is too small, punt. + * If destination field size is too small, punt if err_flag is true, + * otherwise try to copy as much as possible and skip the rest. * Strings need enough space for null pad. * **************************************/ USHORT e = 0; - TEXT* p = *ptr; + const TEXT* p = *ptr; USHORT length = (UCHAR) *p++; length |= ((USHORT) ((UCHAR) (*p++))) << 8; USHORT l = length; if (l) { if (length >= size) { - if (err_flag) - DYN_error_punt(FALSE, 159, NULL, NULL, NULL, NULL, NULL); + if (err_flag) { + DYN_error_punt(false, 159, NULL, NULL, NULL, NULL, NULL); /* msg 159: Name longer than database field size */ + } else { l = size - 1; e = length - l; } } - do + do { *field++ = *p++; - while (--l); + } while (--l); for (; e; e--) p++; } @@ -664,7 +664,7 @@ return length; } -USHORT DYN_put_blr_blob(GBL gbl, UCHAR** ptr, GDS__QUAD* blob_id) +USHORT DYN_put_blr_blob(GBL gbl, const UCHAR** ptr, GDS__QUAD* blob_id) { /************************************** * @@ -678,7 +678,7 @@ **************************************/ TDBB tdbb = GET_THREAD_DATA; - UCHAR *p = *ptr; + const UCHAR *p = *ptr; USHORT length = *p++; length |= (*p++) << 8; @@ -693,7 +693,7 @@ BLB_close(tdbb, blob); } catch (const std::exception&) { - DYN_error_punt(TRUE, 106, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 106, NULL, NULL, NULL, NULL, NULL); /* msg 106: "Create metadata blob failed" */ } @@ -702,7 +702,7 @@ return length; } -USHORT DYN_put_text_blob(GBL gbl, UCHAR ** ptr, GDS__QUAD * blob_id) +USHORT DYN_put_text_blob(GBL gbl, const UCHAR** ptr, GDS__QUAD* blob_id) { /************************************** * @@ -716,7 +716,7 @@ **************************************/ TDBB tdbb = GET_THREAD_DATA; - UCHAR* p = *ptr; + const UCHAR* p = *ptr; USHORT length = *p++; length |= (*p++) << 8; @@ -726,7 +726,7 @@ } // make the code die at some place if DYN_error_punt doesn't jump far away. - UCHAR *end = NULL; + const UCHAR* end = NULL; try { BLB blob = BLB_create(tdbb, gbl->gbl_transaction, (BID)blob_id); @@ -739,7 +739,7 @@ BLB_close(tdbb, blob); } catch (const std::exception&) { - DYN_error_punt(TRUE, 106, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 106, NULL, NULL, NULL, NULL, NULL); /* msg 106: "Create metadata blob failed" */ } @@ -778,7 +778,7 @@ } -USHORT DYN_skip_attribute(UCHAR ** ptr) +USHORT DYN_skip_attribute(const UCHAR** ptr) { /************************************** * @@ -791,7 +791,7 @@ * size of count bytes). * **************************************/ - UCHAR* p = *ptr; + const UCHAR* p = *ptr; USHORT length = *p++; length |= (*p++) << 8; *ptr = p + length; @@ -799,7 +799,7 @@ return length; } -void DYN_terminate( TEXT * string, int length) +void DYN_terminate( TEXT* string, int length) { /************************************** * @@ -823,7 +823,7 @@ } -static void grant( GBL gbl, UCHAR ** ptr) +static void grant( GBL gbl, const UCHAR** ptr) { /************************************** * @@ -838,20 +838,20 @@ volatile SSHORT id; TEXT privileges[16]; - TEXT object[32]; - TEXT field[32]; - TEXT user[32]; + SqlIdentifier object; + SqlIdentifier field; + SqlIdentifier user; TEXT priv[2]; bool grant_role_stmt = false; - TEXT grantor[32]; + SqlIdentifier grantor; TEXT* ptr1; TEXT* ptr2; TDBB tdbb = GET_THREAD_DATA; DBB dbb = tdbb->tdbb_database; - USHORT major_version = dbb->dbb_ods_version; - USHORT minor_original = dbb->dbb_minor_original; + const USHORT major_version = dbb->dbb_ods_version; + const USHORT minor_original = dbb->dbb_minor_original; GET_STRING(ptr, privileges); if (!strcmp(privileges, "A")) { @@ -862,7 +862,7 @@ int options = 0; SSHORT user_type = -1; SSHORT obj_type = -1; - TEXT dummy_name[32]; + SqlIdentifier dummy_name; UCHAR verb; while ((verb = *(*ptr)++) != gds_dyn_end) @@ -895,7 +895,7 @@ if (DYN_is_it_sql_role(gbl, user, dummy_name, tdbb)) { user_type = obj_sql_role; if (!strcmp(user, "NONE")) { - DYN_error_punt(FALSE, 195, user, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 195, user, NULL, NULL, NULL, NULL); /* msg 195: keyword NONE could not be used as SQL role name. */ } } @@ -922,18 +922,18 @@ GET_STRING(ptr, user); DYN_terminate(user, sizeof(user)); if (!DYN_is_it_sql_role(gbl, user, dummy_name, tdbb)) { - DYN_error_punt(FALSE, 188, user, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 188, user, NULL, NULL, NULL, NULL); /* msg 188: Role doesn't exist. */ } if (!strcmp(user, "NONE")) { - DYN_error_punt(FALSE, 195, user, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 195, user, NULL, NULL, NULL, NULL); /* msg 195: keyword NONE could not be used as SQL role name. */ } break; case isc_dyn_sql_role_name: /* role name in role_name_list */ if (ENCODE_ODS(major_version, minor_original) < ODS_9_0) { - DYN_error_punt(FALSE, 196, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 196, NULL, NULL, NULL, NULL, NULL); } else { obj_type = obj_sql_role; @@ -941,7 +941,7 @@ grant_role_stmt = true; DYN_terminate(object, sizeof(object)); if (!strcmp (object, "NONE")) { - DYN_error_punt(FALSE, 195, object, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 195, object, NULL, NULL, NULL, NULL); /* msg 195: keyword NONE could not be used as SQL role name. */ } } @@ -1056,7 +1056,7 @@ { if (ENCODE_ODS(major_version, minor_original) < ODS_9_0) { - DYN_error_punt(FALSE, 196, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 196, NULL, NULL, NULL, NULL, NULL); } id = drq_get_role_nm; @@ -1080,7 +1080,7 @@ ** could be reused for blocking cycles of role grants ** *****************************************************/ - DYN_error_punt(FALSE, 192, user, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 192, user, NULL, NULL, NULL, NULL); } } else @@ -1126,12 +1126,12 @@ DYN_rundown_request(req1, -1); if (id == drq_l_grant1) { - DYN_error_punt(TRUE, 77, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 77, NULL, NULL, NULL, NULL, NULL); // msg 77: "SELECT RDB$USER_PRIVILEGES failed in grant" } else if (id == drq_l_grant2) { - DYN_error_punt(TRUE, 78, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 78, NULL, NULL, NULL, NULL, NULL); // msg 78: "SELECT RDB$USER_PRIVILEGES failed in grant" } else if (id == drq_s_grant || id == drq_gcg1) @@ -1143,7 +1143,7 @@ ERR_punt(); } else { fb_assert(id == drq_gcg1); - DYN_error_punt(TRUE, 78, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 78, NULL, NULL, NULL, NULL, NULL); // msg 78: "SELECT RDB$USER_PRIVILEGES failed in grant" } } @@ -1201,7 +1201,7 @@ if (!DYN_REQUEST(drq_gcg4)) DYN_REQUEST(drq_gcg4) = request; if (!relation_exists) { - DYN_error(FALSE, 175, relation_name, NULL, NULL, NULL, NULL); + DYN_error(false, 175, relation_name, NULL, NULL, NULL, NULL); /* table/view .. does not exist */ return false; } @@ -1225,7 +1225,7 @@ if (!DYN_REQUEST(drq_gcg5)) DYN_REQUEST(drq_gcg5) = request; if (!field_exists) { - DYN_error(FALSE, 176, field_name, relation_name, NULL, NULL, + DYN_error(false, 176, field_name, relation_name, NULL, NULL, NULL); /* column .. does not exist in table/view .. */ return false; @@ -1314,7 +1314,7 @@ { if (go_fld == 0) { - DYN_error(FALSE, + DYN_error(false, (USHORT)(top_level ? 167 : 168), privilege, field_name, @@ -1328,7 +1328,7 @@ { if (go_rel == 0) { - DYN_error(FALSE, + DYN_error(false, (USHORT)(top_level ? 169 : 170), privilege, relation_name, @@ -1340,7 +1340,7 @@ } else if (go_rel == -1) { - DYN_error(FALSE, + DYN_error(false, (USHORT)(top_level ? 171 : 172), privilege, relation_name, @@ -1356,13 +1356,13 @@ { if (go_rel == 0) { - DYN_error(FALSE, 173, privilege, relation_name, NULL, NULL, NULL); + DYN_error(false, 173, privilege, relation_name, NULL, NULL, NULL); /* no grant option for privilege .. on table/view .. */ return false; } else if (go_rel == -1) { - DYN_error(FALSE, 174, privilege, relation_name, NULL, NULL, NULL); + DYN_error(false, 174, privilege, relation_name, NULL, NULL, NULL); /* no .. privilege with grant option on table/view .. */ return false; } @@ -1427,7 +1427,7 @@ } // try catch (const std::exception&) { DYN_rundown_request(request, -1); - DYN_error_punt(TRUE, err_num, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, err_num, NULL, NULL, NULL, NULL, NULL); /* msg 77: "SELECT RDB$USER_PRIVILEGES failed in grant" */ return false; @@ -1456,7 +1456,7 @@ **************************************/ bool grantable = false; - TEXT owner[32]; + SqlIdentifier owner; SET_TDBB(tdbb); DBB dbb = tdbb->tdbb_database; @@ -1480,7 +1480,7 @@ ** role name not exist. ** *****************************************************/ - DYN_error(FALSE, 188, role_name, NULL, NULL, NULL, NULL); + DYN_error(false, 188, role_name, NULL, NULL, NULL, NULL); return false; } @@ -1507,7 +1507,7 @@ ** user have no admin option. ** *****************************************************/ - DYN_error(FALSE, 189, grantor, role_name, NULL, NULL, NULL); + DYN_error(false, 189, grantor, role_name, NULL, NULL, NULL); return false; } @@ -1523,7 +1523,7 @@ ** user is not a member of the role. ** *****************************************************/ - DYN_error(FALSE, 190, grantor, role_name, NULL, NULL, NULL); + DYN_error(false, 190, grantor, role_name, NULL, NULL, NULL); return false; } @@ -1531,7 +1531,7 @@ } -static void revoke_permission(GBL gbl, UCHAR ** ptr) +static void revoke_permission(GBL gbl, const UCHAR** ptr) { /************************************** * @@ -1554,10 +1554,10 @@ * **************************************/ UCHAR verb; - TEXT privileges[16], object[32], field[32], user[32]; - TEXT revoking_user_name[32], dummy_name[32]; - //TEXT grantor[32], *ptr2; - TEXT *ptr1; + TEXT privileges[16]; + SqlIdentifier object, field, user; + SqlIdentifier revoking_user_name, dummy_name; + TEXT* ptr1; TDBB tdbb = GET_THREAD_DATA; DBB dbb = tdbb->tdbb_database; @@ -1614,7 +1614,7 @@ if (DYN_is_it_sql_role(gbl, user, dummy_name, tdbb)) { user_type = obj_sql_role; if (!strcmp(user, "NONE")) { - DYN_error_punt(FALSE, 195, user, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 195, user, NULL, NULL, NULL, NULL); /* msg 195: keyword NONE could not be used as SQL role name. */ } } @@ -1640,18 +1640,18 @@ GET_STRING(ptr, user); DYN_terminate(user, sizeof(user)); if (!DYN_is_it_sql_role(gbl, user, dummy_name, tdbb)) { - DYN_error_punt(FALSE, 188, user, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 188, user, NULL, NULL, NULL, NULL); /* msg 188: Role doesn't exist. */ } if (!strcmp(user, "NONE")) { - DYN_error_punt(FALSE, 195, user, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 195, user, NULL, NULL, NULL, NULL); /* msg 195: keyword NONE could not be used as SQL role name. */ } break; case isc_dyn_sql_role_name: /* role name in role_name_list */ if (ENCODE_ODS(major_version, minor_original) < ODS_9_0) { - DYN_error_punt(FALSE, 196, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 196, NULL, NULL, NULL, NULL, NULL); } else { obj_type = obj_sql_role; @@ -1659,7 +1659,7 @@ DYN_terminate(object, sizeof(object)); /* CVC: Make this a warning in the future. if (!strcmp(object, "NONE")) - DYN_error_punt(FALSE, 195, object, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 195, object, NULL, NULL, NULL, NULL); */ /* msg 195: keyword NONE could not be used as SQL role name. */ } @@ -1785,12 +1785,12 @@ -1); if (id == drq_e_grant1) { - DYN_error_punt(TRUE, 111, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 111, NULL, NULL, NULL, NULL, NULL); /* msg 111: "ERASE RDB$USER_PRIVILEGES failed in revoke(1)" */ } else if (id == drq_e_grant2) { - DYN_error_punt(TRUE, 113, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 113, NULL, NULL, NULL, NULL, NULL); /* msg 113: "ERASE RDB$USER_PRIVILEGES failed in revoke (3)" */ } else @@ -1910,7 +1910,7 @@ } catch (const std::exception&) { DYN_rundown_request(request, -1); - DYN_error_punt(TRUE, 79, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 79, NULL, NULL, NULL, NULL, NULL); /* msg 79: "STORE RDB$USER_PRIVILEGES failed in grant" */ } } Index: dyn.h =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/dyn.h,v retrieving revision 1.8 retrieving revision 1.9 diff -b -U3 -r1.8 -r1.9 --- dyn.h 3 Nov 2003 17:14:44 -0000 1.8 +++ dyn.h 5 Nov 2003 09:02:24 -0000 1.9 @@ -24,28 +24,23 @@ #ifndef JRD_DYN_H #define JRD_DYN_H -#define ALL_PRIVILEGES "SIUDR" +const char* const ALL_PRIVILEGES = "SIUDR"; /* all applicable grant/revoke privileges */ -#define ALL_PROC_PRIVILEGES "X" +const char* const ALL_PROC_PRIVILEGES = "X"; /* all applicable grant/revoke privileges for a procedure */ #define DYN_MSG_FAC 8 #define STUFF_COUNT 4 #define TEXT_BLOB_LENGTH 512 -#define PRIMARY_KEY "PRIMARY KEY" -#define FOREIGN_KEY "FOREIGN KEY" -#define UNIQUE_CNSTRT "UNIQUE" -#define CHECK_CNSTRT "CHECK" -#define NOT_NULL_CNSTRT "NOT NULL" - -#define GET_STRING(from,to) DYN_get_string ((TEXT**)from, (TEXT*)to, sizeof (to), TRUE) - -#define GET_STRING_2(from,to) DYN_get_string ((TEXT**)from, (TEXT*)to, sizeof (to), FALSE) - -#define PROC_NAME_SIZE 32 -#define FLD_SRC_LEN 32 -#define FLD_NAME_LEN 32 -#define REL_NAME_LEN 32 +const char* const PRIMARY_KEY = "PRIMARY KEY"; +const char* const FOREIGN_KEY = "FOREIGN KEY"; +const char* const UNIQUE_CNSTRT = "UNIQUE"; +const char* const CHECK_CNSTRT = "CHECK"; +const char* const NOT_NULL_CNSTRT = "NOT NULL"; + +#define GET_STRING(from,to) DYN_get_string ((const TEXT**)from, (TEXT*)to, sizeof (to), true) + +#define GET_STRING_2(from,to) DYN_get_string ((const TEXT**)from, (TEXT*)to, sizeof (to), false) typedef struct gbl @@ -61,31 +56,41 @@ USHORT dyn_charlen; SSHORT dyn_collation; SSHORT dyn_charset; - TEXT dyn_fld_source[FLD_SRC_LEN]; - TEXT dyn_rel_name[REL_NAME_LEN]; - TEXT dyn_fld_name[FLD_NAME_LEN]; + SqlIdentifier dyn_fld_source; + SqlIdentifier dyn_rel_name; + SqlIdentifier dyn_fld_name; USHORT dyn_charbytelen; /* Used to check modify operations on string types. */ } *DYN_FLD; -void DYN_error(USHORT, USHORT, const TEXT*, const TEXT*, const TEXT*, +void DYN_error(bool, USHORT, const TEXT*, const TEXT*, const TEXT*, const TEXT*, const TEXT*); -void DYN_error_punt(USHORT, USHORT, const TEXT*, const TEXT*, +void DYN_error_punt(bool, USHORT, const TEXT*, const TEXT*, const TEXT*, const TEXT*, const TEXT*); -void DYN_execute(GBL, UCHAR **, TEXT *, TEXT *, TEXT *, TEXT *, - TEXT *); -SLONG DYN_get_number(UCHAR **); -USHORT DYN_get_string(TEXT **, TEXT *, USHORT, USHORT); -void DYN_get_string2(TEXT **, TEXT *, USHORT); +void DYN_execute(GBL, const UCHAR**, const TEXT*, TEXT*, TEXT*, TEXT*, TEXT*); +SLONG DYN_get_number(const UCHAR**); +USHORT DYN_get_string(const TEXT**, TEXT*, USHORT, bool); + +// This function is not defined anywhere. +// void DYN_get_string2(TEXT**, TEXT*, USHORT); + // This function doesn't need to be exported currently. bool DYN_is_it_sql_role(GBL, const TEXT*, TEXT*, TDBB); -USHORT DYN_put_blr_blob(GBL, UCHAR **, GDS__QUAD *); -USHORT DYN_put_blr_blob2(GBL, UCHAR **, GDS__QUAD *); -USHORT DYN_put_text_blob(GBL, UCHAR **, GDS__QUAD *); -USHORT DYN_put_text_blob2(GBL, UCHAR **, GDS__QUAD *); +USHORT DYN_put_blr_blob(GBL, const UCHAR**, GDS__QUAD *); + +// This function is not defined anywhere. +//USHORT DYN_put_blr_blob2(GBL, const UCHAR**, GDS__QUAD *); + +USHORT DYN_put_text_blob(GBL, const UCHAR**, GDS__QUAD *); +// This function is not defined anywhere. +//USHORT DYN_put_text_blob2(GBL, const UCHAR**, GDS__QUAD *); + void DYN_rundown_request(BLK, SSHORT); -USHORT DYN_skip_attribute(UCHAR **); -USHORT DYN_skip_attribute2(UCHAR **); +USHORT DYN_skip_attribute(const UCHAR**); + +// This function is not defined anywhere. +//USHORT DYN_skip_attribute2(const UCHAR**); + void DYN_unsupported_verb(void); #endif // JRD_DYN_H Index: dyn_def.epp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/dyn_def.epp,v retrieving revision 1.41 retrieving revision 1.42 diff -b -U3 -r1.41 -r1.42 --- dyn_def.epp 3 Nov 2003 23:53:50 -0000 1.41 +++ dyn_def.epp 5 Nov 2003 09:02:24 -0000 1.42 @@ -1,6 +1,6 @@ /* * PROGRAM: JRD Data Definition Utility - * MODULE: dyn_define.e + * MODULE: dyn_define.epp * DESCRIPTION: Dynamic data definition DYN_define_<x> * * The contents of this file are subject to the Interbase Public @@ -117,7 +117,7 @@ static void check_unique_name(TDBB, GBL, const TEXT*, bool); static bool find_field_source(TDBB, GBL, const TEXT*, USHORT, const TEXT*, TEXT*); -static bool get_who(TDBB, GBL, SCHAR *); +static bool get_who(TDBB, GBL, SCHAR*); static bool is_it_user_name(GBL, const TEXT*, TDBB); @@ -134,7 +134,7 @@ } -void DYN_define_cache( GBL gbl, UCHAR ** ptr) +void DYN_define_cache( GBL gbl, const UCHAR** ptr) { /************************************** * @@ -148,8 +148,7 @@ **************************************/ UCHAR verb; volatile BLK request; - USHORT found = FALSE; - volatile SSHORT id; + volatile SSHORT id = -1; TDBB tdbb = GET_THREAD_DATA; DBB dbb = tdbb->tdbb_database; @@ -157,13 +156,12 @@ try { - id = -1; - + bool found = false; id = drq_l_cache; request = (BLK) CMP_find_request(tdbb, drq_l_cache, DYN_REQUESTS); FOR(REQUEST_HANDLE request TRANSACTION_HANDLE gbl->gbl_transaction) FIL IN RDB$FILES WITH FIL.RDB$FILE_FLAGS EQ FILE_cache - found = TRUE; + found = true; END_FOR; if (!DYN_REQUEST(drq_l_cache)) { @@ -206,18 +204,18 @@ DYN_REQUEST(drq_s_cache) = request; } - } + } // try catch (const std::exception&) { if (id == drq_s_cache) { DYN_rundown_request(request, drq_s_cache); - DYN_error_punt(TRUE, 150, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 150, NULL, NULL, NULL, NULL, NULL); /* msg 150: STORE RDB$FILES failed */ } else { DYN_rundown_request(request, drq_l_cache); - DYN_error_punt(TRUE, 156, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 156, NULL, NULL, NULL, NULL, NULL); /* msg 156: Shared cache lookup failed */ } } @@ -225,14 +223,14 @@ return; dyn_punt_148: - DYN_error_punt(FALSE, 148, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 148, NULL, NULL, NULL, NULL, NULL); /* msg 148: "Shared cache file already exists" */ } void DYN_define_constraint(GBL gbl, - UCHAR** ptr, - TEXT* relation_name, + const UCHAR** ptr, + const TEXT* relation_name, TEXT* field_name) { /************************************** @@ -250,12 +248,12 @@ volatile BLK request; volatile SSHORT id, old_id; UCHAR verb; - TEXT constraint_name[32], index_name[32], referred_index_name[32]; - TEXT null_field_name[32], trigger_name[32]; + SqlIdentifier constraint_name, index_name, referred_index_name; + SqlIdentifier null_field_name, trigger_name; int all_count, unique_count; LLS field_list = NULL, list_ptr; STR str_; - USHORT found, primary_flag = FALSE, foreign_flag = FALSE, not_null; + USHORT primary_flag = FALSE, foreign_flag = FALSE, not_null; UCHAR ri_action = 0; TDBB tdbb = GET_THREAD_DATA; @@ -270,7 +268,7 @@ MET_exact_name(constraint_name); } if (!constraint_name[0]) - DYN_error_punt(FALSE, 212, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 212, NULL, NULL, NULL, NULL, NULL); /* msg 212: "Zero length identifiers not allowed" */ request = NULL; @@ -357,7 +355,7 @@ DYN_rundown_request(request, local_id); - DYN_error_punt(TRUE, + DYN_error_punt(true, number, number == 124 ? constraint_name : NULL, NULL, @@ -369,7 +367,7 @@ if (verb == gds_dyn_def_trigger) { do { - DYN_define_trigger(gbl, ptr, relation_name, trigger_name, FALSE); + DYN_define_trigger(gbl, ptr, relation_name, trigger_name, false); DYN_UTIL_store_check_constraints(tdbb, gbl, constraint_name, trigger_name); } while ((verb = *(*ptr)++) == gds_dyn_def_trigger); @@ -435,7 +433,7 @@ } if (not_null == FALSE) { - DYN_error_punt(FALSE, 123, null_field_name, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 123, null_field_name, NULL, NULL, NULL, NULL); /* msg 123: "Field: %s not defined as NOT NULL - can't be used in PRIMARY KEY/UNIQUE constraint definition" */ } @@ -468,7 +466,7 @@ index_name[0] = 0; list_ptr = NULL; - found = FALSE; + bool found = false; FOR(REQUEST_HANDLE request TRANSACTION_HANDLE gbl->gbl_transaction) CRT IN RDB$RELATION_CONSTRAINTS CROSS IDS IN RDB$INDEX_SEGMENTS OVER RDB$INDEX_NAME @@ -484,7 +482,7 @@ if (strcmp(index_name, CRT.RDB$INDEX_NAME)) { if (list_ptr) { - found = FALSE; + found = false; } if (found) { EXE_unwind(tdbb,(JRD_REQ)request); @@ -492,7 +490,7 @@ } list_ptr = field_list; strcpy(index_name, CRT.RDB$INDEX_NAME); - found = TRUE; + found = true; } if (list_ptr) @@ -500,12 +498,12 @@ if (strcmp((char*)((STR) list_ptr->lls_object)->str_data, IDS.RDB$FIELD_NAME)) { - found = FALSE; + found = false; } list_ptr = list_ptr->lls_next; } else { - found = FALSE; + found = false; } END_FOR; if (!DYN_REQUEST(drq_c_dup_con)) { @@ -513,7 +511,7 @@ } if (list_ptr) { - found = FALSE; + found = false; } if (found) { @@ -607,7 +605,7 @@ DYN_rundown_request(request, local_id); - DYN_error_punt(TRUE, + DYN_error_punt(true, number, number == 124 ? constraint_name : NULL, NULL, @@ -619,19 +617,19 @@ return; dyn_punt_false_124: - DYN_error_punt(FALSE, 124, constraint_name, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 124, constraint_name, NULL, NULL, NULL, NULL); /* msg 124: "A column name is repeated in the definition of constraint: %s" */ return; dyn_punt_false_126: - DYN_error_punt(FALSE, 126, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 126, NULL, NULL, NULL, NULL, NULL); /* msg 126: "Same set of columns cannot be used in more than one PRIMARY KEY and/or UNIQUE constraint definition" */ } void DYN_define_dimension(GBL gbl, - UCHAR** ptr, - TEXT* relation_name, + const UCHAR** ptr, + const TEXT* relation_name, TEXT* field_name) { /************************************** @@ -700,7 +698,7 @@ catch (const std::exception&) { if (b_ending_store) { DYN_rundown_request(request, drq_s_dims); - DYN_error_punt(TRUE, 3, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 3, NULL, NULL, NULL, NULL, NULL); /* msg 3: "STORE RDB$FIELD_DIMENSIONS failed" */ } throw; @@ -712,7 +710,7 @@ } -void DYN_define_exception( GBL gbl, UCHAR ** ptr) +void DYN_define_exception( GBL gbl, const UCHAR** ptr) { /************************************** * @@ -727,7 +725,7 @@ volatile BLK request; UCHAR verb; - TEXT exception_name[32]; + SqlIdentifier exception_name; TDBB tdbb = GET_THREAD_DATA; DBB dbb = tdbb->tdbb_database; @@ -737,7 +735,7 @@ MET_exact_name(exception_name); if (!exception_name[0]) - DYN_error_punt(FALSE, 212, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 212, NULL, NULL, NULL, NULL, NULL); /* msg 212: "Zero length identifiers not allowed" */ request = (BLK) CMP_find_request(tdbb, drq_s_xcp, DYN_REQUESTS); @@ -776,7 +774,7 @@ catch (const std::exception&) { if (b_ending_store) { DYN_rundown_request(request, drq_s_trg_msgs); - DYN_error_punt(TRUE, 142, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 142, NULL, NULL, NULL, NULL, NULL); /* msg 142: "DEFINE EXCEPTION failed" */ } throw; @@ -785,7 +783,7 @@ void DYN_define_file(GBL gbl, - UCHAR** ptr, + const UCHAR** ptr, SLONG shadow_number, SLONG* start, USHORT msg) @@ -821,12 +819,12 @@ GET_STRING(ptr, temp_f1); ISC_expand_filename(temp_f1, 0, temp_f); if (!strcmp((char*)dbb->dbb_filename->str_data, temp_f)) { - DYN_error_punt(FALSE, 166, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 166, NULL, NULL, NULL, NULL, NULL); } FOR(REQUEST_HANDLE request TRANSACTION_HANDLE gbl->gbl_transaction) FIRST 1 X IN RDB$FILES WITH X.RDB$FILE_NAME EQ temp_f - DYN_error_punt(FALSE, 166, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 166, NULL, NULL, NULL, NULL, NULL); END_FOR; request = (BLK) CMP_find_request(tdbb, id = drq_s_files, DYN_REQUESTS); @@ -883,12 +881,12 @@ if (id == drq_l_files) { DYN_rundown_request(request, drq_l_files); - DYN_error_punt(FALSE, 166, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 166, NULL, NULL, NULL, NULL, NULL); } else { DYN_rundown_request(request, drq_s_files); - DYN_error_punt(TRUE, msg, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, msg, NULL, NULL, NULL, NULL, NULL); } } @@ -896,7 +894,7 @@ void DYN_define_difference(GBL gbl, - UCHAR** ptr) + const UCHAR** ptr) { /************************************** * @@ -909,8 +907,7 @@ * **************************************/ volatile BLK request; - USHORT found = FALSE; - volatile SSHORT id; + volatile SSHORT id = -1; TDBB tdbb = GET_THREAD_DATA; DBB dbb = tdbb->tdbb_database; @@ -918,14 +915,13 @@ try { - id = -1; - + bool found = false; id = drq_l_difference; request = (BLK) CMP_find_request(tdbb, drq_l_difference, DYN_REQUESTS); FOR(REQUEST_HANDLE request TRANSACTION_HANDLE gbl->gbl_transaction) FIL IN RDB$FILES if (FIL.RDB$FILE_FLAGS & FILE_difference) - found = TRUE; + found = true; END_FOR; if (!DYN_REQUEST(drq_l_difference)) { @@ -959,13 +955,13 @@ if (id == drq_s_difference) { DYN_rundown_request(request, drq_s_difference); - DYN_error_punt(TRUE, 150, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 150, NULL, NULL, NULL, NULL, NULL); /* msg 150: STORE RDB$FILES failed */ } else { DYN_rundown_request(request, drq_l_difference); - DYN_error_punt(TRUE, 156, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 156, NULL, NULL, NULL, NULL, NULL); /* msg 156: Shared cache lookup failed */ } } @@ -973,12 +969,12 @@ return; dyn_punt_216: - DYN_error_punt(FALSE, 216, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 216, NULL, NULL, NULL, NULL, NULL); /* msg 216: "Difference file is already defined" */ } -void DYN_define_filter( GBL gbl, UCHAR ** ptr) +void DYN_define_filter( GBL gbl, const UCHAR** ptr) { /************************************** * @@ -992,7 +988,7 @@ **************************************/ UCHAR verb; - TEXT filter_name[32]; + SqlIdentifier filter_name; volatile BLK request; TDBB tdbb = GET_THREAD_DATA; @@ -1003,7 +999,7 @@ MET_exact_name(filter_name); if (!filter_name[0]) - DYN_error_punt(FALSE, 212, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 212, NULL, NULL, NULL, NULL, NULL); /* msg 212: "Zero length identifiers not allowed" */ request = (BLK) CMP_find_request(tdbb, drq_s_filters, DYN_REQUESTS); @@ -1064,7 +1060,7 @@ catch (const std::exception&) { if (b_ending_store) { DYN_rundown_request(request, drq_s_filters); - DYN_error_punt(TRUE, 7, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 7, NULL, NULL, NULL, NULL, NULL); /* msg 7: "DEFINE BLOB FILTER failed" */ } throw; @@ -1072,7 +1068,7 @@ } -void DYN_define_function( GBL gbl, UCHAR ** ptr) +void DYN_define_function( GBL gbl, const UCHAR** ptr) { /************************************** * @@ -1086,7 +1082,7 @@ **************************************/ UCHAR verb; - TEXT function_name[32]; + SqlIdentifier function_name; volatile BLK request; TDBB tdbb = GET_THREAD_DATA; @@ -1097,7 +1093,7 @@ MET_exact_name(function_name); if (!function_name[0]) - DYN_error_punt(FALSE, 212, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 212, NULL, NULL, NULL, NULL, NULL); /* msg 212: "Zero length identifiers not allowed" */ request = (BLK) CMP_find_request(tdbb, drq_s_funcs, DYN_REQUESTS); @@ -1123,7 +1119,7 @@ X.RDB$RETURN_ARGUMENT = (SSHORT)DYN_get_number(ptr); X.RDB$RETURN_ARGUMENT.NULL = FALSE; if (X.RDB$RETURN_ARGUMENT > MAX_UDF_ARGUMENTS) - DYN_error_punt(TRUE, 10, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 10, NULL, NULL, NULL, NULL, NULL); /* msg 10: "DEFINE FUNCTION failed" */ break; @@ -1164,7 +1160,7 @@ catch (const std::exception&) { if (b_ending_store) { DYN_rundown_request(request, drq_s_funcs); - DYN_error_punt(TRUE, 10, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 10, NULL, NULL, NULL, NULL, NULL); /* msg 10: "DEFINE FUNCTION failed" */ } throw; @@ -1172,7 +1168,7 @@ } -void DYN_define_function_arg(GBL gbl, UCHAR** ptr, TEXT* function_name) +void DYN_define_function_arg(GBL gbl, const UCHAR** ptr, TEXT* function_name) { /************************************** * @@ -1199,7 +1195,7 @@ X.RDB$ARGUMENT_POSITION = (SSHORT)DYN_get_number(ptr); if (X.RDB$ARGUMENT_POSITION > MAX_UDF_ARGUMENTS) - DYN_error_punt(TRUE, 12, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 12, NULL, NULL, NULL, NULL, NULL); /* msg 12: "DEFINE FUNCTION ARGUMENT failed" */ if (function_name) { @@ -1289,13 +1285,13 @@ if (request) { DYN_rundown_request(request, drq_s_func_args); } - DYN_error_punt(TRUE, 12, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 12, NULL, NULL, NULL, NULL, NULL); /* msg 12: "DEFINE FUNCTION ARGUMENT failed" */ } } -void DYN_define_generator( GBL gbl, UCHAR ** ptr) +void DYN_define_generator( GBL gbl, const UCHAR** ptr) { /************************************** * @@ -1312,14 +1308,14 @@ DBB dbb = tdbb->tdbb_database; volatile BLK request; - TEXT generator_name[32]; + SqlIdentifier generator_name; generator_name[0] = 0; GET_STRING(ptr, generator_name); MET_exact_name(generator_name); if (!generator_name[0]) - DYN_error_punt(FALSE, 212, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 212, NULL, NULL, NULL, NULL, NULL); /* msg 212: "Zero length identifiers not allowed" */ request = (BLK) CMP_find_request(tdbb, drq_s_gens, DYN_REQUESTS); @@ -1344,7 +1340,7 @@ catch (const std::exception&) { if (b_ending_store) { DYN_rundown_request(request, drq_s_gens); - DYN_error_punt(TRUE, 8, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 8, NULL, NULL, NULL, NULL, NULL); /* msg 8: "DEFINE GENERATOR failed" */ } throw; @@ -1352,15 +1348,15 @@ if (*(*ptr)++ != gds_dyn_end) { - DYN_error_punt(TRUE, 9, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 9, NULL, NULL, NULL, NULL, NULL); /* msg 9: "DEFINE GENERATOR unexpected dyn verb" */ } } void DYN_define_global_field(GBL gbl, - UCHAR** ptr, - TEXT* relation_name, + const UCHAR** ptr, + const TEXT* relation_name, TEXT* field_name) { /************************************** @@ -1378,7 +1374,7 @@ DBB dbb = tdbb->tdbb_database; UCHAR verb; - TEXT global_field_name[32]; + SqlIdentifier global_field_name; volatile BLK request; USHORT dtype; @@ -1392,7 +1388,7 @@ MET_exact_name(global_field_name); } if (!global_field_name[0]) - DYN_error_punt(FALSE, 212, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 212, NULL, NULL, NULL, NULL, NULL); /* msg 212: "Zero length identifiers not allowed" */ request = (BLK) CMP_find_request(tdbb, drq_s_gfields, DYN_REQUESTS); @@ -1598,7 +1594,7 @@ catch (const std::exception&) { if (b_ending_store) { DYN_rundown_request(request, drq_s_gfields); - DYN_error_punt(TRUE, 13, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 13, NULL, NULL, NULL, NULL, NULL); /* msg 13: "STORE RDB$FIELDS failed" */ } throw; @@ -1607,8 +1603,8 @@ void DYN_define_index(GBL gbl, - UCHAR** ptr, - TEXT* relation_name, + const UCHAR** ptr, + const TEXT* relation_name, UCHAR index_type, TEXT* new_index_name, TEXT* referred_index_name, @@ -1629,9 +1625,8 @@ volatile BLK request; volatile SSHORT id, old_id; - const size_t field_name_size = 32; - TEXT index_name[32]; - TEXT referenced_relation[32]; + SqlIdentifier index_name; + SqlIdentifier referenced_relation; UCHAR verb; UCHAR seg_count; UCHAR fld_count; @@ -1639,8 +1634,8 @@ LLS seg_list = NULL; LLS list_ptr; STR str_; - USHORT found, key_length, length, referred_cols = 0; - TEXT trigger_name[32]; + USHORT key_length, length, referred_cols = 0; + SqlIdentifier trigger_name; if (ri_actionP != NULL) { (*ri_actionP) = 0; @@ -1659,7 +1654,7 @@ MET_exact_name(index_name); } if (!index_name[0]) - DYN_error_punt(FALSE, 212, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 212, NULL, NULL, NULL, NULL, NULL); /* msg 212: "Zero length identifiers not allowed" */ request = NULL; @@ -1694,7 +1689,7 @@ else if (*(*ptr)++ == gds_dyn_rel_name) GET_STRING(ptr, IDX.RDB$RELATION_NAME); else - DYN_error_punt(FALSE, 14, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 14, NULL, NULL, NULL, NULL, NULL); /* msg 14: "No relation specified for index" */ IDX.RDB$RELATION_NAME.NULL = FALSE; @@ -1710,7 +1705,7 @@ VREL IN RDB$RELATIONS WITH VREL.RDB$RELATION_NAME EQ IDX.RDB$RELATION_NAME if (!VREL.RDB$VIEW_BLR.NULL) - DYN_error_punt(FALSE, 181, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 181, NULL, NULL, NULL, NULL, NULL); /* msg 181: "attempt to index a view" */ END_FOR; @@ -1748,8 +1743,9 @@ break; case gds_dyn_fld_name: - str_ = FB_NEW_RPT(*tdbb->tdbb_default, field_name_size - 1) str(); - DYN_get_string((TEXT**)ptr, (TEXT*)str_->str_data, field_name_size, TRUE); + str_ = FB_NEW_RPT(*tdbb->tdbb_default, MAX_SQL_IDENTIFIER_LEN) str(); + DYN_get_string(reinterpret_cast<const TEXT**>(ptr), + (TEXT*)str_->str_data, MAX_SQL_IDENTIFIER_SIZE, true); LLS_PUSH(str_, &seg_list); seg_count++; @@ -1766,19 +1762,19 @@ fld_count++; if (GF.RDB$FIELD_TYPE == blr_blob) { - DYN_error_punt(FALSE, 116, IDX.RDB$INDEX_NAME, NULL, + DYN_error_punt(false, 116, IDX.RDB$INDEX_NAME, NULL, NULL, NULL, NULL); /* msg 116 "attempt to index blob field in index %s" */ } else if (!GF.RDB$DIMENSIONS.NULL) { - DYN_error_punt(FALSE, 117, IDX.RDB$INDEX_NAME, NULL, + DYN_error_punt(false, 117, IDX.RDB$INDEX_NAME, NULL, NULL, NULL, NULL); /* msg 117 "attempt to index array field in index %s" */ } else if (!GF.RDB$COMPUTED_BLR.NULL) { - DYN_error_punt(FALSE, 179, IDX.RDB$INDEX_NAME, NULL, + DYN_error_punt(false, 179, IDX.RDB$INDEX_NAME, NULL, NULL, NULL, NULL); /* msg 179 "attempt to index COMPUTED BY field in index %s" */ } @@ -1851,13 +1847,14 @@ GET_STRING(ptr, referenced_relation); MET_exact_name(referenced_relation); if (!referenced_relation[0]) - DYN_error_punt(FALSE, 212, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(false, 212, NULL, NULL, NULL, NULL, NULL); /* msg 212: "Zero length identifiers not allowed" */ break; case gds_dyn_idx_ref_column: - str_ = FB_NEW_RPT(*tdbb->tdbb_default, field_name_size - 1) str(); - DYN_get_string((TEXT**)ptr, (TEXT*)str_->str_data, field_name_size, TRUE); + str_ = FB_NEW_RPT(*tdbb->tdbb_default, MAX_SQL_IDENTIFIER_LEN) str(); + DYN_get_string(reinterpret_cast<const TEXT**>(ptr), + (TEXT*)str_->str_data, MAX_SQL_IDENTIFIER_SIZE, true); LLS_PUSH(str_, &field_list); referred_cols++; break; @@ -1876,7 +1873,7 @@ if ((verb = *(*ptr)++) == gds_dyn_def_trigger) { DYN_define_trigger(gbl, ptr, relation_name, - trigger_name, TRUE); + trigger_name, true); DYN_UTIL_store_check_constraints(tdbb, gbl, cnst_name, trigger_name); } @@ -1888,7 +1885,7 @@ if ((verb = *(*ptr)++) == gds_dyn_def_trigger) { DYN_define_trigger(gbl, ptr, relation_name, - trigger_name, TRUE); + trigger_name, true); DYN_UTIL_store_check_constraints(tdbb, gbl, cnst_name, trigger_name); } @@ -1900,7 +1897,7 @@ if ((verb = *(*ptr)++) == gds_dyn_def_trigger) { DYN_define_trigger(gbl, ptr, relation_name, - trigger_name, TRUE); + trigger_name, true); DYN_UTIL_store_check_constraints(tdbb, gbl, cnst_name, trigger_name); } @@ -1925,7 +1922,7 @@ if ((verb = *(*ptr)++) == gds_dyn_def_trigger) { DYN_define_trigger(gbl, ptr, relation_name, - trigger_name, TRUE); + trigger_name, true); DYN_UTIL_store_check_constraints(tdbb, gbl, cnst_name, trigger_name); } @@ -1937,7 +1934,7 @@ if ((verb = *(*ptr)++) == gds_dyn_def_trigger) { DYN_define_trigger(gbl, ptr, relation_name, - trigger_name, TRUE); + trigger_name, true); DYN_UTIL_store_check_constraints(tdbb, gbl, cnst_name, trigger_name); } @@ -1949,7 +1946,7 @@ if ((verb = *(*ptr)++) == gds_dyn_def_trigger) { DYN_define_trigger(gbl, ptr, relation_name, - trigger_name, TRUE); + trigger_name, true); DYN_UTIL_store_check_constraints(tdbb, gbl, cnst_name, trigger_name); } @@ -1972,13 +1969,13 @@ key_length = ROUNDUP(key_length, sizeof(SLONG)); if (key_length >= MAX_KEY) - DYN_error_punt(FALSE, 118, IDX.RDB$INDEX_NAME, NULL, NULL, NULL, + DYN_error_punt(false, 118, IDX.RDB$INDEX_NAME, NULL, NULL, NULL, NULL); /* msg 118 "key size too big for index %s" */ if (seg_count) { if (seg_count != fld_count) - DYN_error_punt(FALSE, 120, IDX.RDB$INDEX_NAME, NULL, NULL, + DYN_error_punt(false, 120, IDX.RDB$INDEX_NAME, NULL, NULL, NULL, NULL); /* msg 118 "Unknown fields in index %s" */ @@ -2006,7 +2003,7 @@ #ifdef EXPRESSION_INDICES if (IDX.RDB$EXPRESSION_BLR.NULL) #endif - DYN_error_punt(FALSE, 119, IDX.RDB$INDEX_NAME, NULL, NULL, NULL, + DYN_error_punt(false, 119, IDX.RDB$INDEX_NAME, NULL, NULL, NULL, NULL); /* msg 119 "no keys for index %s" */ @@ -2014,7 +2011,7 @@ /* If referring columns count <> referred columns return error */ if (seg_count != referred_cols) - DYN_error_punt(TRUE, 133, NULL, NULL, NULL, NULL, NULL); + DYN_error_punt(true, 133, NULL, NULL, NULL, NULL, NULL); /* msg 133: "Number of referencing columns do not equal number of referenced columns */ /* lookup a unique index in the referenced relation with the @@ -2028,7 +2025,7 @@ index_name[0] = 0; list_ptr = NULL; - found = FALSE; + bool found = false; FOR(REQUEST_HANDLE request TRANSACTION_HANDLE gbl->gbl_transaction) X IN RDB$RELATION_CONSTRAINTS CROSS Y IN RDB$INDICES OVER RDB$INDEX_NAME CROSS @@ -2049,14 +2046,14 @@ DYN_terminate(Y.RDB$INDEX_NAME, sizeof(Y.RDB$INDEX_NAME)); if (strcmp((char*)index_name, (char*)Y.RDB$INDEX_NAME)) { if (list_ptr) - found = FALSE; + found = false; if (found) { EXE_unwind(tdbb,(JRD_REQ)request); break; } list_ptr = field_list; strcpy((char*)index_name, (char*)Y.RDB$INDEX_NAME); - found = TRUE; + found = true; } /* if there are no more fields or the field name doesn't @@ -2070,12 +2067,12 @@ if (strcmp((char*)((STR) list_ptr->lls_object)->str_data, (char*)Z.RDB$FIELD_NAME)) { - found = FALSE; + found = false; } list_ptr = list_ptr->lls_next; } else - found = FALSE; + found = false; END_FOR; if (!DYN_REQUEST(drq_l_unq_idx)) @@ -2084,7 +2081,7 @@ id = old_id; if (list_ptr) - found = FALSE; + found = false; if (found) { strcpy((char*)IDX.RDB$FOREIGN_KEY, (char*)index_name); @@ -2093,7 +2090,7 @@ strcpy(referred_index_name, (char*)index_name); } else - DYN_error_punt(FALSE, 18, NULL, NULL, NULL, NULL, ... [truncated message content] |