Skip to content

Commit 45f87c2

Browse files
committed
Fix for #8488: MIN/MAX aggregates may badly affect the join order in queries with mixed INNER/LEFT joins
1 parent cb06990 commit 45f87c2

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/jrd/optimizer/Optimizer.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,11 @@ Optimizer::~Optimizer()
647647

648648
RecordSource* Optimizer::compile(RseNode* subRse, BoolExprNodeStack* parentStack)
649649
{
650-
Optimizer subOpt(tdbb, csb, subRse, firstRows, cardinality);
650+
// dimitr: it makes no sense to optimize sub-RSE for first rows
651+
// if we're going to sort/aggregate the resultset afterwards
652+
const bool subFirstRows = firstRows && !rse->rse_sorted && !rse->rse_aggregate;
653+
654+
Optimizer subOpt(tdbb, csb, subRse, subFirstRows, cardinality);
651655
const auto rsb = subOpt.compile(parentStack);
652656

653657
if (parentStack && subOpt.isInnerJoin())

0 commit comments

Comments
 (0)