Skip to content

Commit b6b6897

Browse files
committed
Fixed bug CORE-2032 : Stored procedure recursively called by calculated field fails after reconnect
1 parent 820fd7e commit b6b6897

3 files changed

Lines changed: 7 additions & 1 deletion

File tree

src/dsql/ExprNodes.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6570,7 +6570,8 @@ ValueExprNode* FieldNode::pass1(thread_db* tdbb, CompilerScratch* csb)
65706570
jrd_rel* relation = tail->csb_relation;
65716571
jrd_fld* field;
65726572

6573-
if (!relation || !(field = MET_get_field(relation, fieldId)))
6573+
if (!relation || !(field = MET_get_field(relation, fieldId)) ||
6574+
(field->fld_flags & FLD_parse_computed))
65746575
{
65756576
if (relation && (relation->rel_flags & REL_being_scanned))
65766577
csb->csb_g_flags |= csb_reload;

src/jrd/Relation.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,8 @@ inline jrd_rel::GCShared::~GCShared()
474474

475475
// Field block, one for each field in a scanned relation
476476

477+
const USHORT FLD_parse_computed = 0x0001; // computed expression is being parsed
478+
477479
class jrd_fld : public pool_alloc<type_fld>
478480
{
479481
public:
@@ -489,6 +491,7 @@ class jrd_fld : public pool_alloc<type_fld>
489491
MetaName fld_generator_name; // identity generator name
490492
MetaNamePair fld_source_rel_field; // Relation/field source name
491493
Nullable<IdentityType> fld_identity_type;
494+
USHORT fld_flags;
492495

493496
public:
494497
explicit jrd_fld(MemoryPool& p)

src/jrd/met.epp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4072,6 +4072,8 @@ void MET_scan_relation(thread_db* tdbb, jrd_rel* relation)
40724072

40734073
case RSR_computed_blr:
40744074
{
4075+
AutoSetRestoreFlag<USHORT> flag(&field->fld_flags, FLD_parse_computed, true);
4076+
40754077
DmlNode* nod = dependencies ?
40764078
MET_get_dependencies(tdbb, relation, p, length, csb, NULL, NULL, NULL,
40774079
field->fld_name, obj_computed, 0, depTrans) :

0 commit comments

Comments
 (0)