You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by su...@apache.org on 2015/12/01 17:19:48 UTC
[1/2] incubator-trafodion git commit: fix JIRA 1654 for Trafodion
Repository: incubator-trafodion
Updated Branches:
refs/heads/master 7072c24fa -> e3c7928af
fix JIRA 1654 for Trafodion
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/f8ff39c8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/f8ff39c8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/f8ff39c8
Branch: refs/heads/master
Commit: f8ff39c86fe95cd2889aab94aa513c46338d4517
Parents: 80d6cff
Author: Qifan Chen <qf...@dev02.trafodion.org>
Authored: Mon Nov 30 14:55:20 2015 +0000
Committer: Qifan Chen <qf...@dev02.trafodion.org>
Committed: Mon Nov 30 14:55:20 2015 +0000
----------------------------------------------------------------------
core/sql/optimizer/ScanOptimizer.cpp | 63 ++++++++++++++++++++++++++++---
core/sql/sqlcomp/DefaultConstants.h | 14 ++++++-
core/sql/sqlcomp/nadefaults.cpp | 6 ++-
3 files changed, 75 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f8ff39c8/core/sql/optimizer/ScanOptimizer.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ScanOptimizer.cpp b/core/sql/optimizer/ScanOptimizer.cpp
index 65ec12a..6e60dc8 100644
--- a/core/sql/optimizer/ScanOptimizer.cpp
+++ b/core/sql/optimizer/ScanOptimizer.cpp
@@ -317,7 +317,14 @@ void MdamTrace::setLevel(enum MdamTraceLevel l)
#endif // if MDAM_TRACE
// LCOV_EXCL_STOP
-static NABoolean checkMDAMadditionalRestriction(const ColumnOrderList& keyPredsByCol,const CollIndex& lastColumnPosition, CollIndex& noOfmissingKeyColumns, CollIndex& presentKeyColumns)
+enum restrictCheckStrategy { MAJORITY_WITH_PREDICATES=1, TOTAL_UECS=2, BOTH=3 };
+
+static NABoolean checkMDAMadditionalRestriction(
+ const ColumnOrderList& keyPredsByCol,
+ const CollIndex& lastColumnPosition,
+ const Histograms& hist,
+ restrictCheckStrategy strategy,
+ CollIndex& noOfmissingKeyColumns, CollIndex& presentKeyColumns)
{
KeyColumns::KeyColumn::KeyColumnType typeOfRange = KeyColumns::KeyColumn::EMPTY;
CollIndex index = 0;
@@ -331,9 +338,22 @@ static NABoolean checkMDAMadditionalRestriction(const ColumnOrderList& keyPredsB
if ( mtd_mdam_uec_threshold < 0 )
checkLeadingDivColumns = FALSE;
+ CostScalar totalRC = hist.getRowCount().getCeiling();
+
+ float totalUEC_threshold = 1;
+
+ Lng32 minRC = (ActiveSchemaDB()->getDefaults()).getAsLong(MDAM_TOTAL_UEC_CHECK_MIN_RC_THRESHOLD);
+
+ if ( totalRC > minRC )
+ (ActiveSchemaDB()->getDefaults()).getFloat(MDAM_TOTAL_UEC_CHECK_UEC_THRESHOLD, totalUEC_threshold);
+
+ totalUEC_threshold *= totalRC.getValue();
+
NABoolean isLeadingDivisionColumn = FALSE;
NABoolean isLeadingSaltColumn = FALSE;
+ CostScalar totalUecsForKeylessKeyColumns = 1;
+
for (index = 0; index < lastColumnPosition; index++)
{
if (keyPredsByCol.getPredicateExpressionPtr(index) != NULL)
@@ -367,6 +387,11 @@ static NABoolean checkMDAMadditionalRestriction(const ColumnOrderList& keyPredsB
)
noOfmissingKeyColumns++;
+ // accumulate the product of uecs for columns without predicates
+
+ totalUecsForKeylessKeyColumns *= hist.getColStatsForColumn(
+ keyPredsByCol.getKeyColumnId(index)).getTotalUec().getCeiling();
+
} else {
checkLeadingDivColumns = FALSE;
@@ -374,8 +399,21 @@ static NABoolean checkMDAMadditionalRestriction(const ColumnOrderList& keyPredsB
}
}
- if(presentKeyColumns > noOfmissingKeyColumns) return TRUE;
- return FALSE;
+ switch ( strategy ) {
+ case MAJORITY_WITH_PREDICATES:
+ return (presentKeyColumns > noOfmissingKeyColumns);
+
+ case TOTAL_UECS:
+ return ( totalUecsForKeylessKeyColumns < totalUEC_threshold );
+
+ case BOTH:
+ return ( presentKeyColumns > noOfmissingKeyColumns &&
+ totalUecsForKeylessKeyColumns < totalUEC_threshold );
+
+ default:
+ return FALSE;
+ }
+ return FALSE;
}
// stack allocated only
@@ -8710,12 +8748,25 @@ void MDAMCostWA::computeDisjunct()
CollIndex noOfmissingKeyColumnsTot = 0;
CollIndex presentKeyColumnsTot = 0;
+
+
+ const IndexDesc *idesc = optimizer_.getFileScan().getIndexDesc();
+ const ColStatDescList& csdl = idesc->getPrimaryTableDesc()->getTableColStats();
+ Histograms hist(csdl);
+
+ Lng32 checkOption = (ActiveSchemaDB()->getDefaults()).getAsLong(MDAM_APPLY_RESTRICTION_CHECK);
+
if(CURRSTMT_OPTDEFAULTS->indexEliminationLevel() != OptDefaults::MINIMUM
&& (!mdamForced_)
&& (CmpCommon::getDefault(RANGESPEC_TRANSFORMATION) == DF_ON )
- && (CmpCommon::getDefault(MDAM_APPLY_RESTRICTION_CHECK) == DF_ON )
- &&
- (!checkMDAMadditionalRestriction(keyPredsByCol,optimizer_.computeLastKeyColumnOfDisjunct(keyPredsByCol),noOfmissingKeyColumnsTot,presentKeyColumnsTot))
+ && checkOption >= 1
+ && (!checkMDAMadditionalRestriction(
+ keyPredsByCol,
+ optimizer_.computeLastKeyColumnOfDisjunct(keyPredsByCol),
+ hist,
+ (restrictCheckStrategy)checkOption,
+ noOfmissingKeyColumnsTot,
+ presentKeyColumnsTot))
)
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f8ff39c8/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h
index 07f58d0..1a988b4 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -3768,9 +3768,21 @@ enum DefaultConstants
HBASE_UPDATE_COSTING,
TRAF_LOAD_FLUSH_SIZE_IN_KB,
- // decide if to apply the additional restriction check (majority of keys with predicates)
+ // Specify whic additional restriction check to apply
+ // 0: no check
+ // 1: apply majority of keys with predicates check
+ // 2: apply total UECs on keyless key columns check
+ // 3: apply both 1) and 2)
MDAM_APPLY_RESTRICTION_CHECK,
+ // A threshold of total UECs on keyless key columns above which MDAM will not be considered.
+ // The threshold is expressed as a percentage of the total RC.
+ MDAM_TOTAL_UEC_CHECK_UEC_THRESHOLD,
+
+ // A threshold of minitmal RC above which the above total UEC check will be applied.
+ MDAM_TOTAL_UEC_CHECK_MIN_RC_THRESHOLD,
+
+
// This enum constant must be the LAST one in the list; it's a count,
// not an Attribute (it's not IN DefaultDefaults; it's the SIZE of it)!
__NUM_DEFAULT_ATTRIBUTES
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f8ff39c8/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index 4e11bf9..e63b685 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -2160,7 +2160,7 @@ SDDkwd__(ISO_MAPPING, (char *)SQLCHARSETSTRING_ISO88591),
XDDflt__(MC_SKEW_SENSITIVITY_THRESHOLD, "0.1"),
- DDkwd__(MDAM_APPLY_RESTRICTION_CHECK, "OFF"),
+ DDui___(MDAM_APPLY_RESTRICTION_CHECK, "2"),
DDflt0_(MDAM_CPUCOST_NET_OVH, "2000."),
@@ -2180,6 +2180,10 @@ SDDkwd__(ISO_MAPPING, (char *)SQLCHARSETSTRING_ISO88591),
XDDkwd__(MDAM_SCAN_METHOD, "ON"),
DDflt0_(MDAM_SELECTION_DEFAULT, "0.5"),
+
+ DDflt0_(MDAM_TOTAL_UEC_CHECK_MIN_RC_THRESHOLD, "10000"),
+ DDflt0_(MDAM_TOTAL_UEC_CHECK_UEC_THRESHOLD, "0.01"),
+
DDkwd__(MDAM_TRACING, "OFF"),
// controls the max. number of probes at which MDAM under NJ plan will be
[2/2] incubator-trafodion git commit: Merge remote branch
'origin/pr/195/head' into mrg_87
Posted by su...@apache.org.
Merge remote branch 'origin/pr/195/head' into mrg_87
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/e3c7928a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/e3c7928a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/e3c7928a
Branch: refs/heads/master
Commit: e3c7928afd331d085b98c230cd1512edb42c2427
Parents: 7072c24 f8ff39c
Author: Suresh Subbiah <su...@apache.org>
Authored: Tue Dec 1 16:19:24 2015 +0000
Committer: Suresh Subbiah <su...@apache.org>
Committed: Tue Dec 1 16:19:24 2015 +0000
----------------------------------------------------------------------
core/sql/optimizer/ScanOptimizer.cpp | 63 ++++++++++++++++++++++++++++---
core/sql/sqlcomp/DefaultConstants.h | 14 ++++++-
core/sql/sqlcomp/nadefaults.cpp | 6 ++-
3 files changed, 75 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/e3c7928a/core/sql/optimizer/ScanOptimizer.cpp
----------------------------------------------------------------------