mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-24 09:23:03 +01:00
Backport CORE-2812: Prohibit any improper mixture of explicit and implicit joins.
This commit is contained in:
parent
ac2077d8a7
commit
f9f4f90392
@ -6512,6 +6512,12 @@ static dsql_nod* pass1_join(CompiledStatement* statement, dsql_nod* input)
|
||||
DEV_BLKCHK(statement, dsql_type_req);
|
||||
DEV_BLKCHK(input, dsql_type_nod);
|
||||
|
||||
// Set up an empty context to process the joins
|
||||
|
||||
DsqlContextStack* const base_context = statement->req_context;
|
||||
DsqlContextStack temp;
|
||||
statement->req_context = &temp;
|
||||
|
||||
dsql_nod* const node = MAKE_node(input->nod_type, input->nod_count);
|
||||
|
||||
// First process type
|
||||
@ -6746,6 +6752,15 @@ static dsql_nod* pass1_join(CompiledStatement* statement, dsql_nod* input)
|
||||
|
||||
node->nod_arg[e_join_boolean] = PASS1_node(statement, boolean);
|
||||
|
||||
// Merge the newly created contexts with the original ones
|
||||
|
||||
while (temp.hasData())
|
||||
{
|
||||
base_context->push(temp.pop());
|
||||
}
|
||||
|
||||
statement->req_context = base_context;
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user