From: Claudio V. C. <ro...@us...> - 2005-09-10 07:16:06
|
Build Version : T2.0.0.11501 Firebird 2.0 Alpha 3 (writeBuildNum.sh,v 1.11650 2005/09/10 07:15:25 robocop Exp ) Update of /cvsroot/firebird/firebird2/src/dsql In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11372/src/dsql Modified Files: ddl.cpp dsql.cpp dsql.h gen.cpp metd.epp pass1.cpp Log Message: - Get rid of DBB_v3 in DSQL and put a message just in case we find ODS<=7 (impossible in theory, since FB wouldn't open such db). - Put mnemonics for two hardcoded error msgs I hijacked from DYN years ago. Now they are defined for the SQLERR facility. Index: ddl.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/dsql/ddl.cpp,v retrieving revision 1.155 retrieving revision 1.156 diff -b -U3 -r1.155 -r1.156 --- ddl.cpp 9 Sep 2005 09:07:08 -0000 1.155 +++ ddl.cpp 10 Sep 2005 07:15:23 -0000 1.156 @@ -3651,9 +3651,8 @@ else { ERRD_post(isc_sqlerr, isc_arg_number, (SLONG) -607, - /* isc_arg_gds, isc_dsql_command_err, - isc_arg_gds, isc_dsql_view_not_found, */ - isc_arg_gds, 336068783L, + isc_arg_gds, isc_dsql_command_err, + isc_arg_gds, isc_dsql_view_not_found, isc_arg_string, view_name->str_data, isc_arg_end); } @@ -4205,9 +4204,8 @@ relation && (relation->rel_flags & REL_view)) { ERRD_post (isc_sqlerr, isc_arg_number, (SLONG) -607, - /* isc_arg_gds, isc_dsql_command_err, - isc_arg_gds, isc_dsql_table_not_found, */ - isc_arg_gds, 336068783L, + isc_arg_gds, isc_dsql_command_err, + isc_arg_gds, isc_dsql_table_not_found, isc_arg_string, string->str_data, isc_arg_end); } @@ -4217,9 +4215,8 @@ relation && !(relation->rel_flags & REL_view)) { ERRD_post (isc_sqlerr, isc_arg_number, (SLONG) -607, - /* isc_arg_gds, isc_dsql_command_err, - isc_arg_gds, isc_dsql_view_not_found, */ - isc_arg_gds, 336068783L, + isc_arg_gds, isc_dsql_command_err, + isc_arg_gds, isc_dsql_view_not_found, isc_arg_string, string->str_data, isc_arg_end); } @@ -5313,9 +5310,7 @@ request->append_cstring(isc_dyn_fld_name, field_name->str_data); } - if ((option) && - ((type == nod_grant) || - (!(request->req_dbb->dbb_flags & DBB_v3)))) + if (option) { request->append_number(isc_dyn_grant_options, option); } @@ -5711,7 +5706,7 @@ if (field->fld_dtype == dtype_cstring || field->fld_dtype == dtype_text || field->fld_dtype == dtype_varying || field->fld_dtype == dtype_blob) { - if (!use_subtype || (request->req_dbb->dbb_flags & DBB_v3)) { + if (!use_subtype) { request->append_uchar(blr_dtypes[field->fld_dtype]); } else if (field->fld_dtype == dtype_varying) { @@ -5779,8 +5774,6 @@ request->append_number(isc_dyn_fld_segment_length, field->fld_seg_length); } - if (!(request->req_dbb->dbb_flags & DBB_v3)) - { if (field->fld_sub_type == isc_blob_text) { request->append_number(isc_dyn_fld_character_set, field->fld_character_set_id); @@ -5788,7 +5781,6 @@ field->fld_collation_id); } } - } else if (field->fld_dtype <= dtype_any_text) { request->append_number(isc_dyn_fld_sub_type, field->fld_sub_type); @@ -5804,8 +5796,6 @@ { request->append_number(isc_dyn_fld_length, field->fld_length); } - if (!(request->req_dbb->dbb_flags & DBB_v3)) - { request->append_number(isc_dyn_fld_char_length, field->fld_character_length); request->append_number(isc_dyn_fld_character_set, @@ -5814,7 +5804,6 @@ request->append_number(isc_dyn_fld_collation, field->fld_collation_id); } - } else { request->append_number(isc_dyn_fld_scale, field->fld_scale); request->append_number(isc_dyn_fld_length, field->fld_length); Index: dsql.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/dsql/dsql.cpp,v retrieving revision 1.154 retrieving revision 1.155 diff -b -U3 -r1.154 -r1.155 --- dsql.cpp 20 Jul 2005 12:49:56 -0000 1.154 +++ dsql.cpp 10 Sep 2005 07:15:23 -0000 1.155 @@ -3388,8 +3388,6 @@ } } - if (!(request->req_dbb->dbb_flags & DBB_v3)) - { UCHAR buffer[20]; // Not used after retrieved. if (request->req_type == REQ_UPDATE_CURSOR) { @@ -3421,7 +3419,7 @@ isc_update_conflict, 0); } } - } + return return_status; } @@ -4122,11 +4120,8 @@ isc_database_cleanup(user_status, db_handle, cleanup_database, NULL); THREAD_ENTER(); -// Determine if the database is V3 or V4 - SCHAR buffer[128]; - database->dbb_flags |= DBB_v3; THREAD_EXIT(); const ISC_STATUS s = isc_database_info(user_status, db_handle, @@ -4157,8 +4152,10 @@ break; case isc_info_ods_version: - if (gds__vax_integer(data, l) > 7) - database->dbb_flags &= ~DBB_v3; + if (gds__vax_integer(data, l) <= 7) + ERRD_post(isc_sqlerr, isc_arg_number, (SLONG) - 804, + isc_arg_gds, isc_dsql_too_old_ods, + isc_arg_number, (SLONG) 8, 0); break; /* This flag indicates the version level of the engine Index: dsql.h =================================================================== RCS file: /cvsroot/firebird/firebird2/src/dsql/dsql.h,v retrieving revision 1.82 retrieving revision 1.83 diff -b -U3 -r1.82 -r1.83 --- dsql.h 9 Sep 2005 10:15:02 -0000 1.82 +++ dsql.h 10 Sep 2005 07:15:23 -0000 1.83 @@ -173,9 +173,8 @@ //! values used in dbb_flags enum dbb_flags_vals { DBB_no_arrays = 0x1, - DBB_v3 = 0x2, - DBB_no_charset = 0x4, - DBB_read_only = 0x8 + DBB_no_charset = 0x2, + DBB_read_only = 0x4 }; //! Relation block Index: gen.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/dsql/gen.cpp,v retrieving revision 1.91 retrieving revision 1.92 diff -b -U3 -r1.91 -r1.92 --- gen.cpp 2 Sep 2005 05:30:14 -0000 1.91 +++ gen.cpp 10 Sep 2005 07:15:23 -0000 1.92 @@ -264,15 +264,11 @@ return; case nod_agg_count: - if (!(request->req_dbb->dbb_flags & DBB_v3)) { if (node->nod_count) blr_operator = (node->nod_flags & NOD_AGG_DISTINCT) ? blr_agg_count_distinct : blr_agg_count2; else blr_operator = blr_agg_count; - } - else - blr_operator = blr_agg_count; break; case nod_agg_min: @@ -283,19 +279,13 @@ break; case nod_agg_average: - if (!(request->req_dbb->dbb_flags & DBB_v3)) blr_operator = (node->nod_flags & NOD_AGG_DISTINCT) ? blr_agg_average_distinct : blr_agg_average; - else - blr_operator = blr_agg_average; break; case nod_agg_total: - if (!(request->req_dbb->dbb_flags & DBB_v3)) blr_operator = (node->nod_flags & NOD_AGG_DISTINCT) ? blr_agg_total_distinct : blr_agg_total; - else - blr_operator = blr_agg_total; break; case nod_agg_average2: @@ -414,10 +404,7 @@ blr_operator = blr_any; break; case nod_ansi_any: - if (!(request->req_dbb->dbb_flags & DBB_v3)) blr_operator = blr_ansi_any; - else - blr_operator = blr_any; break; case nod_ansi_all: blr_operator = blr_ansi_all; @@ -1440,17 +1427,6 @@ stuff(request, blr_literal); - if ((desc->dsc_dtype == dtype_double) - && (request->req_dbb->dbb_flags & DBB_v3)) - // v3 doesn't understand blr_double literal, generate blr_text instead - { - tmp_desc = *desc; - tmp_desc.dsc_dtype = dtype_text; - tmp_desc.dsc_length = (USHORT)(UCHAR) desc->dsc_scale; // length of string literal - tmp_desc.dsc_scale = 0; - desc = &tmp_desc; - } - USHORT l = 0; //= desc->dsc_length; const UCHAR* p = desc->dsc_address; @@ -1606,9 +1582,7 @@ { switch (desc->dsc_dtype) { case dtype_text: - if (request->req_dbb->dbb_flags & DBB_v3) - stuff(request, blr_text); - else if (texttype || desc->dsc_ttype() == ttype_binary) { + if (texttype || desc->dsc_ttype() == ttype_binary) { stuff(request, blr_text2); stuff_word(request, desc->dsc_ttype()); } @@ -1621,9 +1595,7 @@ break; case dtype_varying: - if (request->req_dbb->dbb_flags & DBB_v3) - stuff(request, blr_varying); - else if (texttype || desc->dsc_ttype() == ttype_binary) { + if (texttype || desc->dsc_ttype() == ttype_binary) { stuff(request, blr_varying2); stuff_word(request, desc->dsc_ttype()); } @@ -1822,8 +1794,7 @@ stuff(request, blr_for); - if (!for_select->nod_arg[e_flp_action] && - !(request->req_dbb->dbb_flags & DBB_v3)) + if (!for_select->nod_arg[e_flp_action]) { stuff(request, blr_singular); } @@ -2206,8 +2177,7 @@ **/ static void gen_rse( dsql_req* request, const dsql_nod* rse) { - if ((rse->nod_flags & NOD_SELECT_EXPR_SINGLETON) - && !(request->req_dbb->dbb_flags & DBB_v3)) + if (rse->nod_flags & NOD_SELECT_EXPR_SINGLETON) { stuff(request, blr_singular); } @@ -2408,7 +2378,6 @@ // Set up record version - for post v33 databases - if (!(request->req_dbb->dbb_flags & DBB_v3)) { parameter = MAKE_parameter(request->req_receive, false, false, 0, NULL); @@ -2421,7 +2390,6 @@ } } } - } #ifdef SCROLLABLE_CURSORS /* define the parameters for the scrolling message--offset and direction, @@ -2474,7 +2442,6 @@ message = request->req_receive; stuff(request, blr_for); - if (!(request->req_dbb->dbb_flags & DBB_v3)) stuff(request, blr_stall); gen_rse(request, rse); Index: metd.epp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/dsql/metd.epp,v retrieving revision 1.78 retrieving revision 1.79 diff -b -U3 -r1.78 -r1.79 --- metd.epp 4 Sep 2005 21:32:16 -0000 1.78 +++ metd.epp 10 Sep 2005 07:15:23 -0000 1.79 @@ -339,11 +339,8 @@ END_FOR ON_ERROR - if (!(dbb->dbb_flags & DBB_v3)) - { THREAD_ENTER(); ERRD_punt(isc_status); - } END_ERROR; THREAD_ENTER(); @@ -555,11 +552,8 @@ END_FOR ON_ERROR - if (!(dbb->dbb_flags & DBB_v3)) - { THREAD_ENTER(); ERRD_punt(isc_status); - } END_ERROR; THREAD_ENTER(); @@ -621,11 +615,8 @@ THREAD_EXIT(); END_FOR ON_ERROR - if (!(dbb->dbb_flags & DBB_v3)) - { THREAD_ENTER(); ERRD_punt(isc_status); - } END_ERROR; THREAD_ENTER(); @@ -671,11 +662,8 @@ THREAD_EXIT(); END_FOR ON_ERROR - if (!(dbb->dbb_flags & DBB_v3)) - { THREAD_ENTER(); ERRD_punt(isc_status); - } END_ERROR; THREAD_ENTER(); @@ -733,11 +721,8 @@ THREAD_EXIT(); END_FOR ON_ERROR - if (!(dbb->dbb_flags & DBB_v3)) - { THREAD_ENTER(); ERRD_punt(isc_status); - } END_ERROR; THREAD_ENTER(); @@ -1058,30 +1043,6 @@ */ THREAD_EXIT(); - if (dbb->dbb_flags & DBB_v3) { - FOR(REQUEST_HANDLE dbb->dbb_requests[irq_func_return] TRANSACTION_HANDLE request->req_trans) - X IN RDB$FUNCTION_ARGUMENTS WITH - X.RDB$FUNCTION_NAME EQ name->str_data AND - X.RDB$ARGUMENT_POSITION EQ return_arg - - THREAD_ENTER(); - - userFunc->udf_dtype = (X.RDB$FIELD_TYPE != blr_blob) ? - gds_cvt_blr_dtype[X.RDB$FIELD_TYPE] : dtype_blob; - userFunc->udf_scale = X.RDB$FIELD_SCALE; - userFunc->udf_sub_type = X.RDB$FIELD_SUB_TYPE; - userFunc->udf_length = X.RDB$FIELD_LENGTH; - - THREAD_EXIT(); - - END_FOR - ON_ERROR - THREAD_ENTER(); - ERRD_punt(isc_status); - END_ERROR; - } - else { // V4 or greater dbb - FOR(REQUEST_HANDLE dbb->dbb_requests[irq_func_return] TRANSACTION_HANDLE request->req_trans) X IN RDB$FUNCTION_ARGUMENTS WITH X.RDB$FUNCTION_NAME EQ name->str_data @@ -1156,7 +1117,6 @@ THREAD_ENTER(); ERRD_punt(isc_status); END_ERROR; - } THREAD_ENTER(); @@ -1441,7 +1401,6 @@ END_FOR ON_ERROR - if (!(dbb->dbb_flags & DBB_v3)) THREAD_ENTER(); ERRD_punt(isc_status); END_ERROR; @@ -1612,63 +1571,6 @@ THREAD_EXIT(); - if (dbb->dbb_flags & DBB_v3) { - FOR(REQUEST_HANDLE dbb->dbb_requests[irq_fields] TRANSACTION_HANDLE request->req_trans) - FLX IN RDB$FIELDS CROSS - RFR IN RDB$RELATION_FIELDS - WITH FLX.RDB$FIELD_NAME EQ RFR.RDB$FIELD_SOURCE - AND RFR.RDB$RELATION_NAME EQ name->str_data - SORTED BY RFR.RDB$FIELD_POSITION - - THREAD_ENTER(); - - // allocate the field block - - fb_utils::exact_name(RFR.RDB$FIELD_NAME); - - // Allocate from default or permanent pool as appropriate - - if (relation->rel_flags & REL_new_relation) - *ptr = field = FB_NEW_RPT(*tdsql->getDefaultPool(), - strlen(RFR.RDB$FIELD_NAME)) dsql_fld; - else - *ptr = field = FB_NEW_RPT(*dbb->dbb_pool, - strlen(RFR.RDB$FIELD_NAME)) dsql_fld; - ptr = &field->fld_next; - - // get field information - - strcpy(field->fld_name, RFR.RDB$FIELD_NAME); - field->fld_id = RFR.RDB$FIELD_ID; - field->fld_length = FLX.RDB$FIELD_LENGTH; - field->fld_scale = FLX.RDB$FIELD_SCALE; - field->fld_sub_type = FLX.RDB$FIELD_SUB_TYPE; - field->fld_relation = relation; - - if (!FLX.RDB$COMPUTED_BLR.NULL) - field->fld_flags |= FLD_computed; - - convert_dtype(field, FLX.RDB$FIELD_TYPE); - - if (FLX.RDB$FIELD_TYPE == blr_blob) { - field->fld_seg_length = FLX.RDB$SEGMENT_LENGTH; - } - - if (!(dbb->dbb_flags & DBB_no_arrays)) - check_array(request, FLX.RDB$FIELD_NAME, field); - - field->fld_flags |= FLD_nullable; - - THREAD_EXIT(); - - END_FOR - ON_ERROR - THREAD_ENTER(); - ERRD_punt(isc_status); - END_ERROR; - } - else { // V4 ODS8 dbb - FOR(REQUEST_HANDLE dbb->dbb_requests[irq_fields] TRANSACTION_HANDLE request->req_trans) FLX IN RDB$FIELDS CROSS RFR IN RDB$RELATION_FIELDS @@ -1739,7 +1641,6 @@ THREAD_ENTER(); ERRD_punt(isc_status); END_ERROR; - } THREAD_ENTER(); Index: pass1.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/dsql/pass1.cpp,v retrieving revision 1.240 retrieving revision 1.241 diff -b -U3 -r1.240 -r1.241 --- pass1.cpp 3 Sep 2005 08:03:39 -0000 1.240 +++ pass1.cpp 10 Sep 2005 07:15:23 -0000 1.241 @@ -3450,7 +3450,7 @@ dsql_par* source; if (parent->req_type != REQ_SELECT_UPD || !(source = find_dbkey(parent, relation_name)) || - (!rv_source && !(request->req_dbb->dbb_flags & DBB_v3))) + !rv_source) { // cursor is not updatable ERRD_post(isc_sqlerr, isc_arg_number, (SLONG) - 510, |