diff --git a/doc/README.performance_monitoring b/doc/README.performance_monitoring index b6358f7d16..6337042a0b 100644 --- a/doc/README.performance_monitoring +++ b/doc/README.performance_monitoring @@ -44,7 +44,7 @@ Default analysis module. performance snapshot. Snapshot detail may vary, but in any case it contains information on all activities performed by server for database during a given period of time, possibly in aggregated form. All snapshots may be compared to -allow quanititive measurements of performance improvements due to various +allow quantitative measurements of performance improvements due to various optimization activities or changes in user applications and infrastucture. Snapshot data is collected by trace module in raw form in a binary log file and diff --git a/src/common/classes/fb_string.cpp b/src/common/classes/fb_string.cpp index 7a9d76b1a7..054448cd3c 100644 --- a/src/common/classes/fb_string.cpp +++ b/src/common/classes/fb_string.cpp @@ -393,7 +393,7 @@ namespace Firebird { n *= 2; l = VSNPRINTF(baseAssign(n), n + 1, format, params); if (l > 16 * 1024) { - char *errLine = "String size overflow in .printf()"; + const char *errLine = "String size overflow in .printf()"; memcpy(baseAssign(strlen(errLine)), errLine, strlen(errLine)); return; } diff --git a/src/dsql/ddl.cpp b/src/dsql/ddl.cpp index 78eb5184c0..7dd0f8e255 100644 --- a/src/dsql/ddl.cpp +++ b/src/dsql/ddl.cpp @@ -20,7 +20,7 @@ * All Rights Reserved. * Contributor(s): ______________________________________. * - * $Id: ddl.cpp,v 1.91 2004-04-09 08:03:58 hvlad Exp $ + * $Id: ddl.cpp,v 1.92 2004-04-10 00:25:05 robocop Exp $ * 2001.5.20 Claudio Valderrama: Stop null pointer that leads to a crash, * caused by incomplete yacc syntax that allows ALTER DOMAIN dom SET; * @@ -6123,10 +6123,11 @@ void dsql_req::end_blr() char* blr_base = req_blr_string->str_data + req_base_offset; const ULONG length = (ULONG) (reinterpret_cast(req_blr) - blr_base) - 2; - if (length > 0xFFFF) - /* TODO : need appropriate error message, like "too long BLR" */ + if (length > 0xFFFF) { + // TODO : need appropriate error message, like "too long BLR" ERRD_post(isc_invalid_blr, isc_arg_number, (SLONG) length, 0); + } *blr_base++ = (UCHAR) length; *blr_base = (UCHAR) (length >> 8); diff --git a/src/dsql/dsql.cpp b/src/dsql/dsql.cpp index d0af8b191e..e48730633a 100644 --- a/src/dsql/dsql.cpp +++ b/src/dsql/dsql.cpp @@ -887,7 +887,7 @@ ISC_STATUS callback_execute_immediate( ISC_STATUS* status, THREAD_ENTER; // 3. Call execute... function - ISC_STATUS rc = dsql8_execute_immediate_common(status, + const ISC_STATUS rc = dsql8_execute_immediate_common(status, &why_db_handle, &why_trans_handle, sql_operator.length(), sql_operator.c_str(), database->dbb_db_SQL_dialect, diff --git a/src/dsql/metd.epp b/src/dsql/metd.epp index 3810f2a091..c62c3ef9c1 100644 --- a/src/dsql/metd.epp +++ b/src/dsql/metd.epp @@ -882,7 +882,8 @@ dsql_udf* METD_get_function(dsql_req* request, const dsql_str* name) FRBRD *DB, *gds_trans; dsql_udf* userFunc; dsql_udf* temp; - DSQL_NOD udf_param_node, *ptr; + dsql_nod* udf_param_node; + dsql_nod** ptr; metd_rec_lock(); @@ -1082,7 +1083,7 @@ dsql_udf* METD_get_function(dsql_req* request, const dsql_str* name) ptr = userFunc->udf_arguments->nod_arg + arg_count; while (stack) { - *--ptr = (DSQL_NOD) LLS_POP (&stack); + *--ptr = (dsql_nod*) LLS_POP (&stack); // dimitr: adjust the UDF arguments for CSTRING if ((*ptr)->nod_desc.dsc_dtype == dtype_cstring) (*ptr)->nod_desc.dsc_dtype = dtype_text; @@ -1172,7 +1173,7 @@ dsql_nod* METD_get_primary_key(dsql_req* request, const dsql_str* relation_name) list = MAKE_node(nod_list, (int) X.RDB$SEGMENT_COUNT); dsql_str* field_name = MAKE_cstring(Y.RDB$FIELD_NAME); dsql_nod* field_node = MAKE_node(nod_field_name, (int) e_fln_count); - field_node->nod_arg[e_fln_name] = (DSQL_NOD) field_name; + field_node->nod_arg[e_fln_name] = (dsql_nod*) field_name; list->nod_arg[count] = field_node; count++; diff --git a/src/dsql/parse.cpp b/src/dsql/parse.cpp index b61521f2d9..7badce427b 100644 --- a/src/dsql/parse.cpp +++ b/src/dsql/parse.cpp @@ -393,7 +393,7 @@ const int DEF_CACHE_BUFFERS = 1000; #define YYINITDEPTH 2048 #define YYSTACK_USE_ALLOCA 1 -#define YYSTYPE DSQL_NOD +#define YYSTYPE dsql_nod* #if defined(DEBUG) || defined(DEV_BUILD) #define YYDEBUG 1 #endif @@ -424,7 +424,7 @@ static bool long_int(dsql_nod*, SLONG*); #endif static dsql_fld* make_field (dsql_nod*); static dsql_fil* make_file(); -static DSQL_NOD make_list (dsql_nod*); +static dsql_nod* make_list (dsql_nod*); static dsql_nod* make_node (NOD_TYPE, int, ...); static dsql_nod* make_parameter (void); static dsql_nod* make_flag_node (NOD_TYPE, SSHORT, int, ...); @@ -4775,7 +4775,7 @@ case 262: { yyval = yyvsp[0]; } break; case 263: -{ yyval = (DSQL_NOD) NULL; } +{ yyval = (dsql_nod*) NULL; } break; case 264: { yyval = make_list (yyvsp[0]); } @@ -7636,6 +7636,11 @@ int LexerState::yylex ( gds__free (buffer); return -1; } + // Care about multi-line constants and identifiers + if (*ptr == '\n') { + lines++; + line_start = ptr + 1; + } /* *ptr is quote - if next != quote we're at the end */ if ((*ptr == c) && ((++ptr == end) || (*ptr != c))) break; diff --git a/src/dsql/parse.y b/src/dsql/parse.y index 86afa0c1fc..af0309a9a6 100644 --- a/src/dsql/parse.y +++ b/src/dsql/parse.y @@ -121,7 +121,7 @@ const int DEF_CACHE_BUFFERS = 1000; #define YYINITDEPTH 2048 #define YYSTACK_USE_ALLOCA 1 -#define YYSTYPE DSQL_NOD +#define YYSTYPE dsql_nod* #if defined(DEBUG) || defined(DEV_BUILD) #define YYDEBUG 1 #endif @@ -152,7 +152,7 @@ static bool long_int(dsql_nod*, SLONG*); #endif static dsql_fld* make_field (dsql_nod*); static dsql_fil* make_file(); -static DSQL_NOD make_list (dsql_nod*); +static dsql_nod* make_list (dsql_nod*); static dsql_nod* make_node (NOD_TYPE, int, ...); static dsql_nod* make_parameter (void); static dsql_nod* make_flag_node (NOD_TYPE, SSHORT, int, ...); @@ -1521,7 +1521,7 @@ default_par_opt : DEFAULT begin_string default_value | '=' begin_string default_value { $$ = $3; } | begin_string - { $$ = (DSQL_NOD) NULL; } + { $$ = (dsql_nod*) NULL; } ; local_declaration_list : local_declarations @@ -4789,7 +4789,7 @@ int LexerState::yylex ( // Care about multi-line constants and identifiers if (*ptr == '\n') { lines++; - line_start = ptr+1; + line_start = ptr + 1; } /* *ptr is quote - if next != quote we're at the end */ if ((*ptr == c) && ((++ptr == end) || (*ptr != c))) diff --git a/src/gpre/gpre.cpp b/src/gpre/gpre.cpp index 74e24e4ea7..4a14dee4ce 100644 --- a/src/gpre/gpre.cpp +++ b/src/gpre/gpre.cpp @@ -20,7 +20,7 @@ // // All Rights Reserved. // Contributor(s): ______________________________________. -// $Id: gpre.cpp,v 1.54 2004-03-12 07:00:22 skidder Exp $ +// $Id: gpre.cpp,v 1.55 2004-04-10 00:25:12 robocop Exp $ // Revision 1.2 2000/11/16 15:54:29 fsg // Added new switch -verbose to gpre that will dump // parsed lines to stderr @@ -2462,9 +2462,22 @@ static void pass2( SLONG start_position) if ((sw_language == lang_ada) && (ada_flags & ADA_create_database)) ib_fprintf(out_file, "with unchecked_conversion;\nwith system;\n"); #endif -// + + // Let's prepare for worst case: a lot of small dirs, many "\" to duplicate. + char backlash_fixed_file_name[MAXPATHLEN + MAXPATHLEN]; + { // scope + char* p = backlash_fixed_file_name; + for (const char* q = file_name; *q;) + { + if ((*p++ = *q++) == '\\') + *p++ = '\\'; + } + *p = 0; + } // scope + +// //if (sw_lines) -// ib_fprintf (out_file, "#line 1 \"%s\"\n", file_name); +// ib_fprintf (out_file, "#line 1 \"%s\"\n", backlash_fixed_file_name); // SLONG line = 0; @@ -2494,10 +2507,10 @@ static void pass2( SLONG start_position) if (line_pending) { if (line == 1) ib_fprintf(out_file, "#line %ld \"%s\"\n", line, - file_name); + backlash_fixed_file_name); else ib_fprintf(out_file, "\n#line %ld \"%s\"", line, - file_name); + backlash_fixed_file_name); line_pending = false; } @@ -2620,14 +2633,14 @@ static void pass2( SLONG start_position) // We're out of actions -- dump the remaining text to the output stream. if (!line && line_pending) { - ib_fprintf(out_file, "#line 1 \"%s\"\n", file_name); + ib_fprintf(out_file, "#line 1 \"%s\"\n", backlash_fixed_file_name); line_pending = false; } while ((c = get_char(input_file)) != EOF) { if (c == '\n' && line_pending) { - ib_fprintf(out_file, "\n#line %ld \"%s\"", line + 1, file_name); + ib_fprintf(out_file, "\n#line %ld \"%s\"", line + 1, backlash_fixed_file_name); line_pending = false; } if (c == EOF) { diff --git a/src/include/fb_string.h b/src/include/fb_string.h index 18524303d6..63af4f3334 100644 --- a/src/include/fb_string.h +++ b/src/include/fb_string.h @@ -572,8 +572,8 @@ namespace Firebird } int compare(size_type p0, size_type n0, const_pointer s, size_type n) const { AdjustRange(length(), p0, n0); - size_type ml = n0 < n ? n0 : n; - int rc = Comparator::compare(&c_str()[p0], s, ml); + const size_type ml = n0 < n ? n0 : n; + const int rc = Comparator::compare(&c_str()[p0], s, ml); return rc ? rc : n - n0; } diff --git a/src/isql/extract.epp b/src/isql/extract.epp index 5bd0d41ac3..fade03f556 100644 --- a/src/isql/extract.epp +++ b/src/isql/extract.epp @@ -19,7 +19,7 @@ * * All Rights Reserved. * Contributor(s): ______________________________________. - * $Id: extract.epp,v 1.26 2004-03-25 07:33:36 aafemt Exp $ + * $Id: extract.epp,v 1.27 2004-04-10 00:25:18 robocop Exp $ * Revision 1.3 2000/11/22 17:07:25 patrickgriffin * In get_procedure_args change comment style from // to c style * @@ -1622,6 +1622,7 @@ static void list_create_db() return; END_ERROR; + /* IGNORE WAL FOR THE FORESEEABLE FUTURE. bool first_file = true; first = true; // CVC: I'm not sure if this line should be added here. bool has_wal = false; @@ -1665,10 +1666,9 @@ static void list_create_db() ISQL_printf (Out, Print_buffer); } - /* Since we are fetching order by FILE_FLAGS, the LOG_0verflow will - ** be last. It will only appear if there were named round robin, - ** so we must close the parens first - */ + // Since we are fetching order by FILE_FLAGS, the LOG_0verflow will + // be last. It will only appear if there were named round robin, + // so we must close the parens first // We have round robin and overflow file specifications else @@ -1703,13 +1703,13 @@ static void list_create_db() END_ERROR; ISQL_printf(Out, NEWLINE); -/************************************************************* -** isc_info_num_wal_buffers for NUM_LOG_BUFFERS -** isc_info_wal_buffer_size for LOG_BUFFER_SIZE -** isc_info_wal_grpc_wait_usecs for GROUP_COMMIT_WAIT_TIME -** isc_info_wal_ckpt_length for CHECK_POINT_LENGTH -** -**************************************************************/ +// ************************************************************** +// ** isc_info_num_wal_buffers for NUM_LOG_BUFFERS +// ** isc_info_wal_buffer_size for LOG_BUFFER_SIZE +// ** isc_info_wal_grpc_wait_usecs for GROUP_COMMIT_WAIT_TIME +// ** isc_info_wal_ckpt_length for CHECK_POINT_LENGTH +// ** +// ************************************************************** bool set_used = false; if (has_wal) @@ -1774,6 +1774,7 @@ static void list_create_db() if (buffer) ISQL_FREE(buffer); } + END OF WAL-RELATED CODE */ if (!first) { diff --git a/src/isql/isql.h b/src/isql/isql.h index d48a361499..d79530085b 100644 --- a/src/isql/isql.h +++ b/src/isql/isql.h @@ -19,7 +19,7 @@ * * All Rights Reserved. * Contributor(s): ______________________________________. - * $Id: isql.h,v 1.22 2004-03-07 07:58:37 robocop Exp $ + * $Id: isql.h,v 1.23 2004-04-10 00:25:18 robocop Exp $ * Revision 1.2 2000/11/18 16:49:24 fsg * Increased PRINT_BUFFER_LENGTH to 2048 to show larger plans * Fixed Bug #122563 in extract.e get_procedure_args @@ -316,12 +316,13 @@ const char SINGLE_QUOTE = '\''; -const SCHAR wal_items[] = { - isc_info_num_wal_buffers, - isc_info_wal_buffer_size, - isc_info_wal_ckpt_length, - isc_info_wal_grpc_wait_usecs, - isc_info_end -}; +//const SCHAR wal_items[] = { +// isc_info_num_wal_buffers, +// isc_info_wal_buffer_size, +// isc_info_wal_ckpt_length, +// isc_info_wal_grpc_wait_usecs, +// isc_info_end +//}; + #endif // ISQL_ISQL_H diff --git a/src/isql/show.epp b/src/isql/show.epp index 1867e5ccf3..0fd91f6a51 100644 --- a/src/isql/show.epp +++ b/src/isql/show.epp @@ -19,7 +19,7 @@ * * All Rights Reserved. * Contributor(s): ______________________________________. - * $Id: show.epp,v 1.35 2004-03-07 07:58:37 robocop Exp $ + * $Id: show.epp,v 1.36 2004-04-10 00:25:19 robocop Exp $ * Revision 1.2 2000/11/19 07:02:49 fsg * Change in show.e to use CHARACTER_LENGTH instead of FIELD_LENGTH in * SHOW PROCEDURE @@ -394,6 +394,8 @@ bool SHOW_dbb_parameters(FRBRD* db_handle, sprintf (info, "Transaction - Next = %ld %s", value_out, NEWLINE); break; +/* IGNORE WAL. + case isc_info_num_wal_buffers: value_out = isc_vax_integer(d, length); if (translate) { @@ -452,6 +454,7 @@ bool SHOW_dbb_parameters(FRBRD* db_handle, sprintf(info, "Wal group commit wait = %ld %s", value_out, NEWLINE); break; +*/ case isc_info_base_level: value_out = isc_vax_integer(d, length); @@ -1779,6 +1782,8 @@ static void show_db() return; } +/* IGNORE WAL + bool is_wal = false; FOR LOG IN RDB$LOG_FILES SORTED BY LOG.RDB$FILE_FLAGS, LOG.RDB$FILE_SEQUENCE @@ -1837,6 +1842,7 @@ static void show_db() { ISQL_printf(Out, info_buf); } +*/ if (V4) { FOR DBB IN RDB$DATABASE diff --git a/src/jrd/cch.cpp b/src/jrd/cch.cpp index b493611ebd..bbd75e7aab 100644 --- a/src/jrd/cch.cpp +++ b/src/jrd/cch.cpp @@ -2223,7 +2223,7 @@ void CCH_release(thread_db* tdbb, WIN * window, bool release_tail) } BufferControl* bcb = dbb->dbb_bcb; QUE_LEAST_RECENTLY_USED(bdb->bdb_in_use); - bdb->bdb_sequence = 0; + //bdb->bdb_sequence = 0; #ifdef CACHE_WRITER if (bdb->bdb_flags & (BDB_dirty | BDB_db_dirty)) { @@ -3926,7 +3926,7 @@ static BufferDesc* get_buffer(thread_db* tdbb, SLONG page, LATCH latch, SSHORT l } else { bdb->bdb_flags &= ~(BDB_faked | BDB_prefetch); - bdb->bdb_sequence = dbb->dbb_fetches++; + //bdb->bdb_sequence = dbb->dbb_fetches++; return bdb; } } @@ -4026,7 +4026,7 @@ static BufferDesc* get_buffer(thread_db* tdbb, SLONG page, LATCH latch, SSHORT l PAGE_LOCK_RELEASE(bdb->bdb_lock); } #endif - bdb->bdb_sequence = dbb->dbb_fetches++; + //bdb->bdb_sequence = dbb->dbb_fetches++; BCB_MUTEX_RELEASE; return bdb; } diff --git a/src/jrd/cch.h b/src/jrd/cch.h index 1ed2a71503..c4b81e41a7 100644 --- a/src/jrd/cch.h +++ b/src/jrd/cch.h @@ -43,6 +43,7 @@ struct que; class BufferDesc; class SparseBitmap; class BlockingThread; +class Database; /* Page buffer cache size constraints. */ @@ -54,7 +55,7 @@ class BlockingThread; struct bcb_repeat { BufferDesc* bcb_bdb; /* Buffer descriptor block */ - que bcb_page_mod; /* Que of buffers with page mod n */ + que bcb_page_mod; /* Que of buffers with page mod n */ }; class BufferControl : public pool_alloc_rpt @@ -70,7 +71,7 @@ class BufferControl : public pool_alloc_rpt SSHORT bcb_free_minimum; /* Threshold to activate cache writer */ ULONG bcb_count; /* Number of buffers allocated */ ULONG bcb_checkpoint; /* Count of buffers to checkpoint */ - SparseBitmap* bcb_prefetch; /* Bitmap of pages to prefetch */ + SparseBitmap* bcb_prefetch; /* Bitmap of pages to prefetch */ bcb_repeat bcb_rpt[1]; }; @@ -90,15 +91,15 @@ class BufferControl : public pool_alloc_rpt class BufferDesc : public pool_alloc { public: - class Database* bdb_dbb; /* Database block (for ASTs) */ + Database* bdb_dbb; /* Database block (for ASTs) */ Lock* bdb_lock; /* Lock block for buffer */ que bdb_que; /* Buffer que */ que bdb_in_use; /* queue of buffers in use */ - Ods::pag* bdb_buffer; /* Actual buffer */ + Ods::pag* bdb_buffer; /* Actual buffer */ exp_index_buf* bdb_expanded_buffer; /* expanded index buffer */ - BlockingThread* bdb_blocked; /* Blocked attachments block */ + BlockingThread* bdb_blocked; /* Blocked attachments block */ SLONG bdb_page; /* Database page number in buffer */ - ULONG bdb_sequence; + //ULONG bdb_sequence; SLONG bdb_incarnation; ULONG bdb_transactions; /* vector of dirty flags to reduce commit overhead */ SLONG bdb_mark_transaction; /* hi-water mark transaction to defer header page I/O */ diff --git a/src/jrd/dyn.epp b/src/jrd/dyn.epp index facda13a4c..df61a3dd61 100644 --- a/src/jrd/dyn.epp +++ b/src/jrd/dyn.epp @@ -124,7 +124,7 @@ void DYN_ddl(Attachment* attachment, jrd_tra* transaction, USHORT length, *status++ = 0; *status = isc_arg_end; - struct Global gbl(transaction); + Global gbl(transaction); // Create a pool for DYN to operate in. It will be released when // the routine exits. diff --git a/src/jrd/err.cpp b/src/jrd/err.cpp index bba36b68c3..d07c72aaab 100644 --- a/src/jrd/err.cpp +++ b/src/jrd/err.cpp @@ -499,7 +499,8 @@ void ERR_punt(void) gds__log_status(tdbb->tdbb_attachment->att_filename ? tdbb->tdbb_attachment->att_filename.c_str() : NULL, tdbb->tdbb_status_vector); - if (Config::getBugcheckAbort()) abort(); + if (Config::getBugcheckAbort()) + abort(); } Firebird::status_exception::raise(tdbb->tdbb_status_vector); diff --git a/src/jrd/evl.cpp b/src/jrd/evl.cpp index 287d0178d3..433550eeae 100644 --- a/src/jrd/evl.cpp +++ b/src/jrd/evl.cpp @@ -19,7 +19,7 @@ * * All Rights Reserved. * Contributor(s): ______________________________________. - * $Id: evl.cpp,v 1.77 2004-04-09 16:32:52 skidder Exp $ + * $Id: evl.cpp,v 1.78 2004-04-10 00:25:21 robocop Exp $ */ /* @@ -2745,9 +2745,9 @@ static dsc* add_timestamp(const dsc* desc, const jrd_nod* node, impure_value* va * 3E18, which fits into an INT64. */ // 09-Apr-2004, Nickolay Samofatov. Adjust number before division to - // make sure we don't loose a tick as a result of remainder truncation + // make sure we don't lose a tick as a result of remainder truncation d2 = (d2 * 1000 + (SECONDS_PER_DAY / 200)) / (SINT64) (SECONDS_PER_DAY / 100); - value->vlu_misc.vlu_int64 = (SINT64) d2; + value->vlu_misc.vlu_int64 = d2; result->dsc_dtype = dtype_int64; result->dsc_length = sizeof(SINT64); result->dsc_scale = DIALECT_3_TIMESTAMP_SCALE; diff --git a/src/jrd/opt.cpp b/src/jrd/opt.cpp index d62e773d84..1d4db7ce1c 100644 --- a/src/jrd/opt.cpp +++ b/src/jrd/opt.cpp @@ -1442,8 +1442,8 @@ static void check_sorts(RecordSelExpr* rse) if (!project && sort && (sort->nod_count <= group->nod_count)) { const jrd_nod* const* sort_ptr = sort->nod_arg; const jrd_nod* const* const sort_end = sort_ptr + sort->nod_count; - for (; - sort_ptr < sort_end; sort_ptr++) + for (; sort_ptr < sort_end; sort_ptr++) + { const jrd_nod* const* group_ptr = group->nod_arg; const jrd_nod* const* const group_end = group_ptr + sort->nod_count; diff --git a/src/jrd/par.cpp b/src/jrd/par.cpp index 85644e4d63..7958de34e3 100644 --- a/src/jrd/par.cpp +++ b/src/jrd/par.cpp @@ -115,7 +115,7 @@ static jrd_nod* par_stream(thread_db*, CompilerScratch*); static jrd_nod* par_union(thread_db*, CompilerScratch*); static USHORT par_word(CompilerScratch*); static jrd_nod* parse(thread_db*, CompilerScratch*, USHORT, USHORT expected_optional = 0); -static void syntax_error(CompilerScratch*, const TEXT *); +static void syntax_error(CompilerScratch*, const TEXT*); static void warning(CompilerScratch*, ...); #define BLR_PEEK *(csb->csb_running) @@ -1525,7 +1525,7 @@ static USHORT par_name(CompilerScratch* csb, Firebird::string& string) * Parse a counted string, returning count. * **************************************/ - USHORT l = BLR_BYTE; + ULONG l = BLR_BYTE; string = ""; if (l) { @@ -1939,7 +1939,7 @@ static jrd_nod* par_relation( if (blr_operator == blr_rid || blr_operator == blr_rid2) { const SSHORT id = BLR_WORD; if (blr_operator == blr_rid2) { - const SSHORT length = BLR_PEEK; + BLR_PEEK; // Do not delete. It skips the length. alias_string = FB_NEW(csb->csb_pool) Firebird::string(csb->csb_pool); par_name(csb, *alias_string); } @@ -1951,7 +1951,7 @@ static jrd_nod* par_relation( else if (blr_operator == blr_relation || blr_operator == blr_relation2) { par_name(csb, name); if (blr_operator == blr_relation2) { - const SSHORT length = BLR_PEEK; + BLR_PEEK; // Do not delete. It skips the length. alias_string = FB_NEW(csb->csb_pool) Firebird::string(csb->csb_pool); par_name(csb, *alias_string); } @@ -2283,8 +2283,6 @@ static jrd_nod* parse(thread_db* tdbb, CompilerScratch* csb, USHORT expected, * Parse a BLR expression. * **************************************/ - Firebird::string name; - SET_TDBB(tdbb); const SSHORT blr_operator = BLR_BYTE;