mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 18:03:03 +01:00
Fixed regression in outer joins
This commit is contained in:
parent
747d2ed2c2
commit
4e813e0e37
@ -596,14 +596,16 @@ Optimizer::~Optimizer()
|
||||
// Compile and optimize a record selection expression into a set of record source blocks
|
||||
//
|
||||
|
||||
RecordSource* Optimizer::compile(RseNode* rse, BoolExprNodeStack* parentStack)
|
||||
RecordSource* Optimizer::compile(RseNode* subRse, BoolExprNodeStack* parentStack)
|
||||
{
|
||||
Optimizer subOpt(tdbb, csb, rse);
|
||||
Optimizer subOpt(tdbb, csb, subRse);
|
||||
const auto rsb = subOpt.compile(parentStack);
|
||||
|
||||
if (parentStack)
|
||||
if (parentStack && subOpt.isInnerJoin())
|
||||
{
|
||||
// If any parent conjunct was utilized, update our copy of its flags
|
||||
// If any parent conjunct was utilized, update our copy of its flags.
|
||||
// Currently used for inner joins only, although could also be applied
|
||||
// to conjuncts utilized for outer streams of outer joins.
|
||||
|
||||
for (auto subIter = subOpt.getParentConjuncts(); subIter.hasData(); ++subIter)
|
||||
{
|
||||
|
@ -372,7 +372,7 @@ public:
|
||||
|
||||
~Optimizer();
|
||||
|
||||
RecordSource* compile(RseNode* rse, BoolExprNodeStack* parentStack);
|
||||
RecordSource* compile(RseNode* subRse, BoolExprNodeStack* parentStack);
|
||||
void compileRelation(StreamType stream);
|
||||
void generateAggregateDistincts(MapNode* map);
|
||||
RecordSource* generateRetrieval(StreamType stream,
|
||||
|
Loading…
Reference in New Issue
Block a user