Reworks
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/64d1e330 Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/64d1e330 Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/64d1e330 Branch: refs/heads/master Commit: 64d1e33063bd2957b5c71b47c2608a7ac2852c9f Parents: ee91b33 Author: Dave Birdsall <[email protected]> Authored: Mon Apr 23 21:51:24 2018 +0000 Committer: Dave Birdsall <[email protected]> Committed: Mon Apr 23 21:51:24 2018 +0000 ---------------------------------------------------------------------- core/sql/optimizer/NormRelExpr.cpp | 5 ++++- core/sql/regress/compGeneral/EXPECTED015.SB | 18 +++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafodion/blob/64d1e330/core/sql/optimizer/NormRelExpr.cpp ---------------------------------------------------------------------- diff --git a/core/sql/optimizer/NormRelExpr.cpp b/core/sql/optimizer/NormRelExpr.cpp index 89504a2..115b406 100644 --- a/core/sql/optimizer/NormRelExpr.cpp +++ b/core/sql/optimizer/NormRelExpr.cpp @@ -2855,11 +2855,14 @@ RelExpr* Join::transformSemiJoin(NormWA& normWARef) haveSignificantReduction = TRUE; CostScalar innerAllowance = ((ActiveSchemaDB()->getDefaults()).getAsDouble(SEMIJOIN_TO_INNERJOIN_INNER_ALLOWANCE)); + NABoolean haveSmallInner = FALSE; + if ((innerRowCount < innerAllowance) && (!noInnerStats)) + haveSmallInner = TRUE; if (preds.isEmpty() && ((child(1)->getGroupAttr()->getNumBaseTables() == 0) || haveSignificantReduction || - (innerRowCount < innerAllowance) || + haveSmallInner || (CmpCommon::getDefault(SEMIJOIN_TO_INNERJOIN_TRANSFORMATION) == DF_ON))) { CollHeap *stmtHeap = CmpCommon::statementHeap() ; http://git-wip-us.apache.org/repos/asf/trafodion/blob/64d1e330/core/sql/regress/compGeneral/EXPECTED015.SB ---------------------------------------------------------------------- diff --git a/core/sql/regress/compGeneral/EXPECTED015.SB b/core/sql/regress/compGeneral/EXPECTED015.SB index b5e11d4..c1a3076 100755 --- a/core/sql/regress/compGeneral/EXPECTED015.SB +++ b/core/sql/regress/compGeneral/EXPECTED015.SB @@ -535,8 +535,8 @@ TRAFODION_SCAN T10 1.000E+005 100000 fragm OPERATOR TAB_NAME CARDINALITY MAX_CARDINALITY ---------------- ---------- ----------- --------------- -ROOT 1.250E+004 100000 fragm -TRAFODION_SCAN T10 1.250E+004 100000 fragm +ROOT 1.000E+004 10000 fragme +TRAFODION_SCAN T10 1.000E+004 10000 fragme --- 2 row(s) selected. >>select count(*) from (SELECT * FROM t10 WHERE d like 'one%') as t; @@ -557,8 +557,8 @@ TRAFODION_SCAN T10 1.250E+004 100000 fragm OPERATOR TAB_NAME CARDINALITY MAX_CARDINALITY ---------------- ---------- ----------- --------------- -ROOT 8.750E+004 100000 fragm -TRAFODION_SCAN T10 8.750E+004 100000 fragm +ROOT 1.000E+005 100000 fragm +TRAFODION_SCAN T10 1.000E+005 100000 fragm --- 2 row(s) selected. >>select count(*) from (SELECT * FROM t10 WHERE d not like 'one%') as t; @@ -1174,8 +1174,8 @@ TRAFODION_SCAN T10 1.000E+000 1 fragment_i OPERATOR TAB_NAME CARDINALITY MAX_CARDINALITY ---------------- ---------- ----------- --------------- -ROOT 1.250E+004 12500 fragme -TRAFODION_SCAN T10 1.250E+004 12500 fragme +ROOT 1.000E+004 10000 fragme +TRAFODION_SCAN T10 1.000E+004 10000 fragme --- 2 row(s) selected. >> -- min(1e5, 1e4) should = 1e4 @@ -1202,8 +1202,8 @@ TRAFODION_SCAN T10 1.000E+000 1 fragment_i OPERATOR TAB_NAME CARDINALITY MAX_CARDINALITY ---------------- ---------- ----------- --------------- -ROOT 1.000E+000 10000 fragme -TRAFODION_SCAN T10 1.000E+000 10000 fragme +ROOT 1.000E+000 100000 fragm +TRAFODION_SCAN T10 1.000E+000 100000 fragm --- 2 row(s) selected. >> -- min(1e4, 1e5) should = 1e4 @@ -2297,7 +2297,7 @@ OPERATOR ---------------- ROOT -HYBRID_HASH_SEMI +HYBRID_HASH_JOIN --- 2 row(s) selected. >>
