Skip to content

Commit 1eba28b

Browse files
committed
Rolled-back old fix for CORE-6015. Next attempt to fix it
1 parent 6976e20 commit 1eba28b

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

src/jrd/btr.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,14 @@ DSC* BTR_eval_expression(thread_db* tdbb, index_desc* idx, Record* record, bool&
545545
SET_TDBB(tdbb);
546546
fb_assert(idx->idx_expression != NULL);
547547

548+
// check for resursive expression evaluation
548549
jrd_req* const org_request = tdbb->getRequest();
550+
for (auto req = org_request->req_caller; req; req = req->req_caller)
551+
{
552+
if (req->getStatement() == idx->idx_expression_statement)
553+
ERR_post(Arg::Gds(isc_random) << "Attempt to evaluate index expression recursively");
554+
}
555+
549556
jrd_req* const expr_request = idx->idx_expression_statement->findRequest(tdbb);
550557
fb_assert(expr_request != org_request);
551558

src/jrd/idx.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -735,9 +735,6 @@ void IDX_garbage_collect(thread_db* tdbb, record_param* rpb, RecordStack& going,
735735
insertion.iib_key = &key1;
736736
insertion.iib_btr_level = 0;
737737

738-
Attachment* att = tdbb->getAttachment();
739-
AutoSetRestoreFlag<ULONG> gc(&att->att_flags, ATT_no_cleanup, true);
740-
741738
WIN window(get_root_page(tdbb, rpb->rpb_relation));
742739

743740
index_root_page* root = (index_root_page*) CCH_FETCH(tdbb, &window, LCK_read, pag_root);

0 commit comments

Comments
 (0)