Skip to content

Commit 653b619

Browse files
committed
Correction for my last commit
1 parent 8f728e6 commit 653b619

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

src/jrd/recsrc/NestedLoopJoin.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,21 @@ NestedLoopJoin::NestedLoopJoin(CompilerScratch* csb, JoinType joinType,
3939
FB_SIZE_T count, RecordSource* const* args)
4040
: Join(csb, count, joinType)
4141
{
42+
fb_assert(joinType != JoinType::OUTER);
43+
4244
m_impure = csb->allocImpure<Impure>();
4345
m_cardinality = MINIMUM_CARDINALITY;
4446

4547
for (FB_SIZE_T i = 0; i < count; i++)
4648
{
4749
m_args.add(args[i]);
48-
m_cardinality *= args[i]->getCardinality();
50+
51+
if (i == 0 || joinType == JoinType::INNER)
52+
m_cardinality *= args[i]->getCardinality();
4953
}
54+
55+
if (joinType != JoinType::INNER)
56+
m_cardinality *= REDUCE_SELECTIVITY_FACTOR_ANY;
5057
}
5158

5259
NestedLoopJoin::NestedLoopJoin(CompilerScratch* csb,
@@ -58,9 +65,7 @@ NestedLoopJoin::NestedLoopJoin(CompilerScratch* csb,
5865

5966
m_impure = csb->allocImpure<Impure>();
6067

61-
m_cardinality = outer->getCardinality();
62-
m_cardinality *= (m_joinType == JoinType::INNER || m_joinType == JoinType::OUTER) ?
63-
inner->getCardinality() : REDUCE_SELECTIVITY_FACTOR_ANY;
68+
m_cardinality = outer->getCardinality() * inner->getCardinality();
6469

6570
m_args.add(outer);
6671
m_args.add(inner);

0 commit comments

Comments
 (0)