Enabling runtime stats for hbase tables and operators This is the third set of changes to collect the runtime stats info. Part is to address the comments and suggestions from last review. 1) Instead of passing the hbase access stats entry to every htable calls, set the pointer in the EXP hbase interface layer with first init call in the tcb work methods (not the task work methods), then eventually to the htable JNI layer from getHTableClient() (sql/exp/ExpHbaseInterface.cpp). 2) Rewrite the way to construct the hbase operator names from one methord and use it for display both tdb contents and tcb stats. 3) Populate the hbase I/O bytes counter for both read and insert (sql/executor/HBaseClient_JNI.cpp). 4) Fix the problem that parsing stats variable text string could go beyond the end of the string (getSubstrInfo() in sql/executor/ExExeUtilGetStats.cpp).
fix cardinality errors for better DoP for OE Problems fixed are as follows. 1. TableAnalysis::getLocalPredsOnPrefixOfList() prematurely breaks out of the loop to collect predicates on key columns. 2. TableDesc::getSaltColumnAsSet() does not return the result in the form of base columns valueIds. 3. When the dop is estimated lower than the low bound of ESPs, the low bound value is used. 4. SimpleFileScanOptimizer::computeSingleSubsetSize() incorrectly applies the computed predicates on salted column which reduces the subset size by CQD HIST_NO_STATS_UEC (default to 2). A subset size specifies the # of rows processed.