8
0
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:
dimitr 2010-11-13 06:34:17 +00:00
parent ac2077d8a7
commit f9f4f90392

View File

@ -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;
}