You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by hz...@apache.org on 2016/01/22 02:08:20 UTC

[01/15] incubator-trafodion git commit: First commit for advanced predicate pushdown feature (also known as pushdown V2) associated JIRA TRAFODION-1662 Predicate push down revisited (V2). The JIRA contains a blueprint document, useful to understand what

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 455008179 -> ff4b7dd73


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/regress/seabase/EXPECTED011
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED011 b/core/sql/regress/seabase/EXPECTED011
index 0835206..27de89a 100644
--- a/core/sql/regress/seabase/EXPECTED011
+++ b/core/sql/regress/seabase/EXPECTED011
@@ -7,7 +7,7 @@
 >>invoke T011T1;
 
 -- Definition of Trafodion table TRAFODION.SCH.T011T1
--- Definition current  Fri Oct  2 02:48:09 2015
+-- Definition current  Wed Jan  6 23:31:01 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -142,7 +142,7 @@ A            B
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212310514090586565
+PLAN_ID .................. 212318883062781505
 ROWS_OUT ................. 7
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t011t1 where a >= 3 and a < 5;
@@ -174,13 +174,13 @@ DESCRIPTION
   SEABASE_VOLATILE_TABLES  ON
   HBASE_ASYNC_DROP_TABLE   OFF
   HBASE_SERIALIZATION .... ON
-  HBASE_FILTER_PREDS ..... ON
+  HBASE_FILTER_PREDS ..... 2
   TRAF_ALIGNED_ROW_FORMAT  OFF
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   QUERY_CACHE ............ 0
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 645219028244664647
+  ObjectUIDs ............. 5568224739891142318
   select_list ............ TRAFODION.SCH.T011T1.A, TRAFODION.SCH.T011T1.B
 
 
@@ -203,6 +203,8 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ......... 11
+  column_retrieved ....... #1:1,#1:2
+  pushed_down_rpn ........ (#1:1>=?)(#1:1<?)AND
   key_columns ............ A
 
 --- SQL operation complete.
@@ -1264,7 +1266,7 @@ METRIC_TEXT_TABLE
 >>invoke trafodion."_REPOS_".metric_query_table;
 
 -- Definition of Trafodion table TRAFODION."_REPOS_".METRIC_QUERY_TABLE
--- Definition current  Fri Oct  2 02:50:03 2015
+-- Definition current  Wed Jan  6 23:33:14 2016
 
   (
     INSTANCE_ID                      INT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1446,7 +1448,7 @@ METRIC_TEXT_TABLE
 >>-- get qid for the prepared stmt
 >>get qid for statement explstmt;
 
-MXID11000001146212310514063700975000000000206U3333300_1922_EXPLSTMT
+MXID11000009891212318883040903421000000000206U3333300_1923_EXPLSTMT
 
 --- SQL operation complete.
 >>
@@ -1498,7 +1500,7 @@ SEQ_NUM      OPERATOR
 --- SQL command prepared.
 >>get qid for statement explstmt2;
 
-MXID11000001146212310514063700975000000000206U3333300_1933_EXPLSTMT2
+MXID11000009891212318883040903421000000000206U3333300_1934_EXPLSTMT2
 
 --- SQL operation complete.
 >>set qid MXID123456 for explstmt2;
@@ -2071,7 +2073,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 >>invoke t011t7;
 
 -- Definition of Trafodion table TRAFODION.SCH.T011T7
--- Definition current  Fri Oct  2 02:50:45 2015
+-- Definition current  Wed Jan  6 23:34:21 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -2088,7 +2090,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 >>invoke t011t7;
 
 -- Definition of Trafodion table TRAFODION.SCH.T011T7
--- Definition current  Fri Oct  2 02:50:46 2015
+-- Definition current  Wed Jan  6 23:34:25 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -2105,7 +2107,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 >>invoke t011t7;
 
 -- Definition of Trafodion table TRAFODION.SCH.T011T7
--- Definition current  Fri Oct  2 02:50:47 2015
+-- Definition current  Wed Jan  6 23:34:28 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/regress/seabase/EXPECTED016
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED016 b/core/sql/regress/seabase/EXPECTED016
index 6c94b18..8547cff 100644
--- a/core/sql/regress/seabase/EXPECTED016
+++ b/core/sql/regress/seabase/EXPECTED016
@@ -179,9 +179,9 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212302388499931914
+PLAN_ID .................. 212318883773450737
 ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 STATEMENT ................ select f,count(f)
                            from mcStatPart7 <<+ cardinality 10e8 >>
                            group by f;
@@ -192,7 +192,7 @@ ROOT ======================================  SEQ_NO 5        ONLY CHILD 4
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 0
@@ -214,7 +214,7 @@ DESCRIPTION
   SEABASE_VOLATILE_TABLES  ON
   HBASE_ASYNC_DROP_TABLE   OFF
   HBASE_SERIALIZATION .... ON
-  HBASE_FILTER_PREDS ..... ON
+  HBASE_FILTER_PREDS ..... 2
   TRAF_ALIGNED_ROW_FORMAT  OFF
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.HBASE
@@ -223,7 +223,7 @@ DESCRIPTION
   HBASE_MIN_BYTES_PER_ESP  1
   USTAT_COLLECT_MC_SKEW_V  ON
   PARALLEL_NUM_ESPS ...... 4
-  ObjectUIDs ............. 119978596074759062
+  ObjectUIDs ............. 1492467077764906944
   select_list ............ TRAFODION.HBASE.MCSTATPART7.F,
                              cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART7.
                              F)))
@@ -233,7 +233,7 @@ HASH_PARTIAL_GROUPBY_ROOT =================  SEQ_NO 4        ONLY CHILD 3
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   memory_quota ........... 1200 MB
   max_card_est ........... 1
@@ -248,7 +248,7 @@ ESP_EXCHANGE ==============================  SEQ_NO 3        ONLY CHILD 2
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -268,8 +268,8 @@ DESCRIPTION
 HASH_PARTIAL_GROUPBY_LEAF =================  SEQ_NO 2        ONLY CHILD 1
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
-EST_OPER_COST ............ 3.9
-EST_TOTAL_COST ......... 526.64
+EST_OPER_COST ............ 4.98
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -283,8 +283,8 @@ TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
 TABLE_NAME ............... MCSTATPART7
 REQUESTS_IN .............. 1
 ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 522.74
-EST_TOTAL_COST ......... 522.74
+EST_OPER_COST .......... 548.5
+EST_TOTAL_COST ......... 548.5
 DESCRIPTION
   max_card_est ........... 1e+09
   fragment_id ............ 2
@@ -296,6 +296,7 @@ DESCRIPTION
   cache_blocks ........... OFF
   probes ................. 1
   rows_accessed .......... 1e+09
+  column_retrieved ....... #1:2,#1:3
   key_columns ............ _SALT_, A, B
   begin_key .............. (_SALT_ = (\:_sys_HostVarLoHashPart Hash2Distrib
                              8)), (A = <min>), (B = <min>)
@@ -325,9 +326,9 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212302388500149365
+PLAN_ID .................. 212318883773834175
 ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 541.39
+EST_TOTAL_COST ......... 568.59
 STATEMENT ................ select f,count(f)
                            from mcStatPart5 <<+ cardinality 10e8 >>
                            group by f;
@@ -338,7 +339,7 @@ ROOT ======================================  SEQ_NO 5        ONLY CHILD 4
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 541.39
+EST_TOTAL_COST ......... 568.59
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 0
@@ -360,7 +361,7 @@ DESCRIPTION
   SEABASE_VOLATILE_TABLES  ON
   HBASE_ASYNC_DROP_TABLE   OFF
   HBASE_SERIALIZATION .... ON
-  HBASE_FILTER_PREDS ..... ON
+  HBASE_FILTER_PREDS ..... 2
   TRAF_ALIGNED_ROW_FORMAT  OFF
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.HBASE
@@ -369,7 +370,7 @@ DESCRIPTION
   HBASE_MIN_BYTES_PER_ESP  1
   USTAT_COLLECT_MC_SKEW_V  ON
   PARALLEL_NUM_ESPS ...... 4
-  ObjectUIDs ............. 119978596074761065
+  ObjectUIDs ............. 1492467077764909533
   select_list ............ TRAFODION.HBASE.MCSTATPART5.F,
                              cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART5.
                              F)))
@@ -379,7 +380,7 @@ HASH_PARTIAL_GROUPBY_ROOT =================  SEQ_NO 4        ONLY CHILD 3
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 541.39
+EST_TOTAL_COST ......... 568.59
 DESCRIPTION
   memory_quota ........... 1200 MB
   max_card_est ........... 1
@@ -394,7 +395,7 @@ ESP_EXCHANGE ==============================  SEQ_NO 3        ONLY CHILD 2
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 541.39
+EST_TOTAL_COST ......... 568.59
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -414,8 +415,8 @@ DESCRIPTION
 HASH_PARTIAL_GROUPBY_LEAF =================  SEQ_NO 2        ONLY CHILD 1
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
-EST_OPER_COST ............ 3.9
-EST_TOTAL_COST ......... 541.39
+EST_OPER_COST ............ 4.98
+EST_TOTAL_COST ......... 568.59
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -429,8 +430,8 @@ TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
 TABLE_NAME ............... MCSTATPART5
 REQUESTS_IN .............. 1
 ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 537.49
-EST_TOTAL_COST ......... 537.49
+EST_OPER_COST .......... 563.62
+EST_TOTAL_COST ......... 563.62
 DESCRIPTION
   max_card_est ........... 1e+09
   fragment_id ............ 2
@@ -442,6 +443,7 @@ DESCRIPTION
   cache_blocks ........... OFF
   probes ................. 1
   rows_accessed .......... 1e+09
+  column_retrieved ....... #1:2,#1:3
   key_columns ............ _SALT_, A, B
   begin_key .............. (_SALT_ = (\:_sys_HostVarLoHashPart Hash2Distrib
                              8)), (A = <min>), (B = <min>)
@@ -471,9 +473,9 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212302388500356018
+PLAN_ID .................. 212318883774174434
 ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 STATEMENT ................ select f,count(f)
                            from mcStatPart3 <<+ cardinality 10e8 >>
                            group by f;
@@ -484,7 +486,7 @@ ROOT ======================================  SEQ_NO 5        ONLY CHILD 4
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 0
@@ -506,7 +508,7 @@ DESCRIPTION
   SEABASE_VOLATILE_TABLES  ON
   HBASE_ASYNC_DROP_TABLE   OFF
   HBASE_SERIALIZATION .... ON
-  HBASE_FILTER_PREDS ..... ON
+  HBASE_FILTER_PREDS ..... 2
   TRAF_ALIGNED_ROW_FORMAT  OFF
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.HBASE
@@ -515,7 +517,7 @@ DESCRIPTION
   HBASE_MIN_BYTES_PER_ESP  1
   USTAT_COLLECT_MC_SKEW_V  ON
   PARALLEL_NUM_ESPS ...... 4
-  ObjectUIDs ............. 119978596074761721
+  ObjectUIDs ............. 1492467077764910468
   select_list ............ TRAFODION.HBASE.MCSTATPART3.F,
                              cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART3.
                              F)))
@@ -525,7 +527,7 @@ HASH_PARTIAL_GROUPBY_ROOT =================  SEQ_NO 4        ONLY CHILD 3
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   memory_quota ........... 1200 MB
   max_card_est ........... 1
@@ -540,7 +542,7 @@ ESP_EXCHANGE ==============================  SEQ_NO 3        ONLY CHILD 2
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -560,8 +562,8 @@ DESCRIPTION
 HASH_PARTIAL_GROUPBY_LEAF =================  SEQ_NO 2        ONLY CHILD 1
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
-EST_OPER_COST ............ 3.9
-EST_TOTAL_COST ......... 526.64
+EST_OPER_COST ............ 4.98
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -575,8 +577,8 @@ TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
 TABLE_NAME ............... MCSTATPART3
 REQUESTS_IN .............. 1
 ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 522.74
-EST_TOTAL_COST ......... 522.74
+EST_OPER_COST .......... 548.5
+EST_TOTAL_COST ......... 548.5
 DESCRIPTION
   max_card_est ........... 1e+09
   fragment_id ............ 2
@@ -588,6 +590,7 @@ DESCRIPTION
   cache_blocks ........... OFF
   probes ................. 1
   rows_accessed .......... 1e+09
+  column_retrieved ....... #1:2,#1:3
   key_columns ............ _SALT_, A, B
   begin_key .............. (_SALT_ = (\:_sys_HostVarLoHashPart Hash2Distrib
                              8)), (A = <min>), (B = <min>)
@@ -617,9 +620,9 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212302388500563772
+PLAN_ID .................. 212318883774449563
 ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 497.84
+EST_TOTAL_COST ......... 523.92
 STATEMENT ................ select f,count(f)
                            from mcStatPart6 <<+ cardinality 10e8 >>
                            group by f;
@@ -630,7 +633,7 @@ ROOT ======================================  SEQ_NO 5        ONLY CHILD 4
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 497.84
+EST_TOTAL_COST ......... 523.92
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 0
@@ -652,7 +655,7 @@ DESCRIPTION
   SEABASE_VOLATILE_TABLES  ON
   HBASE_ASYNC_DROP_TABLE   OFF
   HBASE_SERIALIZATION .... ON
-  HBASE_FILTER_PREDS ..... ON
+  HBASE_FILTER_PREDS ..... 2
   TRAF_ALIGNED_ROW_FORMAT  OFF
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.HBASE
@@ -661,7 +664,7 @@ DESCRIPTION
   HBASE_MIN_BYTES_PER_ESP  1
   USTAT_COLLECT_MC_SKEW_V  ON
   PARALLEL_NUM_ESPS ...... 4
-  ObjectUIDs ............. 119978596074762449
+  ObjectUIDs ............. 1492467077764911379
   select_list ............ TRAFODION.HBASE.MCSTATPART6.F,
                              cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART6.
                              F)))
@@ -671,7 +674,7 @@ HASH_PARTIAL_GROUPBY_ROOT =================  SEQ_NO 4        ONLY CHILD 3
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 497.84
+EST_TOTAL_COST ......... 523.92
 DESCRIPTION
   memory_quota ........... 1200 MB
   max_card_est ........... 1
@@ -686,7 +689,7 @@ ESP_EXCHANGE ==============================  SEQ_NO 3        ONLY CHILD 2
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 497.84
+EST_TOTAL_COST ......... 523.92
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -706,8 +709,8 @@ DESCRIPTION
 HASH_PARTIAL_GROUPBY_LEAF =================  SEQ_NO 2        ONLY CHILD 1
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
-EST_OPER_COST ............ 3.9
-EST_TOTAL_COST ......... 497.84
+EST_OPER_COST ............ 4.98
+EST_TOTAL_COST ......... 523.92
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -721,8 +724,8 @@ TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
 TABLE_NAME ............... MCSTATPART6
 REQUESTS_IN .............. 1
 ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 493.94
-EST_TOTAL_COST ......... 493.94
+EST_OPER_COST .......... 518.94
+EST_TOTAL_COST ......... 518.94
 DESCRIPTION
   max_card_est ........... 1e+09
   fragment_id ............ 2
@@ -734,6 +737,7 @@ DESCRIPTION
   cache_blocks ........... OFF
   probes ................. 1
   rows_accessed .......... 1e+09
+  column_retrieved ....... #1:2,#1:3
   key_columns ............ _SALT_, A, B
   begin_key .............. (_SALT_ = (\:_sys_HostVarLoHashPart Hash2Distrib
                              8)), (A = <min>), (B = <min>)
@@ -763,9 +767,9 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212302388500780580
+PLAN_ID .................. 212318883774716355
 ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 497.84
+EST_TOTAL_COST ......... 523.92
 STATEMENT ................ select f,count(f)
                            from mcStatPart2 <<+ cardinality 10e8 >>
                            group by f;
@@ -776,7 +780,7 @@ ROOT ======================================  SEQ_NO 5        ONLY CHILD 4
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 497.84
+EST_TOTAL_COST ......... 523.92
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 0
@@ -798,7 +802,7 @@ DESCRIPTION
   SEABASE_VOLATILE_TABLES  ON
   HBASE_ASYNC_DROP_TABLE   OFF
   HBASE_SERIALIZATION .... ON
-  HBASE_FILTER_PREDS ..... ON
+  HBASE_FILTER_PREDS ..... 2
   TRAF_ALIGNED_ROW_FORMAT  OFF
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.HBASE
@@ -807,7 +811,7 @@ DESCRIPTION
   HBASE_MIN_BYTES_PER_ESP  1
   USTAT_COLLECT_MC_SKEW_V  ON
   PARALLEL_NUM_ESPS ...... 4
-  ObjectUIDs ............. 119978596074763069
+  ObjectUIDs ............. 1492467077764912234
   select_list ............ TRAFODION.HBASE.MCSTATPART2.F,
                              cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART2.
                              F)))
@@ -817,7 +821,7 @@ HASH_PARTIAL_GROUPBY_ROOT =================  SEQ_NO 4        ONLY CHILD 3
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 497.84
+EST_TOTAL_COST ......... 523.92
 DESCRIPTION
   memory_quota ........... 1200 MB
   max_card_est ........... 1
@@ -832,7 +836,7 @@ ESP_EXCHANGE ==============================  SEQ_NO 3        ONLY CHILD 2
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 497.84
+EST_TOTAL_COST ......... 523.92
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -852,8 +856,8 @@ DESCRIPTION
 HASH_PARTIAL_GROUPBY_LEAF =================  SEQ_NO 2        ONLY CHILD 1
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
-EST_OPER_COST ............ 3.9
-EST_TOTAL_COST ......... 497.84
+EST_OPER_COST ............ 4.98
+EST_TOTAL_COST ......... 523.92
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -867,8 +871,8 @@ TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
 TABLE_NAME ............... MCSTATPART2
 REQUESTS_IN .............. 1
 ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 493.94
-EST_TOTAL_COST ......... 493.94
+EST_OPER_COST .......... 518.94
+EST_TOTAL_COST ......... 518.94
 DESCRIPTION
   max_card_est ........... 1e+09
   fragment_id ............ 2
@@ -880,6 +884,7 @@ DESCRIPTION
   cache_blocks ........... OFF
   probes ................. 1
   rows_accessed .......... 1e+09
+  column_retrieved ....... #1:2,#1:3
   key_columns ............ _SALT_, A, B
   begin_key .............. (_SALT_ = (\:_sys_HostVarLoHashPart Hash2Distrib
                              8)), (A = <min>), (B = <min>)
@@ -909,9 +914,9 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212302388500996180
+PLAN_ID .................. 212318883775019433
 ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 511.84
+EST_TOTAL_COST ......... 538.3
 STATEMENT ................ select f,count(f)
                            from mcStatPart1 <<+ cardinality 10e8 >>
                            group by f;
@@ -922,7 +927,7 @@ ROOT ======================================  SEQ_NO 5        ONLY CHILD 4
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 511.84
+EST_TOTAL_COST ......... 538.3
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 0
@@ -944,7 +949,7 @@ DESCRIPTION
   SEABASE_VOLATILE_TABLES  ON
   HBASE_ASYNC_DROP_TABLE   OFF
   HBASE_SERIALIZATION .... ON
-  HBASE_FILTER_PREDS ..... ON
+  HBASE_FILTER_PREDS ..... 2
   TRAF_ALIGNED_ROW_FORMAT  OFF
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.HBASE
@@ -953,7 +958,7 @@ DESCRIPTION
   HBASE_MIN_BYTES_PER_ESP  1
   USTAT_COLLECT_MC_SKEW_V  ON
   PARALLEL_NUM_ESPS ...... 4
-  ObjectUIDs ............. 119978596074763689
+  ObjectUIDs ............. 1492467077764913063
   select_list ............ TRAFODION.HBASE.MCSTATPART1.F,
                              cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART1.
                              F)))
@@ -963,7 +968,7 @@ HASH_PARTIAL_GROUPBY_ROOT =================  SEQ_NO 4        ONLY CHILD 3
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 511.84
+EST_TOTAL_COST ......... 538.3
 DESCRIPTION
   memory_quota ........... 1200 MB
   max_card_est ........... 1
@@ -978,7 +983,7 @@ ESP_EXCHANGE ==============================  SEQ_NO 3        ONLY CHILD 2
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 511.84
+EST_TOTAL_COST ......... 538.3
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -998,8 +1003,8 @@ DESCRIPTION
 HASH_PARTIAL_GROUPBY_LEAF =================  SEQ_NO 2        ONLY CHILD 1
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
-EST_OPER_COST ............ 3.9
-EST_TOTAL_COST ......... 511.84
+EST_OPER_COST ............ 4.98
+EST_TOTAL_COST ......... 538.3
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -1013,8 +1018,8 @@ TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
 TABLE_NAME ............... MCSTATPART1
 REQUESTS_IN .............. 1
 ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 507.95
-EST_TOTAL_COST ......... 507.95
+EST_OPER_COST .......... 533.33
+EST_TOTAL_COST ......... 533.33
 DESCRIPTION
   max_card_est ........... 1e+09
   fragment_id ............ 2
@@ -1026,6 +1031,7 @@ DESCRIPTION
   cache_blocks ........... OFF
   probes ................. 1
   rows_accessed .......... 1e+09
+  column_retrieved ....... #1:2,#1:3
   key_columns ............ _SALT_, A, B
   begin_key .............. (_SALT_ = (\:_sys_HostVarLoHashPart Hash2Distrib
                              8)), (A = <min>), (B = '<min>')
@@ -1055,9 +1061,9 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212302388501209482
+PLAN_ID .................. 212318883775293423
 ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 STATEMENT ................ select f,count(f)
                            from mcStatPart8 <<+ cardinality 10e8 >>
                            group by f;
@@ -1068,7 +1074,7 @@ ROOT ======================================  SEQ_NO 5        ONLY CHILD 4
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 0
@@ -1090,7 +1096,7 @@ DESCRIPTION
   SEABASE_VOLATILE_TABLES  ON
   HBASE_ASYNC_DROP_TABLE   OFF
   HBASE_SERIALIZATION .... ON
-  HBASE_FILTER_PREDS ..... ON
+  HBASE_FILTER_PREDS ..... 2
   TRAF_ALIGNED_ROW_FORMAT  OFF
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.HBASE
@@ -1099,7 +1105,7 @@ DESCRIPTION
   HBASE_MIN_BYTES_PER_ESP  1
   USTAT_COLLECT_MC_SKEW_V  ON
   PARALLEL_NUM_ESPS ...... 4
-  ObjectUIDs ............. 119978596074764409
+  ObjectUIDs ............. 1492467077764913972
   select_list ............ TRAFODION.HBASE.MCSTATPART8.F,
                              cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART8.
                              F)))
@@ -1109,7 +1115,7 @@ HASH_PARTIAL_GROUPBY_ROOT =================  SEQ_NO 4        ONLY CHILD 3
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   memory_quota ........... 1200 MB
   max_card_est ........... 1
@@ -1124,7 +1130,7 @@ ESP_EXCHANGE ==============================  SEQ_NO 3        ONLY CHILD 2
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
 EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 526.64
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -1144,8 +1150,8 @@ DESCRIPTION
 HASH_PARTIAL_GROUPBY_LEAF =================  SEQ_NO 2        ONLY CHILD 1
 REQUESTS_IN .............. 1
 ROWS_OUT ................. 1
-EST_OPER_COST ............ 3.9
-EST_TOTAL_COST ......... 526.64
+EST_OPER_COST ............ 4.98
+EST_TOTAL_COST ......... 553.48
 DESCRIPTION
   max_card_est ........... 1
   fragment_id ............ 2
@@ -1159,8 +1165,8 @@ TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
 TABLE_NAME ............... MCSTATPART8
 REQUESTS_IN .............. 1
 ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 522.74
-EST_TOTAL_COST ......... 522.74
+EST_OPER_COST .......... 548.5
+EST_TOTAL_COST ......... 548.5
 DESCRIPTION
   max_card_est ........... 1e+09
   fragment_id ............ 2
@@ -1172,6 +1178,7 @@ DESCRIPTION
   cache_blocks ........... OFF
   probes ................. 1
   rows_accessed .......... 1e+09
+  column_retrieved ....... #1:2,#1:3
   key_columns ............ _SALT_, A, B
   begin_key .............. (_SALT_ = (\:_sys_HostVarLoHashPart Hash2Distrib
                              8)), (A = <min>), (B = '<min>')

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/regress/tools/runregr_executor.ksh
----------------------------------------------------------------------
diff --git a/core/sql/regress/tools/runregr_executor.ksh b/core/sql/regress/tools/runregr_executor.ksh
index a34af0f..5b77e35 100755
--- a/core/sql/regress/tools/runregr_executor.ksh
+++ b/core/sql/regress/tools/runregr_executor.ksh
@@ -237,7 +237,7 @@ skippedfiles=
 
 # sbtestfiles contains the list of tests to be run in seabase mode
 if [ "$seabase" -ne 0 ]; then
-  sbtestfiles="TEST001 TEST002 TEST012 TEST013 TEST014 TEST015 TEST016 TEST020 TEST022 TEST025 TEST050 TEST063 TEST088 TEST101 TEST106 TEST107 TEST122 TEST130"
+  sbtestfiles="TEST001 TEST002 TEST012 TEST013 TEST014 TEST015 TEST016 TEST020 TEST022 TEST025 TEST050 TEST063 TEST088 TEST101 TEST106 TEST107 TEST122 TEST130 TEST140"
   sbprettyfiles=
   for i in $prettyfiles; do
     for j in $sbtestfiles; do

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/regress/tools/sbdefs
----------------------------------------------------------------------
diff --git a/core/sql/regress/tools/sbdefs b/core/sql/regress/tools/sbdefs
index 580d1e2..7fc062d 100644
--- a/core/sql/regress/tools/sbdefs
+++ b/core/sql/regress/tools/sbdefs
@@ -27,7 +27,7 @@ cqd seabase_volatile_tables 'ON';
 cqd hbase_async_drop_table 'OFF';
 cqd hbase_serialization 'ON';
 --cqd hbase_coprocessors 'OFF';
-cqd hbase_filter_preds 'ON';
+cqd hbase_filter_preds '2';
 cqd traf_aligned_row_format 'OFF';
 --cqd traf_default_col_charset 'UTF8';
 cqd traf_index_create_opt 'ON';

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h
index 1a988b4..e9f2427 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -3453,7 +3453,7 @@ enum DefaultConstants
   // instead of relying on default cardinality estimate.
   ESTIMATE_HBASE_ROW_COUNT,
 
-  // if ON, then filter predicates could be pushed down to hbase.
+  // if OFF or '0' is disabled, ON or '1' is simple pushdown, '2' is for advance pushdown
   // It will depends on the query on which predicates or sub-predicates could be pushed.
   HBASE_FILTER_PREDS,
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index 24b8681..9de9f4c 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -6428,6 +6428,14 @@ DefaultToken NADefaults::token(Int32 attrEnum,
 	  case '2':	return DF_HIGH;
 	  case '3':	return DF_MAXIMUM;
 	}
+    // HBASE_FILTER_PREDS
+      if ((attrEnum == HBASE_FILTER_PREDS) && value.length()==1)
+    switch (*value.data()){
+      case '0': return DF_OFF;
+      case '1': return DF_MINIMUM;
+      case '2': return DF_MEDIUM;
+      // in the future add DF_HIGH and DF_MAXIMUM when we implement more pushdown capabilities
+    }
     if ( attrEnum == TEMPORARY_TABLE_HASH_PARTITIONS ||
          attrEnum == MVQR_REWRITE_CANDIDATES ||
          attrEnum == MVQR_PUBLISH_TABLE_LOCATION ||
@@ -6684,6 +6692,15 @@ DefaultToken NADefaults::token(Int32 attrEnum,
         isValid = TRUE;
       break;
 
+    case HBASE_FILTER_PREDS:
+    	if(tok == DF_OFF || tok == DF_ON)
+    	{
+    		if (tok == DF_ON)
+    			tok = DF_MINIMUM; // to keep backward compatibility
+    	isValid= TRUE;
+    	}
+    	break;
+
     case ROBUST_QUERY_OPTIMIZATION:
       if (tok == DF_MINIMUM || tok == DF_SYSTEM || tok == DF_MAXIMUM ||
           tok == DF_HIGH)

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
index 12d448a..5d936bc 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
@@ -73,12 +73,19 @@ import org.apache.hadoop.hbase.util.*;
 import org.apache.hadoop.hbase.coprocessor.ColumnInterpreter;
 import org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter;
 
-// classes to do column value filtering
+// classes to do hbase pushdown filtering
 import org.apache.hadoop.hbase.filter.Filter;
 import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
 import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
 import org.apache.hadoop.hbase.filter.FilterList;
 import org.apache.hadoop.hbase.filter.RandomRowFilter;
+import org.apache.hadoop.hbase.filter.FamilyFilter;
+import org.apache.hadoop.hbase.filter.QualifierFilter;
+import org.apache.hadoop.hbase.filter.SingleColumnValueExcludeFilter;
+import org.apache.hadoop.hbase.filter.BinaryComparator;
+import org.apache.hadoop.hbase.filter.BinaryPrefixComparator;
+import org.apache.hadoop.hbase.filter.ByteArrayComparable;
+import org.apache.hadoop.hbase.filter.NullComparator;
 
 import org.apache.hadoop.hbase.client.TableSnapshotScanner;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
@@ -358,6 +365,417 @@ public class HTableClient {
 		table.setAutoFlush(true, true);
 	}
 
+	private enum Op {
+		EQUAL, EQUAL_NULL, NOT_EQUAL, NOT_EQUAL_NULL, LESS, LESS_NULL, LESS_OR_EQUAL, LESS_OR_EQUAL_NULL, GREATER, GREATER_NULL, 
+		GREATER_OR_EQUAL, GREATER_OR_EQUAL_NULL, NO_OP, NO_OP_NULL,IS_NULL, IS_NULL_NULL, IS_NOT_NULL, IS_NOT_NULL_NULL, AND, OR};
+		
+	private Filter SingleColumnValueExcludeOrNotFilter(byte[] columnToFilter, 
+														CompareOp op,
+														ByteArrayComparable comparator, 
+														HashMap<String,Object> columnsToRemove, 
+														Boolean... filterIfMissing){
+		Filter result;
+		boolean fMissing = filterIfMissing.length>0?filterIfMissing[0]:false;//default to false 
+		if ((columnsToRemove == null) || !columnsToRemove.containsKey(new String(columnToFilter))){
+			result = new SingleColumnValueFilter(getFamily(columnToFilter), getName(columnToFilter), op, comparator);
+			((SingleColumnValueFilter)result).setFilterIfMissing(fMissing);
+		}
+		else{
+			result= new SingleColumnValueExcludeFilter(getFamily(columnToFilter), getName(columnToFilter), op, comparator);
+			((SingleColumnValueExcludeFilter)result).setFilterIfMissing(fMissing);
+		}
+		return result;
+	}
+	
+	// construct the hbase filter
+	// optimizes for OR and AND associativity
+	// optimizes for detection of a<? and a>? on nullable and non nullable column equivalent to a<>?
+	// optimize for null check factorization (A not null and (A <op> ?)) or (A not null and A <op2> ?) -> A not null and (A <op> ? or A <op2> ?)
+	//		this is an important optimzation for IN statement on non null column
+	// uses the columnToRemove parametter to know if we need to use the SingleColumnValue Exclude or not method to limit returned columns
+	
+	private Filter constructV2Filter(Object[] colNamesToFilter, 
+                                 Object[] compareOpList, 
+                                 Object[] colValuesToCompare,
+                                 HashMap<String,Object> columnsToRemove){
+		LinkedList linkedList = new LinkedList();
+		//populate the list with nodes in reverse polish notation order.
+		int k=0;//column index
+		int kk=0;//value index
+		for (int i=1; i<compareOpList.length; i++){ // skip first one containing "V2" marker
+			String opStr = new String((byte[])compareOpList[i]);
+			switch(Op.valueOf(opStr)){
+				
+				case EQUAL:
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k], 
+							CompareOp.EQUAL, 
+							new BinaryComparator((byte[])colValuesToCompare[kk]),
+							columnsToRemove
+							));
+					k++;kk++;
+					break;
+				case EQUAL_NULL:
+					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+										   SingleColumnValueExcludeOrNotFilter(
+												(byte[])colNamesToFilter[k],
+												CompareOp.EQUAL, 
+												new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+												columnsToRemove,
+												true	//filterIfMissing
+												),
+										   SingleColumnValueExcludeOrNotFilter(
+													(byte[])colNamesToFilter[k], 
+													CompareOp.EQUAL, 
+													new BinaryComparator((byte[])colValuesToCompare[kk]),
+													columnsToRemove)));
+					k++;kk++;
+					break;
+				case NOT_EQUAL:
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k], 
+							CompareOp.NOT_EQUAL, 
+							new BinaryComparator((byte[])colValuesToCompare[kk]),
+							columnsToRemove));
+					k++;kk++;
+					break;
+				case NOT_EQUAL_NULL:
+					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k],
+									CompareOp.EQUAL, 
+									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+									columnsToRemove,
+									true), //filterIfMissing,
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k], 
+									CompareOp.NOT_EQUAL, 
+									new BinaryComparator((byte[])colValuesToCompare[kk]),
+									columnsToRemove)));
+					k++;kk++;
+					break;
+				case LESS:
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k], 
+							CompareOp.LESS, 
+							new BinaryComparator((byte[])colValuesToCompare[kk]),
+							columnsToRemove));
+					k++;kk++;
+					break;
+				case LESS_NULL:
+					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k],
+									CompareOp.EQUAL, 
+									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+									columnsToRemove,
+									true), //filterIfMissing,
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k], 
+									CompareOp.LESS, 
+									new BinaryComparator((byte[])colValuesToCompare[kk]),
+									columnsToRemove)));
+					k++;kk++;
+					break;
+				case LESS_OR_EQUAL:
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k], 
+							CompareOp.LESS_OR_EQUAL, 
+							new BinaryComparator((byte[])colValuesToCompare[kk]),
+							columnsToRemove));
+					k++;kk++;
+					break;
+				case LESS_OR_EQUAL_NULL:
+					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k],
+									CompareOp.EQUAL, 
+									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+									columnsToRemove,
+									true), //filterIfMissing,
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k], 
+									CompareOp.LESS_OR_EQUAL, 
+									new BinaryComparator((byte[])colValuesToCompare[kk]),
+									columnsToRemove)));
+					k++;kk++;					
+					break;
+				case GREATER:
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k], 
+							CompareOp.GREATER, 
+							new BinaryComparator((byte[])colValuesToCompare[kk]),
+							columnsToRemove));
+					k++;kk++;
+					break;
+				case GREATER_NULL:
+					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k],
+									CompareOp.EQUAL, 
+									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+									columnsToRemove,
+									true), //filterIfMissing, 
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k], 
+									CompareOp.GREATER, 
+									new BinaryComparator((byte[])colValuesToCompare[kk]),
+									columnsToRemove)));
+					k++;kk++;					
+					break;
+				case GREATER_OR_EQUAL:
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k], 
+							CompareOp.GREATER_OR_EQUAL, 
+							new BinaryComparator((byte[])colValuesToCompare[kk]),
+							columnsToRemove));
+					k++;kk++;
+					break;
+				case GREATER_OR_EQUAL_NULL:
+					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k],
+									CompareOp.EQUAL, 
+									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+									columnsToRemove,
+									true), //filterIfMissing,
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k], 
+									CompareOp.GREATER_OR_EQUAL, 
+									new BinaryComparator((byte[])colValuesToCompare[kk]),
+									columnsToRemove)));
+					k++;kk++;
+					break;
+				case NO_OP:
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k], 
+							CompareOp.NO_OP, 
+							new BinaryComparator((byte[])colValuesToCompare[kk]),
+							columnsToRemove));
+					k++;kk++;
+					break;
+				case NO_OP_NULL:
+					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k],
+									CompareOp.EQUAL, 
+									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+									columnsToRemove,
+									true), //filterIfMissing,
+							SingleColumnValueExcludeOrNotFilter(
+									(byte[])colNamesToFilter[k], 
+									CompareOp.NO_OP, 
+									new BinaryComparator((byte[])colValuesToCompare[kk]),
+									columnsToRemove)));
+					k++;kk++;					
+					break;
+				case IS_NULL:
+					// is null on a non nullable column!
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k], 
+							CompareOp.NO_OP, //exclude everything
+							new BinaryPrefixComparator((new byte[]{})),
+							columnsToRemove));
+					k++;
+					break;
+				case IS_NULL_NULL:
+					// is_null on nullable column: is absent OR has the first byte set to FF indicating NULL.
+					linkedList.addLast(
+							new FilterList(FilterList.Operator.MUST_PASS_ONE, //OR
+									SingleColumnValueExcludeOrNotFilter(
+											(byte[])colNamesToFilter[k],
+											CompareOp.EQUAL, 
+											new NullComparator(),//is absent?
+											columnsToRemove), 
+									SingleColumnValueExcludeOrNotFilter(
+											(byte[])colNamesToFilter[k],
+											CompareOp.EQUAL, 
+											new BinaryPrefixComparator(new byte[]{-1}),//0xFF has null prefix indicator
+											columnsToRemove)));
+					k++;
+					break;
+				case IS_NOT_NULL:
+					// is not null on a non nullable column!
+					// do nothing, always true
+					k++;
+					break;	
+				case IS_NOT_NULL_NULL:
+					// is_not_null on nullable column: is not absent AND has the first byte not set to FF indicating NULL.
+					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+							(byte[])colNamesToFilter[k],
+							CompareOp.NOT_EQUAL, 
+							new BinaryPrefixComparator(new byte[]{-1}),// 0xFF has null prefix indicator
+							columnsToRemove,
+							true));//filter if missing (if absent null)
+					k++;
+					break;
+				case AND:
+					linkedList.addLast("AND");
+					break;
+				case OR:
+					linkedList.addLast("OR");
+					break;
+					default:
+			}//switch
+		}//for
+		//evaluate the reverse polish notation list
+		while (linkedList.size()>1){// evaluate until only one element is left in the list
+			//look for first operator (AND or OR)
+			int j=0;
+			while (j<linkedList.size() && !(linkedList.get(j) instanceof String)){
+				j++;
+			}
+			//here j points on the first operator; (all operands are of type Filter)
+			if (j==linkedList.size()){logger.error("j==linkedList.size()");return null;} // should not happen
+			Filter leftOperand;
+			Filter rightOperand;
+			switch(Op.valueOf((String)linkedList.get(j))){
+			case AND:
+				FilterList filterListAnd = new FilterList(FilterList.Operator.MUST_PASS_ALL); //AND filterList
+				//left operand
+				leftOperand = (Filter)linkedList.get(j-2);
+				if (leftOperand instanceof FilterList && ((FilterList)leftOperand).getOperator()==FilterList.Operator.MUST_PASS_ALL){//associativity of AND optimization
+					//for(Filter f:((FilterList)leftOperand).getFilters())
+					//	filterListAnd.addFilter(f);
+					filterListAnd = (FilterList)leftOperand; //more efficient than the 2 lines above (kept commented out for code lisibility)
+				}else{
+					filterListAnd.addFilter(leftOperand);
+				}
+				// right operand
+				rightOperand = (Filter)linkedList.get(j-1);
+				if (rightOperand instanceof FilterList && ((FilterList)rightOperand).getOperator()==FilterList.Operator.MUST_PASS_ALL){//associativity of AND optimization
+					for(Filter f:((FilterList)rightOperand).getFilters())
+						filterListAnd.addFilter(f);					
+				}else{
+					filterListAnd.addFilter(rightOperand);
+				}				
+				// setup evaluated filter
+				linkedList.set(j,filterListAnd); // replace the operator with the constructer filter
+				linkedList.remove(j-1);// remove right operand
+				linkedList.remove(j-2);// remove left operand. warning order matter 
+				break;
+			case OR:
+				FilterList filterListOr = new FilterList(FilterList.Operator.MUST_PASS_ONE); //OR filterList
+				leftOperand = (Filter)linkedList.get(j-2);
+				rightOperand = (Filter)linkedList.get(j-1);
+				//begin detection of null check factorization (A not null and (A <op> ?)) or (A not null and A <op2> ?) -> A not null and (A <op> ? or A <op2> ?)  
+				//the code is doing more than just nullcheck, but any factorization where left operands are identical
+				if (leftOperand instanceof FilterList && rightOperand instanceof FilterList && 
+					((FilterList)leftOperand).getOperator() == FilterList.Operator.MUST_PASS_ALL &&
+					((FilterList)rightOperand).getOperator() == FilterList.Operator.MUST_PASS_ALL &&
+					((FilterList)leftOperand).getFilters().size() == 2 &&
+					((FilterList)rightOperand).getFilters().size() == 2 &&
+					((FilterList)leftOperand).getFilters().get(0) instanceof SingleColumnValueFilter && //cannot be SingleColumnValueExcludeFilter when we have the optimization scenario
+					((FilterList)rightOperand).getFilters().get(0) instanceof SingleColumnValueFilter){//cannot be SingleColumnValueExcludeFilter when we have the optimization scenario
+					SingleColumnValueFilter scvfLeft = (SingleColumnValueFilter)((FilterList)leftOperand).getFilters().get(0);
+					SingleColumnValueFilter scvfRight = (SingleColumnValueFilter)((FilterList)rightOperand).getFilters().get(0);
+					if (scvfLeft.getOperator() == scvfRight.getOperator() && //more general case than just for null check (identical operands)
+						Arrays.equals(scvfLeft.getQualifier(),scvfRight.getQualifier()) &&
+						Arrays.equals(scvfLeft.getFamily(),scvfRight.getFamily()) &&
+						Arrays.equals(scvfLeft.getComparator().getValue(),scvfRight.getComparator().getValue()) &&
+						(scvfLeft.getFilterIfMissing() == scvfRight.getFilterIfMissing())){
+						Filter left = ((FilterList)leftOperand).getFilters().get(1);
+						Filter right = ((FilterList)rightOperand).getFilters().get(1);
+						if (left instanceof FilterList && ((FilterList)left).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
+							//for(Filter f:((FilterList)left).getFilters())
+							//	filterListOr.addFilter(f);
+							filterListOr = (FilterList)left; // more efficient than the 2 lines above (kept commented out for code lisibility)
+						}else{
+							filterListOr.addFilter(left);
+						}
+						// right operand				
+						if (right instanceof FilterList && ((FilterList)right).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
+							for(Filter f:((FilterList)right).getFilters())
+								filterListOr.addFilter(f);					
+						}else{
+							filterListOr.addFilter(right);
+						}										
+						linkedList.set(j,new FilterList(FilterList.Operator.MUST_PASS_ALL,scvfLeft,filterListOr));//resulting factorized AND filter
+						linkedList.remove(j-1);// remove right operand
+						linkedList.remove(j-2);// remove left operand. warning order matter 
+						break;
+					}									
+				}
+				//end detection of null (and more) check factorization
+				//begin detection of RangeSpec a<>? transformed to a<? or a>? to convert it back to a <> ? when we push down
+				//check for <> on non nullable columns
+				if (leftOperand instanceof SingleColumnValueFilter && rightOperand instanceof SingleColumnValueFilter){
+					SingleColumnValueFilter leftscvf = (SingleColumnValueFilter)leftOperand;
+					SingleColumnValueFilter rightscvf = (SingleColumnValueFilter)rightOperand;
+					if (leftscvf.getOperator() == CompareOp.LESS && rightscvf.getOperator()== CompareOp.GREATER && 
+							Arrays.equals(leftscvf.getQualifier(), rightscvf.getQualifier()) &&
+							Arrays.equals(leftscvf.getFamily(), rightscvf.getFamily()) &&
+							Arrays.equals(leftscvf.getComparator().getValue(),rightscvf.getComparator().getValue())
+						){
+						// setup evaluated filter
+						linkedList.set(j,new SingleColumnValueFilter(leftscvf.getFamily(), leftscvf.getQualifier(), CompareOp.NOT_EQUAL, leftscvf.getComparator())); // replace the operator with the constructer filter
+						linkedList.remove(j-1);// remove right operand
+						linkedList.remove(j-2);// remove left operand. warning order matter 						
+						break;
+					}
+				}
+				//check for <> on nullable column
+				if( leftOperand instanceof FilterList && rightOperand instanceof FilterList){
+					//no need to check FilterList size, as all possible case FilterList size is at least 2.
+					if (((FilterList)leftOperand).getFilters().get(1) instanceof SingleColumnValueFilter &&
+						((FilterList)rightOperand).getFilters().get(1) instanceof SingleColumnValueFilter){
+						SingleColumnValueFilter leftscvf = (SingleColumnValueFilter)((FilterList)leftOperand).getFilters().get(1);
+						SingleColumnValueFilter rightscvf = (SingleColumnValueFilter)((FilterList)rightOperand).getFilters().get(1);
+						if (leftscvf.getOperator() == CompareOp.LESS && rightscvf.getOperator()== CompareOp.GREATER && 
+								Arrays.equals(leftscvf.getQualifier(), rightscvf.getQualifier()) &&
+								Arrays.equals(leftscvf.getFamily(), rightscvf.getFamily()) &&
+								Arrays.equals(leftscvf.getComparator().getValue(),rightscvf.getComparator().getValue())
+							){
+							// setup evaluated filter
+							SingleColumnValueFilter nullCheck = new SingleColumnValueFilter(// null checker
+									leftscvf.getFamily(), leftscvf.getQualifier(),
+									CompareOp.EQUAL, 
+									new BinaryPrefixComparator(new byte[]{0x00}));
+							nullCheck.setFilterIfMissing(true);
+							linkedList.set(j,new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+									nullCheck, 
+									new SingleColumnValueFilter(
+											leftscvf.getFamily(), leftscvf.getQualifier(), 
+											CompareOp.NOT_EQUAL, 
+											leftscvf.getComparator()))); 
+							linkedList.remove(j-1);// remove right operand
+							linkedList.remove(j-2);// remove left operand. warning order matter 						
+							break;
+						}						
+					}
+				}				
+				//end detection of RangeSpec a<>?
+				//now general case...
+				//left operand			    
+				if (leftOperand instanceof FilterList && ((FilterList)leftOperand).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
+					//for(Filter f:((FilterList)leftOperand).getFilters())
+					//	filterListOr.addFilter(f);
+					filterListOr = (FilterList)leftOperand; // more efficient than the 2 lines above (kept commented out for code lisibility)
+				}else{
+					filterListOr.addFilter(leftOperand);
+				}
+				// right operand				
+				if (rightOperand instanceof FilterList && ((FilterList)rightOperand).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
+					for(Filter f:((FilterList)rightOperand).getFilters())
+						filterListOr.addFilter(f);					
+				}else{
+					filterListOr.addFilter(rightOperand);
+				}				
+				// setup evaluated filter
+				linkedList.set(j,filterListOr); // replace the operator with the constructer filter
+				linkedList.remove(j-1);// remove right operand
+				linkedList.remove(j-2);// remove left operand. warning order matter 
+				break;
+				default:
+					logger.error("operator different than OR or AND???");
+					return null;//should never happen
+			}			
+		}
+		// after evaluation, the linkedList contains only one element containing the filter built
+		return (Filter)linkedList.pop();
+	}
+	
+	
 	public boolean startScan(long transID, byte[] startRow, byte[] stopRow,
                                  Object[]  columns, long timestamp,
                                  boolean cacheBlocks, int numCacheRows,
@@ -421,29 +839,140 @@ public class HTableClient {
 	  else
 	    numColsInScan = 0;
 	  if (colNamesToFilter != null) {
-	    FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
-
-	    for (int i = 0; i < colNamesToFilter.length; i++) {
-	      byte[] colName = (byte[])colNamesToFilter[i];
-	      byte[] coByte = (byte[])compareOpList[i];
-	      byte[] colVal = (byte[])colValuesToCompare[i];
-
-	      if ((coByte == null) || (colVal == null)) {
-	        return false;
-	      }
-
-	      String coStr = new String(coByte);
-	      CompareOp co = CompareOp.valueOf(coStr);
-
-	      SingleColumnValueFilter filter1 = 
-	          new SingleColumnValueFilter(getFamily(colName), getName(colName), 
-	              co, colVal);
-	      list.addFilter(filter1);
-	    }
-
+		FilterList list;
+		boolean narrowDownResultColumns = false; //to check if we need a narrow down column filter (V2 only feature)
+		if (compareOpList == null)return false;
+		if (new String((byte[])compareOpList[0]).equals("V2")){ // are we dealing with predicate pushdown V2
+			list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
+			HashMap<String,Object> columnsToRemove = new HashMap<String,Object>();
+			//if columnsToRemove not null, we are narrowing down using the SingleColumnValue[Exclude]Filter method
+			//else we will use the explicit FamilyFilter and QualifierFilter
+			//the simplified logic is that we can use the first method if and only if each and every column in the
+			//pushed down predicate shows up only once.
+		    for (int i = 0; i < colNamesToFilter.length; i++) {
+		      byte[] colName = (byte[])colNamesToFilter[i];
+	      
+		      // check if the filter column is already part of the column list, if not add it if we are limiting columns (not *)
+		      if(columns!=null && columns.length > 0){// if not *
+		    	  boolean columnAlreadyIn = false; //assume column not yet in the scan object
+		    	  for (int k=0; k<columns.length;k++){
+		    		  if (Arrays.equals(colName, (byte[])columns[k])){
+		    			  columnAlreadyIn = true;//found already exist
+		    			  break;//no need to look further
+		    		  }
+		    	  }
+		    	  if (!columnAlreadyIn){// column was not already in, so add it
+		    		  scan.addColumn(getFamily(colName),getName(colName));
+		    		  narrowDownResultColumns = true; //since we added a column for predicate eval, we need to remove it later out of result set
+		    		  String strColName = new String(colName);
+		    		  if (columnsToRemove != null && columnsToRemove.containsKey(strColName)){// if we already added this column, it means it shows up more than once
+		    			  columnsToRemove = null; // therefore, use the FamilyFilter/QualifierFilter method
+		    		  }else if (columnsToRemove != null)// else 
+		    			  columnsToRemove.put(strColName,null); // add it to the list of column that should be nuked with the Exclude version of the SingleColumnValueFilter
+		    	  }
+		      }	    	
+		    }
+		    if (columnsToRemove != null)
+		    { //we are almost done checking if Exclude version of SingleColumnnValueFilter can be used. Th elast check s about to know if there is a IS_NULL_NULL
+		      //operation that cannot be using the Exclude method, as it is transformed in a filterList with OR, therefore we cannot guaranty that the SingleColumnValueExcludeFilter
+		      //performing the exclusion will be reached.
+		    	boolean is_null_nullFound = false;
+		    	for (Object o:compareOpList ){
+		    		if (new String((byte[])o).equals("IS_NULL_NULL")){
+		    			is_null_nullFound = true;
+		    			break;
+		    		}		    			
+		    	}
+		    	if (is_null_nullFound){
+		    		columnsToRemove = null; // disable Exclude method version of SingleColumnnValueFilter
+		    	}else
+		    		narrowDownResultColumns = false; // we will use the Exclude version of SingleColumnnValueFilter, so bypass the Family/QualifierFilter method
+		    }
+		    Filter f =constructV2Filter(colNamesToFilter,compareOpList,colValuesToCompare, columnsToRemove);
+		    if (f==null) return false; // error logging done inside constructV2Filter
+		    list.addFilter(f);
+		}//end V2
+		else{// deal with V1
+		    list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
+		    
+		    for (int i = 0; i < colNamesToFilter.length; i++) {
+		      byte[] colName = (byte[])colNamesToFilter[i];
+		      byte[] coByte = (byte[])compareOpList[i];
+		      byte[] colVal = (byte[])colValuesToCompare[i];
+	
+		      if ((coByte == null) || (colVal == null)) {
+		        return false;
+		      }
+		      String coStr = new String(coByte);
+		      CompareOp co = CompareOp.valueOf(coStr);
+	
+		      SingleColumnValueFilter filter1 = 
+		          new SingleColumnValueFilter(getFamily(colName), getName(colName), 
+		              co, colVal);
+		      list.addFilter(filter1);
+		    }			
+		}//end V1
+	    // if we added a column for predicate eval, we need to filter down result columns
+	    FilterList resultColumnsOnlyFilter = null;
+	    if (narrowDownResultColumns){  	    	
+  		    HashMap<String,ArrayList<byte[]>> hm = new HashMap<String,ArrayList<byte[]>>(3);//use to deal with multiple family table
+  		    // initialize hm with list of columns requested for output
+  		    	for (int i=0; i<columns.length; i++){ // if we are here we know columns is not null
+  		    		if (hm.containsKey(new String(getFamily((byte[])columns[i])))){
+  		    			hm.get(new String(getFamily((byte[])columns[i]))).add((byte[])columns[i]);
+  		    		}else{
+  		    			ArrayList<byte[]> al = new ArrayList<byte[]>();
+  		    			al.add((byte[])columns[i]);
+  		    			hm.put(new String(getFamily((byte[])columns[i])), al);
+  		    		}	    			
+  		    	}
+  		    	
+  	    	if (hm.size()==1){//only one column family
+  	    		resultColumnsOnlyFilter = new FilterList(FilterList.Operator.MUST_PASS_ALL);
+  	    		if (columns.length == 1){
+  	  	    		resultColumnsOnlyFilter.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName((byte[])columns[0])))); 	    			
+  	    		}else{// more than one column
+  	    			FilterList flColumns = new FilterList(FilterList.Operator.MUST_PASS_ONE);
+  	    			for(int i=0; i<columns.length;i++)
+  	    				flColumns.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName((byte[])columns[i]))));  	    			
+  	    			resultColumnsOnlyFilter.addFilter(flColumns);
+  	    		}  	    		  	    		
+  	    		// note the optimization puting family check at the end
+  	    		resultColumnsOnlyFilter.addFilter(new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily((byte[])columns[0]))));
+  	    	}else{//more than one column family
+  	    		resultColumnsOnlyFilter = new FilterList(FilterList.Operator.MUST_PASS_ONE);
+  	    		for (Map.Entry<String,ArrayList<byte[]>> entry : hm.entrySet()){//for each column family
+  	    			ArrayList<byte[]> alb = entry.getValue();
+  	    			if (alb.size() == 1){// when only one column for the family
+  	    				resultColumnsOnlyFilter.addFilter(
+  	    						new FilterList(FilterList.Operator.MUST_PASS_ALL,
+  	    									   new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName(alb.get(0)))),
+  	    								       new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily(alb.get(0)))))
+  	    				);
+  	    			}else{// when multiple columns for the family
+	  	    			FamilyFilter familyFilter = null;
+	  	    			FilterList filterListCol = new FilterList(FilterList.Operator.MUST_PASS_ONE);
+	  	    			for(int j = 0; j<alb.size(); j++){
+	  	    				if (familyFilter == null)
+	  	    					familyFilter = new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily(alb.get(0))));
+	  	    				filterListCol.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName(alb.get(j)))));	  	    				
+	  	    			}
+  	    				resultColumnsOnlyFilter.addFilter(new FilterList(FilterList.Operator.MUST_PASS_ALL,filterListCol,familyFilter));
+  	    			}
+  	    		}
+  	    	}
+  	    	list.addFilter(resultColumnsOnlyFilter); // add column limiting filter
+  	    }//end narrowDownResultColumns
 	    if (samplePercent > 0.0f)
 	      list.addFilter(new RandomRowFilter(samplePercent));
+	    // last optimization is making sure we remove top level filter list if it is singleton MUST_PASS_ALL filterlist
+	    if (list.getFilters().size()==1){
+		    scan.setFilter(list.getFilters().get(0));
+		    if (logger.isTraceEnabled()) logger.trace("Pushed down filter:"+list.getFilters().get(0));
+	    }else{
 	    scan.setFilter(list);
+	    if (logger.isTraceEnabled()) logger.trace("Pushed down filter:"+list );
+	    }
 	  } else if (samplePercent > 0.0f) {
 	    scan.setFilter(new RandomRowFilter(samplePercent));
 	  }


[04/15] incubator-trafodion git commit: Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2

Posted by hz...@apache.org.
Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/8a6f2205
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/8a6f2205
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/8a6f2205

Branch: refs/heads/master
Commit: 8a6f2205c630ff6599eacca247bc4fbe508aa136
Parents: 1c5f243 7e1dfca
Author: Eric Owhadi <er...@esgyn.com>
Authored: Thu Jan 7 01:34:06 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Thu Jan 7 01:34:06 2016 +0000

----------------------------------------------------------------------
 .gitattributes                                  |   14 +
 .rat-excludes                                   |  117 +-
 LICENSE.txt                                     |  178 +-
 NOTICE.txt                                      |    1 +
 RAT_README.txt                                  |  103 +-
 README.txt                                      |   33 +-
 core/Makefile                                   |    4 +-
 .../jdbc_type2/native/SQLMXDatabaseMetaData.cpp |    6 +-
 core/conn/jdbc_type2/native/SrvrCommon.cpp      |    4 +-
 core/conn/jdbc_type2/native/SrvrSmd.cpp         |    7 -
 core/conn/jdbc_type4/build.xml                  |    9 +-
 .../trafodion/jdbc/t4/T4DatabaseMetaData.java   |    3 -
 core/conn/security_dll/LICENSE                  |  127 -
 .../src/org/trafodion/ci/DatabaseQuery.java     |    4 +-
 .../trafciDefaultLookAndFeel.properties         |    1 +
 .../odbc/odbcclient/unixcli/package/mklnxpkg.sh |    2 -
 .../unixcli/package/trafodbclnx_install.sh      |    2 +-
 .../org/trafodion/rest/GetStatusResponse.java   |    2 +-
 .../java/org/trafodion/rest/RESTServlet.java    |    7 +
 .../rest/provider/JAXBContextResolver.java      |    1 -
 .../producer/PlainTextMessageBodyProducer.java  |    3 -
 .../java/org/trafodion/rest/util/ConfTool.java  |    2 +-
 .../org/trafodion/rest/zookeeper/ZkClient.java  |    1 -
 core/sqf/build-scripts/genverhdr.ksh            |    3 +-
 core/sqf/conf/log4j.dtm.config                  |   22 -
 core/sqf/conf/log4j.hdfs.config                 |   22 -
 core/sqf/conf/trafodion.udr.config              |   22 -
 core/sqf/export/lib/Vili/Functions.pm           |  725 ---
 core/sqf/export/lib/Vili/Helper.pm              |  674 --
 core/sqf/export/lib/Vili/NoDriftTimer.pm        |   98 -
 core/sqf/sqenvcom.sh                            |    2 +-
 core/sqf/sql/scripts/cleanlogs                  |   92 +
 core/sqf/sql/scripts/dcscheck                   |   67 +-
 core/sqf/sql/scripts/dcsstop                    |    4 +
 core/sqf/sql/scripts/findPort.py                |    1 +
 .../sql/scripts/install_hadoop_regr_test_env    |   22 +-
 core/sqf/sql/scripts/install_local_drill        |  114 +
 core/sqf/sql/scripts/install_local_hadoop       |   90 +-
 core/sqf/sql/scripts/sqcheck                    |   52 +-
 core/sqf/sql/scripts/sqnodes.pm                 |   74 +-
 core/sqf/sqvers                                 |   29 +-
 core/sqf/src/seatrans/hbase-trx/pom.xml.apache  |    4 +
 .../client/transactional/BatchException.java    |   21 -
 .../CommitUnsuccessfulException.java            |   19 -
 .../HBaseBackedTransactionLogger.java           |   10 -
 .../client/transactional/JtaXAResource.java     |   10 -
 .../transactional/LocalTransactionLogger.java   |   19 -
 .../transactional/MemoryUsageException.java     |   20 -
 .../OutOfOrderProtocolException.java            |   20 -
 .../hbase/client/transactional/RMInterface.java |   20 -
 .../transactional/SsccTransactionalScanner.java |   20 -
 .../transactional/SsccTransactionalTable.java   |   20 -
 .../SsccUpdateConflictException.java            |   20 -
 .../hbase/client/transactional/TmDDL.java       |   20 -
 .../client/transactional/TransReturnCode.java   |   20 -
 .../hbase/client/transactional/TransState.java  |   20 -
 .../client/transactional/TransactionLogger.java |   19 -
 .../transactional/TransactionManager.java       |  333 +-
 .../client/transactional/TransactionMap.java    |   22 +-
 .../TransactionRegionLocation.java              |   20 -
 .../client/transactional/TransactionState.java  |   20 -
 .../TransactionalAggregationClient.java         |   19 -
 .../transactional/TransactionalScanner.java     |   20 -
 .../transactional/TransactionalTable.java       |   20 -
 .../transactional/TransactionalTableClient.java |   20 -
 .../UnknownTransactionException.java            |   19 -
 .../transactional/UnsuccessfulDDLException.java |   20 -
 .../transactional/SsccRegionEndpoint.java       |   21 -
 .../transactional/SsccTableClient.java          |   21 -
 .../transactional/SsccTableClientUtils.java     |   18 -
 .../transactional/TrxRegionEndpoint.java        |  386 +-
 .../transactional/TrxRegionObserver.java        |   22 -
 .../transactional/TrxTableClient.java           |   18 -
 .../transactional/TrxTableClient2.java          |   18 -
 .../transactional/TrxTableClient3.java          |   18 -
 .../transactional/TrxTableClient4.java          |   18 -
 .../generated/SsccRegionProtos.java             |  131 +-
 .../generated/TrxRegionProtos.java              | 1020 ++-
 .../CleanOldTransactionsChore.java              |   10 -
 .../hbase/regionserver/transactional/IdTm.java  |   10 -
 .../regionserver/transactional/IdTmCb.java      |   10 -
 .../transactional/IdTmException.java            |   10 -
 .../transactional/KeyValueListScanner.java      |   11 -
 .../transactional/MemoryUsageChore.java         |   10 -
 .../transactional/SsccTransactionState.java     |   21 -
 .../transactional/TransactionState.java         |   21 -
 .../transactional/TransactionalRegion.java      |   10 -
 .../TransactionalRegionScannerHolder.java       |   10 -
 .../transactional/TrxTransactionState.java      |  177 +-
 .../hbase-trx/src/main/protobuf/TrxRegion.proto |   11 +-
 core/sqf/tools/sqtools.sh                       |    4 +-
 core/sql/arkcmp/CmpContext.cpp                  |   18 +-
 core/sql/bin/SqlciErrors.txt                    |    3 +-
 core/sql/comexe/ComTdb.h                        |    2 +-
 core/sql/comexe/ComTdbExeUtil.cpp               |   27 +
 core/sql/comexe/ComTdbExeUtil.h                 |  119 +
 core/sql/common/ExprNode.cpp                    |    1 +
 core/sql/common/OperTypeEnum.h                  |   24 +-
 core/sql/common/from_GB2312.c                   |  134 +-
 core/sql/common/swscanf.cpp                     |   55 +-
 core/sql/common/swsprintf.cpp                   |   63 +-
 core/sql/executor/ExComTdb.cpp                  |    7 +
 core/sql/executor/ExExeUtil.h                   |  167 +
 core/sql/executor/ExExeUtilCommon.cpp           |    7 +-
 core/sql/executor/ExExeUtilGet.cpp              |  826 ++-
 core/sql/executor/ExHdfsScan.cpp                |    4 +-
 core/sql/executor/ExStats.cpp                   |   16 +-
 core/sql/executor/ExStats.h                     |    4 +-
 core/sql/executor/HBaseClient_JNI.cpp           |  118 +-
 core/sql/executor/HBaseClient_JNI.h             |    2 +
 core/sql/executor/ex_split_bottom.cpp           |   11 +
 core/sql/exp/ExpHbaseInterface.cpp              |   16 +
 core/sql/exp/ExpHbaseInterface.h                |    3 +
 core/sql/generator/GenRelExeUtil.cpp            |  119 +
 core/sql/optimizer/BindRelExpr.cpp              |    5 +
 core/sql/optimizer/GroupAttr.cpp                |  179 +
 core/sql/optimizer/GroupAttr.h                  |    4 +
 core/sql/optimizer/ImplRule.cpp                 |   16 +-
 core/sql/optimizer/ItemConstr.h                 |   39 +
 core/sql/optimizer/ItemExpr.cpp                 |   36 +-
 core/sql/optimizer/ItemExpr.h                   |    4 +-
 core/sql/optimizer/OptPhysRelExpr.cpp           |    3 +-
 core/sql/optimizer/PhyProp.cpp                  |    2 +-
 core/sql/optimizer/RelExeUtil.cpp               |  128 +-
 core/sql/optimizer/RelExeUtil.h                 |   60 +
 core/sql/optimizer/RelRoutine.cpp               |   55 +-
 core/sql/optimizer/ScanOptimizer.cpp            |    5 +-
 core/sql/optimizer/UdfDllInteraction.cpp        |   10 +-
 core/sql/optimizer/ValueDesc.cpp                |  194 +-
 core/sql/optimizer/ValueDesc.h                  |   14 +-
 core/sql/parser/ParKeyWords.cpp                 |    4 +-
 core/sql/parser/sqlparser.y                     |  112 +-
 core/sql/parser/ulexer.h                        |   39 +-
 core/sql/pom.xml                                |    5 +
 core/sql/regress/catman1/EXPECTED135            |    2 +
 core/sql/regress/compGeneral/EXPECTED071        |   47 +
 core/sql/regress/compGeneral/TEST062            |    1 +
 core/sql/regress/compGeneral/TEST071            |   22 +
 core/sql/regress/executor/EXPECTED130           |   28 +-
 core/sql/regress/executor/TEST016               |    5 +
 core/sql/regress/executor/TEST130               |    7 +-
 core/sql/regress/hive/EXPECTED005               |    3 +
 core/sql/regress/hive/EXPECTED006               |    3 +
 core/sql/regress/hive/EXPECTED020               |    5 +-
 core/sql/regress/hive/TEST005                   |    1 +
 core/sql/regress/hive/TEST006                   |    1 +
 core/sql/regress/hive/TEST018                   |    1 +
 core/sql/regress/hive/TEST020                   |    1 +
 core/sql/regress/newregr/card/runregr_card.ksh  |    7 -
 .../regress/newregr/mvs/BIG/expectedmv215_RU    |  480 --
 core/sql/regress/newregr/mvs/EXPECTEDMV500      | 4708 --------------
 core/sql/regress/newregr/mvs/EXPECTEDMV500A     | 5179 ----------------
 .../regress/newregr/mvs/EXPECTEDMV500A.LINUX    | 5789 ------------------
 .../sql/regress/newregr/mvs/TPCD/DBGEN_HELP.TXT |   83 -
 core/sql/regress/seabase/EXPECTED002            |  677 ++
 core/sql/regress/seabase/EXPECTED010            |   84 +
 core/sql/regress/seabase/EXPECTED021            |   26 +-
 core/sql/regress/seabase/FILTER002              |   31 +
 core/sql/regress/seabase/TEST002                |  144 +
 core/sql/regress/seabase/TEST010                |    4 +
 core/sql/regress/seabase/TEST014                |    1 +
 core/sql/regress/tools/regress-filter           |    5 -
 core/sql/regress/tools/regress-filter-linux     |    5 -
 core/sql/regress/tools/runregr_udr.ksh          |    7 +
 core/sql/regress/udr/EXPECTED002                |   48 +-
 core/sql/regress/udr/EXPECTED100.SB             |    4 +-
 core/sql/regress/udr/TEST002                    |   18 +
 core/sql/sqlci/SqlCmd.cpp                       |    1 +
 core/sql/sqlcomp/CmpDescribe.cpp                |  175 +-
 core/sql/sqlcomp/CmpSeabaseDDLauth.cpp          |   15 +
 core/sql/sqlcomp/CmpSeabaseDDLauth.h            |    2 +-
 core/sql/sqlcomp/PrivMgrRoles.cpp               |   11 +-
 core/sql/sqlcomp/nadefaults.cpp                 |    2 +-
 core/sql/sqludr/doxygen_tmudr.1.6.config        |    4 +-
 core/sql/sqludr/sqludr.cpp                      |    2 +-
 core/sql/sqludr/sqludr.h                        |   16 +-
 .../java/org/trafodion/sql/HBaseClient.java     |  205 +-
 .../java/org/trafodion/sql/TrafRegionStats.java |  144 +
 .../trafodion/sql/udr/UDRInvocationInfo.java    |   17 +-
 .../org/trafodion/sql/udr/predef/JDBCUDR.java   |  690 +++
 core/sql/ustat/hs_cli.cpp                       |   51 +-
 core/updateCopyrightCheck.py                    |    7 +-
 dcs/LICENSE.txt                                 |  202 -
 dcs/NOTICE.txt                                  |    7 -
 dcs/bin/dcs-config.sh                           |   10 +
 dcs/bin/scripts/dcsbind.sh                      |  133 +-
 dcs/bin/scripts/dcsunbind.sh                    |   95 +
 dcs/bin/scripts/parse_dcs_site.py               |   46 +
 dcs/bin/start-dcs.sh                            |   13 +-
 dcs/bin/stop-dcs.sh                             |    2 +-
 dcs/conf/dcs-env.sh                             |    8 +-
 dcs/conf/master                                 |    0
 dcs/pom.xml                                     |    6 +
 .../dcs/master/listener/ConnectReply.java       |   75 +-
 .../org/trafodion/dcs/servermt/ServerUtils.java |   20 +-
 .../servermt/serverHandler/ServerHandler.java   |    2 +
 .../org/trafodion/dcs/util/ByteBufferUtils.java |    2 -
 .../java/org/trafodion/dcs/util/SqlUtils.java   |    2 -
 .../org/trafodion/dcs/version/util/VerGen.java  |   19 -
 .../dcs-webapps/master/css/stylesheet.css       |  191 -
 dcs/src/test/pytests/.tox.ini.tmpl              |   21 -
 docs/.gitignore                                 |    1 +
 .../Trafodion_Client_Installation_Guide.xml     |    6 +-
 docs/client_install/source/xml-profile.xml      |    2 +-
 .../Trafodion_Command_Interface_Guide.xml       |   44 +-
 docs/command_interface/source/xml-profile.xml   |    2 +-
 docs/odb_manual/Trafodion_odb_User_Guide.xml    |    4 +-
 .../source/Trafodion_SQL_Reference_Manual.xml   |   10 +-
 docs/sql_reference/source/xml-profile.xml       |    2 +-
 docs/src/site/markdown/advocate.md              |   15 +
 docs/src/site/markdown/architecture-overview.md |    3 +
 docs/src/site/markdown/build-tools-manual.md    |  197 +
 docs/src/site/markdown/build.md                 |   80 +
 docs/src/site/markdown/code-organization.md     |   47 +-
 docs/src/site/markdown/code.md                  |   32 +
 docs/src/site/markdown/contribute.md            |   59 +-
 .../markdown/cplusplus-coding-guidelines.md     |  310 +
 .../src/site/markdown/create-dev-environment.md |  153 +
 docs/src/site/markdown/develop.md               |  245 +
 docs/src/site/markdown/document.md              |  124 +
 docs/src/site/markdown/documentation.md         |   25 +
 docs/src/site/markdown/download.md              |   36 +
 .../site/markdown/enable-secure-trafodion.md    |  224 +
 docs/src/site/markdown/faq.md                   |  220 +
 docs/src/site/markdown/index.md                 |   37 +-
 docs/src/site/markdown/install-preparation.md   |  138 +
 docs/src/site/markdown/install-troubleshoot.md  |   21 +
 docs/src/site/markdown/install.md               |  201 +
 docs/src/site/markdown/ldapcheck.md             |   41 +
 docs/src/site/markdown/ldapconfigcheck.md       |   48 +
 .../src/site/markdown/manage-dev-environment.md |   51 +
 docs/src/site/markdown/management.md            |   62 +
 docs/src/site/markdown/merge.md                 |  140 +
 docs/src/site/markdown/new-features.md          |   15 +
 docs/src/site/markdown/passwordless-ssh.md      |  131 +
 docs/src/site/markdown/performance.md           |   15 +
 docs/src/site/markdown/port-assignment.md       |  134 +
 docs/src/site/markdown/presentations.md         |   18 +
 docs/src/site/markdown/quickstart.md            |   15 +
 docs/src/site/markdown/release-notes-0-8-0.md   |  165 +
 docs/src/site/markdown/release-notes-0-9-0.md   |  210 +
 docs/src/site/markdown/release-notes-1-0-0.md   |  256 +
 docs/src/site/markdown/release-notes-1-0-1.md   |  250 +
 docs/src/site/markdown/release-notes-1-1-0.md   |  181 +
 docs/src/site/markdown/release-notes-1-3-0.md   |   15 +-
 docs/src/site/markdown/release-notes.md         |   23 +-
 docs/src/site/markdown/release.md               |  225 +
 docs/src/site/markdown/roadmap.md               |   15 +
 .../site/markdown/setup-build-environment.md    |  160 +
 docs/src/site/markdown/testing.md               |  179 +
 docs/src/site/markdown/tests.md                 |   71 +
 .../site/markdown/traf_authentication_config.md |   96 +
 docs/src/site/markdown/uninstall.md             |  176 +
 docs/src/site/markdown/website.md               |   72 +-
 docs/src/site/markdown/wiki.md                  |   23 +
 docs/src/site/resources/css/site.css            |   21 +-
 .../resources/images/carousel/processes.png     |  Bin 492019 -> 129503 bytes
 .../resources/images/carousel/revolution.png    |  Bin 185424 -> 66062 bytes
 .../site/resources/images/carousel/scale.png    |  Bin 236303 -> 93783 bytes
 .../site/resources/images/carousel/stack.png    |  Bin 408722 -> 102472 bytes
 .../site/resources/images/carousel/timeline.png |  Bin 322888 -> 115681 bytes
 .../site/resources/images/multi-layer-esps.png  |  Bin 0 -> 116303 bytes
 docs/src/site/site.xml                          |  202 +-
 install/.gitignore                              |    1 +
 install/Makefile                                |    2 -
 install/README.rst                              |   32 -
 install/installer/dcs_installer                 |   50 +
 install/installer/setup_ssh_key                 |   27 +
 install/installer/traf_add_sudoAccess           |   54 +
 install/installer/traf_add_user                 |   23 +-
 install/installer/traf_config_check             |   14 +
 install/installer/traf_config_setup             |   87 +-
 install/installer/traf_createPasswordLessSSH    |   63 +
 install/installer/traf_getHadoopNodes           |    4 +-
 install/installer/traf_package_setup            |   60 +-
 install/installer/trafodion_config_default      |   11 +
 install/installer/trafodion_install             |    9 +-
 licenses/LICENSE-bsd2                           |   14 +
 licenses/LICENSE-bsd4                           |   31 +
 licenses/LICENSE-facebook                       |   14 +
 licenses/LICENSE-js                             |   18 +
 licenses/LICENSE-salesforce                     |   23 +
 pom.xml                                         |  202 +-
 .../phoenix/end2end/AlterTableTest.java         |   21 -
 .../phoenix/end2end/ArithmeticQueryTest.java    |   21 -
 .../phoenix/end2end/AutoCommitTest.java         |   21 -
 .../org/trafodion/phoenix/end2end/BaseTest.java |   21 -
 .../trafodion/phoenix/end2end/BatchTest.java    |  130 +-
 .../phoenix/end2end/BinaryRowKeyTest.java       |   21 -
 .../phoenix/end2end/CoalesceFunctionTest.java   |   21 -
 .../end2end/CompareDecimalToLongTest.java       |   21 -
 .../phoenix/end2end/CreateTableTest.java        |   21 -
 .../phoenix/end2end/CustomEntityDataTest.java   |   21 -
 .../phoenix/end2end/DeleteRangeTest.java        |   21 -
 .../end2end/DescColumnSortOrderTest.java        |   21 -
 .../phoenix/end2end/DistinctCountTest.java      |   21 -
 .../phoenix/end2end/ExecuteStatementsTest.java  |   21 -
 .../phoenix/end2end/ExtendedQueryExecTest.java  |   21 -
 .../phoenix/end2end/FunkyNamesTest.java         |   21 -
 .../phoenix/end2end/GroupByCaseTest.java        |   21 -
 .../trafodion/phoenix/end2end/IndexTest.java    |   21 -
 .../trafodion/phoenix/end2end/IsNullTest.java   |   21 -
 .../trafodion/phoenix/end2end/KeyOnlyTest.java  |   21 -
 .../phoenix/end2end/MultiCfQueryExecTest.java   |   21 -
 .../trafodion/phoenix/end2end/OrderByTest.java  |   21 -
 .../phoenix/end2end/ProductMetricsTest.java     |   21 -
 .../phoenix/end2end/QueryExecTest.java          |   21 -
 .../end2end/QueryExecWithoutSCNTest.java        |   21 -
 .../phoenix/end2end/QueryPlanTest.java          |   21 -
 .../phoenix/end2end/ReadIsolationLevelTest.java |   21 -
 .../phoenix/end2end/SaltedTableTest.java        |   21 -
 .../end2end/SaltedTableUpsertSelectTest.java    |   21 -
 .../end2end/SaltedTableVarLengthRowKeyTest.java |   21 -
 .../phoenix/end2end/ServerExceptionTest.java    |   21 -
 .../phoenix/end2end/SkipScanQueryTest.java      |   21 -
 .../phoenix/end2end/StatementHintsTest.java     |   21 -
 .../trafodion/phoenix/end2end/StddevTest.java   |   21 -
 .../phoenix/end2end/ToCharFunctionTest.java     |   21 -
 .../phoenix/end2end/ToNumberFunctionTest.java   |   21 -
 .../org/trafodion/phoenix/end2end/TopNTest.java |   21 -
 .../phoenix/end2end/UpsertBigValuesTest.java    |   21 -
 .../end2end/UpsertSelectAutoCommitTest.java     |   21 -
 .../phoenix/end2end/UpsertSelectTest.java       |   21 -
 .../phoenix/end2end/UpsertValuesTest.java       |   21 -
 .../phoenix/end2end/VariableLengthPKTest.java   |   21 -
 win-odbc64/Krypton/KryptonBuild.bat             |   29 +-
 win-odbc64/Krypton/assocsvc.idl                 |   28 +-
 win-odbc64/Krypton/ca.idl                       |   30 +-
 win-odbc64/Krypton/ceecfg.idl                   |   27 +-
 win-odbc64/Krypton/ceercv.idl                   |   29 +-
 win-odbc64/Krypton/clientcfg.idl                |   32 +-
 win-odbc64/Krypton/generated_incs/cee.h         |   28 +-
 win-odbc64/Krypton/generated_incs/ceecfg.h      |   27 +-
 win-odbc64/Krypton/generated_incs/ceercv.h      |   27 +-
 win-odbc64/Krypton/generated_incs/glu.h         |   27 +-
 win-odbc64/Krypton/generated_incs/glu_rs.h      |   27 +-
 win-odbc64/Krypton/generated_incs/glu_stdexc.h  |   27 +-
 win-odbc64/Krypton/generated_incs/idltype.h     |   27 +-
 win-odbc64/Krypton/generated_incs/odbc.h        |   27 +-
 win-odbc64/Krypton/generated_incs/odbcCommon.h  |   27 +-
 win-odbc64/Krypton/generated_incs/odbc_cl.h     |   27 +-
 win-odbc64/Krypton/generated_incs/odbc_sv.h     |   27 +-
 win-odbc64/Krypton/generated_incs/odbcas_cl.h   |   27 +-
 win-odbc64/Krypton/generated_incs/odbcas_sv.h   |   27 +-
 win-odbc64/Krypton/generated_incs/odbccfg.h     |   27 +-
 win-odbc64/Krypton/generated_incs/odbccfg_cl.h  |   27 +-
 win-odbc64/Krypton/generated_incs/odbccfg_sv.h  |   27 +-
 .../Krypton/generated_incs/odbcsrvrcommon.h     |   27 +-
 .../Krypton/generated_incs/tdm_odbcSrvrMsg.h    |   28 +-
 win-odbc64/Krypton/idlcnp.bat                   |   27 +-
 win-odbc64/Krypton/odbc.idl                     |   29 +-
 win-odbc64/Krypton/odbcCommon.idl               |   29 +-
 win-odbc64/Krypton/odbcas.idl                   |   29 +-
 win-odbc64/Krypton/odbccfg.idl                  |   30 +-
 win-odbc64/Krypton/odbcsrvrcommon.idl           |   29 +-
 win-odbc64/Krypton/omxSec.idl                   |   30 +-
 .../odbcclient/DSNConverter/DSNConverter.def    |    2 +-
 .../TranslationDll/TranslationDll.def           |    2 +-
 win-odbc64/odbcclient/update_version.pl         |  176 +
 wms/LICENSE.txt                                 |  202 -
 wms/NOTICE.txt                                  |   11 -
 wms/build.xml                                   |    2 +-
 362 files changed, 13511 insertions(+), 22556 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a6f2205/core/sql/optimizer/ValueDesc.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a6f2205/core/sql/regress/seabase/EXPECTED010
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a6f2205/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------


[02/15] incubator-trafodion git commit: First commit for advanced predicate pushdown feature (also known as pushdown V2) associated JIRA TRAFODION-1662 Predicate push down revisited (V2). The JIRA contains a blueprint document, useful to understand what

Posted by hz...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/regress/seabase/EXPECTED010
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED010 b/core/sql/regress/seabase/EXPECTED010
index b4cbf66..c2b70df 100644
--- a/core/sql/regress/seabase/EXPECTED010
+++ b/core/sql/regress/seabase/EXPECTED010
@@ -55,7 +55,7 @@
 >>invoke t010t1;
 
 -- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current  Fri Oct  2 02:42:10 2015
+-- Definition current  Wed Jan  6 21:04:43 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -67,7 +67,7 @@
 >>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:42:10 2015
+-- Definition current  Wed Jan  6 21:04:44 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -85,7 +85,7 @@
 >>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:42:10 2015
+-- Definition current  Wed Jan  6 21:04:44 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -201,7 +201,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513732264091
+PLAN_ID .................. 212318874285284804
 ROWS_OUT ................ 11
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -242,7 +242,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060482
+  ObjectUIDs ............. 7719819453060518502
   select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
 
 
@@ -265,6 +265,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... ((A = 1) or (B = '1'))
 
@@ -280,7 +281,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513732374292
+PLAN_ID .................. 212318874285343869
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -322,7 +323,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060482
+  ObjectUIDs ............. 7719819453060518502
   select_list ............ %(1), %('1')
   input_variables ........ %(1), %('1')
 
@@ -343,6 +344,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = %('1'))
   begin_key .............. (A = %(1))
@@ -359,7 +361,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513732486422
+PLAN_ID .................. 212318874285406527
 ROWS_OUT ................ 10
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where b='1';
@@ -400,7 +402,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060482
+  ObjectUIDs ............. 7719819453060518502
   select_list ............ TRAFODION.SCH.T010T1.A, %('1')
   input_variables ........ %('1')
 
@@ -424,6 +426,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = %('1'))
 
@@ -438,7 +441,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513731929457
+PLAN_ID .................. 212318874285042640
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a = 2;
@@ -480,7 +483,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060482
+  ObjectUIDs ............. 7719819453060518502
   select_list ............ %(2), TRAFODION.SCH.T010T1.B
   input_variables ........ %(2)
 
@@ -501,6 +504,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   begin_key .............. (A = %(2))
   end_key ................ (A = %(2))
@@ -741,7 +745,7 @@ A            B           C            D
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X1
-PLAN_ID .................. 212310513735952434
+PLAN_ID .................. 212318874288628482
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -784,7 +788,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
                              TRAFODION.SCH.T010T2.D
   input_variables ........ %('a'), %(1)
@@ -807,6 +811,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... ((A = 1) or (A = 4)) and (B = %('a')) and (C = %(1))
 
@@ -816,7 +821,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X2
-PLAN_ID .................. 212310513736055675
+PLAN_ID .................. 212318874288780330
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -860,7 +865,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -883,6 +888,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and (B = %('a'))
                              and (((C = 1) or (C = 3)) or (C >= 5))
@@ -893,7 +899,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X3
-PLAN_ID .................. 212310513736141791
+PLAN_ID .................. 212318874288991348
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -936,7 +942,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -959,6 +965,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and ((C = 1) or (C
                              = 3)) and (B = %('a'))
@@ -969,7 +976,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X4
-PLAN_ID .................. 212310513736226438
+PLAN_ID .................. 212318874289146696
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -1012,7 +1019,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   input_variables ........ %('a')
 
 
@@ -1063,6 +1070,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a'))
   mdam_disjunct .......... (((A = 2) or (A = 4)) or (A = 6)) and ((C = 1) or (C
@@ -1074,7 +1082,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X5
-PLAN_ID .................. 212310513736390545
+PLAN_ID .................. 212318874289526999
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -1119,7 +1127,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   input_variables ........ %('upd'), %(4)
 
 
@@ -1146,7 +1154,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212310513736490371
+PLAN_ID .................. 212318874289662379
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -1190,7 +1198,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
                              TRAFODION.SCH.T010T2.D
   input_variables ........ %('a'), %(1)
@@ -1213,6 +1221,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... ((A = 1) or (A = 4)) and (B = %('a')) and (C = %(1))
 
@@ -1222,7 +1231,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212310513736582508
+PLAN_ID .................. 212318874289724661
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -1267,7 +1276,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -1290,6 +1299,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and (B = %('a'))
                              and (((C = 1) or (C = 3)) or (C >= 5))
@@ -1300,7 +1310,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212310513736695111
+PLAN_ID .................. 212318874289854294
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -1344,7 +1354,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -1367,6 +1377,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and ((C = 1) or (C
                              = 3)) and (B = %('a'))
@@ -1377,7 +1388,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212310513736805348
+PLAN_ID .................. 212318874289957418
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -1421,7 +1432,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   input_variables ........ %('a')
 
 
@@ -1472,6 +1483,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a'))
   mdam_disjunct .......... (((A = 2) or (A = 4)) or (A = 6)) and ((C = 1) or (C
@@ -1483,7 +1495,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212310513736999794
+PLAN_ID .................. 212318874290144298
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -1529,7 +1541,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747060577
+  ObjectUIDs ............. 7719819453060518648
   input_variables ........ %('uuu'), %(4)
 
 
@@ -1706,7 +1718,7 @@ _SALT_      A            B           C            D
 >>invoke t010t1;
 
 -- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current  Fri Oct  2 02:42:35 2015
+-- Definition current  Wed Jan  6 21:05:19 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1718,7 +1730,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:42:35 2015
+-- Definition current  Wed Jan  6 21:05:19 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -1736,7 +1748,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:42:35 2015
+-- Definition current  Wed Jan  6 21:05:19 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -1852,7 +1864,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513756188559
+PLAN_ID .................. 212318874320281864
 ROWS_OUT ................ 11
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -1893,7 +1905,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063047
+  ObjectUIDs ............. 7719819453060522343
   select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
 
 
@@ -1916,6 +1928,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... ((A = 1) or (B = '1'))
 
@@ -1931,7 +1944,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513756298280
+PLAN_ID .................. 212318874320335949
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -1973,7 +1986,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063047
+  ObjectUIDs ............. 7719819453060522343
   select_list ............ 1, '1'
 
 
@@ -1995,6 +2008,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = '1')
 
@@ -2009,7 +2023,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513756359313
+PLAN_ID .................. 212318874320397570
 ROWS_OUT ................ 10
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where b='1';
@@ -2050,7 +2064,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063047
+  ObjectUIDs ............. 7719819453060522343
   select_list ............ TRAFODION.SCH.T010T1.A, '1'
 
 
@@ -2073,6 +2087,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = '1')
 
@@ -2087,7 +2102,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513756428751
+PLAN_ID .................. 212318874320470692
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1;
@@ -2129,7 +2144,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063047
+  ObjectUIDs ............. 7719819453060522343
   select_list ............ 1, TRAFODION.SCH.T010T1.B
 
 
@@ -2151,6 +2166,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
 
 --- SQL operation complete.
@@ -2389,7 +2405,7 @@ A            B           C            D
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X1
-PLAN_ID .................. 212310513760348742
+PLAN_ID .................. 212318874324046576
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -2432,7 +2448,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
                              TRAFODION.SCH.T010T2.D
 
@@ -2456,6 +2472,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
 
 --- SQL operation complete.
@@ -2464,7 +2481,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X2
-PLAN_ID .................. 212310513760389029
+PLAN_ID .................. 212318874324102414
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -2508,7 +2525,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -2545,6 +2562,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
 
 --- SQL operation complete.
@@ -2553,7 +2571,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X3
-PLAN_ID .................. 212310513760464086
+PLAN_ID .................. 212318874324151162
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -2596,7 +2614,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -2624,6 +2642,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
 
 --- SQL operation complete.
@@ -2632,7 +2651,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X4
-PLAN_ID .................. 212310513760502217
+PLAN_ID .................. 212318874324187381
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -2675,7 +2694,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
 
 
 TUPLE_FLOW ================================  SEQ_NO 3        CHILDREN 1, 2
@@ -2731,6 +2750,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
   key_columns ............ A, B, C
   executor_predicates .... (B = 'a')
 
@@ -2740,7 +2760,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X5
-PLAN_ID .................. 212310513760616099
+PLAN_ID .................. 212318874324276743
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -2785,7 +2805,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
 
 
 TRAFODION_UPDATE ==========================  SEQ_NO 1        NO CHILDREN
@@ -2815,7 +2835,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212310513760713299
+PLAN_ID .................. 212318874324374385
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -2859,7 +2879,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
                              TRAFODION.SCH.T010T2.D
 
@@ -2883,6 +2903,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = 'a') and (C = 1) and ((A = 1) or (A = 4))
 
@@ -2892,7 +2913,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212310513760785318
+PLAN_ID .................. 212318874324448681
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -2937,7 +2958,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -2961,6 +2982,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = 'a') and (((A = 1) or (A = 2)) or (A = 4)) and
                              (((C = 1) or (C = 3)) or (C >= 5))
@@ -2971,7 +2993,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212310513760868007
+PLAN_ID .................. 212318874324491981
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -3015,7 +3037,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -3039,6 +3061,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = 'a') and (((A = 1) or (A = 2)) or (A = 4)) and
                              ((C = 1) or (C = 3))
@@ -3049,7 +3072,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212310513760917388
+PLAN_ID .................. 212318874324536927
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -3093,7 +3116,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
 
 
 TUPLE_FLOW ================================  SEQ_NO 3        CHILDREN 1, 2
@@ -3145,6 +3168,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
   key_columns ............ A, B, C
   executor_predicates .... (B = 'a') and (((A = 2) or (A = 4)) or (A = 6)) and
                              ((C = 1) or (C = 3))
@@ -3155,7 +3179,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212310513760991469
+PLAN_ID .................. 212318874324635793
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -3201,7 +3225,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747063117
+  ObjectUIDs ............. 7719819453060522478
 
 
 TRAFODION_UPDATE ==========================  SEQ_NO 1        NO CHILDREN
@@ -3378,7 +3402,7 @@ _SALT_      A            B           C            D
 >>invoke t010t1;
 
 -- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current  Fri Oct  2 02:43:08 2015
+-- Definition current  Wed Jan  6 21:05:48 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -3390,7 +3414,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:43:08 2015
+-- Definition current  Wed Jan  6 21:05:48 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -3408,7 +3432,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:43:08 2015
+-- Definition current  Wed Jan  6 21:05:48 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -3524,7 +3548,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513788767709
+PLAN_ID .................. 212318874349133784
 ROWS_OUT ................ 11
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -3565,7 +3589,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066296
+  ObjectUIDs ............. 7719819453060525244
   select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
 
 
@@ -3588,6 +3612,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... ((A = 1) or (B = '1'))
 
@@ -3603,7 +3628,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513788874756
+PLAN_ID .................. 212318874349208872
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -3645,7 +3670,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066296
+  ObjectUIDs ............. 7719819453060525244
   select_list ............ %(1), %('1')
   input_variables ........ %(1), %('1')
 
@@ -3666,6 +3691,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = %('1'))
   begin_key .............. (A = %(1))
@@ -3682,7 +3708,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513788982793
+PLAN_ID .................. 212318874349271303
 ROWS_OUT ................ 10
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where b='1';
@@ -3723,7 +3749,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066296
+  ObjectUIDs ............. 7719819453060525244
   select_list ............ TRAFODION.SCH.T010T1.A, %('1')
   input_variables ........ %('1')
 
@@ -3747,6 +3773,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = %('1'))
 
@@ -3761,7 +3788,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513788478091
+PLAN_ID .................. 212318874348941590
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a = 2;
@@ -3803,7 +3830,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066296
+  ObjectUIDs ............. 7719819453060525244
   select_list ............ %(2), TRAFODION.SCH.T010T1.B
   input_variables ........ %(2)
 
@@ -3824,6 +3851,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   begin_key .............. (A = %(2))
   end_key ................ (A = %(2))
@@ -4064,7 +4092,7 @@ A            B           C            D
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X1
-PLAN_ID .................. 212310513792864137
+PLAN_ID .................. 212318874352330474
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -4107,7 +4135,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
                              TRAFODION.SCH.T010T2.D
   input_variables ........ %('a'), %(1)
@@ -4129,6 +4157,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a')) and (C = %(1)) and ((A = 1) or (A = 4))
   begin_key .............. (A = <min>), (B = %('a')), (C = %(1))
@@ -4140,7 +4169,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X2
-PLAN_ID .................. 212310513792910445
+PLAN_ID .................. 212318874352372978
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -4184,7 +4213,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -4206,6 +4235,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a')) and (((A = 1) or (A = 2)) or (A = 4))
                              and (((C = 1) or (C = 3)) or (C >= 5))
@@ -4218,7 +4248,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X3
-PLAN_ID .................. 212310513792992192
+PLAN_ID .................. 212318874352413168
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -4261,7 +4291,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -4283,6 +4313,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a')) and (((A = 1) or (A = 2)) or (A = 4))
                              and ((C = 1) or (C = 3))
@@ -4295,7 +4326,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X4
-PLAN_ID .................. 212310513793072848
+PLAN_ID .................. 212318874352451216
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -4338,7 +4369,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   input_variables ........ %('a')
 
 
@@ -4388,6 +4419,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a')) and (((A = 2) or (A = 4)) or (A = 6))
                              and ((C = 1) or (C = 3))
@@ -4400,7 +4432,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X5
-PLAN_ID .................. 212310513793186582
+PLAN_ID .................. 212318874352536749
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -4445,7 +4477,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   input_variables ........ %('upd'), %(4)
 
 
@@ -4472,7 +4504,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212310513793287927
+PLAN_ID .................. 212318874352606320
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -4516,7 +4548,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
                              TRAFODION.SCH.T010T2.D
   input_variables ........ %('a'), %(1)
@@ -4538,6 +4570,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a')) and (C = %(1)) and ((A = 1) or (A = 4))
   begin_key .............. (A = <min>), (B = %('a')), (C = %(1))
@@ -4549,7 +4582,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212310513793331269
+PLAN_ID .................. 212318874352650694
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -4594,7 +4627,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -4616,6 +4649,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a')) and (((A = 1) or (A = 2)) or (A = 4))
                              and (((C = 1) or (C = 3)) or (C >= 5))
@@ -4628,7 +4662,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212310513793373442
+PLAN_ID .................. 212318874352687942
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select *
@@ -4672,7 +4706,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -4694,6 +4728,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a')) and (((A = 1) or (A = 2)) or (A = 4))
                              and ((C = 1) or (C = 3))
@@ -4706,7 +4741,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212310513793466330
+PLAN_ID .................. 212318874352731143
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -4750,7 +4785,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   input_variables ........ %('a')
 
 
@@ -4800,6 +4835,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
   key_columns ............ A, B, C
   executor_predicates .... (B = %('a')) and (((A = 2) or (A = 4)) or (A = 6))
                              and ((C = 1) or (C = 3))
@@ -4812,7 +4848,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212310513793553347
+PLAN_ID .................. 212318874352809680
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -4858,7 +4894,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... OFF
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747066363
+  ObjectUIDs ............. 7719819453060525374
   input_variables ........ %('uuu'), %(4)
 
 
@@ -5035,7 +5071,7 @@ _SALT_      A            B           C            D
 >>invoke t010t1;
 
 -- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current  Fri Oct  2 02:43:34 2015
+-- Definition current  Wed Jan  6 21:06:17 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -5047,7 +5083,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:43:34 2015
+-- Definition current  Wed Jan  6 21:06:17 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -5065,7 +5101,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:43:34 2015
+-- Definition current  Wed Jan  6 21:06:17 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -5181,7 +5217,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513815202331
+PLAN_ID .................. 212318874378406498
 ROWS_OUT ................ 11
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -5222,7 +5258,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747068966
+  ObjectUIDs ............. 7719819453060528243
   select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
 
 
@@ -5245,6 +5281,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... ((A = 1) or (B = '1'))
 
@@ -5260,7 +5297,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513815306295
+PLAN_ID .................. 212318874378464788
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -5302,7 +5339,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747068966
+  ObjectUIDs ............. 7719819453060528243
   select_list ............ 1, '1'
 
 
@@ -5324,6 +5361,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = '1')
 
@@ -5338,7 +5376,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513815416478
+PLAN_ID .................. 212318874378515848
 ROWS_OUT ................ 10
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where b='1';
@@ -5379,7 +5417,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747068966
+  ObjectUIDs ............. 7719819453060528243
   select_list ............ TRAFODION.SCH.T010T1.A, '1'
 
 
@@ -5402,6 +5440,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = '1')
 
@@ -5416,7 +5455,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513815557852
+PLAN_ID .................. 212318874378567911
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1;
@@ -5458,7 +5497,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747068966
+  ObjectUIDs ............. 7719819453060528243
   select_list ............ 1, TRAFODION.SCH.T010T1.B
 
 
@@ -5480,6 +5519,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
 
 --- SQL operation complete.
@@ -5718,7 +5758,7 @@ A            B           C            D
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X1
-PLAN_ID .................. 212310513819343102
+PLAN_ID .................. 212318874381351368
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -5761,7 +5801,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
                              TRAFODION.SCH.T010T2.D
 
@@ -5783,6 +5823,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... ((A = 1) or (A = 4)) and (B = 'a') and (C = 1)
 
@@ -5792,7 +5833,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X2
-PLAN_ID .................. 212310513819407284
+PLAN_ID .................. 212318874381444643
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -5836,7 +5877,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -5858,6 +5899,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and (B = 'a') and
                              (((C = 1) or (C = 3)) or (C >= 5))
@@ -5868,7 +5910,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X3
-PLAN_ID .................. 212310513819518185
+PLAN_ID .................. 212318874381563530
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -5911,7 +5953,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -5933,6 +5975,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and ((C = 1) or (C
                              = 3)) and (B = 'a')
@@ -5943,7 +5986,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X4
-PLAN_ID .................. 212310513819623401
+PLAN_ID .................. 212318874381698436
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -5986,7 +6029,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
 
 
 TUPLE_FLOW ================================  SEQ_NO 3        CHILDREN 1, 2
@@ -6036,6 +6079,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
   key_columns ............ A, B, C
   executor_predicates .... (B = 'a')
   mdam_disjunct .......... (((A = 2) or (A = 4)) or (A = 6)) and ((C = 1) or (C
@@ -6047,7 +6091,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X5
-PLAN_ID .................. 212310513819757908
+PLAN_ID .................. 212318874381896399
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -6092,7 +6136,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... OFF
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
 
 
 TRAFODION_UPDATE ==========================  SEQ_NO 1        NO CHILDREN
@@ -6122,7 +6166,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212310513819822716
+PLAN_ID .................. 212318874381991717
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -6166,7 +6210,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
                              TRAFODION.SCH.T010T2.D
 
@@ -6188,6 +6232,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... ((A = 1) or (A = 4)) and (B = 'a') and (C = 1)
 
@@ -6197,7 +6242,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212310513819881090
+PLAN_ID .................. 212318874382088609
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -6242,7 +6287,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -6264,6 +6309,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and (B = 'a') and
                              (((C = 1) or (C = 3)) or (C >= 5))
@@ -6274,7 +6320,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212310513819992584
+PLAN_ID .................. 212318874382208839
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -6318,7 +6364,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -6340,6 +6386,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and ((C = 1) or (C
                              = 3)) and (B = 'a')
@@ -6350,7 +6397,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212310513820093872
+PLAN_ID .................. 212318874382311891
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -6394,7 +6441,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
 
 
 TUPLE_FLOW ================================  SEQ_NO 3        CHILDREN 1, 2
@@ -6444,6 +6491,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
   key_columns ............ A, B, C
   executor_predicates .... (B = 'a')
   mdam_disjunct .......... (((A = 2) or (A = 4)) or (A = 6)) and ((C = 1) or (C
@@ -6455,7 +6503,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212310513820222930
+PLAN_ID .................. 212318874382520166
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -6501,7 +6549,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747069044
+  ObjectUIDs ............. 7719819453060528314
 
 
 TRAFODION_UPDATE ==========================  SEQ_NO 1        NO CHILDREN
@@ -6698,7 +6746,7 @@ _SALT_      A            B           C            D
 >>invoke t010t1;
 
 -- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current  Fri Oct  2 02:44:03 2015
+-- Definition current  Wed Jan  6 21:06:48 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -6710,7 +6758,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:44:03 2015
+-- Definition current  Wed Jan  6 21:06:48 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -6728,7 +6776,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:44:03 2015
+-- Definition current  Wed Jan  6 21:06:48 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -6844,7 +6892,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513844427155
+PLAN_ID .................. 212318874409186628
 ROWS_OUT ................ 11
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -6885,7 +6933,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071764
+  ObjectUIDs ............. 7719819453060531285
   select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
 
 
@@ -6908,6 +6956,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... ((A = 1) or (B = '1'))
 
@@ -6923,7 +6972,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513844489870
+PLAN_ID .................. 212318874409240395
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -6965,7 +7014,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071764
+  ObjectUIDs ............. 7719819453060531285
   select_list ............ %(1), %('1')
   input_variables ........ %(1), %('1')
 
@@ -6986,6 +7035,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = %('1'))
   begin_key .............. (A = %(1))
@@ -7002,7 +7052,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513844593137
+PLAN_ID .................. 212318874409289487
 ROWS_OUT ................ 10
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where b='1';
@@ -7043,7 +7093,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071764
+  ObjectUIDs ............. 7719819453060531285
   select_list ............ TRAFODION.SCH.T010T1.A, %('1')
   input_variables ........ %('1')
 
@@ -7067,6 +7117,8 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
+  pushed_down_rpn ........ (#1:2=?)
   key_columns ............ A
   executor_predicates .... (B = %('1'))
 
@@ -7081,7 +7133,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513844152547
+PLAN_ID .................. 212318874408994668
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a = 2;
@@ -7123,7 +7175,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071764
+  ObjectUIDs ............. 7719819453060531285
   select_list ............ %(2), TRAFODION.SCH.T010T1.B
   input_variables ........ %(2)
 
@@ -7144,6 +7196,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   begin_key .............. (A = %(2))
   end_key ................ (A = %(2))
@@ -7384,7 +7437,7 @@ A            B           C            D
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X1
-PLAN_ID .................. 212310513848209819
+PLAN_ID .................. 212318874412114296
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -7427,7 +7480,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
                              TRAFODION.SCH.T010T2.D
   input_variables ........ %('a'), %(1)
@@ -7450,6 +7503,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... ((A = 1) or (A = 4)) and (B = %('a')) and (C = %(1))
 
@@ -7459,7 +7513,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X2
-PLAN_ID .................. 212310513848280174
+PLAN_ID .................. 212318874412204500
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -7503,7 +7557,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -7526,6 +7580,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and (B = %('a'))
                              and (((C = 1) or (C = 3)) or (C >= 5))
@@ -7536,7 +7591,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X3
-PLAN_ID .................. 212310513848397450
+PLAN_ID .................. 212318874412313075
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -7579,7 +7634,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -7602,6 +7657,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and ((C = 1) or (C
                              = 3)) and (B = %('a'))
@@ -7612,7 +7668,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X4
-PLAN_ID .................. 212310513848471519
+PLAN_ID .................. 212318874412426844
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -7655,7 +7711,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   input_variables ........ %('a')
 
 
@@ -7706,6 +7762,8 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
+  pushed_down_rpn ........ (#1:2=?)
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 2) or (A = 4)) or (A = 6)) and ((C = 1) or (C
                              = 3)) and (B = %('a'))
@@ -7716,7 +7774,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X5
-PLAN_ID .................. 212310513848661826
+PLAN_ID .................. 212318874412662185
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -7761,7 +7819,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   input_variables ........ %('upd'), %(4)
 
 
@@ -7788,7 +7846,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212310513848764428
+PLAN_ID .................. 212318874412740210
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -7832,7 +7890,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
                              TRAFODION.SCH.T010T2.D
   input_variables ........ %('a'), %(1)
@@ -7855,6 +7913,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... ((A = 1) or (A = 4)) and (B = %('a')) and (C = %(1))
 
@@ -7864,7 +7923,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212310513848822595
+PLAN_ID .................. 212318874412804242
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -7909,7 +7968,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -7932,6 +7991,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and (B = %('a'))
                              and (((C = 1) or (C = 3)) or (C >= 5))
@@ -7942,7 +8002,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212310513848914740
+PLAN_ID .................. 212318874412915886
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -7986,7 +8046,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
                              TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
   input_variables ........ %('a')
@@ -8009,6 +8069,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and ((C = 1) or (C
                              = 3)) and (B = %('a'))
@@ -8019,7 +8080,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212310513848998849
+PLAN_ID .................. 212318874413003180
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -8063,7 +8124,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   input_variables ........ %('a')
 
 
@@ -8114,6 +8175,8 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
+  pushed_down_rpn ........ (#1:2=?)
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 2) or (A = 4)) or (A = 6)) and ((C = 1) or (C
                              = 3)) and (B = %('a'))
@@ -8124,7 +8187,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212310513849172111
+PLAN_ID .................. 212318874413150463
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -8170,7 +8233,7 @@ DESCRIPTION
   QUERY_CACHE ........ 1,024
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747071838
+  ObjectUIDs ............. 7719819453060531409
   input_variables ........ %('uuu'), %(4)
 
 
@@ -8347,7 +8410,7 @@ _SALT_      A            B           C            D
 >>invoke t010t1;
 
 -- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current  Fri Oct  2 02:44:30 2015
+-- Definition current  Wed Jan  6 21:07:15 2016
 
   (
     A                                INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -8359,7 +8422,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:44:30 2015
+-- Definition current  Wed Jan  6 21:07:15 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -8377,7 +8440,7 @@ _SALT_      A            B           C            D
 >>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
 
 -- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current  Fri Oct  2 02:44:30 2015
+-- Definition current  Wed Jan  6 21:07:15 2016
 
   (
     ROW_ID                           VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -8493,7 +8556,7 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513871161210
+PLAN_ID .................. 212318874436228767
 ROWS_OUT ................ 11
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -8534,7 +8597,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074546
+  ObjectUIDs ............. 7719819453060533978
   select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
 
 
@@ -8557,6 +8620,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... ((A = 1) or (B = '1'))
 
@@ -8572,7 +8636,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513871229608
+PLAN_ID .................. 212318874436299112
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -8614,7 +8678,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074546
+  ObjectUIDs ............. 7719819453060533978
   select_list ............ 1, '1'
 
 
@@ -8636,6 +8700,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
   executor_predicates .... (B = '1')
 
@@ -8650,7 +8715,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513871292416
+PLAN_ID .................. 212318874436377734
 ROWS_OUT ................ 10
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where b='1';
@@ -8691,7 +8756,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074546
+  ObjectUIDs ............. 7719819453060533978
   select_list ............ TRAFODION.SCH.T010T1.A, '1'
 
 
@@ -8714,6 +8779,8 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2
+  pushed_down_rpn ........ (#1:2=?)
   key_columns ............ A
   executor_predicates .... (B = '1')
 
@@ -8728,7 +8795,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... XX
-PLAN_ID .................. 212310513871374116
+PLAN_ID .................. 212318874436456984
 ROWS_OUT ................. 1
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ select * from t010t1 where a=1;
@@ -8770,7 +8837,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074546
+  ObjectUIDs ............. 7719819453060533978
   select_list ............ 1, TRAFODION.SCH.T010T1.B
 
 
@@ -8792,6 +8859,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed .......... 1
+  column_retrieved ....... #1:1,#1:2
   key_columns ............ A
 
 --- SQL operation complete.
@@ -9030,7 +9098,7 @@ A            B           C            D
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X1
-PLAN_ID .................. 212310513875099390
+PLAN_ID .................. 212318874439283976
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -9073,7 +9141,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
                              TRAFODION.SCH.T010T2.D
 
@@ -9095,6 +9163,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... ((A = 1) or (A = 4)) and (B = 'a') and (C = 1)
 
@@ -9104,7 +9173,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X2
-PLAN_ID .................. 212310513875176036
+PLAN_ID .................. 212318874439371513
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -9148,7 +9217,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -9170,6 +9239,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and (B = 'a') and
                              (((C = 1) or (C = 3)) or (C >= 5))
@@ -9180,7 +9250,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X3
-PLAN_ID .................. 212310513875251519
+PLAN_ID .................. 212318874439493898
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -9223,7 +9293,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -9245,6 +9315,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and ((C = 1) or (C
                              = 3)) and (B = 'a')
@@ -9255,7 +9326,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X4
-PLAN_ID .................. 212310513875364400
+PLAN_ID .................. 212318874439608663
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -9298,7 +9369,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
 
 
 TUPLE_FLOW ================================  SEQ_NO 3        CHILDREN 1, 2
@@ -9348,6 +9419,8 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
+  pushed_down_rpn ........ (#1:2=?)
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 2) or (A = 4)) or (A = 6)) and ((C = 1) or (C
                              = 3)) and (B = 'a')
@@ -9358,7 +9431,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... X5
-PLAN_ID .................. 212310513875516964
+PLAN_ID .................. 212318874439813315
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -9403,7 +9476,7 @@ DESCRIPTION
   HBASE_FILTER_PREDS ..... ON
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
 
 
 TRAFODION_UPDATE ==========================  SEQ_NO 1        NO CHILDREN
@@ -9433,7 +9506,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212310513875603180
+PLAN_ID .................. 212318874439901610
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -9477,7 +9550,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
                              TRAFODION.SCH.T010T2.D
 
@@ -9499,6 +9572,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... ((A = 1) or (A = 4)) and (B = 'a') and (C = 1)
 
@@ -9508,7 +9582,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212310513875660047
+PLAN_ID .................. 212318874439981773
 ROWS_OUT ................. 5
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -9553,7 +9627,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -9575,6 +9649,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and (B = 'a') and
                              (((C = 1) or (C = 3)) or (C >= 5))
@@ -9585,7 +9660,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212310513875767814
+PLAN_ID .................. 212318874440090497
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0
 STATEMENT ................ select *
@@ -9629,7 +9704,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
   select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
                              TRAFODION.SCH.T010T2.D
 
@@ -9651,6 +9726,7 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3,#1:4
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 1) or (A = 2)) or (A = 4)) and ((C = 1) or (C
                              = 3)) and (B = 'a')
@@ -9661,7 +9737,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212310513875872389
+PLAN_ID .................. 212318874440208476
 ROWS_OUT ................. 4
 EST_TOTAL_COST ........... 0.01
 STATEMENT ................ delete from t010t2
@@ -9705,7 +9781,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ............. 7719819453060534104
 
 
 TUPLE_FLOW ================================  SEQ_NO 3        CHILDREN 1, 2
@@ -9755,6 +9831,8 @@ DESCRIPTION
   cache_size ........... 100
   probes ................. 1
   rows_accessed ........ 100
+  column_retrieved ....... #1:1,#1:2,#1:3
+  pushed_down_rpn ........ (#1:2=?)
   key_columns ............ A, B, C
   mdam_disjunct .......... (((A = 2) or (A = 4)) or (A = 6)) and ((C = 1) or (C
                              = 3)) and (B = 'a')
@@ -9765,7 +9843,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212310513875999537
+PLAN_ID .................. 212318874440393270
 ROWS_OUT ................. 2
 EST_TOTAL_COST ........... 0
 STATEMENT ................ update t010t2
@@ -9811,7 +9889,7 @@ DESCRIPTION
   QUERY_CACHE ............ 0
   MDAM_SCAN_METHOD ....... ON
   HBASE_MAX_NUM_SEARCH_KE  1
-  ObjectUIDs ............. 5009770016747074618
+  ObjectUIDs ..

<TRUNCATED>


[10/15] incubator-trafodion git commit: Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2

Posted by hz...@apache.org.
Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/279e540c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/279e540c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/279e540c

Branch: refs/heads/master
Commit: 279e540c8b05ef4b90b59cbb79d94c64f507da77
Parents: f7aaa28 03a697d
Author: Eric Owhadi <er...@esgyn.com>
Authored: Fri Jan 15 15:59:01 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Fri Jan 15 15:59:01 2016 +0000

----------------------------------------------------------------------
 core/conn/jdbc_type2/native/SrvrCommon.cpp      |    90 +
 core/conn/jdbc_type4/.gitignore                 |     1 +
 .../transactional/TransactionManager.java       |     9 +-
 .../TransactionRegionLocation.java              |    22 +-
 .../client/transactional/TransactionState.java  |    13 +-
 .../transactional/TrxRegionEndpoint.java        |    26 +-
 core/sql/bin/clitest.cpp                        |   267 +
 core/sql/bin/vprocclitestdriver.cpp             |    51 +
 core/sql/cli/Cli.cpp                            |    31 +-
 core/sql/cli/sqlcli.h                           |     9 +-
 core/sql/clitest/blobtest.cpp                   |   269 +
 core/sql/clitest/blobtest.h                     |    76 +
 core/sql/clitest/vers_libclitest.cpp            |    28 +
 core/sql/comexe/ComTdbExeUtil.cpp               |    22 +-
 core/sql/comexe/ComTdbExeUtil.h                 |    27 +-
 core/sql/comexe/ComTdbRoot.h                    |    14 +-
 core/sql/common/BaseTypes.cpp                   |    27 +-
 core/sql/executor/ExExeUtil.h                   |     2 +-
 core/sql/executor/ExExeUtilCli.cpp              |     8 +-
 core/sql/executor/ExExeUtilCli.h                |     2 +-
 core/sql/executor/ExExeUtilLoad.cpp             |   167 +-
 core/sql/executor/ExHdfsScan.cpp                |     8 +-
 core/sql/executor/hiveHook.cpp                  |     2 +-
 core/sql/exp/ExpLOB.cpp                         |    70 +-
 core/sql/exp/ExpLOB.h                           |    13 +-
 core/sql/exp/ExpLOBaccess.cpp                   |    26 +-
 core/sql/exp/ExpLOBenums.h                      |     1 +
 core/sql/exp/ExpLOBinterface.cpp                |    24 +-
 core/sql/exp/ExpLOBinterface.h                  |     1 +
 core/sql/generator/GenItemFunc.cpp              |     7 +
 core/sql/generator/GenRelExeUtil.cpp            |    11 +-
 core/sql/generator/GenRelMisc.cpp               |     4 +
 core/sql/nskgmake/Makerules.linux               |     4 +-
 core/sql/nskgmake/clitest/Makefile              |    36 +
 core/sql/nskgmake/clitestdriver/Makefile        |    35 +
 core/sql/optimizer/ItemExpr.cpp                 |     4 +-
 core/sql/optimizer/ItemFunc.h                   |    17 +-
 core/sql/optimizer/NATable.cpp                  |    49 +-
 core/sql/optimizer/RelExeUtil.cpp               |     4 +-
 core/sql/optimizer/RelExeUtil.h                 |    12 +-
 core/sql/optimizer/SynthType.cpp                |    33 +-
 core/sql/parser/sqlparser.y                     |    88 +-
 core/sql/regress/catman1/DIFF133.KNOWN          |    25 -
 core/sql/regress/catman1/DIFF136.KNOWN          |    11 -
 core/sql/regress/catman1/DIFF139.KNOWN          |     6 -
 core/sql/regress/catman1/EXPECTED129            |  1237 -
 core/sql/regress/catman1/EXPECTED131            |   491 -
 core/sql/regress/catman1/EXPECTED132            |  2214 -
 core/sql/regress/catman1/EXPECTED133            |   453 -
 core/sql/regress/catman1/EXPECTED135            |  1354 -
 core/sql/regress/catman1/EXPECTED136            |   870 -
 core/sql/regress/catman1/EXPECTED137            |  2501 --
 core/sql/regress/catman1/EXPECTED138            |  1692 -
 core/sql/regress/catman1/EXPECTED139            |   585 -
 core/sql/regress/catman1/EXPECTED140            |   926 -
 core/sql/regress/catman1/EXPECTED141            |   Bin 78469 -> 0 bytes
 core/sql/regress/catman1/FILTER132              |    40 -
 core/sql/regress/catman1/TEST129                |   442 -
 core/sql/regress/catman1/TEST131                |   365 -
 core/sql/regress/catman1/TEST132                |   447 -
 core/sql/regress/catman1/TEST133                |   236 -
 core/sql/regress/catman1/TEST135                |   465 -
 core/sql/regress/catman1/TEST136                |   400 -
 core/sql/regress/catman1/TEST137                |   608 -
 core/sql/regress/catman1/TEST138                |   347 -
 core/sql/regress/catman1/TEST139                |   325 -
 core/sql/regress/catman1/TEST140                |   433 -
 core/sql/regress/catman1/TEST141                |   394 -
 core/sql/regress/catman1/cidefs                 |   116 -
 core/sql/regress/catman1/etest140.cpp           |    98 -
 core/sql/regress/catman1/runregr                |    31 -
 core/sql/regress/catman1/udrtest135.cpp         |    55 -
 core/sql/regress/core/EXPECTED131               |   491 +
 core/sql/regress/core/TEST000                   |    14 +-
 core/sql/regress/core/TEST131                   |   365 +
 core/sql/regress/executor/EXPECTED130           |   275 +-
 core/sql/regress/executor/TEST130               |     8 +-
 core/sql/regress/executor/TEST130_argfile       |     3 +
 core/sql/regress/hive/EXPECTED009               |    24 +-
 core/sql/regress/hive/TEST009                   |    14 +-
 core/sql/regress/privs1/DIFF133.KNOWN           |    25 +
 core/sql/regress/privs1/DIFF136.KNOWN           |    11 +
 core/sql/regress/privs1/EXPECTED132             |  2214 +
 core/sql/regress/privs1/EXPECTED133             |   453 +
 core/sql/regress/privs1/EXPECTED136             |   870 +
 core/sql/regress/privs1/EXPECTED137             |  2501 ++
 core/sql/regress/privs1/EXPECTED141             |   Bin 0 -> 78469 bytes
 core/sql/regress/privs1/FILTER132               |    40 +
 core/sql/regress/privs1/TEST132                 |   447 +
 core/sql/regress/privs1/TEST133                 |   236 +
 core/sql/regress/privs1/TEST136                 |   400 +
 core/sql/regress/privs1/TEST137                 |   608 +
 core/sql/regress/privs1/TEST141                 |   394 +
 core/sql/regress/privs1/etest132.cpp            |    55 +
 core/sql/regress/privs1/etest141.cpp            |    98 +
 core/sql/regress/privs2/DIFF139.KNOWN           |     6 +
 core/sql/regress/privs2/EXPECTED129             |  1237 +
 core/sql/regress/privs2/EXPECTED135             |  1354 +
 core/sql/regress/privs2/EXPECTED138             |  1692 +
 core/sql/regress/privs2/EXPECTED139             |   585 +
 core/sql/regress/privs2/EXPECTED140             |   926 +
 core/sql/regress/privs2/FILTER140               |    33 +
 core/sql/regress/privs2/TEST129                 |   442 +
 core/sql/regress/privs2/TEST135                 |   465 +
 core/sql/regress/privs2/TEST138                 |   347 +
 core/sql/regress/privs2/TEST139                 |   325 +
 core/sql/regress/privs2/TEST140                 |   433 +
 core/sql/regress/privs2/etest140.cpp            |    98 +
 core/sql/regress/privs2/udrtest135.cpp          |    55 +
 core/sql/regress/tools/runallsb                 |    12 +-
 core/sql/regress/tools/runregr                  |   227 +-
 core/sql/regress/tools/runregr_core.ksh         |     2 +-
 core/sql/regress/tools/setupenv                 |    52 +-
 core/sql/regress/tools/setuplnxenv              |    25 +-
 core/sql/sqlcomp/DefaultConstants.h             |     2 +
 core/sql/sqlcomp/NADefaults.h                   |     2 +
 core/sql/sqlcomp/nadefaults.cpp                 |   141 +-
 core/sql/ustat/hs_globals.cpp                   |    75 +
 dcs/bin/scripts/dcsbind.sh                      |    14 +-
 .../main/asciidoc/_chapters/architecture.adoc   |    15 +-
 .../main/asciidoc/_chapters/configuration.adoc  |    78 +-
 .../main/asciidoc/_chapters/external_apis.adoc  |    34 -
 dcs/src/main/asciidoc/_chapters/ops_mgt.adoc    |    30 +-
 .../asciidoc/_chapters/troubleshooting.adoc     |     4 +-
 dcs/src/main/asciidoc/index.adoc                |     1 -
 dcs/src/main/resources/dcs-default.xml          |    45 -
 .../ODBC_Sample_Programs/basicsql.cpp           |   320 -
 .../ODBC_Sample_Programs/build.bat              |    25 -
 .../client_install/ODBC_Sample_Programs/run.bat |    23 -
 docs/client_install/pom.xml                     |   264 +
 .../Trafodion_Client_Installation_Guide.xml     |  3251 --
 .../source/img/Add_Alias_SQuirreL.png           |   Bin 9719 -> 0 bytes
 .../source/img/Add_Driver_SQuirreL.png          |   Bin 42544 -> 0 bytes
 .../img/Database_Connection_in_DbVisualizer.png |   Bin 55768 -> 0 bytes
 .../source/img/DbVisualizer_Driver_Manager.png  |   Bin 102328 -> 0 bytes
 .../source/img/Extracted_Files.png              |   Bin 15061 -> 0 bytes
 .../source/img/InstallComplete.png              |   Bin 19467 -> 0 bytes
 .../source/img/InstallerWizardPaths.png         |   Bin 25831 -> 0 bytes
 .../source/img/InstallerWizardWelcome.png       |   Bin 24394 -> 0 bytes
 .../client_install/source/img/JDBC_JAR_Path.png |   Bin 4552 -> 0 bytes
 .../source/img/OptionalComponents.png           |   Bin 31715 -> 0 bytes
 .../source/img/PerlJavaServerURL.png            |   Bin 3510 -> 0 bytes
 .../source/img/Physical_Connection.png          |   Bin 147371 -> 0 bytes
 .../img/Properties_for_Alias_SQuirreL.png       |   Bin 95544 -> 0 bytes
 .../client_install/source/img/ProxySettings.png |   Bin 2828 -> 0 bytes
 .../source/img/TQW_control_options.png          |   Bin 12363 -> 0 bytes
 docs/client_install/source/img/TQW_login.png    |   Bin 126619 -> 0 bytes
 docs/client_install/source/img/TQW_logout.png   |   Bin 3049 -> 0 bytes
 .../source/img/TQW_query_plan.png               |   Bin 83528 -> 0 bytes
 docs/client_install/source/img/TQW_session.png  |   Bin 1983 -> 0 bytes
 .../source/img/TQW_whiteboard.png               |   Bin 70729 -> 0 bytes
 docs/client_install/source/img/path2.png        |   Bin 32134 -> 0 bytes
 docs/client_install/source/img/varval2.png      |   Bin 13296 -> 0 bytes
 docs/client_install/source/xml-profile.xml      |    41 -
 .../src/asciidoc/_chapters/SQuirrel.adoc        |    70 +
 .../src/asciidoc/_chapters/about.adoc           |   175 +
 .../src/asciidoc/_chapters/dbviz.adoc           |    84 +
 .../src/asciidoc/_chapters/introduction.adoc    |    49 +
 .../src/asciidoc/_chapters/jdbct4.adoc          |   325 +
 .../src/asciidoc/_chapters/odb.adoc             |    99 +
 .../src/asciidoc/_chapters/odbc_linux.adoc      |   310 +
 .../src/asciidoc/_chapters/odbc_windows.adoc    |   239 +
 .../src/asciidoc/_chapters/sample_prog.adoc     |    75 +
 .../src/asciidoc/_chapters/trafci.adoc          |   473 +
 docs/client_install/src/asciidoc/index.adoc     |    80 +
 .../src/images/Add_Alias_SQuirreL.jpg           |   Bin 0 -> 48082 bytes
 .../src/images/Add_Driver_SQuirreL.jpg          |   Bin 0 -> 58950 bytes
 .../Database_Connection_in_DbVisualizer.jpg     |   Bin 0 -> 58043 bytes
 .../src/images/DbVisualizer_Driver_Manager.jpg  |   Bin 0 -> 80198 bytes
 .../src/images/Extracted_Files.jpg              |   Bin 0 -> 28327 bytes
 .../src/images/InstallComplete.jpg              |   Bin 0 -> 47365 bytes
 .../src/images/InstallerWizardPaths.jpg         |   Bin 0 -> 77163 bytes
 .../src/images/InstallerWizardWelcome.jpg       |   Bin 0 -> 53537 bytes
 .../client_install/src/images/JDBC_JAR_Path.jpg |   Bin 0 -> 18215 bytes
 .../src/images/OptionalComponents.jpg           |   Bin 0 -> 71744 bytes
 .../src/images/PerlJavaServerURL.jpg            |   Bin 0 -> 27662 bytes
 .../src/images/Physical_Connection.jpg          |   Bin 0 -> 185241 bytes
 .../images/Properties_for_Alias_SQuirreL.jpg    |   Bin 0 -> 84197 bytes
 .../client_install/src/images/ProxySettings.jpg |   Bin 0 -> 20985 bytes
 .../src/images/TQW_control_options.jpg          |   Bin 0 -> 14642 bytes
 docs/client_install/src/images/TQW_login.jpg    |   Bin 0 -> 51058 bytes
 docs/client_install/src/images/TQW_logout.jpg   |   Bin 0 -> 7602 bytes
 .../src/images/TQW_query_plan.jpg               |   Bin 0 -> 45607 bytes
 docs/client_install/src/images/TQW_session.jpg  |   Bin 0 -> 5008 bytes
 .../src/images/TQW_whiteboard.jpg               |   Bin 0 -> 43936 bytes
 docs/client_install/src/images/path2.jpg        |   Bin 0 -> 57338 bytes
 docs/client_install/src/images/varval2.jpg      |   Bin 0 -> 19505 bytes
 .../src/resources/source/basicsql.cpp           |   394 +
 .../src/resources/source/build.bat              |    25 +
 .../client_install/src/resources/source/run.bat |    23 +
 docs/command_interface/pom.xml                  |   264 +
 .../Trafodion_Command_Interface_Guide.xml       |  9846 -----
 docs/command_interface/source/img/VST101.png    |   Bin 52396 -> 0 bytes
 docs/command_interface/source/img/VST401.png    |   Bin 39217 -> 0 bytes
 docs/command_interface/source/img/VST601.png    |   Bin 2355 -> 0 bytes
 docs/command_interface/source/img/dpnvslf.png   |   Bin 36808 -> 0 bytes
 docs/command_interface/source/img/envvar.png    |   Bin 26344 -> 0 bytes
 docs/command_interface/source/img/instlcm1.png  |   Bin 5237 -> 0 bytes
 .../command_interface/source/img/instlcm2.3.png |   Bin 36015 -> 0 bytes
 docs/command_interface/source/img/instlcm2.png  |   Bin 6316 -> 0 bytes
 docs/command_interface/source/img/iwiz1.png     |   Bin 6701 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3.png   |   Bin 7705 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3b.png  |   Bin 7987 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3c.png  |   Bin 35606 -> 0 bytes
 .../source/img/iwiz2.3comp.png                  |   Bin 10358 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3d.png  |   Bin 4998 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3e.png  |   Bin 5714 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3f.png  |   Bin 12093 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3g.png  |   Bin 8425 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3h.png  |   Bin 8425 -> 0 bytes
 docs/command_interface/source/img/iwiz2.3n.png  |   Bin 11522 -> 0 bytes
 docs/command_interface/source/img/iwiz2.png     |   Bin 1360 -> 0 bytes
 docs/command_interface/source/img/iwiz3.png     |   Bin 4777 -> 0 bytes
 docs/command_interface/source/img/iwiz4.png     |   Bin 4753 -> 0 bytes
 docs/command_interface/source/img/iwiz5.png     |   Bin 150880 -> 0 bytes
 docs/command_interface/source/img/iwiz7.png     |   Bin 6061 -> 0 bytes
 docs/command_interface/source/img/iwiz8.png     |   Bin 7022 -> 0 bytes
 docs/command_interface/source/img/iwiz9.png     |   Bin 3433 -> 0 bytes
 .../source/img/iwizediturl.png                  |   Bin 3510 -> 0 bytes
 .../command_interface/source/img/iwizone2.3.png |   Bin 87777 -> 0 bytes
 .../source/img/iwizopensource.png               |   Bin 10283 -> 0 bytes
 .../source/img/iwizproxyset.png                 |   Bin 2828 -> 0 bytes
 docs/command_interface/source/img/java-opt.png  |   Bin 127106 -> 0 bytes
 docs/command_interface/source/img/launch02.png  |   Bin 18206 -> 0 bytes
 docs/command_interface/source/img/launchs1.png  |   Bin 3068 -> 0 bytes
 docs/command_interface/source/img/log-file.png  |   Bin 8302 -> 0 bytes
 docs/command_interface/source/img/logvar.png    |   Bin 39647 -> 0 bytes
 .../command_interface/source/img/logvar_new.png |   Bin 13368 -> 0 bytes
 docs/command_interface/source/img/mycomp.png    |   Bin 13033 -> 0 bytes
 .../source/img/new_iwiz2.3.png                  |   Bin 7407 -> 0 bytes
 .../source/img/new_iwiz2.3f.png                 |   Bin 8632 -> 0 bytes
 docs/command_interface/source/img/p-errlog.png  |   Bin 7387 -> 0 bytes
 docs/command_interface/source/img/p-scrlog.png  |   Bin 4205 -> 0 bytes
 docs/command_interface/source/img/path.png      |   Bin 5592 -> 0 bytes
 docs/command_interface/source/img/path2.png     |   Bin 32134 -> 0 bytes
 docs/command_interface/source/img/script.png    |   Bin 7142 -> 0 bytes
 docs/command_interface/source/img/shortct1.png  |   Bin 27091 -> 0 bytes
 docs/command_interface/source/img/shortct2.png  |   Bin 33784 -> 0 bytes
 docs/command_interface/source/img/shortct3.png  |   Bin 30072 -> 0 bytes
 docs/command_interface/source/img/shortct4.png  |   Bin 17710 -> 0 bytes
 docs/command_interface/source/img/shortct5.png  |   Bin 30622 -> 0 bytes
 docs/command_interface/source/img/sysprop.png   |   Bin 27422 -> 0 bytes
 docs/command_interface/source/img/varval.png    |   Bin 10013 -> 0 bytes
 docs/command_interface/source/img/varval2.png   |   Bin 13296 -> 0 bytes
 docs/command_interface/source/img/winbin.png    |   Bin 53558 -> 0 bytes
 docs/command_interface/source/img/zip2.3.png    |   Bin 15342 -> 0 bytes
 docs/command_interface/source/img/zip2.3a.png   |   Bin 14073 -> 0 bytes
 docs/command_interface/source/xml-profile.xml   |    41 -
 .../src/asciidoc/_chapters/about.adoc           |   175 +
 .../src/asciidoc/_chapters/commands.adoc        |  4315 ++
 .../src/asciidoc/_chapters/install.adoc         |    99 +
 .../src/asciidoc/_chapters/interactive.adoc     |   941 +
 .../src/asciidoc/_chapters/introduction.adoc    |    34 +
 .../src/asciidoc/_chapters/launch.adoc          |   637 +
 .../src/asciidoc/_chapters/perlpython.adoc      |   258 +
 .../src/asciidoc/_chapters/scripts.adoc         |   164 +
 docs/command_interface/src/asciidoc/index.adoc  |    75 +
 docs/command_interface/src/images/VST101.jpg    |   Bin 0 -> 49552 bytes
 docs/command_interface/src/images/VST401.jpg    |   Bin 0 -> 37869 bytes
 docs/command_interface/src/images/VST601.jpg    |   Bin 0 -> 17388 bytes
 docs/command_interface/src/images/dpnvslf.jpg   |   Bin 0 -> 17215 bytes
 docs/command_interface/src/images/envvar.jpg    |   Bin 0 -> 55944 bytes
 docs/command_interface/src/images/instlcm1.jpg  |   Bin 0 -> 66629 bytes
 .../command_interface/src/images/instlcm2.3.jpg |   Bin 0 -> 16721 bytes
 docs/command_interface/src/images/instlcm2.jpg  |   Bin 0 -> 84657 bytes
 docs/command_interface/src/images/iwiz1.jpg     |   Bin 0 -> 61823 bytes
 docs/command_interface/src/images/iwiz2.3.jpg   |   Bin 0 -> 73496 bytes
 docs/command_interface/src/images/iwiz2.3b.jpg  |   Bin 0 -> 76467 bytes
 docs/command_interface/src/images/iwiz2.3c.jpg  |   Bin 0 -> 18174 bytes
 .../src/images/iwiz2.3comp.jpg                  |   Bin 0 -> 76540 bytes
 docs/command_interface/src/images/iwiz2.3d.jpg  |   Bin 0 -> 42750 bytes
 docs/command_interface/src/images/iwiz2.3e.jpg  |   Bin 0 -> 39508 bytes
 docs/command_interface/src/images/iwiz2.3f.jpg  |   Bin 0 -> 93285 bytes
 docs/command_interface/src/images/iwiz2.3h.jpg  |   Bin 0 -> 67094 bytes
 docs/command_interface/src/images/iwiz2.3n.jpg  |   Bin 0 -> 83274 bytes
 docs/command_interface/src/images/iwiz2.jpg     |   Bin 0 -> 15025 bytes
 docs/command_interface/src/images/iwiz3.jpg     |   Bin 0 -> 36199 bytes
 docs/command_interface/src/images/iwiz4.jpg     |   Bin 0 -> 35220 bytes
 docs/command_interface/src/images/iwiz5.jpg     |   Bin 0 -> 76695 bytes
 docs/command_interface/src/images/iwiz7.jpg     |   Bin 0 -> 51256 bytes
 docs/command_interface/src/images/iwiz8.jpg     |   Bin 0 -> 65627 bytes
 docs/command_interface/src/images/iwiz9.jpg     |   Bin 0 -> 18671 bytes
 .../src/images/iwizediturl.jpg                  |   Bin 0 -> 27662 bytes
 .../command_interface/src/images/iwizone2.3.jpg |   Bin 0 -> 61060 bytes
 .../src/images/iwizopensource.jpg               |   Bin 0 -> 74346 bytes
 .../src/images/iwizproxyset.jpg                 |   Bin 0 -> 20985 bytes
 docs/command_interface/src/images/java-opt.jpg  |   Bin 0 -> 62772 bytes
 docs/command_interface/src/images/launch02.jpg  |   Bin 0 -> 29749 bytes
 docs/command_interface/src/images/launchs1.jpg  |   Bin 0 -> 21801 bytes
 docs/command_interface/src/images/log-file.jpg  |   Bin 0 -> 82163 bytes
 docs/command_interface/src/images/logvar.jpg    |   Bin 0 -> 18400 bytes
 .../command_interface/src/images/logvar_new.jpg |   Bin 0 -> 20451 bytes
 docs/command_interface/src/images/mycomp.jpg    |   Bin 0 -> 23996 bytes
 .../src/images/new_iwiz2.3.jpg                  |   Bin 0 -> 79083 bytes
 docs/command_interface/src/images/p-errlog.jpg  |   Bin 0 -> 94633 bytes
 docs/command_interface/src/images/p-scrlog.jpg  |   Bin 0 -> 34198 bytes
 docs/command_interface/src/images/path.jpg      |   Bin 0 -> 50183 bytes
 docs/command_interface/src/images/path2.jpg     |   Bin 0 -> 57338 bytes
 docs/command_interface/src/images/script.jpg    |   Bin 0 -> 66933 bytes
 docs/command_interface/src/images/shortct1.jpg  |   Bin 0 -> 61270 bytes
 docs/command_interface/src/images/shortct2.jpg  |   Bin 0 -> 57414 bytes
 docs/command_interface/src/images/shortct3.jpg  |   Bin 0 -> 39950 bytes
 docs/command_interface/src/images/shortct4.jpg  |   Bin 0 -> 42194 bytes
 docs/command_interface/src/images/shortct5.jpg  |   Bin 0 -> 63636 bytes
 docs/command_interface/src/images/sysprop.jpg   |   Bin 0 -> 63444 bytes
 docs/command_interface/src/images/varval.jpg    |   Bin 0 -> 20590 bytes
 docs/command_interface/src/images/varval2.jpg   |   Bin 0 -> 19505 bytes
 docs/command_interface/src/images/winbin.jpg    |   Bin 0 -> 60550 bytes
 docs/command_interface/src/images/zip2.3.jpg    |   Bin 0 -> 64722 bytes
 docs/command_interface/src/images/zip2.3a.jpg   |   Bin 0 -> 78101 bytes
 docs/css/trafodion-manuals.css                  |   431 +
 docs/css/trafodion-theme.yml                    |    75 +
 docs/install_guide/pom.xml                      |   219 +
 .../src/asciidoc/_chapters/about.adoc           |   131 +
 .../src/asciidoc/_chapters/dev_install.adoc     |    26 +
 .../src/asciidoc/_chapters/howto.adoc           |    26 +
 .../src/asciidoc/_chapters/product_install.adoc |    26 +
 .../src/asciidoc/_chapters/requirements.adoc    |    26 +
 docs/install_guide/src/asciidoc/index.adoc      |    69 +
 docs/odb_manual/Trafodion_odb_User_Guide.xml    |   181 -
 docs/odb_user/pom.xml                           |   264 +
 .../src/asciidoc/_chapters/a_warnings.adoc      |   101 +
 docs/odb_user/src/asciidoc/_chapters/about.adoc |   182 +
 .../src/asciidoc/_chapters/b_develop.adoc       |    50 +
 .../src/asciidoc/_chapters/compare_tables.adoc  |   202 +
 .../src/asciidoc/_chapters/concepts.adoc        |   941 +
 .../src/asciidoc/_chapters/install.adoc         |   Bin 0 -> 13594 bytes
 .../src/asciidoc/_chapters/introduction.adoc    |    50 +
 docs/odb_user/src/asciidoc/_chapters/load.adoc  |  1229 +
 .../src/asciidoc/_chapters/query_driver.adoc    |   274 +
 .../src/asciidoc/_chapters/sql_interpreter.adoc |   363 +
 docs/odb_user/src/asciidoc/index.adoc           |    75 +
 docs/odb_user/src/images/sql_ansi_colors.jpg    |   Bin 0 -> 20035 bytes
 docs/sql_reference/pom.xml                      |   268 +
 .../source/Trafodion_SQL_Reference_Manual.xml   | 37555 -----------------
 docs/sql_reference/source/xml-profile.xml       |    42 -
 .../src/asciidoc/_chapters/about.adoc           |   240 +
 .../src/asciidoc/_chapters/cqds.adoc            |   349 +
 .../src/asciidoc/_chapters/introduction.adoc    |   515 +
 .../src/asciidoc/_chapters/limits.adoc          |    37 +
 .../src/asciidoc/_chapters/olap_functions.adoc  |  1079 +
 .../src/asciidoc/_chapters/reserved_words.adoc  |   287 +
 .../src/asciidoc/_chapters/runtime_stats.adoc   |  1354 +
 .../src/asciidoc/_chapters/sql_clauses.adoc     |  1432 +
 .../sql_functions_and_expressions.adoc          |  7885 ++++
 .../_chapters/sql_language_elements.adoc        |  4088 ++
 .../src/asciidoc/_chapters/sql_statements.adoc  |  8465 ++++
 .../src/asciidoc/_chapters/sql_utilities.adoc   |  1028 +
 docs/sql_reference/src/asciidoc/index.adoc      |    80 +
 docs/src/site/markdown/develop.md               |     8 +
 docs/src/site/markdown/document.md              |   222 +-
 docs/src/site/markdown/documentation.md         |    23 +-
 docs/src/site/markdown/download.md              |     7 +-
 docs/src/site/markdown/index.md                 |    20 +
 docs/src/site/site.xml                          |     1 +
 install/installer/cloud_cli_setup               |    97 +
 install/installer/dcs_installer                 |    39 +-
 install/installer/traf_config_setup             |   123 +-
 install/installer/trafodion_config_default      |    15 +
 install/installer/trafodion_install             |     8 +-
 360 files changed, 61133 insertions(+), 69349 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/279e540c/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/279e540c/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------


[13/15] incubator-trafodion git commit: disable core/TESTRTS as it has a random bug causing it to fail with core dump. See trafodion JIRA 1771 for this issue.

Posted by hz...@apache.org.
disable core/TESTRTS as it has a random bug causing it to fail with core dump. See trafodion JIRA 1771 for this issue.


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/9217b39c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/9217b39c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/9217b39c

Branch: refs/heads/master
Commit: 9217b39c4174524201c62df2eb76c6eead827908
Parents: d7627df
Author: Eric Owhadi <er...@esgyn.com>
Authored: Thu Jan 21 23:30:34 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Thu Jan 21 23:30:34 2016 +0000

----------------------------------------------------------------------
 core/sql/regress/tools/runregr_core.ksh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9217b39c/core/sql/regress/tools/runregr_core.ksh
----------------------------------------------------------------------
diff --git a/core/sql/regress/tools/runregr_core.ksh b/core/sql/regress/tools/runregr_core.ksh
index bd1c885..c4e916d 100755
--- a/core/sql/regress/tools/runregr_core.ksh
+++ b/core/sql/regress/tools/runregr_core.ksh
@@ -221,7 +221,7 @@ fi
 
 # sbtestfiles contains the list of tests to be run in seabase mode
 if [ "$seabase" -ne 0 ]; then
-  sbtestfiles="TEST000 TEST001 TEST002 TEST004 TEST005 TEST008 TEST010 TEST018 TEST019 TEST020 TEST027 TEST029 TEST032 TEST037 TEST038 TEST041 TEST056 TEST061 TEST116 TESTRTS TEST131 TEST162"
+  sbtestfiles="TEST000 TEST001 TEST002 TEST004 TEST005 TEST008 TEST010 TEST018 TEST019 TEST020 TEST027 TEST029 TEST032 TEST037 TEST038 TEST041 TEST056 TEST061 TEST116 TEST131 TEST162"
   sbprettyfiles=
   for i in $prettyfiles; do
     for j in $sbtestfiles; do


[14/15] incubator-trafodion git commit: Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2

Posted by hz...@apache.org.
Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/7892af2d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/7892af2d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/7892af2d

Branch: refs/heads/master
Commit: 7892af2df84f21d6fc6355d89ec07963cc4f8132
Parents: 9217b39 4550081
Author: Eric Owhadi <er...@esgyn.com>
Authored: Thu Jan 21 23:32:22 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Thu Jan 21 23:32:22 2016 +0000

----------------------------------------------------------------------
 core/dbsecurity/auth/src/dbUserAuth.cpp         |    1 +
 core/sql/common/ComSmallDefs.h                  |   15 +-
 core/sql/common/ComUser.h                       |    6 +-
 core/sql/common/NAUserId.h                      |   24 +-
 core/sql/executor/ExHbaseAccess.h               |    2 +
 core/sql/executor/ExHbaseIUD.cpp                |   56 +-
 core/sql/exp/ExpHbaseInterface.cpp              |   38 +-
 core/sql/regress/privs1/EXPECTED137             | 1274 +++++-------------
 core/sql/regress/privs1/runregr                 |   31 +
 core/sql/regress/privs2/EXPECTED135             |   12 +-
 core/sql/regress/privs2/runregr                 |   31 +
 core/sql/regress/tools/runallsb                 |    1 -
 core/sql/regress/tools/runregr_privs1.ksh       |  492 +++++++
 core/sql/regress/tools/runregr_privs2.ksh       |  494 +++++++
 core/sql/sqlcomp/CmpSeabaseDDLauth.cpp          |   27 +-
 core/sql/sqlcomp/CmpSeabaseDDLauth.h            |    1 +
 core/sql/sqlcomp/CmpSeabaseDDLtable.cpp         |    2 +-
 core/sql/sqlcomp/PrivMgr.cpp                    |   12 +-
 core/sql/sqlcomp/PrivMgrComponentOperations.cpp |    2 +-
 core/sql/sqlcomp/PrivMgrComponentPrivileges.cpp |  377 ++++--
 core/sql/sqlcomp/PrivMgrDefs.h                  |    9 -
 core/sql/sqlcomp/PrivMgrMD.cpp                  |   26 +-
 core/sql/sqlcomp/PrivMgrMDDefs.h                |    4 +-
 core/sql/sqlcomp/PrivMgrPrivileges.cpp          |   28 +-
 core/sql/sqlcomp/PrivMgrRoles.cpp               |    8 +-
 core/sql/udrserv/udrserv.cpp                    |    3 +-
 .../serverHandler/ServerApiSqlFetch.java        |    1 -
 .../dcs/servermt/serverSql/TrafConnection.java  |    2 +-
 28 files changed, 1777 insertions(+), 1202 deletions(-)
----------------------------------------------------------------------



[12/15] incubator-trafodion git commit: Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2

Posted by hz...@apache.org.
Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/d7627df3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/d7627df3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/d7627df3

Branch: refs/heads/master
Commit: d7627df335479cb5448c8f5924aaebc9a28f46d7
Parents: e1cdc43 b6f49b6
Author: Eric Owhadi <er...@esgyn.com>
Authored: Tue Jan 19 14:28:26 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Tue Jan 19 14:28:26 2016 +0000

----------------------------------------------------------------------
 .../java/org/trafodion/rest/RESTServlet.java    | 16 ++---
 core/sqf/sql/scripts/dcscheck                   |  2 +-
 core/sqf/sql/scripts/dcsstop                    |  2 +-
 core/sql/optimizer/NATable.cpp                  | 73 +++++++++++---------
 core/sql/sqlcat/desc.h                          |  1 -
 core/sql/sqlcomp/CmpSeabaseDDLtable.cpp         | 18 +----
 dcs/bin/scripts/dcsbind.sh                      |  6 +-
 dcs/bin/scripts/dcsunbind.sh                    | 14 ++--
 .../Descriptor2List.java                        |  2 +-
 .../serverHandler/ServerApiSqlEndTransact.java  | 14 +++-
 .../serverHandler/ServerApiSqlExecDirect.java   |  2 +-
 install/installer/cloud_cli_setup               | 16 ++---
 install/installer/dcs_installer                 |  3 +-
 13 files changed, 89 insertions(+), 80 deletions(-)
----------------------------------------------------------------------



[06/15] incubator-trafodion git commit: Fix issue where optimization on key column addition should be turned off for MDAM scans, and update EXPECTEDTESTRTS to showcase the new value expected as byte read showing a 53% improvement over previous code

Posted by hz...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/90795250/core/sql/regress/core/EXPECTEDRTS
----------------------------------------------------------------------
diff --git a/core/sql/regress/core/EXPECTEDRTS b/core/sql/regress/core/EXPECTEDRTS
index 0c1ea27..c0334eb 100755
--- a/core/sql/regress/core/EXPECTEDRTS
+++ b/core/sql/regress/core/EXPECTEDRTS
@@ -56,10 +56,10 @@ LC   RC   OP   OPERATOR              OPT       DESCRIPTION           CARD
 --- SQL operation complete.
 >>log LOGRTS;
 >>get statistics for qid current ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -94,11 +94,11 @@ Stats Collection Type    ACCUMULATED_STATS
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_220_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_444_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -129,11 +129,11 @@ Last Suspend Time        -1
 Stats Collection Type    ACCUMULATED_STATS
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_220_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_444_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -166,10 +166,10 @@ Stats Collection Type    ACCUMULATED_STATS
 --- SQL operation complete.
 >>log;
 >>display statistics for qid current;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -201,10 +201,10 @@ Stats Collection Type    ACCUMULATED_STATS
 
 --- SQL operation complete.
 >>get statistics for qid current ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -250,14 +250,14 @@ D
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_220_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
-Execute Start Time       2015/06/29 21:03:29.314777
-Execute End Time         2015/06/29 21:03:31.300478
-Execute Elapsed Time                 0:00:01.985701
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_444_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
+Execute Start Time       2016/01/08 01:31:11.223626
+Execute End Time         2016/01/08 01:31:14.341083
+Execute Elapsed Time                 0:00:03.117457
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -275,7 +275,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:31.298606
+First Row Returned Time  2016/01/08 01:31:14.338521
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -292,13 +292,13 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   131,374
-SQL Process Busy Time    2,248
+Disk Process Busy Time   213,348
+SQL Process Busy Time    5,218,153
 UDR Process Busy Time    0
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
 SQL Heap Allocated       143                       KB
-SQL Heap Used            30                        KB
+SQL Heap Used            26                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -306,11 +306,11 @@ EID Heap Used            0                         KB
 Opens                    0
 Open Time                0
 Processes Created        2
-Process Create Time      126,890
+Process Create Time      179,531
 Request Message Count    26
-Request Message Bytes    42,176
-Reply Message Count      7
-Reply Message Bytes      36,136
+Request Message Bytes    40,144
+Reply Message Count      15
+Reply Message Bytes      38,952
 Scr. Overflow Mode       MMAP
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -320,14 +320,14 @@ Scr. Read Count          0
 Scr. Write Count         0
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_220_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
-Execute Start Time       2015/06/29 21:03:29.314777
-Execute End Time         2015/06/29 21:03:31.300478
-Execute Elapsed Time                 0:00:01.985701
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_444_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
+Execute Start Time       2016/01/08 01:31:11.223626
+Execute End Time         2016/01/08 01:31:14.341083
+Execute Elapsed Time                 0:00:03.117457
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -345,7 +345,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:31.298606
+First Row Returned Time  2016/01/08 01:31:14.338521
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -362,13 +362,13 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   131,374
-SQL Process Busy Time    2,248
+Disk Process Busy Time   213,348
+SQL Process Busy Time    5,218,153
 UDR Process Busy Time    0
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
 SQL Heap Allocated       143                       KB
-SQL Heap Used            30                        KB
+SQL Heap Used            26                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -376,11 +376,11 @@ EID Heap Used            0                         KB
 Opens                    0
 Open Time                0
 Processes Created        2
-Process Create Time      126,890
+Process Create Time      179,531
 Request Message Count    26
-Request Message Bytes    42,176
-Reply Message Count      7
-Reply Message Bytes      36,136
+Request Message Bytes    40,144
+Reply Message Count      15
+Reply Message Bytes      38,952
 Scr. Overflow Mode       MMAP
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -392,13 +392,13 @@ Scr. Write Count         0
 --- SQL operation complete.
 >>log;
 >>display statistics for qid current;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
-Execute Start Time       2015/06/29 21:03:29.314777
-Execute End Time         2015/06/29 21:03:31.300478
-Execute Elapsed Time                 0:00:01.985701
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
+Execute Start Time       2016/01/08 01:31:11.223626
+Execute End Time         2016/01/08 01:31:14.341083
+Execute Elapsed Time                 0:00:03.117457
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -416,7 +416,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:31.298606
+First Row Returned Time  2016/01/08 01:31:14.338521
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -433,13 +433,13 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   131,374
-SQL Process Busy Time    2,248
+Disk Process Busy Time   213,348
+SQL Process Busy Time    5,218,153
 UDR Process Busy Time    0
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
 SQL Heap Allocated       143                       KB
-SQL Heap Used            30                        KB
+SQL Heap Used            26                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -447,11 +447,11 @@ EID Heap Used            0                         KB
 Opens                    0
 Open Time                0
 Processes Created        2
-Process Create Time      126,890
+Process Create Time      179,531
 Request Message Count    26
-Request Message Bytes    42,176
-Reply Message Count      7
-Reply Message Bytes      36,136
+Request Message Bytes    40,144
+Reply Message Count      15
+Reply Message Bytes      38,952
 Scr. Overflow Mode       MMAP
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -462,13 +462,13 @@ Scr. Write Count         0
 
 --- SQL operation complete.
 >>get statistics for qid current ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_220_S1
-Compile Start Time       2015/06/29 21:03:20.275901
-Compile End Time         2015/06/29 21:03:20.318928
-Compile Elapsed Time                 0:00:00.043027
-Execute Start Time       2015/06/29 21:03:29.314777
-Execute End Time         2015/06/29 21:03:31.300478
-Execute Elapsed Time                 0:00:01.985701
+Qid                      MXID11000031097212318976647061576000000000206U3333300_444_S1
+Compile Start Time       2016/01/08 01:31:04.062381
+Compile End Time         2016/01/08 01:31:04.151506
+Compile Elapsed Time                 0:00:00.089125
+Execute Start Time       2016/01/08 01:31:11.223626
+Execute End Time         2016/01/08 01:31:14.341083
+Execute Elapsed Time                 0:00:03.117457
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -486,7 +486,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:31.298606
+First Row Returned Time  2016/01/08 01:31:14.338521
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -503,13 +503,13 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   131,374
-SQL Process Busy Time    2,248
+Disk Process Busy Time   213,348
+SQL Process Busy Time    5,218,153
 UDR Process Busy Time    0
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
 SQL Heap Allocated       143                       KB
-SQL Heap Used            30                        KB
+SQL Heap Used            26                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -517,11 +517,11 @@ EID Heap Used            0                         KB
 Opens                    0
 Open Time                0
 Processes Created        2
-Process Create Time      126,890
+Process Create Time      179,531
 Request Message Count    26
-Request Message Bytes    42,176
-Reply Message Count      7
-Reply Message Bytes      36,136
+Request Message Bytes    40,144
+Reply Message Count      15
+Reply Message Bytes      38,952
 Scr. Overflow Mode       MMAP
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -538,25 +538,25 @@ Scr. Write Count         0
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_220_S1 ;
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_444_S1 ;
 
-*** ERROR[8923] The given Query Id MXID11000023719212302371786368792000000000206U3333300_220_S1 is not found.
+*** ERROR[8923] The given Query Id MXID11000031097212318976647061576000000000206U3333300_444_S1 is not found.
 
 --- SQL operation failed with errors.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_220_S1 ;
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_444_S1 ;
 
-*** ERROR[8923] The given Query Id MXID11000023719212302371786368792000000000206U3333300_220_S1 is not found.
+*** ERROR[8923] The given Query Id MXID11000031097212318976647061576000000000206U3333300_444_S1 is not found.
 
 --- SQL operation failed with errors.
 >>log;
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_229_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_229_S1
-Compile Start Time       2015/06/29 21:03:34.274759
-Compile End Time         2015/06/29 21:03:34.275766
-Compile Elapsed Time                 0:00:00.001007
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_453_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_453_S1
+Compile Start Time       2016/01/08 01:31:21.610286
+Compile End Time         2016/01/08 01:31:21.611885
+Compile Elapsed Time                 0:00:00.001599
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -587,11 +587,11 @@ Last Suspend Time        -1
 Stats Collection Type    ACCUMULATED_STATS
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_229_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_229_S1
-Compile Start Time       2015/06/29 21:03:34.274759
-Compile End Time         2015/06/29 21:03:34.275766
-Compile Elapsed Time                 0:00:00.001007
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_453_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_453_S1
+Compile Start Time       2016/01/08 01:31:21.610286
+Compile End Time         2016/01/08 01:31:21.611885
+Compile Elapsed Time                 0:00:00.001599
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -624,10 +624,10 @@ Stats Collection Type    ACCUMULATED_STATS
 --- SQL operation complete.
 >>log;
 >>display statistics for qid current;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_229_S1
-Compile Start Time       2015/06/29 21:03:34.274759
-Compile End Time         2015/06/29 21:03:34.275766
-Compile Elapsed Time                 0:00:00.001007
+Qid                      MXID11000031097212318976647061576000000000206U3333300_453_S1
+Compile Start Time       2016/01/08 01:31:21.610286
+Compile End Time         2016/01/08 01:31:21.611885
+Compile Elapsed Time                 0:00:00.001599
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -659,10 +659,10 @@ Stats Collection Type    ACCUMULATED_STATS
 
 --- SQL operation complete.
 >>get statistics for qid current ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_229_S1
-Compile Start Time       2015/06/29 21:03:34.274759
-Compile End Time         2015/06/29 21:03:34.275766
-Compile Elapsed Time                 0:00:00.001007
+Qid                      MXID11000031097212318976647061576000000000206U3333300_453_S1
+Compile Start Time       2016/01/08 01:31:21.610286
+Compile End Time         2016/01/08 01:31:21.611885
+Compile Elapsed Time                 0:00:00.001599
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -706,10 +706,10 @@ Stats Collection Type    ACCUMULATED_STATS
 --- SQL command prepared.
 >>log;
 >>get statistics for qid current ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -744,11 +744,11 @@ Stats Collection Type    PERTABLE_STATS
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_234_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_458_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -779,11 +779,11 @@ Last Suspend Time        -1
 Stats Collection Type    PERTABLE_STATS
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_234_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_458_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -818,11 +818,11 @@ Stats Collection Type    PERTABLE_STATS
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_234_S1 ACCUMULATED;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_458_S1 ACCUMULATED;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -853,11 +853,11 @@ Last Suspend Time        -1
 Stats Collection Type    PERTABLE_STATS
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_234_S1 ACCUMULATED;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_458_S1 ACCUMULATED;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -890,10 +890,10 @@ Stats Collection Type    PERTABLE_STATS
 --- SQL operation complete.
 >>log;
 >>display statistics for qid current;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -925,10 +925,10 @@ Stats Collection Type    PERTABLE_STATS
 
 --- SQL operation complete.
 >>get statistics for qid current ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -960,10 +960,10 @@ Stats Collection Type    PERTABLE_STATS
 
 --- SQL operation complete.
 >>display statistics for qid current accumulated ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -995,10 +995,10 @@ Stats Collection Type    PERTABLE_STATS
 
 --- SQL operation complete.
 >>get statistics for qid current accumulated ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -1044,14 +1044,14 @@ D
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_234_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
-Execute Start Time       2015/06/29 21:03:52.099382
-Execute End Time         2015/06/29 21:03:52.111671
-Execute Elapsed Time                 0:00:00.012289
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_458_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
+Execute Start Time       2016/01/08 01:31:44.250011
+Execute End Time         2016/01/08 01:31:44.265892
+Execute Elapsed Time                 0:00:00.015881
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1069,7 +1069,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:52.109209
+First Row Returned Time  2016/01/08 01:31:44.264238
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1077,12 +1077,12 @@ No. of times reclaimed   0
 Cancel Time              -1
 Last Suspend Time        -1
 Stats Collection Type    PERTABLE_STATS
-SQL Process Busy Time    2,186
+SQL Process Busy Time    10,270
 UDR Process Busy Time    0
-SQL Space Allocated      832                       KB
-SQL Space Used           721                       KB
-SQL Heap Allocated       111                       KB
-SQL Heap Used            19                        KB
+SQL Space Allocated      896                       KB
+SQL Space Used           766                       KB
+SQL Heap Allocated       143                       KB
+SQL Heap Used            22                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -1090,9 +1090,9 @@ EID Heap Used            0                         KB
 Processes Created        0
 Process Create Time      0
 Request Message Count    27
-Request Message Bytes    42,336
-Reply Message Count      7
-Reply Message Bytes      36,360
+Request Message Bytes    40,304
+Reply Message Count      15
+Reply Message Bytes      39,176
 Scr. Overflow Mode       UNKNOWN
 Scr File Count           0
 Scr. Buffer Blk Size     0
@@ -1106,17 +1106,17 @@ Table Name
    Estimated/Actual   Estimated/Actual          IOs    IO MBytes           Sum Time           Max Time
 TRAFODION.SCH.TSTAT
                   0                100
-                  4                  4            4            0              8,560              4,334
+                  4                  4            4            0             10,676              5,701
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_234_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
-Execute Start Time       2015/06/29 21:03:52.099382
-Execute End Time         2015/06/29 21:03:52.111671
-Execute Elapsed Time                 0:00:00.012289
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_458_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
+Execute Start Time       2016/01/08 01:31:44.250011
+Execute End Time         2016/01/08 01:31:44.265892
+Execute Elapsed Time                 0:00:00.015881
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1134,7 +1134,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:52.109209
+First Row Returned Time  2016/01/08 01:31:44.264238
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1142,12 +1142,12 @@ No. of times reclaimed   0
 Cancel Time              -1
 Last Suspend Time        -1
 Stats Collection Type    PERTABLE_STATS
-SQL Process Busy Time    2,186
+SQL Process Busy Time    10,270
 UDR Process Busy Time    0
-SQL Space Allocated      832                       KB
-SQL Space Used           721                       KB
-SQL Heap Allocated       111                       KB
-SQL Heap Used            19                        KB
+SQL Space Allocated      896                       KB
+SQL Space Used           766                       KB
+SQL Heap Allocated       143                       KB
+SQL Heap Used            22                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -1155,9 +1155,9 @@ EID Heap Used            0                         KB
 Processes Created        0
 Process Create Time      0
 Request Message Count    27
-Request Message Bytes    42,336
-Reply Message Count      7
-Reply Message Bytes      36,360
+Request Message Bytes    40,304
+Reply Message Count      15
+Reply Message Bytes      39,176
 Scr. Overflow Mode       UNKNOWN
 Scr File Count           0
 Scr. Buffer Blk Size     0
@@ -1171,21 +1171,21 @@ Table Name
    Estimated/Actual   Estimated/Actual          IOs    IO MBytes           Sum Time           Max Time
 TRAFODION.SCH.TSTAT
                   0                100
-                  4                  4            4            0              8,560              4,334
+                  4                  4            4            0             10,676              5,701
 
 --- SQL operation complete.
 >>log;
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_234_S1 ACCUMULATED;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
-Execute Start Time       2015/06/29 21:03:52.099382
-Execute End Time         2015/06/29 21:03:52.111671
-Execute Elapsed Time                 0:00:00.012289
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_458_S1 ACCUMULATED;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
+Execute Start Time       2016/01/08 01:31:44.250011
+Execute End Time         2016/01/08 01:31:44.265892
+Execute Elapsed Time                 0:00:00.015881
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1203,7 +1203,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:52.109209
+First Row Returned Time  2016/01/08 01:31:44.264238
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1220,13 +1220,13 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   8,560
-SQL Process Busy Time    2,186
+Disk Process Busy Time   10,676
+SQL Process Busy Time    10,270
 UDR Process Busy Time    0
-SQL Space Allocated      832                       KB
-SQL Space Used           721                       KB
-SQL Heap Allocated       111                       KB
-SQL Heap Used            19                        KB
+SQL Space Allocated      896                       KB
+SQL Space Used           766                       KB
+SQL Heap Allocated       143                       KB
+SQL Heap Used            22                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -1236,9 +1236,9 @@ Open Time                0
 Processes Created        0
 Process Create Time      0
 Request Message Count    27
-Request Message Bytes    42,336
-Reply Message Count      7
-Reply Message Bytes      36,360
+Request Message Bytes    40,304
+Reply Message Count      15
+Reply Message Bytes      39,176
 Scr. Overflow Mode       UNKNOWN
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -1248,14 +1248,14 @@ Scr. Read Count          0
 Scr. Write Count         0
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_234_S1 ACCUMULATED;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
-Execute Start Time       2015/06/29 21:03:52.099382
-Execute End Time         2015/06/29 21:03:52.111671
-Execute Elapsed Time                 0:00:00.012289
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_458_S1 ACCUMULATED;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
+Execute Start Time       2016/01/08 01:31:44.250011
+Execute End Time         2016/01/08 01:31:44.265892
+Execute Elapsed Time                 0:00:00.015881
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1273,7 +1273,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:52.109209
+First Row Returned Time  2016/01/08 01:31:44.264238
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1290,13 +1290,13 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   8,560
-SQL Process Busy Time    2,186
+Disk Process Busy Time   10,676
+SQL Process Busy Time    10,270
 UDR Process Busy Time    0
-SQL Space Allocated      832                       KB
-SQL Space Used           721                       KB
-SQL Heap Allocated       111                       KB
-SQL Heap Used            19                        KB
+SQL Space Allocated      896                       KB
+SQL Space Used           766                       KB
+SQL Heap Allocated       143                       KB
+SQL Heap Used            22                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -1306,9 +1306,9 @@ Open Time                0
 Processes Created        0
 Process Create Time      0
 Request Message Count    27
-Request Message Bytes    42,336
-Reply Message Count      7
-Reply Message Bytes      36,360
+Request Message Bytes    40,304
+Reply Message Count      15
+Reply Message Bytes      39,176
 Scr. Overflow Mode       UNKNOWN
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -1320,13 +1320,13 @@ Scr. Write Count         0
 --- SQL operation complete.
 >>log;
 >>display statistics for qid current;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
-Execute Start Time       2015/06/29 21:03:52.099382
-Execute End Time         2015/06/29 21:03:52.111671
-Execute Elapsed Time                 0:00:00.012289
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
+Execute Start Time       2016/01/08 01:31:44.250011
+Execute End Time         2016/01/08 01:31:44.265892
+Execute Elapsed Time                 0:00:00.015881
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1344,7 +1344,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:52.109209
+First Row Returned Time  2016/01/08 01:31:44.264238
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1352,12 +1352,12 @@ No. of times reclaimed   0
 Cancel Time              -1
 Last Suspend Time        -1
 Stats Collection Type    PERTABLE_STATS
-SQL Process Busy Time    2,186
+SQL Process Busy Time    10,270
 UDR Process Busy Time    0
-SQL Space Allocated      832                       KB
-SQL Space Used           721                       KB
-SQL Heap Allocated       111                       KB
-SQL Heap Used            19                        KB
+SQL Space Allocated      896                       KB
+SQL Space Used           766                       KB
+SQL Heap Allocated       143                       KB
+SQL Heap Used            22                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -1365,9 +1365,9 @@ EID Heap Used            0                         KB
 Processes Created        0
 Process Create Time      0
 Request Message Count    27
-Request Message Bytes    42,336
-Reply Message Count      7
-Reply Message Bytes      36,360
+Request Message Bytes    40,304
+Reply Message Count      15
+Reply Message Bytes      39,176
 Scr. Overflow Mode       UNKNOWN
 Scr File Count           0
 Scr. Buffer Blk Size     0
@@ -1381,17 +1381,17 @@ Table Name
    Estimated/Actual   Estimated/Actual          IOs    IO MBytes           Sum Time           Max Time
 TRAFODION.SCH.TSTAT
                   0                100
-                  4                  4            4            0              8,560              4,334
+                  4                  4            4            0             10,676              5,701
 
 --- SQL operation complete.
 >>get statistics for qid current ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
-Execute Start Time       2015/06/29 21:03:52.099382
-Execute End Time         2015/06/29 21:03:52.111671
-Execute Elapsed Time                 0:00:00.012289
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
+Execute Start Time       2016/01/08 01:31:44.250011
+Execute End Time         2016/01/08 01:31:44.265892
+Execute Elapsed Time                 0:00:00.015881
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1409,7 +1409,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:52.109209
+First Row Returned Time  2016/01/08 01:31:44.264238
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1417,12 +1417,12 @@ No. of times reclaimed   0
 Cancel Time              -1
 Last Suspend Time        -1
 Stats Collection Type    PERTABLE_STATS
-SQL Process Busy Time    2,186
+SQL Process Busy Time    10,270
 UDR Process Busy Time    0
-SQL Space Allocated      832                       KB
-SQL Space Used           721                       KB
-SQL Heap Allocated       111                       KB
-SQL Heap Used            19                        KB
+SQL Space Allocated      896                       KB
+SQL Space Used           766                       KB
+SQL Heap Allocated       143                       KB
+SQL Heap Used            22                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -1430,9 +1430,9 @@ EID Heap Used            0                         KB
 Processes Created        0
 Process Create Time      0
 Request Message Count    27
-Request Message Bytes    42,336
-Reply Message Count      7
-Reply Message Bytes      36,360
+Request Message Bytes    40,304
+Reply Message Count      15
+Reply Message Bytes      39,176
 Scr. Overflow Mode       UNKNOWN
 Scr File Count           0
 Scr. Buffer Blk Size     0
@@ -1446,17 +1446,17 @@ Table Name
    Estimated/Actual   Estimated/Actual          IOs    IO MBytes           Sum Time           Max Time
 TRAFODION.SCH.TSTAT
                   0                100
-                  4                  4            4            0              8,560              4,334
+                  4                  4            4            0             10,676              5,701
 
 --- SQL operation complete.
 >>display statistics for qid current accumulated;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
-Execute Start Time       2015/06/29 21:03:52.099382
-Execute End Time         2015/06/29 21:03:52.111671
-Execute Elapsed Time                 0:00:00.012289
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
+Execute Start Time       2016/01/08 01:31:44.250011
+Execute End Time         2016/01/08 01:31:44.265892
+Execute Elapsed Time                 0:00:00.015881
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1474,7 +1474,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:52.109209
+First Row Returned Time  2016/01/08 01:31:44.264238
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1491,13 +1491,13 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   8,560
-SQL Process Busy Time    2,186
+Disk Process Busy Time   10,676
+SQL Process Busy Time    10,270
 UDR Process Busy Time    0
-SQL Space Allocated      832                       KB
-SQL Space Used           721                       KB
-SQL Heap Allocated       111                       KB
-SQL Heap Used            19                        KB
+SQL Space Allocated      896                       KB
+SQL Space Used           766                       KB
+SQL Heap Allocated       143                       KB
+SQL Heap Used            22                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -1507,9 +1507,9 @@ Open Time                0
 Processes Created        0
 Process Create Time      0
 Request Message Count    27
-Request Message Bytes    42,336
-Reply Message Count      7
-Reply Message Bytes      36,360
+Request Message Bytes    40,304
+Reply Message Count      15
+Reply Message Bytes      39,176
 Scr. Overflow Mode       UNKNOWN
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -1520,13 +1520,13 @@ Scr. Write Count         0
 
 --- SQL operation complete.
 >>get statistics for qid current accumulated;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_234_S1
-Compile Start Time       2015/06/29 21:03:43.120306
-Compile End Time         2015/06/29 21:03:43.162576
-Compile Elapsed Time                 0:00:00.042270
-Execute Start Time       2015/06/29 21:03:52.099382
-Execute End Time         2015/06/29 21:03:52.111671
-Execute Elapsed Time                 0:00:00.012289
+Qid                      MXID11000031097212318976647061576000000000206U3333300_458_S1
+Compile Start Time       2016/01/08 01:31:29.965462
+Compile End Time         2016/01/08 01:31:30.025241
+Compile Elapsed Time                 0:00:00.059779
+Execute Start Time       2016/01/08 01:31:44.250011
+Execute End Time         2016/01/08 01:31:44.265892
+Execute Elapsed Time                 0:00:00.015881
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1544,7 +1544,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:03:52.109209
+First Row Returned Time  2016/01/08 01:31:44.264238
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1561,13 +1561,13 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   8,560
-SQL Process Busy Time    2,186
+Disk Process Busy Time   10,676
+SQL Process Busy Time    10,270
 UDR Process Busy Time    0
-SQL Space Allocated      832                       KB
-SQL Space Used           721                       KB
-SQL Heap Allocated       111                       KB
-SQL Heap Used            19                        KB
+SQL Space Allocated      896                       KB
+SQL Space Used           766                       KB
+SQL Heap Allocated       143                       KB
+SQL Heap Used            22                        KB
 EID Space Allocated      0                         KB
 EID Space Used           0                         KB
 EID Heap Allocated       0                         KB
@@ -1577,9 +1577,9 @@ Open Time                0
 Processes Created        0
 Process Create Time      0
 Request Message Count    27
-Request Message Bytes    42,336
-Reply Message Count      7
-Reply Message Bytes      36,360
+Request Message Bytes    40,304
+Reply Message Count      15
+Reply Message Bytes      39,176
 Scr. Overflow Mode       UNKNOWN
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -1591,7 +1591,7 @@ Scr. Write Count         0
 --- SQL operation complete.
 >>log;
 >>obey PQIDOUT;
->>SET SESSION DEFAULT PARENT_QID 'MXID11000023719212302371786368792000000000206U3333300_234_S1';
+>>SET SESSION DEFAULT PARENT_QID 'MXID11000031097212318976647061576000000000206U3333300_458_S1';
 
 --- SQL operation complete.
 >>prepare s1 from select distinct d from tstat ;
@@ -1601,11 +1601,11 @@ Scr. Write Count         0
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_248_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_248_S1
-Compile Start Time       2015/06/29 21:03:58.083972
-Compile End Time         2015/06/29 21:03:58.085171
-Compile Elapsed Time                 0:00:00.001199
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_472_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_472_S1
+Compile Start Time       2016/01/08 01:31:52.476042
+Compile End Time         2016/01/08 01:31:52.478312
+Compile Elapsed Time                 0:00:00.002270
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -1617,7 +1617,7 @@ Query Type               SQL_SELECT_NON_UNIQUE
 Sub Query Type           SQL_STMT_NA
 Estimated Accessed Rows  0
 Estimated Used Rows      0
-Parent Qid               MXID11000023719212302371786368792000000000206U3333300_234_S1
+Parent Qid               MXID11000031097212318976647061576000000000206U3333300_458_S1
 Parent Query System      SAME
 Child Qid                NONE
 Number of SQL Processes  0
@@ -1636,11 +1636,11 @@ Last Suspend Time        -1
 Stats Collection Type    PERTABLE_STATS
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_248_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_248_S1
-Compile Start Time       2015/06/29 21:03:58.083972
-Compile End Time         2015/06/29 21:03:58.085171
-Compile Elapsed Time                 0:00:00.001199
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_472_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_472_S1
+Compile Start Time       2016/01/08 01:31:52.476042
+Compile End Time         2016/01/08 01:31:52.478312
+Compile Elapsed Time                 0:00:00.002270
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -1652,7 +1652,7 @@ Query Type               SQL_SELECT_NON_UNIQUE
 Sub Query Type           SQL_STMT_NA
 Estimated Accessed Rows  0
 Estimated Used Rows      0
-Parent Qid               MXID11000023719212302371786368792000000000206U3333300_234_S1
+Parent Qid               MXID11000031097212318976647061576000000000206U3333300_458_S1
 Parent Query System      SAME
 Child Qid                NONE
 Number of SQL Processes  0
@@ -1682,11 +1682,11 @@ Stats Collection Type    PERTABLE_STATS
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_250_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_250_S1
-Compile Start Time       2015/06/29 21:04:01.018963
-Compile End Time         2015/06/29 21:04:01.020001
-Compile Elapsed Time                 0:00:00.001038
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_474_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_474_S1
+Compile Start Time       2016/01/08 01:31:56.339516
+Compile End Time         2016/01/08 01:31:56.341298
+Compile Elapsed Time                 0:00:00.001782
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -1717,11 +1717,11 @@ Last Suspend Time        -1
 Stats Collection Type    PERTABLE_STATS
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_250_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_250_S1
-Compile Start Time       2015/06/29 21:04:01.018963
-Compile End Time         2015/06/29 21:04:01.020001
-Compile Elapsed Time                 0:00:00.001038
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_474_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_474_S1
+Compile Start Time       2016/01/08 01:31:56.339516
+Compile End Time         2016/01/08 01:31:56.341298
+Compile Elapsed Time                 0:00:00.001782
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -1768,11 +1768,11 @@ Stats Collection Type    PERTABLE_STATS
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -1803,11 +1803,11 @@ Last Suspend Time        -1
 Stats Collection Type    OPERATOR_STATS
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
 Execute Start Time       -1
 Execute End Time         -1
 Execute Elapsed Time                 0:00:00.000000
@@ -1854,14 +1854,14 @@ D
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1879,7 +1879,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1890,27 +1890,27 @@ Stats Collection Type    OPERATOR_STATS
 
 LC   RC   Id   PaId ExId Frag TDB Name                 DOP     Dispatches      Oper CPU Time  Est. Records Used  Act. Records Used    Details
 
-10   .    11   .    5    0    EX_ROOT                  1                5                 10                  0                  4 837
-9    .    10   11   4    0    EX_SPLIT_TOP             1                5                 18                  2                  4
-8    .    9    10   4    0    EX_SEND_TOP              2               10                809                  2                  4
-7    .    8    9    4    2    EX_SEND_BOTTOM           2               15                 13                  2                  4
-6    .    7    8    4    2    EX_SPLIT_BOTTOM          2                7                  9                  2                  4 1375
-5    .    6    7    3    2    EX_HASH_GRBY             2                6                853                  1                  4 0|0|0
-4    .    5    6    2    2    EX_SPLIT_TOP             2               11                 19                100                  4
-3    .    4    5    2    2    EX_SEND_TOP              4               18                481                100                  4
-2    .    3    4    2    3    EX_SEND_BOTTOM           4               22                126                100                  4
-1    .    2    3    2    3    EX_SPLIT_BOTTOM          2                8                 16                100                  4 142
-.    .    1    2    1    3    EX_TRAF_KEY_SELECT       6               12                  0                100                  4 TRAFODION.SCH.TSTAT|4|252
-
---- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 ;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+10   .    11   .    5    0    EX_ROOT                  1                5                 21                  0                  4 1772
+9    .    10   11   4    0    EX_SPLIT_TOP             1                5                 37                  2                  4
+8    .    9    10   4    0    EX_SEND_TOP              2               10              1,714                  2                  4
+7    .    8    9    4    2    EX_SEND_BOTTOM           2               17                304                  2                  4
+6    .    7    8    4    2    EX_SPLIT_BOTTOM          2                7                 54                  2                  4 5738
+5    .    6    7    3    2    EX_HASH_GRBY             2                6              3,746                  1                  4 0|0|0
+4    .    5    6    2    2    EX_SPLIT_TOP             2               11                 65                100                  4
+3    .    4    5    2    2    EX_SEND_TOP              4               18              1,569                100                  4
+2    .    3    4    2    3    EX_SEND_BOTTOM           4               24                408                100                  4
+1    .    2    3    2    3    EX_SPLIT_BOTTOM          2                8                 64                100                  4 7585
+.    .    1    2    1    3    EX_TRAF_KEY_SELECT       6               12             21,339                100                  4 TRAFODION.SCH.TSTAT|4|120
+
+--- SQL operation complete.
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 ;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1928,7 +1928,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1939,31 +1939,31 @@ Stats Collection Type    OPERATOR_STATS
 
 LC   RC   Id   PaId ExId Frag TDB Name                 DOP     Dispatches      Oper CPU Time  Est. Records Used  Act. Records Used    Details
 
-10   .    11   .    5    0    EX_ROOT                  1                5                 10                  0                  4 837
-9    .    10   11   4    0    EX_SPLIT_TOP             1                5                 18                  2                  4
-8    .    9    10   4    0    EX_SEND_TOP              2               10                809                  2                  4
-7    .    8    9    4    2    EX_SEND_BOTTOM           2               15                 13                  2                  4
-6    .    7    8    4    2    EX_SPLIT_BOTTOM          2                7                  9                  2                  4 1375
-5    .    6    7    3    2    EX_HASH_GRBY             2                6                853                  1                  4 0|0|0
-4    .    5    6    2    2    EX_SPLIT_TOP             2               11                 19                100                  4
-3    .    4    5    2    2    EX_SEND_TOP              4               18                481                100                  4
-2    .    3    4    2    3    EX_SEND_BOTTOM           4               22                126                100                  4
-1    .    2    3    2    3    EX_SPLIT_BOTTOM          2                8                 16                100                  4 142
-.    .    1    2    1    3    EX_TRAF_KEY_SELECT       6               12                  0                100                  4 TRAFODION.SCH.TSTAT|4|252
+10   .    11   .    5    0    EX_ROOT                  1                5                 21                  0                  4 1772
+9    .    10   11   4    0    EX_SPLIT_TOP             1                5                 37                  2                  4
+8    .    9    10   4    0    EX_SEND_TOP              2               10              1,714                  2                  4
+7    .    8    9    4    2    EX_SEND_BOTTOM           2               17                304                  2                  4
+6    .    7    8    4    2    EX_SPLIT_BOTTOM          2                7                 54                  2                  4 5738
+5    .    6    7    3    2    EX_HASH_GRBY             2                6              3,746                  1                  4 0|0|0
+4    .    5    6    2    2    EX_SPLIT_TOP             2               11                 65                100                  4
+3    .    4    5    2    2    EX_SEND_TOP              4               18              1,569                100                  4
+2    .    3    4    2    3    EX_SEND_BOTTOM           4               24                408                100                  4
+1    .    2    3    2    3    EX_SPLIT_BOTTOM          2                8                 64                100                  4 7585
+.    .    1    2    1    3    EX_TRAF_KEY_SELECT       6               12             21,339                100                  4 TRAFODION.SCH.TSTAT|4|120
 
 --- SQL operation complete.
 >>log;
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 ACCUMULATED;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 ACCUMULATED;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -1981,7 +1981,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -1998,8 +1998,8 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   8,239
-SQL Process Busy Time    2,354
+Disk Process Busy Time   13,460
+SQL Process Busy Time    15,095
 UDR Process Busy Time    0
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
@@ -2014,9 +2014,9 @@ Open Time                0
 Processes Created        0
 Process Create Time      0
 Request Message Count    28
-Request Message Bytes    42,496
-Reply Message Count      7
-Reply Message Bytes      39,544
+Request Message Bytes    40,464
+Reply Message Count      15
+Reply Message Bytes      42,360
 Scr. Overflow Mode       MMAP
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -2026,14 +2026,14 @@ Scr. Read Count          0
 Scr. Write Count         0
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 ACCUMULATED;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 ACCUMULATED;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -2051,7 +2051,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -2068,8 +2068,8 @@ Disk IOs                 4
 Lock Waits               0
 Lock Escalations         0
 Message Redrive Attempts 0
-Disk Process Busy Time   8,239
-SQL Process Busy Time    2,354
+Disk Process Busy Time   13,460
+SQL Process Busy Time    15,095
 UDR Process Busy Time    0
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
@@ -2084,9 +2084,9 @@ Open Time                0
 Processes Created        0
 Process Create Time      0
 Request Message Count    28
-Request Message Bytes    42,496
-Reply Message Count      7
-Reply Message Bytes      39,544
+Request Message Bytes    40,464
+Reply Message Count      15
+Reply Message Bytes      42,360
 Scr. Overflow Mode       MMAP
 Scr. File Count          0
 Scr. Buffer Blk Size     0
@@ -2100,14 +2100,14 @@ Scr. Write Count         0
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 PERTABLE;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 PERTABLE;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -2125,7 +2125,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -2133,7 +2133,7 @@ No. of times reclaimed   0
 Cancel Time              -1
 Last Suspend Time        -1
 Stats Collection Type    OPERATOR_STATS
-SQL Process Busy Time    2,354
+SQL Process Busy Time    15,095
 UDR Process Busy Time    0
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
@@ -2146,9 +2146,9 @@ EID Heap Used            0                         KB
 Processes Created        0
 Process Create Time      0
 Request Message Count    28
-Request Message Bytes    42,496
-Reply Message Count      7
-Reply Message Bytes      39,544
+Request Message Bytes    40,464
+Reply Message Count      15
+Reply Message Bytes      42,360
 Scr. Overflow Mode       MMAP
 Scr File Count           0
 Scr. Buffer Blk Size     0
@@ -2162,17 +2162,17 @@ Table Name
    Estimated/Actual   Estimated/Actual          IOs    IO MBytes           Sum Time           Max Time
 TRAFODION.SCH.TSTAT
                   0                100
-                  4                  4            4            0              8,239              4,278
+                  4                  4            4            0             13,460              7,041
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 PERTABLE;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 PERTABLE;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -2190,7 +2190,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -2198,7 +2198,7 @@ No. of times reclaimed   0
 Cancel Time              -1
 Last Suspend Time        -1
 Stats Collection Type    OPERATOR_STATS
-SQL Process Busy Time    2,354
+SQL Process Busy Time    15,095
 UDR Process Busy Time    0
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
@@ -2211,9 +2211,9 @@ EID Heap Used            0                         KB
 Processes Created        0
 Process Create Time      0
 Request Message Count    28
-Request Message Bytes    42,496
-Reply Message Count      7
-Reply Message Bytes      39,544
+Request Message Bytes    40,464
+Reply Message Count      15
+Reply Message Bytes      42,360
 Scr. Overflow Mode       MMAP
 Scr File Count           0
 Scr. Buffer Blk Size     0
@@ -2227,21 +2227,21 @@ Table Name
    Estimated/Actual   Estimated/Actual          IOs    IO MBytes           Sum Time           Max Time
 TRAFODION.SCH.TSTAT
                   0                100
-                  4                  4            4            0              8,239              4,278
+                  4                  4            4            0             13,460              7,041
 
 --- SQL operation complete.
 >>log;
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 PROGRESS;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 PROGRESS;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -2259,7 +2259,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -2267,7 +2267,7 @@ No. of times reclaimed   0
 Cancel Time              -1
 Last Suspend Time        -1
 Stats Collection Type    OPERATOR_STATS
-SQL Process Busy Time    2,354
+SQL Process Busy Time    15,095
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
 SQL Heap Allocated       143                       KB
@@ -2279,29 +2279,29 @@ EID Heap Used            0                         KB
 Processes Created        0
 Process Create Time      0
 Request Message Count    28
-Request Message Bytes    42,496
-Reply Message Count      7
-Reply Message Bytes      39,544
+Request Message Bytes    40,464
+Reply Message Count      15
+Reply Message Bytes      42,360
 
 Table Name
    Records Accessed       Records Used   HBase/Hive   HBase/Hive      HBase/Hive IO      HBase/Hive IO
    Estimated/Actual   Estimated/Actual          IOs    IO MBytes           Sum Time           Max Time
 TRAFODION.SCH.TSTAT
                   0                100
-                  4                  4            4            0              8,239              4,278
+                  4                  4            4            0             13,460              7,041
 
    Id TDB Name                           Mode            CPU Time  BMO Heap Used BMO Heap Total    BMO Heap WM  BMO Space BufSz BMO Space BufCnt  File Count       Scratch Buffer Block Size/Read/Written                 Scratch IO Count Read/Written
-    6 EX_HASH_GRBY                       MMAP                 853              4          1,024          7,687              256                0           0        -1                  0                  0                  0                  0
+    6 EX_HASH_GRBY                       MMAP               3,746              4          1,024          7,687              256                0           0        -1                  0                  0                  0                  0
 
 --- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 PROGRESS;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+>>get statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 PROGRESS;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -2319,7 +2319,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -2327,7 +2327,7 @@ No. of times reclaimed   0
 Cancel Time              -1
 Last Suspend Time        -1
 Stats Collection Type    OPERATOR_STATS
-SQL Process Busy Time    2,354
+SQL Process Busy Time    15,095
 SQL Space Allocated      896                       KB
 SQL Space Used           766                       KB
 SQL Heap Allocated       143                       KB
@@ -2339,33 +2339,33 @@ EID Heap Used            0                         KB
 Processes Created        0
 Process Create Time      0
 Request Message Count    28
-Request Message Bytes    42,496
-Reply Message Count      7
-Reply Message Bytes      39,544
+Request Message Bytes    40,464
+Reply Message Count      15
+Reply Message Bytes      42,360
 
 Table Name
    Records Accessed       Records Used   HBase/Hive   HBase/Hive      HBase/Hive IO      HBase/Hive IO
    Estimated/Actual   Estimated/Actual          IOs    IO MBytes           Sum Time           Max Time
 TRAFODION.SCH.TSTAT
                   0                100
-                  4                  4            4            0              8,239              4,278
+                  4                  4            4            0             13,460              7,041
 
    Id TDB Name                           Mode            CPU Time  BMO Heap Used BMO Heap Total    BMO Heap WM  BMO Space BufSz BMO Space BufCnt  File Count       Scratch Buffer Block Size/Read/Written                 Scratch IO Count Read/Written
-    6 EX_HASH_GRBY                       MMAP                 853              4          1,024          7,687              256                0           0        -1                  0                  0                  0                  0
+    6 EX_HASH_GRBY                       MMAP               3,746              4          1,024          7,687              256                0           0        -1                  0                  0                  0                  0
 
 --- SQL operation complete.
 >>log;
 >>SET SESSION DEFAULT STATISTICS_VIEW_TYPE 'DEFAULT' ;
 
 --- SQL operation complete.
->>display statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 DEFAULT;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+>>display statistics for QID MXID11000031097212318976647061576000000000206U3333300_477_S1 DEFAULT;
+Qid                      MXID11000031097212318976647061576000000000206U3333300_477_S1
+Compile Start Time       2016/01/08 01:32:06.677868
+Compile End Time         2016/01/08 01:32:06.755083
+Compile Elapsed Time                 0:00:00.077215
+Execute Start Time       2016/01/08 01:32:10.706683
+Execute End Time         2016/01/08 01:32:10.727612
+Execute Elapsed Time                 0:00:00.020929
 State                    CLOSE
 Rows Affected            0
 SQL Error Code           100
@@ -2383,7 +2383,7 @@ Transaction Id           -1
 Source String            select distinct d from tstat ;
 SQL Source Length        30
 Rows Returned            4
-First Row Returned Time  2015/06/29 21:04:12.887469
+First Row Returned Time  2016/01/08 01:32:10.724514
 Last Error before AQR    0
 Number of AQR retries    0
 Delay before AQR         0
@@ -2394,27 +2394,27 @@ Stats Collection Type    OPERATOR_STATS
 
 LC   RC   Id   PaId ExId Frag TDB Name                 DOP     Dispatches      Oper CPU Time  Est. Records Used  Act. Records Used    Details
 
-10   .    11   .    5    0    EX_ROOT                  1                5                 10                  0                  4 837
-9    .    10   11   4    0    EX_SPLIT_TOP             1                5                 18                  2                  4
-8    .    9    10   4    0    EX_SEND_TOP              2               10                809                  2                  4
-7    .    8    9    4    2    EX_SEND_BOTTOM           2               15                 13                  2                  4
-6    .    7    8    4    2    EX_SPLIT_BOTTOM          2                7                  9                  2                  4 1375
-5    .    6    7    3    2    EX_HASH_GRBY             2                6                853                  1                  4 0|0|0
-4    .    5    6    2    2    EX_SPLIT_TOP             2               11                 19                100                  4
-3    .    4    5    2    2    EX_SEND_TOP              4               18                481                100                  4
-2    .    3    4    2    3    EX_SEND_BOTTOM           4               22                126                100                  4
-1    .    2    3    2    3    EX_SPLIT_BOTTOM          2                8                 16                100                  4 142
-.    .    1    2    1    3    EX_TRAF_KEY_SELECT       6               12                  0                100                  4 TRAFODION.SCH.TSTAT|4|252
-
---- SQL operation complete.
->>get statistics for QID MXID11000023719212302371786368792000000000206U3333300_253_S1 DEFAULT;
-Qid                      MXID11000023719212302371786368792000000000206U3333300_253_S1
-Compile Start Time       2015/06/29 21:04:06.927371
-Compile End Time         2015/06/29 21:04:06.970327
-Compile Elapsed Time                 0:00:00.042956
-Execute Start Time       2015/06/29 21:04:12.877393
-Execute End Time         2015/06/29 21:04:12.889066
-Execute Elapsed Time                 0:00:00.011673
+10   .    11   .    5    0    EX_ROOT                  1                5                 21                  0                  4 1772
+9    .    10   11   4    0    EX_SPLIT_TOP             1                5                 37                  2                  4
+8    .    9    10   4    0    EX_SEND_TOP              2               10              1,714                  2                  4
+7    .    8    9    4    2    EX_SEND_BOTTOM           2               17                304                  2                  4
+6    .    7    8    4    2    EX_SPLIT_BOTTOM          2                7                 54                  2                  4 5738
+5    .    6    7    3    2    EX_HASH_GRBY             2                6              3,746                  1                  4 0|0|0
+4    .    5    6    2    2    EX_SPLIT_TOP             2               11                 65                100                  4
+3    .    4    5    2    2    EX_SEND_TOP              4               18              1,569                100                  4
+2    .    3    4    2    3    EX_SEND_BOTTOM           4               24                408                100                  4
+1    .    2    3    2    3    EX_SPLIT_BOTTOM          2                8                 64                100                  4 7585
+.    .    1    2    1    3    EX_TRAF_KEY_SELECT       6               12             21,339                100                  4 TRAFODION.SCH.TSTAT|4|120
+


<TRUNCATED>


[11/15] incubator-trafodion git commit: fix logical issue introduced after the rework on isAddedColumnWithNonNullDefault (check for ITM_BASECOLUMN or ITM_INDEXCOLUMN before checking if it is not an added column with non null default).

Posted by hz...@apache.org.
fix logical issue introduced after the rework on isAddedColumnWithNonNullDefault (check for ITM_BASECOLUMN or ITM_INDEXCOLUMN before checking if it is not an added column with non null default).


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/e1cdc430
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/e1cdc430
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/e1cdc430

Branch: refs/heads/master
Commit: e1cdc43006b97b28813ec7658d8f7c80afea3fb5
Parents: 279e540
Author: Eric Owhadi <er...@esgyn.com>
Authored: Tue Jan 19 14:25:14 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Tue Jan 19 14:25:14 2016 +0000

----------------------------------------------------------------------
 core/sql/generator/GenPreCode.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/e1cdc430/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index fe012b8..b7c9ef2 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -11839,7 +11839,8 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
                   retColRefSet_.advance(vid))
           {
             if (originExePreds->isNotNullable(vid)){// it is non nullable
-                if (!vid.isAddedColumnWithNonNullDefault()){//check if  added and  with default... notgood
+                OperatorTypeEnum operatorType = vid.getItemExpr()->getOperatorType();
+                if ((operatorType == ITM_BASECOLUMN || operatorType == ITM_INDEXCOLUMN) && !vid.isAddedColumnWithNonNullDefault()){//check if  added and  with default... notgood
                     needAddingNonNullableColumn = false; // we found one column meeting all criteria
                     break;
                 }


[07/15] incubator-trafodion git commit: Fix issue where optimization on key column addition should be turned off for MDAM scans, and update EXPECTEDTESTRTS to showcase the new value expected as byte read showing a 53% improvement over previous code

Posted by hz...@apache.org.
Fix issue where optimization on key column addition should be turned off for MDAM scans, and update EXPECTEDTESTRTS to showcase the new value expected as byte read showing a 53% improvement over previous code


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/90795250
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/90795250
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/90795250

Branch: refs/heads/master
Commit: 90795250785f50cc0538284f22b1b8589a84734a
Parents: 38573bf
Author: Eric Owhadi <er...@esgyn.com>
Authored: Fri Jan 8 15:05:38 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Fri Jan 8 15:05:38 2016 +0000

----------------------------------------------------------------------
 core/sql/generator/GenPreCode.cpp |    2 +-
 core/sql/regress/core/EXPECTEDRTS | 1390 ++++++++++++++++----------------
 2 files changed, 696 insertions(+), 696 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/90795250/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index 28bff1c..4cf0ba0 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -11928,7 +11928,7 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
       // value is needed to retrieve a row.
       //only if needed. If there is already a non nullable non added non nullable with default columns in the set, we should not need to add
       //any other columns.
-      if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_MEDIUM){ //only enable column retrieval optimization with DF_MEDIUM
+      if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_MEDIUM && getMdamKeyPtr() == NULL){ //only enable column retrieval optimization with DF_MEDIUM and not for MDAM scan
           bool needAddingNonNullableColumn = true; //assume we need to add one non nullable column
 		  for (ValueId vid = retColRefSet_.init();// look for each column in th eresult set if one match the criteria non null non added non nullable with default
 				  retColRefSet_.next(vid);


[15/15] incubator-trafodion git commit: [TRAFODION-1662] Predicate push down revisited (V2)

Posted by hz...@apache.org.
[TRAFODION-1662] Predicate push down revisited (V2)


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/ff4b7dd7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/ff4b7dd7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/ff4b7dd7

Branch: refs/heads/master
Commit: ff4b7dd730f1b4d7be24da30e32ff4e4d189011c
Parents: 4550081 7892af2
Author: Hans Zeller <hz...@apache.org>
Authored: Fri Jan 22 01:04:27 2016 +0000
Committer: Hans Zeller <hz...@apache.org>
Committed: Fri Jan 22 01:04:27 2016 +0000

----------------------------------------------------------------------
 core/sql/executor/ExHbaseAccess.cpp             |   75 +-
 core/sql/generator/GenExplain.cpp               |  261 ++++
 core/sql/generator/GenPreCode.cpp               |  481 +++++-
 core/sql/generator/GenRelScan.cpp               |    3 +-
 core/sql/optimizer/RelScan.h                    |   10 +
 core/sql/optimizer/ValueDesc.cpp                |   32 +-
 core/sql/optimizer/ValueDesc.h                  |    5 +
 core/sql/regress/core/EXPECTEDRTS               | 1390 +++++++++---------
 core/sql/regress/executor/EXPECTED140           |  911 ++++++++++++
 core/sql/regress/executor/FILTER140             |   42 +
 core/sql/regress/executor/TEST140               |   96 ++
 core/sql/regress/seabase/EXPECTED010            |  454 +++---
 core/sql/regress/seabase/EXPECTED011            |   22 +-
 core/sql/regress/seabase/EXPECTED016            |  161 +-
 core/sql/regress/tools/runregr_core.ksh         |    2 +-
 core/sql/regress/tools/runregr_executor.ksh     |    2 +-
 core/sql/regress/tools/sbdefs                   |    2 +-
 core/sql/sqlcomp/DefaultConstants.h             |    2 +-
 core/sql/sqlcomp/nadefaults.cpp                 |   17 +
 .../java/org/trafodion/sql/HTableClient.java    |  571 ++++++-
 20 files changed, 3483 insertions(+), 1056 deletions(-)
----------------------------------------------------------------------



[09/15] incubator-trafodion git commit: following code review outcome on pull request 255: - for all files, fix tab with white space - ExHbaseAccess.cpp, add comment - Initialize nac in file GenPreCode.cpp, line 11938 and 11417 - Remove checks for ITM_RE

Posted by hz...@apache.org.
following code review outcome on pull request 255:
- for all files, fix tab with white space
- ExHbaseAccess.cpp, add comment
- Initialize nac in file GenPreCode.cpp, line 11938 and 11417
- Remove checks for ITM_REFERENCE (used only in parser/binder). File GenPreCode.cpp
- Remove isFirstAndLayer code in recursive function generating the predicate to push down in RPN
- add comments in ValueDesc.cpp
- fix indentation in HTableClient.java
- Fix 4 buffer overrun vulnerability in GenExplain.cpp
- create a reusable isAddedColumnWithNonNullDefault in ValueId class. (ValueDesc.cpp and .h)


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/f7aaa280
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/f7aaa280
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/f7aaa280

Branch: refs/heads/master
Commit: f7aaa280a8f85c685ee6a1cfc52553f6a1ec98f6
Parents: 9079525
Author: Eric Owhadi <er...@esgyn.com>
Authored: Fri Jan 15 15:51:04 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Fri Jan 15 15:51:04 2016 +0000

----------------------------------------------------------------------
 core/sql/executor/ExHbaseAccess.cpp             |   67 +-
 core/sql/generator/GenExplain.cpp               |  479 ++++----
 core/sql/generator/GenPreCode.cpp               |  715 +++++-------
 core/sql/optimizer/RelScan.h                    |   12 +-
 core/sql/optimizer/ValueDesc.cpp                |   35 +-
 core/sql/optimizer/ValueDesc.h                  |    5 +
 core/sql/regress/executor/EXPECTED140           |   36 +-
 core/sql/regress/executor/FILTER140             |    2 +-
 core/sql/regress/executor/TEST140               |    6 +-
 core/sql/sqlcomp/nadefaults.cpp                 |   30 +-
 .../java/org/trafodion/sql/HTableClient.java    | 1078 +++++++++---------
 11 files changed, 1186 insertions(+), 1279 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/executor/ExHbaseAccess.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHbaseAccess.cpp b/core/sql/executor/ExHbaseAccess.cpp
index e229d2b..188d270 100644
--- a/core/sql/executor/ExHbaseAccess.cpp
+++ b/core/sql/executor/ExHbaseAccess.cpp
@@ -2809,49 +2809,50 @@ short ExHbaseAccessTcb::setupHbaseFilterPreds()
     return 0;
 
   if (hbaseFilterValExpr()){// with pushdown V2 it can be null if we have only unary operation
-		  ex_queue_entry *pentry_down = qparent_.down->getHeadEntry();
+          ex_queue_entry *pentry_down = qparent_.down->getHeadEntry();
 
-		  workAtp_->getTupp(hbaseAccessTdb().hbaseFilterValTuppIndex_)
-			.setDataPointer(hbaseFilterValRow_);
+          workAtp_->getTupp(hbaseAccessTdb().hbaseFilterValTuppIndex_)
+            .setDataPointer(hbaseFilterValRow_);
 
-		  ex_expr::exp_return_type evalRetCode =
-			hbaseFilterValExpr()->eval(pentry_down->getAtp(), workAtp_);
-		  if (evalRetCode == ex_expr::EXPR_ERROR)
-			{
-			  return -1;
-			}
+          ex_expr::exp_return_type evalRetCode =
+            hbaseFilterValExpr()->eval(pentry_down->getAtp(), workAtp_);
+          if (evalRetCode == ex_expr::EXPR_ERROR)
+            {
+              return -1;
+            }
 
-		  ExpTupleDesc * hfrTD =
-			hbaseAccessTdb().workCriDesc_->getTupleDescriptor
-			(hbaseAccessTdb().hbaseFilterValTuppIndex_);
+          ExpTupleDesc * hfrTD =
+            hbaseAccessTdb().workCriDesc_->getTupleDescriptor
+            (hbaseAccessTdb().hbaseFilterValTuppIndex_);
 
-		  hbaseFilterValues_.clear();
-		  for (Lng32 i = 0; i <  hfrTD->numAttrs(); i++)
-			{
-			  Attributes * attr = hfrTD->getAttr(i);
+          hbaseFilterValues_.clear();
+          //for each evaluated value, populate the corresponding hBaseFilterValue
+          for (Lng32 i = 0; i <  hfrTD->numAttrs(); i++)
+          {
+              Attributes * attr = hfrTD->getAttr(i);
 
-			  if (attr)
-			{
-			  NAString value(getHeap());
-			  if (attr->getNullFlag())
-				{
-				  char nullValChar = 0;
+            if (attr)
+                {
+                  NAString value(getHeap());
+                  if (attr->getNullFlag())
+                    {
+                      char nullValChar = 0;
 
-				  short nullVal = *(short*)&hbaseFilterValRow_[attr->getNullIndOffset()];
+                      short nullVal = *(short*)&hbaseFilterValRow_[attr->getNullIndOffset()];
 
-				  if (nullVal)
-				nullValChar = -1;
-				  value.append((char*)&nullValChar, sizeof(char));
-				}
+                      if (nullVal)
+                          nullValChar = -1;
+                      value.append((char*)&nullValChar, sizeof(char));
+                    }
 
-			  char * colVal = &hbaseFilterValRow_[attr->getOffset()];
+                  char * colVal = &hbaseFilterValRow_[attr->getOffset()];
 
-			  value.append(colVal,
-					   attr->getLength(&hbaseFilterValRow_[attr->getVCLenIndOffset()]));
+                  value.append(colVal,
+                           attr->getLength(&hbaseFilterValRow_[attr->getVCLenIndOffset()]));
 
-			  hbaseFilterValues_.insert(value);
-			}
-			}
+                  hbaseFilterValues_.insert(value);
+                }
+            }
   }
   setupListOfColNames(hbaseAccessTdb().listOfHbaseFilterColNames(),
 		      hbaseFilterColumns_);

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/generator/GenExplain.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenExplain.cpp b/core/sql/generator/GenExplain.cpp
index e79f9fc..7f8c8b4 100644
--- a/core/sql/generator/GenExplain.cpp
+++ b/core/sql/generator/GenExplain.cpp
@@ -662,264 +662,247 @@ FileScan::addSpecificExplainInfo(ExplainTupleMaster *explainTuple,
 
 static void appendListOfColumns(Queue* listOfColNames,ComTdb *tdb, NAString& outNAString){
 
-	if (((ComTdbHbaseAccess*)tdb)->sqHbaseTable()){// if trafodion table
-	  char buf[1000];
+    if (((ComTdbHbaseAccess*)tdb)->sqHbaseTable()){// if trafodion table
+      char buf[1000];
 
-	  listOfColNames->position();
-	  for (Lng32 j = 0; j < listOfColNames->numEntries(); j++)
-	    {
-	      char * currPtr = (char*)listOfColNames->getCurr();
-
-	      Lng32 currPos = 0;
-	      Lng32 jj = 0;
-	      short colNameLen = *(short*)currPtr;
-	      currPos += sizeof(short);
-	      char colFam[100];
-	      while (currPtr[currPos] != ':')
-		{
-		  colFam[jj] = currPtr[currPos];
-		  currPos++;
-		  jj++;
-		}
-	      colFam[jj] = ':';
-	      jj++;
-	      currPos++;
-	      colFam[jj] = 0;
-	      colNameLen -= jj;
-
-	      NABoolean withAt = FALSE;
-	      char * colName = &currPtr[currPos];
-	      if (colName[0] == '@')
-		{
-		  colNameLen--;
-		  colName++;
-		  withAt = TRUE;
-		}
+      listOfColNames->position();
+      for (Lng32 j = 0; j < listOfColNames->numEntries(); j++)
+        {
+          char * currPtr = (char*)listOfColNames->getCurr();
+
+          Lng32 currPos = 0;
+          Lng32 jj = 0;
+          short colNameLen = *(short*)currPtr;
+          currPos += sizeof(short);
+          char colFam[100];
+          while (currPtr[currPos] != ':')
+          {
+            currPos++;
+            jj++;
+          }
+          jj++;
+          currPos++;
+          snprintf(colFam,sizeof(colFam),"%.*s",jj,currPtr+sizeof(short));
+          colNameLen -= jj;
+
+          NABoolean withAt = FALSE;
+          char * colName = &currPtr[currPos];
+          if (colName[0] == '@')
+        {
+          colNameLen--;
+          colName++;
+          withAt = TRUE;
+        }
 
-	      Int64 v;
-	      if (colNameLen == sizeof(char))
-		v = *(char*)colName;
-	      else if (colNameLen == sizeof(unsigned short))
-		v = *(UInt16*)colName;
-	      else if (colNameLen == sizeof(Lng32))
-		v = *(ULng32*)colName;
-	      else
-		v = 0;
-	      if (j==0)
-		      str_sprintf(buf, "%s%s%Ld",
-				  colFam,
-				  (withAt ? "@" : ""),
-				  v);
-	      else
-			  str_sprintf(buf, ",%s%s%Ld",
-				  colFam,
-				  (withAt ? "@" : ""),
-				  v);
-
-	      outNAString += buf;
-
-	      listOfColNames->advance();
-	    } // for
-	}// trafodion tables
-	else
-	{// if hbase native tables
-	  char buf[1000];
-
-	  listOfColNames->position();
-	  for (Lng32 j = 0; j < listOfColNames->numEntries(); j++)
-	    {
-	      char * currPtr = (char*)listOfColNames->getCurr();
+          Int64 v;
+          if (colNameLen == sizeof(char))
+        v = *(char*)colName;
+          else if (colNameLen == sizeof(unsigned short))
+        v = *(UInt16*)colName;
+          else if (colNameLen == sizeof(Lng32))
+        v = *(ULng32*)colName;
+          else
+        v = 0;
+          if (j==0)
+              str_sprintf(buf, "%s%s%Ld",
+                  colFam,
+                  (withAt ? "@" : ""),
+                  v);
+          else
+              str_sprintf(buf, ",%s%s%Ld",
+                  colFam,
+                  (withAt ? "@" : ""),
+                  v);
 
-	      char * colNamePtr = NULL;
+          outNAString += buf;
 
-		  Lng32 currPos = 0;
-		  short colNameLen = *(short*)currPtr;
-		  currPos += sizeof(short);
-		  char colName[500];
+          listOfColNames->advance();
+        } // for
+    }// trafodion tables
+    else
+    {// if hbase native tables
+      char buf[1000];
 
-		  for (Lng32 i = 0; i < colNameLen; i++)
-		    {
-		      colName[i] = currPtr[currPos];
-		      currPos++;
-		    }
+      listOfColNames->position();
+      for (Lng32 j = 0; j < listOfColNames->numEntries(); j++)
+        {
+          char * currPtr = (char*)listOfColNames->getCurr();
 
-		  colName[colNameLen] = 0;
+          char * colNamePtr = NULL;
 
-		  colNamePtr = colName;
+          Lng32 currPos = 0;
+          short colNameLen = *(short*)currPtr;
+          currPos += sizeof(short);
+          char colName[500];
+          snprintf(colName,sizeof(colName),"%.*s",colNameLen,currPtr+sizeof(short));
+          colNamePtr = colName;
 
-		  if (j==0)
-			  str_sprintf(buf, "%s",colNamePtr);
-		  else
-			  str_sprintf(buf, ",%s",colNamePtr);
+          if (j==0)
+              str_sprintf(buf, "%s",colNamePtr);
+          else
+              str_sprintf(buf, ",%s",colNamePtr);
 
 
-		  outNAString += buf;
+          outNAString += buf;
 
-	      listOfColNames->advance();
-	    } // for
+          listOfColNames->advance();
+        } // for
 
-	}// hbase native table
-	outNAString +=" ";
+    }// hbase native table
+    outNAString +=" ";
 }
 
 static void appendPushedDownExpression(ComTdb *tdb, NAString& outNAString){
-	// in predicate pushdown V2, the hbaseCompareOps list contains a reverse polish set of operation, were operators are
-	// AND or OR, the rest are operands. this function display the column, operator and replace any constant with ?. it keeps reverse polish format
-	// this can be improved in the future for better readability.
-	char buf[1000];
-	Queue* reversePolishItems = ((ComTdbHbaseAccess *)tdb)->listOfHbaseCompareOps();
-	Queue* pushedDownColumns = ((ComTdbHbaseAccess *)tdb)->listOfHbaseFilterColNames();
-	reversePolishItems->position();
-	pushedDownColumns->position();
-
-	for (Lng32 j = 0; j < reversePolishItems->numEntries(); j++){
-		char * currPtr = (char*)reversePolishItems->getCurr();
-		char buf2[1000];
-		if (strcmp(currPtr,"V2")!=0 && strcmp(currPtr,"AND")!=0 && strcmp(currPtr,"OR")!=0){//if an operand (not an operator or V2 marker), get the column name
-			if (((ComTdbHbaseAccess*)tdb)->sqHbaseTable()){// if trafodion table
-				char * currPtr2 = (char*)pushedDownColumns->getCurr();
-			      Lng32 currPos = 0;
-			      Lng32 jj = 0;
-			      short colNameLen = *(short*)currPtr2;
-			      currPos += sizeof(short);
-			      char colFam[100];
-			      while (currPtr2[currPos] != ':')
-				{
-				  colFam[jj] = currPtr2[currPos];
-				  currPos++;
-				  jj++;
-				}
-			      colFam[jj] = ':';
-			      jj++;
-			      currPos++;
-			      colFam[jj] = 0;
-			      colNameLen -= jj;
-
-			      NABoolean withAt = FALSE;
-			      char * colName = &currPtr2[currPos];
-			      if (colName[0] == '@')
-				{
-				  colNameLen--;
-				  colName++;
-				  withAt = TRUE;
-				}
-			      Int64 v;
-			      if (colNameLen == sizeof(char))
-				v = *(char*)colName;
-			      else if (colNameLen == sizeof(unsigned short))
-				v = *(UInt16*)colName;
-			      else if (colNameLen == sizeof(Lng32))
-				v = *(ULng32*)colName;
-			      else
-				v = 0;
-				  str_sprintf(buf2, "%s%s%Ld",
-					  colFam,
-					  (withAt ? "@" : ""),
-					  v);
-
-			}else{//native hbase table
-				 char * currPtr2 = (char*)pushedDownColumns->getCurr();
-			      char * colNamePtr1 = NULL;
-				  Lng32 currPos = 0;
-				  short colNameLen = *(short*)currPtr2;
-				  currPos += sizeof(short);
-				  char colName[500];
-				  for (Lng32 i = 0; i < colNameLen; i++)
-				    {
-				      colName[i] = currPtr2[currPos];
-				      currPos++;
-				    }
-				  colName[colNameLen] = 0;
-				  colNamePtr1 = colName;
-				  str_sprintf(buf2, "%s",colNamePtr1);
-			}
-			pushedDownColumns->advance();
-		}
+    // in predicate pushdown V2, the hbaseCompareOps list contains a reverse polish set of operation, were operators are
+    // AND or OR, the rest are operands. this function display the column, operator and replace any constant with ?. it keeps reverse polish format
+    // this can be improved in the future for better readability.
+    char buf[1000];
+    Queue* reversePolishItems = ((ComTdbHbaseAccess *)tdb)->listOfHbaseCompareOps();
+    Queue* pushedDownColumns = ((ComTdbHbaseAccess *)tdb)->listOfHbaseFilterColNames();
+    reversePolishItems->position();
+    pushedDownColumns->position();
+
+    for (Lng32 j = 0; j < reversePolishItems->numEntries(); j++){
+        char * currPtr = (char*)reversePolishItems->getCurr();
+        char buf2[1000];
+        if (strcmp(currPtr,"V2")!=0 && strcmp(currPtr,"AND")!=0 && strcmp(currPtr,"OR")!=0){//if an operand (not an operator or V2 marker), get the column name
+            if (((ComTdbHbaseAccess*)tdb)->sqHbaseTable()){// if trafodion table
+                char * currPtr2 = (char*)pushedDownColumns->getCurr();
+                  Lng32 currPos = 0;
+                  Lng32 jj = 0;
+                  short colNameLen = *(short*)currPtr2;
+                  currPos += sizeof(short);
+                  char colFam[100];
+                  while (currPtr2[currPos] != ':')
+                  {
+                    currPos++;
+                    jj++;
+                  }
+                  jj++;
+                  currPos++;
+                  snprintf(colFam,sizeof(colFam),"%.*s",jj,currPtr2+sizeof(short));
+                  colNameLen -= jj;
+
+                  NABoolean withAt = FALSE;
+                  char * colName = &currPtr2[currPos];
+                  if (colName[0] == '@')
+                {
+                  colNameLen--;
+                  colName++;
+                  withAt = TRUE;
+                }
+                  Int64 v;
+                  if (colNameLen == sizeof(char))
+                v = *(char*)colName;
+                  else if (colNameLen == sizeof(unsigned short))
+                v = *(UInt16*)colName;
+                  else if (colNameLen == sizeof(Lng32))
+                v = *(ULng32*)colName;
+                  else
+                v = 0;
+                  str_sprintf(buf2, "%s%s%Ld",
+                      colFam,
+                      (withAt ? "@" : ""),
+                      v);
+
+            }else{//native hbase table
+                 char * currPtr2 = (char*)pushedDownColumns->getCurr();
+                  char * colNamePtr1 = NULL;
+                  Lng32 currPos = 0;
+                  short colNameLen = *(short*)currPtr2;
+                  currPos += sizeof(short);
+                  char colName[500];
+                  snprintf(colName,sizeof(colName),"%.*s",colNameLen,currPtr2+sizeof(short));
+                  colNamePtr1 = colName;
+                  str_sprintf(buf2, "%s",colNamePtr1);
+            }
+            pushedDownColumns->advance();
+        }
 
 
-		char* colNamePtr = buf2;
-		if(strcmp(currPtr,"EQUAL")==0){
-			 str_sprintf(buf, "(%s=?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"NOT_EQUAL")==0){
-			 str_sprintf(buf, "(%s!=?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"LESS")==0){
-			 str_sprintf(buf, "(%s<?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if(strcmp(currPtr,"LESS_OR_EQUAL")==0){
-			 str_sprintf(buf, "(%s<=?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"GREATER")==0){
-			 str_sprintf(buf, "(%s>?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"GREATER_OR_EQUAL")==0){
-			 str_sprintf(buf, "(%s>=?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"NO_OP")==0){//should never happen
-			 str_sprintf(buf, "(%s??)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"EQUAL_NULL")==0){
-			 str_sprintf(buf, "(%s=.?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"NOT_EQUAL_NULL")==0){
-			 str_sprintf(buf, "(%s!=.?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"LESS_NULL")==0){
-			 str_sprintf(buf, "(%s<.?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"LESS_OR_EQUAL_NULL")==0){
-			 str_sprintf(buf, "(%s<=.?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"GREATER_NULL")==0){
-			 str_sprintf(buf, "(%s>.?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"GREATER_OR_EQUAL_NULL")==0){
-			 str_sprintf(buf, "(%s>=.?)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"NO_OP_NULL")==0){
-			 str_sprintf(buf, "(%s?.?)",colNamePtr);//should never happen
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"IS_NULL")==0){
-			 str_sprintf(buf, "(%s is_null)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"IS_NULL_NULL")==0){
-			 str_sprintf(buf, "(%s is_null.)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"IS_NOT_NULL")==0){
-			 str_sprintf(buf, "(%s is_not_null)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"IS_NOT_NULL_NULL")==0){
-			 str_sprintf(buf, "(%s is_not_null.)",colNamePtr);
-			 outNAString += buf;
-		 }
-		 else if (strcmp(currPtr,"AND")==0)
-			  outNAString += "AND";
-		 else if (strcmp(currPtr,"OR")==0)
-			  outNAString += "OR";
-
-
-		  reversePolishItems->advance();
-	    }
-	 outNAString +=' ';
-	}
+        char* colNamePtr = buf2;
+        if(strcmp(currPtr,"EQUAL")==0){
+             str_sprintf(buf, "(%s=?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"NOT_EQUAL")==0){
+             str_sprintf(buf, "(%s!=?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"LESS")==0){
+             str_sprintf(buf, "(%s<?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if(strcmp(currPtr,"LESS_OR_EQUAL")==0){
+             str_sprintf(buf, "(%s<=?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"GREATER")==0){
+             str_sprintf(buf, "(%s>?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"GREATER_OR_EQUAL")==0){
+             str_sprintf(buf, "(%s>=?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"NO_OP")==0){//should never happen
+             str_sprintf(buf, "(%s??)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"EQUAL_NULL")==0){
+             str_sprintf(buf, "(%s=.?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"NOT_EQUAL_NULL")==0){
+             str_sprintf(buf, "(%s!=.?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"LESS_NULL")==0){
+             str_sprintf(buf, "(%s<.?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"LESS_OR_EQUAL_NULL")==0){
+             str_sprintf(buf, "(%s<=.?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"GREATER_NULL")==0){
+             str_sprintf(buf, "(%s>.?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"GREATER_OR_EQUAL_NULL")==0){
+             str_sprintf(buf, "(%s>=.?)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"NO_OP_NULL")==0){
+             str_sprintf(buf, "(%s?.?)",colNamePtr);//should never happen
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"IS_NULL")==0){
+             str_sprintf(buf, "(%s is_null)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"IS_NULL_NULL")==0){
+             str_sprintf(buf, "(%s is_null.)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"IS_NOT_NULL")==0){
+             str_sprintf(buf, "(%s is_not_null)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"IS_NOT_NULL_NULL")==0){
+             str_sprintf(buf, "(%s is_not_null.)",colNamePtr);
+             outNAString += buf;
+         }
+         else if (strcmp(currPtr,"AND")==0)
+              outNAString += "AND";
+         else if (strcmp(currPtr,"OR")==0)
+              outNAString += "OR";
+
+
+          reversePolishItems->advance();
+        }
+     outNAString +=' ';
+    }
 
 
 
@@ -1019,28 +1002,28 @@ HbaseAccess::addSpecificExplainInfo(ExplainTupleMaster *explainTuple,
 
   // get column retrieved
   if (((ComTdbHbaseAccess *)tdb)->listOfFetchedColNames()){
-	  description += "column_retrieved: ";
-	  appendListOfColumns(((ComTdbHbaseAccess *)tdb)->listOfFetchedColNames(),tdb,description);
+      description += "column_retrieved: ";
+      appendListOfColumns(((ComTdbHbaseAccess *)tdb)->listOfFetchedColNames(),tdb,description);
   }
   // get predicate pushed down in Reverse Polish Notation for the AND / OR operators.
   // could transform it standard notation for better readability, but good enough for now...
   // could also evaluate the constants instead of hard coded ?, but good enough for now...
   if (((ComTdbHbaseAccess *)tdb)->listOfHbaseFilterColNames()){
-  	  description += "pushed_down_rpn: ";
-  	 appendPushedDownExpression(tdb, description);
+      description += "pushed_down_rpn: ";
+     appendPushedDownExpression(tdb, description);
     }
   // get pushed down predicate
 
 
 
-/*
+  /*
   // now get columns_retrieved
   description += "columns_retrieved: ";
-  //char buf[27];
+  char buf[27];
   //sprintf(buf, "%d ", retrievedCols().entries());
   sprintf(buf, "%d ", getIndexDesc()->getIndexColumns().entries());
   description += buf;
-*/
+  */
 
   explainTuple->setDescription(description);
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index 4cf0ba0..fe012b8 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -11222,7 +11222,7 @@ short HbaseAccess::extractHbaseFilterPreds(Generator * generator,
 					   ValueIdSet &preds, ValueIdSet &newExePreds)
 {
    if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_OFF)
-     return 0;
+       return 0;
    // cannot push preds for aligned format row
    NABoolean isAlignedFormat = getTableDesc()->getNATable()->isAlignedFormat(getIndexDesc());
 
@@ -11279,7 +11279,7 @@ short HbaseAccess::extractHbaseFilterPreds(Generator * generator,
 //  xp:=  <column>  <op>  <value-expr>
 //  xp:=  <column> is not null (no support for hbase lookup)
 //  xp:=  <column> is null (no support for hbase lookup)
-// 	  (xp:=<column> like <value-expr> not yet implemented)
+//    (xp:=<column> like <value-expr> not yet implemented)
 //  xp:=<xp> OR <xp> (not evaluated in isHbaseFilterPredV2, but by extractHbaseFilterPredV2)
 //  xp:=<xp> AND <xp>(not evaluated in isHbaseFilterPredV2, but by extractHbaseFilterPredV2)
 //
@@ -11289,15 +11289,16 @@ short HbaseAccess::extractHbaseFilterPreds(Generator * generator,
 //                            serialized: either the column doesn't need encoding, like
 //                                            an unsigned integer,  or the column
 //                                            was declared with the SERIALIZED option.
-//						it also must not be an added column with default non null.
+//                      it also must not be an added column with default non null.
 //      <op>:              eq, ne, gt, ge, lt, le
 //      <value-expr>:  an expression that only contains const or param values, and
 //                     <value-expr>'s datatype is not a superset of <column>'s datatype.
 //
+// colVID, valueID and op are output parameters.
 /////////////////////////////////////////////////////////////////////////////
 NABoolean HbaseAccess::isHbaseFilterPredV2(Generator * generator, ItemExpr * ie,
-					 ValueId &colVID, ValueId &valueVID,
-					 NAString &op)
+                     ValueId &colVID, ValueId &valueVID,
+                     NAString &op)
 {
   NABoolean foundBinary = FALSE;
   NABoolean foundUnary = FALSE;
@@ -11312,123 +11313,96 @@ NABoolean HbaseAccess::isHbaseFilterPredV2(Generator * generator, ItemExpr * ie,
       ItemExpr * child1 = ie->child(1)->castToItemExpr();
 
       if ((ie->child(0)->getOperatorType() == ITM_BASECOLUMN) &&
-	  (NOT hasColReference(ie->child(1))))
-	{
+      (NOT hasColReference(ie->child(1))))
+    {
       foundBinary = TRUE;
-	  colVID = ie->child(0)->getValueId();
-	  valueVID = ie->child(1)->getValueId();
-	}
+      colVID = ie->child(0)->getValueId();
+      valueVID = ie->child(1)->getValueId();
+    }
       else if ((ie->child(1)->getOperatorType() == ITM_BASECOLUMN) &&
-	       (NOT hasColReference(ie->child(0))))
-	{
+           (NOT hasColReference(ie->child(0))))
+    {
       foundBinary = TRUE;
       flipOp = TRUE;
-	  colVID = ie->child(1)->getValueId();
-	  valueVID = ie->child(0)->getValueId();
-	}
+      colVID = ie->child(1)->getValueId();
+      valueVID = ie->child(0)->getValueId();
+    }
       else if ((ie->child(0)->getOperatorType() == ITM_INDEXCOLUMN) &&
-	       (NOT hasColReference(ie->child(1))))
-	{
+           (NOT hasColReference(ie->child(1))))
+    {
       foundBinary = TRUE;
-	  colVID = ie->child(0)->getValueId();
-	  valueVID = ie->child(1)->getValueId();
-	}
+      colVID = ie->child(0)->getValueId();
+      valueVID = ie->child(1)->getValueId();
+    }
       else if ((ie->child(1)->getOperatorType() == ITM_INDEXCOLUMN) &&
-	       (NOT hasColReference(ie->child(0))))
-	{
-      foundBinary = TRUE;
-      flipOp = TRUE;
-	  colVID = ie->child(1)->getValueId();
-	  valueVID = ie->child(0)->getValueId();
-	}
-      else if ((ie->child(0)->getOperatorType() == ITM_REFERENCE) &&
-	       (NOT hasColReference(ie->child(1))))
-	{
-      foundBinary = TRUE;
-	  colVID = ie->child(0)->getValueId();
-	  valueVID = ie->child(1)->getValueId();
-	}
-      else if ((ie->child(1)->getOperatorType() == ITM_REFERENCE) &&
-	       (NOT hasColReference(ie->child(0))))
-	{
+           (NOT hasColReference(ie->child(0))))
+    {
       foundBinary = TRUE;
       flipOp = TRUE;
-	  colVID = ie->child(1)->getValueId();
-	  valueVID = ie->child(0)->getValueId();
-	}
+      colVID = ie->child(1)->getValueId();
+      valueVID = ie->child(0)->getValueId();
+    }
       else if ((ie->child(0)->getOperatorType() == ITM_HBASE_COLUMN_LOOKUP) &&
-	       (NOT hasColReference(ie->child(1))))
-	{
-	  HbaseColumnLookup * hcl = (HbaseColumnLookup*)ie->child(0)->castToItemExpr();
-	  if (hcl->getValueId().getType().getTypeQualifier() == NA_CHARACTER_TYPE)
-	    {
-	      hbaseLookupPred = TRUE;
+           (NOT hasColReference(ie->child(1))))
+    {
+      HbaseColumnLookup * hcl = (HbaseColumnLookup*)ie->child(0)->castToItemExpr();
+      if (hcl->getValueId().getType().getTypeQualifier() == NA_CHARACTER_TYPE)
+        {
+          hbaseLookupPred = TRUE;
 
-	      ItemExpr * newCV = new(generator->wHeap()) ConstValue(hcl->hbaseCol());
-	      newCV = newCV->bindNode(generator->getBindWA());
-	      newCV = newCV->preCodeGen(generator);
+          ItemExpr * newCV = new(generator->wHeap()) ConstValue(hcl->hbaseCol());
+          newCV = newCV->bindNode(generator->getBindWA());
+          newCV = newCV->preCodeGen(generator);
 
-	      foundBinary = TRUE;
-	      colVID = newCV->getValueId();
-	      valueVID = ie->child(1)->getValueId();
-	    }
-	}
+          foundBinary = TRUE;
+          colVID = newCV->getValueId();
+          valueVID = ie->child(1)->getValueId();
+        }
+    }
       else if ((ie->child(1)->getOperatorType() == ITM_HBASE_COLUMN_LOOKUP) &&
-	       (NOT hasColReference(ie->child(0))))
-	{
-	  HbaseColumnLookup * hcl = (HbaseColumnLookup*)ie->child(1)->castToItemExpr();
-	  if (hcl->getValueId().getType().getTypeQualifier() == NA_CHARACTER_TYPE)
-	    {
-	      hbaseLookupPred = TRUE;
+           (NOT hasColReference(ie->child(0))))
+    {
+      HbaseColumnLookup * hcl = (HbaseColumnLookup*)ie->child(1)->castToItemExpr();
+      if (hcl->getValueId().getType().getTypeQualifier() == NA_CHARACTER_TYPE)
+        {
+          hbaseLookupPred = TRUE;
 
-	      ItemExpr * newCV = new(generator->wHeap()) ConstValue(hcl->hbaseCol());
-	      newCV = newCV->bindNode(generator->getBindWA());
-	      newCV = newCV->preCodeGen(generator);
+          ItemExpr * newCV = new(generator->wHeap()) ConstValue(hcl->hbaseCol());
+          newCV = newCV->bindNode(generator->getBindWA());
+          newCV = newCV->preCodeGen(generator);
 
-	      foundBinary = TRUE;
-	      flipOp = TRUE;
-	      colVID = newCV->getValueId();
-	      valueVID = ie->child(0)->getValueId();
-	    }
-	}
+          foundBinary = TRUE;
+          flipOp = TRUE;
+          colVID = newCV->getValueId();
+          valueVID = ie->child(0)->getValueId();
+        }
+    }
     }//end binary operators
   else if (ie && ((ie->getOperatorType() == ITM_IS_NULL)||(ie->getOperatorType() == ITM_IS_NOT_NULL))){//check for unary operators
-	  ItemExpr * child0 = ie->child(0)->castToItemExpr();
-	  if ((ie->child(0)->getOperatorType() == ITM_BASECOLUMN) ||
-		  (ie->child(0)->getOperatorType() == ITM_INDEXCOLUMN)||
-		  (ie->child(0)->getOperatorType() == ITM_REFERENCE)){
-		  foundUnary = TRUE;
-		  colVID = ie->child(0)->getValueId();
-		  valueVID = NULL_VALUE_ID;
-	  }
+      ItemExpr * child0 = ie->child(0)->castToItemExpr();
+      if ((ie->child(0)->getOperatorType() == ITM_BASECOLUMN) ||
+          (ie->child(0)->getOperatorType() == ITM_INDEXCOLUMN)){
+          foundUnary = TRUE;
+          colVID = ie->child(0)->getValueId();
+          valueVID = NULL_VALUE_ID;
+      }
 
   }//end unary operators
 
   //check if found columns belong to table being scanned (so is not an input to the scan node)
   if (foundBinary || foundUnary){
-	ValueId dummyValueId;
-	if (getGroupAttr()->getCharacteristicInputs().referencesTheGivenValue(colVID,dummyValueId)){
-		foundBinary=FALSE;
-		foundUnary=FALSE;
-	}
+    ValueId dummyValueId;
+    if (getGroupAttr()->getCharacteristicInputs().referencesTheGivenValue(colVID,dummyValueId)){
+        foundBinary=FALSE;
+        foundUnary=FALSE;
+    }
   }
   //check if not an added column with default non null
   if ((foundBinary || foundUnary)&& (NOT hbaseLookupPred)){
-	  NAColumn * nac;
-		switch (colVID.getItemExpr()->getOperatorType()){
-		case ITM_BASECOLUMN:
-			nac = ((BaseColumn*)colVID.getItemExpr())->getNAColumn();
-			break;
-		case ITM_INDEXCOLUMN:
-			nac = ((IndexColumn*)colVID.getItemExpr())->getNAColumn();
-			break;
-		default:
-			break;
-		}
-		if (nac && nac->isAddedColumn() && nac->getDefaultValue()){
-			foundBinary=FALSE;
-			foundUnary=FALSE;
-		}
+        if (colVID.isAddedColumnWithNonNullDefault()){
+            foundBinary=FALSE;
+            foundUnary=FALSE;
+        }
   }
 
   if (foundBinary)
@@ -11438,54 +11412,54 @@ NABoolean HbaseAccess::isHbaseFilterPredV2(Generator * generator, ItemExpr * ie,
 
       NABoolean generateNarrow = FALSE;
       if (NOT hbaseLookupPred)
-	{
-	  generateNarrow = valueType.errorsCanOccur(colType);
-	  if ((generateNarrow)  || // value not a superset of column
-	      (NOT columnEnabledForSerialization(colVID.getItemExpr())))
-		  foundBinary = FALSE;
-	}
+    {
+      generateNarrow = valueType.errorsCanOccur(colType);
+      if ((generateNarrow)  || // value not a superset of column
+          (NOT columnEnabledForSerialization(colVID.getItemExpr())))
+          foundBinary = FALSE;
+    }
 
       if (foundBinary)
-	{
-	  if (colType.getTypeQualifier() == NA_CHARACTER_TYPE)
-	    {
-	      const CharType &charColType = (CharType&)colType;
-	      const CharType &charValType = (CharType&)valueType;
+    {
+      if (colType.getTypeQualifier() == NA_CHARACTER_TYPE)
+        {
+          const CharType &charColType = (CharType&)colType;
+          const CharType &charValType = (CharType&)valueType;
 
-	      if ((charColType.isCaseinsensitive() || charValType.isCaseinsensitive()) ||
-		  (charColType.isUpshifted() || charValType.isUpshifted()))
-	     foundBinary = FALSE;
-	    }
-	  else if (colType.getTypeQualifier() == NA_NUMERIC_TYPE)
-	    {
-	      const NumericType &numType = (NumericType&)colType;
-	      const NumericType &valType = (NumericType&)valueType;
-	      if (numType.isBigNum() || valType.isBigNum())
-	     foundBinary = FALSE;
-	    }
-	}
+          if ((charColType.isCaseinsensitive() || charValType.isCaseinsensitive()) ||
+          (charColType.isUpshifted() || charValType.isUpshifted()))
+         foundBinary = FALSE;
+        }
+      else if (colType.getTypeQualifier() == NA_NUMERIC_TYPE)
+        {
+          const NumericType &numType = (NumericType&)colType;
+          const NumericType &valType = (NumericType&)valueType;
+          if (numType.isBigNum() || valType.isBigNum())
+         foundBinary = FALSE;
+        }
+    }
 
       if (foundBinary)
-	{
-	  if ((ie) && (((BiRelat*)ie)->addedForLikePred()) &&
-	      (valueVID.getItemExpr()->getOperatorType() == ITM_CONSTANT))
-	    {
-	      // remove trailing '\0' characters since this is being pushed down to hbase.
-	      ConstValue * cv = (ConstValue*)(valueVID.getItemExpr());
-	      char * cvv = (char*)cv->getConstValue();
-	      Lng32 len = cv->getStorageSize() - 1;
-	      while ((len > 0) && (cvv[len] == '\0'))
-		len--;
-
-	      NAString newCVV(cvv, len+1);
-
-	      ItemExpr * newCV = new(generator->wHeap()) ConstValue(newCVV);
-	      newCV = newCV->bindNode(generator->getBindWA());
-	      newCV = newCV->preCodeGen(generator);
-	      valueVID = newCV->getValueId();
-	    }
+    {
+      if ((ie) && (((BiRelat*)ie)->addedForLikePred()) &&
+          (valueVID.getItemExpr()->getOperatorType() == ITM_CONSTANT))
+        {
+          // remove trailing '\0' characters since this is being pushed down to hbase.
+          ConstValue * cv = (ConstValue*)(valueVID.getItemExpr());
+          char * cvv = (char*)cv->getConstValue();
+          Lng32 len = cv->getStorageSize() - 1;
+          while ((len > 0) && (cvv[len] == '\0'))
+            len--;
+
+          NAString newCVV(cvv, len+1);
+
+          ItemExpr * newCV = new(generator->wHeap()) ConstValue(newCVV);
+          newCV = newCV->bindNode(generator->getBindWA());
+          newCV = newCV->preCodeGen(generator);
+          valueVID = newCV->getValueId();
+        }
 
-	  ItemExpr * castValue = NULL;
+      ItemExpr * castValue = NULL;
           if (NOT hbaseLookupPred)
             castValue = new(generator->wHeap()) Cast(valueVID.getItemExpr(), &colType);
           else
@@ -11493,237 +11467,169 @@ NABoolean HbaseAccess::isHbaseFilterPredV2(Generator * generator, ItemExpr * ie,
               castValue = new(generator->wHeap()) Cast(valueVID.getItemExpr(), &valueVID.getType());
             }
 
-	  if ((NOT hbaseLookupPred) &&
-	      (isEncodingNeededForSerialization(colVID.getItemExpr())))
-	    {
-	      castValue = new(generator->wHeap()) CompEncode
-		(castValue, FALSE, -1, CollationInfo::Sort, TRUE, FALSE);
-	    }
+      if ((NOT hbaseLookupPred) &&
+          (isEncodingNeededForSerialization(colVID.getItemExpr())))
+        {
+          castValue = new(generator->wHeap()) CompEncode
+        (castValue, FALSE, -1, CollationInfo::Sort, TRUE, FALSE);
+        }
 
-	  castValue = castValue->bindNode(generator->getBindWA());
-	  castValue = castValue->preCodeGen(generator);
+      castValue = castValue->bindNode(generator->getBindWA());
+      castValue = castValue->preCodeGen(generator);
 
-	  valueVID = castValue->getValueId();
+      valueVID = castValue->getValueId();
 
-	  NAString nullType;
+      NAString nullType;
 
-	  if ((colType.supportsSQLnull()) ||
-	      (valueType.supportsSQLnull()))
-	    {
-	      nullType = "_NULL";
-	    }
-	  else
-	    {
-	      nullType = "";
-	    }
+      if ((colType.supportsSQLnull()) ||
+          (valueType.supportsSQLnull()))
+        {
+          nullType = "_NULL";
+        }
+      else
+        {
+          nullType = "";
+        }
 
-	  // append -NULL to the operator to signify the java code generating pushdown filters to handle NULL semantic logic
-	  if (ie->getOperatorType() == ITM_EQUAL)
-		  op = "EQUAL"+nullType;
-	  else  if (ie->getOperatorType() == ITM_NOT_EQUAL)
-	    op = "NOT_EQUAL"+nullType;
-	  else  if (ie->getOperatorType() == ITM_LESS){
-		  if (flipOp)
-			  op = "GREATER"+nullType;
-		  else
-			  op = "LESS"+nullType;
-	  }
-	  else  if (ie->getOperatorType() == ITM_LESS_EQ){
-		  if (flipOp)
-			  op = "GREATER_OR_EQUAL"+nullType;
-		  else
-			  op = "LESS_OR_EQUAL"+nullType;
-	  }else  if (ie->getOperatorType() == ITM_GREATER){
-		  if (flipOp)
-			  op = "LESS"+nullType;
-		  else
-			  op = "GREATER"+nullType;
-	  }else  if (ie->getOperatorType() == ITM_GREATER_EQ){
-		  if (flipOp)
-			  op = "LESS_OR_EQUAL"+nullType;
-		  else
-			  op = "GREATER_OR_EQUAL"+nullType;
-	  }else
-	    op = "NO_OP"+nullType;
-	}
+      // append -NULL to the operator to signify the java code generating pushdown filters to handle NULL semantic logic
+      if (ie->getOperatorType() == ITM_EQUAL)
+          op = "EQUAL"+nullType;
+      else  if (ie->getOperatorType() == ITM_NOT_EQUAL)
+        op = "NOT_EQUAL"+nullType;
+      else  if (ie->getOperatorType() == ITM_LESS){
+          if (flipOp)
+              op = "GREATER"+nullType;
+          else
+              op = "LESS"+nullType;
+      }
+      else  if (ie->getOperatorType() == ITM_LESS_EQ){
+          if (flipOp)
+              op = "GREATER_OR_EQUAL"+nullType;
+          else
+              op = "LESS_OR_EQUAL"+nullType;
+      }else  if (ie->getOperatorType() == ITM_GREATER){
+          if (flipOp)
+              op = "LESS"+nullType;
+          else
+              op = "GREATER"+nullType;
+      }else  if (ie->getOperatorType() == ITM_GREATER_EQ){
+          if (flipOp)
+              op = "LESS_OR_EQUAL"+nullType;
+          else
+              op = "GREATER_OR_EQUAL"+nullType;
+      }else
+        op = "NO_OP"+nullType;
+    }
     }
   if (foundUnary){
-	  const NAType &colType = colVID.getType();
-	  NAString nullType;
+      const NAType &colType = colVID.getType();
+      NAString nullType;
 
-	  if (colType.supportsSQLnull())
-	    {
-	      nullType = "_NULL";
-	    }
-	  else
-	    {
-	      nullType = "";
-	    }
-	  if (ie->getOperatorType() == ITM_IS_NULL)
-	  		  op = "IS_NULL"+nullType;
-	  else if (ie->getOperatorType() == ITM_IS_NOT_NULL)
-		      op = "IS_NOT_NULL"+nullType;
+      if (colType.supportsSQLnull())
+        {
+          nullType = "_NULL";
+        }
+      else
+        {
+          nullType = "";
+        }
+      if (ie->getOperatorType() == ITM_IS_NULL)
+              op = "IS_NULL"+nullType;
+      else if (ie->getOperatorType() == ITM_IS_NOT_NULL)
+              op = "IS_NOT_NULL"+nullType;
   }
 
   return foundBinary || foundUnary;
 }
 short HbaseAccess::extractHbaseFilterPredsVX(Generator * generator,
-		   ValueIdSet &preds, ValueIdSet &newExePreds){
-	//separate the code that should not belong in the recursive function
-	   if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_OFF)
-	    return 0;
-	   // check if initial (version 1) implementation
-	   if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_MINIMUM)
-	    return extractHbaseFilterPreds(generator,preds,newExePreds);
-
-	   // if here, we are DF_MEDIUM
-	   // cannot push preds for aligned format row
-	   NABoolean isAlignedFormat = getTableDesc()->getNATable()->isAlignedFormat(getIndexDesc());
-
-	   if (isAlignedFormat)
-	     return 0;
-	   //recursive function call
-	   opList_.insert("V2");//to instruct the java side that we are dealing with predicate pushdown V2 semantic, add "V2" marker
-	   extractHbaseFilterPredsV2(generator,preds,newExePreds,FALSE,TRUE);
-	   return 0;
+           ValueIdSet &preds, ValueIdSet &newExePreds){
+    //separate the code that should not belong in the recursive function
+       if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_OFF)
+        return 0;
+       // check if initial (version 1) implementation
+       if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_MINIMUM)
+        return extractHbaseFilterPreds(generator,preds,newExePreds);
+
+       // if here, we are DF_MEDIUM
+       // cannot push preds for aligned format row
+       NABoolean isAlignedFormat = getTableDesc()->getNATable()->isAlignedFormat(getIndexDesc());
+
+       if (isAlignedFormat)
+         return 0;
+       //recursive function call
+       opList_.insert("V2");//to instruct the java side that we are dealing with predicate pushdown V2 semantic, add "V2" marker
+       extractHbaseFilterPredsV2(generator,preds,newExePreds,FALSE);
+       return 0;
 
 }
 
 // return true if successfull push down of node
 NABoolean HbaseAccess::extractHbaseFilterPredsV2(Generator * generator,
-					   ValueIdSet &preds, ValueIdSet &newExePreds, NABoolean checkOnly, NABoolean isFirstAndLayer )
+                       ValueIdSet &preds, ValueIdSet &newExePreds, NABoolean checkOnly)
 {
 
-	// the isFirstAndLayer is used to allow detecting top level predicate that can still be pushed to executor
-	int addedNode=0;
-	for (ValueId vid = preds.init();
+    // the isFirstAndLayer is used to allow detecting top level predicate that can still be pushed to executor
+    int addedNode=0;
+    for (ValueId vid = preds.init();
        (preds.next(vid));
        preds.advance(vid))
     {
       ItemExpr * ie = vid.getItemExpr();
 
       // if it is AND operation, recurse through left and right children
-      if (ie->getOperatorType() == ITM_AND)
-        {
+      if (ie->getOperatorType() == ITM_AND){
           ValueIdSet leftPreds;
           ValueIdSet rightPreds;
           leftPreds += ie->child(0)->castToItemExpr()->getValueId();
           rightPreds += ie->child(1)->castToItemExpr()->getValueId();
-          if (isFirstAndLayer){
-            NABoolean leftOK  = extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,TRUE, TRUE);
-            NABoolean rightOK = extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,TRUE, TRUE);
-            if (leftOK && rightOK){
-            	if (!checkOnly){
-					extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,FALSE, TRUE);//generate tree
-					extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,FALSE, TRUE);//generate tree
-					opList_.insert("AND"); // insert an AND node since both side are OK to push down
-					if (addedNode>0)opList_.insert("AND"); // if it is not the first node addd to the push down, AND it with the rest
-					addedNode++; // we just pushed it down, so increase the node count pushed down.
-            	}
-            	if (preds.entries()==1)
-            		return TRUE;
-            } else if (leftOK){  // if only left is OK to push down
-            	if(!checkOnly){
-					extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,FALSE, TRUE);//generate left tree
-					newExePreds.insert(rightPreds); //make sure we add the right child to predicates that needs executor evalvaluation
-					if (addedNode>0)opList_.insert("AND"); // if it is not the first node addd to the push down, AND it with the rest
-					addedNode++; // we pushed down left side so mark it
-            	}
-            	if (preds.entries()==1)
-            		return TRUE;
-            } else if (rightOK){// if only right is OK to push down
-            	if(!checkOnly){
-					extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,FALSE, TRUE);//generate right tree
-					newExePreds.insert(leftPreds);//make sure we add the left child to predicates that needs executor evalvaluation
-					if (addedNode>0)opList_.insert("AND"); // if it is not the first node addd to the push down, AND it with the rest
-					addedNode++;// we pushed down right side so mark it
-            	}
-            	if (preds.entries()==1)
-            		return TRUE;
-            } else{
-            	if(!checkOnly){
-            		newExePreds.insert(vid);// we pushed down nothing, make sure the whole node is evaluated by Executor
-            	}
-            	if (preds.entries()==1)
-            		return FALSE;
-
-            }
-          }
-          else{//if not first AND layer, both left and right must be pushable to get anything pushed
-              if(extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, TRUE, FALSE)&&
-                 extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, TRUE, FALSE)){// both left and right child must match
-            	  if(!checkOnly){
-					  extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, FALSE, FALSE);//generate tree
-					  extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, FALSE, FALSE);//generate tree
-					  opList_.insert("AND");
-            	  }
-              	if (preds.entries()==1)
-              		return TRUE;
-
+          //cannot be first AND layer, both left and right must be pushable to get anything pushed
+          if(extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, TRUE)&&
+             extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, TRUE)){// both left and right child must match
+              if(!checkOnly){
+                  extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, FALSE);//generate tree
+                  extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, FALSE);//generate tree
+                  opList_.insert("AND");
               }
-              else{
-            	  if(!checkOnly){
-            		  newExePreds.insert(vid);
-            	  }
-                  if (preds.entries()==1)
-                		return FALSE;
+            if (preds.entries()==1)
+                return TRUE;
+          }
+          else{
+              if(!checkOnly){
+                  newExePreds.insert(vid);
               }
+              if (preds.entries()==1)
+                    return FALSE;
           }
           continue;
-
           // the OR case is easier, as we don t have the case of top level expression that can still be pushed to executor
-        }//end if AND
-        else if(ie->getOperatorType() == ITM_OR){
+      }//end if AND
+      else if(ie->getOperatorType() == ITM_OR){
           ValueIdSet leftPreds;
-		  ValueIdSet rightPreds;
-		  leftPreds += ie->child(0)->castToItemExpr()->getValueId();
-		  rightPreds += ie->child(1)->castToItemExpr()->getValueId();
-          if (isFirstAndLayer){
-            NABoolean leftOK  = extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,TRUE, FALSE);
-            NABoolean rightOK = extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,TRUE, FALSE);
-            if (leftOK && rightOK){
-            	if (!checkOnly){
-					extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,FALSE, FALSE);//generate tree
-					extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,FALSE, FALSE);//generate tree
-					opList_.insert("OR"); // insert an OR node since both side are OK to push down
-					if (addedNode>0)opList_.insert("AND"); // if it is not the first node add to the push down, AND it with the rest
-					addedNode++; // we just pushed it down, so increase the node count pushed down.
-            	}
-            	if (preds.entries()==1)
-            		return TRUE;
-
-            } else{
-            	if(!checkOnly){
-            		newExePreds.insert(vid);// we pushed down nothing, make sure the whole node is evaluated by Executor
-            	}
-            	if (preds.entries()==1)
-            		return FALSE;
-            }
-
-           }else{//if not first AND layer, both left and right must be pushable to get anything pushed
-			  if(extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, TRUE, FALSE)&&
-				 extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, TRUE, FALSE)){// both left and right child must match
-				  if(!checkOnly){
-					  extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, FALSE, FALSE);//generate tree
-					  extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, FALSE, FALSE);//generate tree
-					  opList_.insert("OR");
-				  }
-				  if (preds.entries()==1)
-				   return TRUE;
-			  }
-			  else{// if predicate cannot be pushed down
-				  if(!checkOnly){
-					  newExePreds.insert(vid);
-				  }
-				  if (preds.entries()==1)
-						return FALSE;
-			  }
-            }
-
-		  continue;
-		  }//end if OR
-
-
+          ValueIdSet rightPreds;
+          leftPreds += ie->child(0)->castToItemExpr()->getValueId();
+          rightPreds += ie->child(1)->castToItemExpr()->getValueId();
+          //both left and right must be pushable to get anything pushed
+          if(extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, TRUE)&&
+             extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, TRUE)){// both left and right child must match
+              if(!checkOnly){
+                  extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, FALSE);//generate tree
+                  extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, FALSE);//generate tree
+                  opList_.insert("OR");
+                  if (addedNode>0)opList_.insert("AND"); // if it is not the first node add to the push down, AND it with the rest
+                  addedNode++; // we just pushed it down, so increase the node count pushed down.
+              }
+              if (preds.entries()==1)
+               return TRUE;
+          }
+          else{// if predicate cannot be pushed down
+              if(!checkOnly){
+                  newExePreds.insert(vid);
+              }
+              if (preds.entries()==1)
+                    return FALSE;
+          }
+          continue;
+      }//end if OR
 
       ValueId colVID;
       ValueId valueVID;
@@ -11736,15 +11642,13 @@ NABoolean HbaseAccess::extractHbaseFilterPredsV2(Generator * generator,
           hbaseFilterColVIDlist_.insert(colVID);
           if (valueVID != NULL_VALUE_ID) hbaseFilterValueVIDlist_.insert(valueVID);// don't insert valueID for unary operators.
           opList_.insert(op);
-          if(isFirstAndLayer){
-			if (addedNode>0)opList_.insert("AND"); // if it is not the first node add to the push down, AND it with the rest
-			addedNode++; // we just pushed it down, so increase the node count pushed down.
-          }
+          if (addedNode>0)opList_.insert("AND"); // if it is not the first node add to the push down, AND it with the rest
+          addedNode++; // we just pushed it down, so increase the node count pushed down.
         }else if (!checkOnly){//if not pushable, pass it for executor evaluation.
-        	newExePreds.insert(vid);
+            newExePreds.insert(vid);
         }
       if (preds.entries()==1){
-    	  return isHFP; // if we are not on the first call level, where we can have multiple preds, exit returning the pushability
+          return isHFP; // if we are not on the first call level, where we can have multiple preds, exit returning the pushability
       }
 
     } // end for
@@ -11816,38 +11720,38 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
   if (! FileScan::preCodeGen(generator,externalInputs,pulledNewInputs))
     return NULL;
 
-    //compute isUnique:
-    NABoolean isUnique = FALSE;
-    if (listOfRangeRows_.entries() == 0)
-      {
-        if ((searchKey() && searchKey()->isUnique()) &&
-  	  (listOfUniqueRows_.entries() == 0))
-  	isUnique = TRUE;
-        else if ((NOT (searchKey() && searchKey()->isUnique())) &&
-  	       (listOfUniqueRows_.entries() == 1) &&
-  	       (listOfUniqueRows_[0].rowIds_.entries() == 1))
-  	isUnique = TRUE;
-      }
-
-    // executorPred() contains an ANDed list of predicates.
-    // if hbase filter preds are enabled, then extracts those preds from executorPred()
-    // which could be pushed down to hbase.
-    // Do this only for non-unique scan access.
-    ValueIdSet newExePreds;
-    ValueIdSet* originExePreds = new (generator->wHeap())ValueIdSet(executorPred()) ;//saved for futur nullable column check
-
-    if (CmpCommon::getDefault(HBASE_FILTER_PREDS) != DF_MINIMUM){ // the check for V2 and above is moved up before calculating retrieved columns
-		if ((NOT isUnique) &&
-			(extractHbaseFilterPredsVX(generator, executorPred(), newExePreds)))
-		  return this;
-
-		// if some filter preds were found, then initialize executor preds with new exe preds.
-		// newExePreds may be empty which means that all predicates were changed into
-		// hbase preds. In this case, nuke existing exe preds.
-		if (hbaseFilterColVIDlist_.entries() > 0)
-		  setExecutorPredicates(newExePreds);
+  //compute isUnique:
+  NABoolean isUnique = FALSE;
+  if (listOfRangeRows_.entries() == 0)
+    {
+      if ((searchKey() && searchKey()->isUnique()) &&
+    (listOfUniqueRows_.entries() == 0))
+  isUnique = TRUE;
+      else if ((NOT (searchKey() && searchKey()->isUnique())) &&
+         (listOfUniqueRows_.entries() == 1) &&
+         (listOfUniqueRows_[0].rowIds_.entries() == 1))
+  isUnique = TRUE;
     }
 
+  // executorPred() contains an ANDed list of predicates.
+  // if hbase filter preds are enabled, then extracts those preds from executorPred()
+  // which could be pushed down to hbase.
+  // Do this only for non-unique scan access.
+  ValueIdSet newExePreds;
+  ValueIdSet* originExePreds = new (generator->wHeap())ValueIdSet(executorPred()) ;//saved for futur nullable column check
+
+  if (CmpCommon::getDefault(HBASE_FILTER_PREDS) != DF_MINIMUM){ // the check for V2 and above is moved up before calculating retrieved columns
+      if ((NOT isUnique) &&
+          (extractHbaseFilterPredsVX(generator, executorPred(), newExePreds)))
+        return this;
+
+      // if some filter preds were found, then initialize executor preds with new exe preds.
+      // newExePreds may be empty which means that all predicates were changed into
+      // hbase preds. In this case, nuke existing exe preds.
+      if (hbaseFilterColVIDlist_.entries() > 0)
+        setExecutorPredicates(newExePreds);
+  }
+
   ValueIdSet colRefSet;
 
   computeRetrievedCols();
@@ -11930,48 +11834,37 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
       //any other columns.
       if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_MEDIUM && getMdamKeyPtr() == NULL){ //only enable column retrieval optimization with DF_MEDIUM and not for MDAM scan
           bool needAddingNonNullableColumn = true; //assume we need to add one non nullable column
-		  for (ValueId vid = retColRefSet_.init();// look for each column in th eresult set if one match the criteria non null non added non nullable with default
-				  retColRefSet_.next(vid);
-				  retColRefSet_.advance(vid))
-		  {
-			if (originExePreds->isNotNullable(vid)){// it is non nullable
-				NAColumn * nac;
-				switch (vid.getItemExpr()->getOperatorType()){
-				case ITM_BASECOLUMN:
-					nac = ((BaseColumn*)vid.getItemExpr())->getNAColumn();
-					break;
-				case ITM_INDEXCOLUMN:
-					nac = ((IndexColumn*)vid.getItemExpr())->getNAColumn();
-					break;
-				default:
-					break;
-				}
-				if (nac && !(nac->isAddedColumn()  && nac->getDefaultValue())){//check if  added and  with default... notgood
-					needAddingNonNullableColumn = false; // we found one column meeting all criteria
-					break;
-				}
-			}
-		  }
-		  if (needAddingNonNullableColumn){ // ok now we need to add one key column that is not nullable
-			  bool foundAtLeastOneKeyColumnNotNullable = false;
-			  for(int i=getIndexDesc()->getIndexKey().entries()-1; i>=0;i--)// doing reverse search is making sure we are trying to avoid to use _SALT_ column
-				  	  	  	  	  	  	  	  	  	  	  	  	  	  	 // because _SALT_ is physicaly the last column therefore we don't skip columns optimally if using _SALT_ column
-			  {
-				  ValueId vaId = getIndexDesc()->getIndexKey()[i];
-				  if ( (vaId.getItemExpr()->getOperatorType() == ITM_BASECOLUMN	&& !((BaseColumn*)vaId.getItemExpr())->getNAColumn()->getType()->supportsSQLnullPhysical())||
-						  (vaId.getItemExpr()->getOperatorType() == ITM_INDEXCOLUMN	&& !((IndexColumn*)vaId.getItemExpr())->getNAColumn()->getType()->supportsSQLnullPhysical())
-						  ){ //found good key column candidate?
-					  HbaseAccess::addReferenceFromItemExprTree(vaId.getItemExpr(),TRUE,FALSE,retColRefSet_); // add it
-					  foundAtLeastOneKeyColumnNotNullable = true; //tag we found it
-					  break; // no need to look further
-				  }
-			  }
-			  if (!foundAtLeastOneKeyColumnNotNullable){//oh well, did not find any key column non nullable, let s add all key columns
-				  HbaseAccess::addColReferenceFromVIDlist(getIndexDesc()->getIndexKey(), retColRefSet_);
-			  }
-		  }
+          for (ValueId vid = retColRefSet_.init();// look for each column in th eresult set if one match the criteria non null non added non nullable with default
+                  retColRefSet_.next(vid);
+                  retColRefSet_.advance(vid))
+          {
+            if (originExePreds->isNotNullable(vid)){// it is non nullable
+                if (!vid.isAddedColumnWithNonNullDefault()){//check if  added and  with default... notgood
+                    needAddingNonNullableColumn = false; // we found one column meeting all criteria
+                    break;
+                }
+            }
+          }
+          if (needAddingNonNullableColumn){ // ok now we need to add one key column that is not nullable
+              bool foundAtLeastOneKeyColumnNotNullable = false;
+              for(int i=getIndexDesc()->getIndexKey().entries()-1; i>=0;i--)// doing reverse search is making sure we are trying to avoid to use _SALT_ column
+                                                                         // because _SALT_ is physicaly the last column therefore we don't skip columns optimally if using _SALT_ column
+              {
+                  ValueId vaId = getIndexDesc()->getIndexKey()[i];
+                  if ( (vaId.getItemExpr()->getOperatorType() == ITM_BASECOLUMN && !((BaseColumn*)vaId.getItemExpr())->getNAColumn()->getType()->supportsSQLnullPhysical())||
+                          (vaId.getItemExpr()->getOperatorType() == ITM_INDEXCOLUMN && !((IndexColumn*)vaId.getItemExpr())->getNAColumn()->getType()->supportsSQLnullPhysical())
+                          ){ //found good key column candidate?
+                      HbaseAccess::addReferenceFromItemExprTree(vaId.getItemExpr(),TRUE,FALSE,retColRefSet_); // add it
+                      foundAtLeastOneKeyColumnNotNullable = true; //tag we found it
+                      break; // no need to look further
+                  }
+              }
+              if (!foundAtLeastOneKeyColumnNotNullable){//oh well, did not find any key column non nullable, let s add all key columns
+                  HbaseAccess::addColReferenceFromVIDlist(getIndexDesc()->getIndexKey(), retColRefSet_);
+              }
+          }
       }else //end if DF_MEDIUM
-    	  HbaseAccess::addColReferenceFromVIDlist(getIndexDesc()->getIndexKey(), retColRefSet_);
+          HbaseAccess::addColReferenceFromVIDlist(getIndexDesc()->getIndexKey(), retColRefSet_);
     }
 
   if ((getMdamKeyPtr()) &&

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/optimizer/RelScan.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelScan.h b/core/sql/optimizer/RelScan.h
index 45c4a53..cc69a69 100644
--- a/core/sql/optimizer/RelScan.h
+++ b/core/sql/optimizer/RelScan.h
@@ -1454,14 +1454,14 @@ public:
   short extractHbaseFilterPreds(Generator * generator, ValueIdSet &preds,
                                 ValueIdSet &newExePreds);
 
-    NABoolean isHbaseFilterPredV2(Generator * generator, ItemExpr * ie,
-    							  ValueId &colVID, ValueId &valueVID,
-								  NAString &op);
+  NABoolean isHbaseFilterPredV2(Generator * generator, ItemExpr * ie,
+                                ValueId &colVID, ValueId &valueVID,
+                                NAString &op);
 
-    short extractHbaseFilterPredsVX(Generator * generator,ValueIdSet &preds, ValueIdSet &newExePreds);
+  short extractHbaseFilterPredsVX(Generator * generator,ValueIdSet &preds, ValueIdSet &newExePreds);
 
-    NABoolean extractHbaseFilterPredsV2(Generator * generator, ValueIdSet &preds, ValueIdSet &newExePreds,
-    								    NABoolean checkOnly, NABoolean isFirstAndLayer );
+  NABoolean extractHbaseFilterPredsV2(Generator * generator, ValueIdSet &preds, ValueIdSet &newExePreds,
+                                      NABoolean checkOnly);
 
   NABoolean isSnapshotScanFeasible(LatestSnpSupportEnum snpNotSupported,
                                    char * tableName);

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/optimizer/ValueDesc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ValueDesc.cpp b/core/sql/optimizer/ValueDesc.cpp
index aa31819..891ba15 100644
--- a/core/sql/optimizer/ValueDesc.cpp
+++ b/core/sql/optimizer/ValueDesc.cpp
@@ -513,6 +513,30 @@ ValueId::getNAColumn(NABoolean okIfNotColumn) const
   return NULL;  // NT_PORT
 }
 
+
+NABoolean ValueId::isAddedColumnWithNonNullDefault() const{
+  NAColumn * nac = NULL;
+  ItemExpr *ck = getItemExpr();
+  if ( ck == NULL )
+     return FALSE;
+  switch (ck->getOperatorType()){
+  case ITM_BASECOLUMN:
+      nac = ((BaseColumn*)ck)->getNAColumn();
+      break;
+  case ITM_INDEXCOLUMN:
+      nac = ((IndexColumn*)ck)->getNAColumn();
+      break;
+  default:
+      break;
+  }
+  if (nac && nac->isAddedColumn() && nac->getDefaultValue())
+      return TRUE;
+  else
+      return FALSE;
+}
+
+
+
 // Since we *can* have an INSTANTIATE_NULL inside a VEG_REFERENCE, a loop
 // was required for the function below.
 //
@@ -3165,11 +3189,12 @@ void ValueIdSet::replaceVEGExpressions
           if (iePtr != exprId.getItemExpr())  // a replacement was done
 	    {
 	      subtractElement(exprId);        // remove existing ValueId
-	      //insert new expression(s)
-	      if (iePtr->getOperatorType() == ITM_AND)
-	    	  iePtr->convertToValueIdSet(newExpr, NULL, ITM_AND, FALSE, FALSE);
-	      else
-	    	  newExpr += iePtr->getValueId(); // replace with a new one
+          //insert new expression(s)
+          if (iePtr->getOperatorType() == ITM_AND)
+              //The replacement of a RangeSpec could be an AND, convert ANDed predicates into additional values in newExpr.
+              iePtr->convertToValueIdSet(newExpr, NULL, ITM_AND, FALSE, FALSE);
+          else
+              newExpr += iePtr->getValueId(); // replace with a new one
 	    }
 	}
       else // delete the ValueId of the VEGPredicate/VEGReference from the set

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/optimizer/ValueDesc.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ValueDesc.h b/core/sql/optimizer/ValueDesc.h
index 50e4634..559588b 100644
--- a/core/sql/optimizer/ValueDesc.h
+++ b/core/sql/optimizer/ValueDesc.h
@@ -193,6 +193,11 @@ public:
   // get the associated base column.
   NABoolean isSaltColumn() const;
 
+  // return TRUE if I am a ValueId associated with an Index Column, or
+  // a base column , and I am an added column with a default value that is not
+  // null.
+  NABoolean isAddedColumnWithNonNullDefault() const;
+
   // ---------------------------------------------------------------------
   // change the ValueId's type to the given type
   // ---------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/regress/executor/EXPECTED140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED140 b/core/sql/regress/executor/EXPECTED140
index 7af0f17..6d70ca8 100644
--- a/core/sql/regress/executor/EXPECTED140
+++ b/core/sql/regress/executor/EXPECTED140
@@ -6,11 +6,11 @@
 
 --- 1 row(s) inserted.
 >>create table t140 (uniq int not null, uniq2 int not null , a int not null, b int not null,
-+>    c int not null, an int, bn int, cn int, d varchar(10),					primary key (uniq,uniq2)) ;
++>    c int not null, an int, bn int, cn int, d varchar(10),                  primary key (uniq,uniq2)) ;
 
 --- SQL operation complete.
 >>create table t140b (uniq int not null, uniq2 int not null , a int not null, b int not null,
-+>    c int not null, an int, bn int, cn int, d varchar(10),					primary key (uniq,uniq2)) salt using 2 partitions on (uniq,uniq2) ;
++>    c int not null, an int, bn int, cn int, d varchar(10),                  primary key (uniq,uniq2)) salt using 2 partitions on (uniq,uniq2) ;
 
 --- SQL operation complete.
 >>
@@ -53,7 +53,7 @@
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212318881178144109
+PLAN_ID .................. 212319563691380188
 ROWS_OUT ................ 33
 EST_TOTAL_COST ........... 0.05
 STATEMENT ................ select a from t140 where b>500;
@@ -104,7 +104,7 @@ DESCRIPTION
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 5581172586932643718
+  ObjectUIDs ............. 364316051091596819
   select_list ............ TRAFODION.SCH.T140.A
 
 
@@ -151,7 +151,7 @@ A
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212318881179605475
+PLAN_ID .................. 212319563692704671
 ROWS_OUT ................ 33
 EST_TOTAL_COST ........... 0.05
 STATEMENT ................ select an from t140b where b<=200;
@@ -202,7 +202,7 @@ DESCRIPTION
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 5581172586932643812
+  ObjectUIDs ............. 364316051091596902
   select_list ............ TRAFODION.SCH.T140B.AN
 
 
@@ -236,7 +236,7 @@ DESCRIPTION
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212318881179745708
+PLAN_ID .................. 212319563692850447
 ROWS_OUT ................ 33
 EST_TOTAL_COST ........... 0.05
 STATEMENT ................ select an from t140 where b<=200;
@@ -287,7 +287,7 @@ DESCRIPTION
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 5581172586932643718
+  ObjectUIDs ............. 364316051091596819
   select_list ............ TRAFODION.SCH.T140.AN
 
 
@@ -332,7 +332,7 @@ AN
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212318881179866410
+PLAN_ID .................. 212319563692995878
 ROWS_OUT ................ 10
 EST_TOTAL_COST ........... 0.05
 STATEMENT ................ select an from t140 where b=200 and an is not null;
@@ -383,7 +383,7 @@ DESCRIPTION
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 5581172586932643718
+  ObjectUIDs ............. 364316051091596819
   select_list ............ TRAFODION.SCH.T140.AN
   input_variables ........ %(200)
 
@@ -426,7 +426,7 @@ AN
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212318881179985030
+PLAN_ID .................. 212319563693127204
 ROWS_OUT ................ 67
 EST_TOTAL_COST ........... 0.05
 STATEMENT ................ select an, a from t140 where b!=500;
@@ -477,7 +477,7 @@ DESCRIPTION
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 5581172586932643718
+  ObjectUIDs ............. 364316051091596819
   select_list ............ TRAFODION.SCH.T140.AN, TRAFODION.SCH.T140.A
 
 
@@ -556,7 +556,7 @@ AN
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212318881180232505
+PLAN_ID .................. 212319563693323114
 ROWS_OUT ................ 10
 EST_TOTAL_COST ........... 0.05
 STATEMENT ................ select an from t140 where bn=201 and an is not null;
@@ -607,7 +607,7 @@ DESCRIPTION
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 5581172586932643718
+  ObjectUIDs ............. 364316051091596819
   select_list ............ TRAFODION.SCH.T140.AN
   input_variables ........ %(201)
 
@@ -649,7 +649,7 @@ AN
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212318881180365492
+PLAN_ID .................. 212319563693453818
 ROWS_OUT ................ 67
 EST_TOTAL_COST ........... 0.05
 STATEMENT ................ select an, a from t140 where bn!=501;
@@ -700,7 +700,7 @@ DESCRIPTION
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 5581172586932643718
+  ObjectUIDs ............. 364316051091596819
   select_list ............ TRAFODION.SCH.T140.AN, TRAFODION.SCH.T140.A
 
 
@@ -794,7 +794,7 @@ A
 ------------------------------------------------------------------ PLAN SUMMARY
 MODULE_NAME .............. DYNAMICALLY COMPILED
 STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212318881180584307
+PLAN_ID .................. 212319563693669223
 ROWS_OUT ................ 11
 EST_TOTAL_COST ........... 0.05
 STATEMENT ................ select an from t140 where an between 20 and 40;
@@ -845,7 +845,7 @@ DESCRIPTION
   TRAF_INDEX_CREATE_OPT    ON
   SCHEMA ................. TRAFODION.SCH
   GENERATE_EXPLAIN ....... ON
-  ObjectUIDs ............. 5581172586932643718
+  ObjectUIDs ............. 364316051091596819
   select_list ............ TRAFODION.SCH.T140.AN
 
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/regress/executor/FILTER140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/FILTER140 b/core/sql/regress/executor/FILTER140
index 0d32084..95a1f3f 100755
--- a/core/sql/regress/executor/FILTER140
+++ b/core/sql/regress/executor/FILTER140
@@ -39,4 +39,4 @@ s/^\([ ]*embedded_arkcmp[ ]*[\.]*\) .*/\1 removed/g
 s/^\([ ]*EST_TOTAL_COST[ ]*[\.]*\) .*/\1 removed/g
 s/^\([ ]*EST_OPER_COST[ ]*[\.]*\) .*/\1 removed/g
 s/VOLATILE_SCHEMA_MXID[0-9]*/VOLATILE_SCHEMA_00/
-" $fil
\ No newline at end of file
+" $fil

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/regress/executor/TEST140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/TEST140 b/core/sql/regress/executor/TEST140
index 8325db8..1540522 100644
--- a/core/sql/regress/executor/TEST140
+++ b/core/sql/regress/executor/TEST140
@@ -44,14 +44,14 @@ drop table t140b;
 create table t140helper (a int not null, primary key(a));
 insert into t140helper values(1);
 create table t140 (uniq int not null, uniq2 int not null , a int not null, b int not null,
-    c int not null, an int, bn int, cn int, d varchar(10),					primary key (uniq,uniq2)) ;
+    c int not null, an int, bn int, cn int, d varchar(10),                  primary key (uniq,uniq2)) ;
 create table t140b (uniq int not null, uniq2 int not null , a int not null, b int not null,
-    c int not null, an int, bn int, cn int, d varchar(10),					primary key (uniq,uniq2)) salt using 2 partitions on (uniq,uniq2) ;
+    c int not null, an int, bn int, cn int, d varchar(10),                  primary key (uniq,uniq2)) salt using 2 partitions on (uniq,uniq2) ;
 
 upsert using load 
 into t140
   select  x1,x1,10*x1,100*x1,1000*x1,10*x1+1,100*x1+1, 1000*x1+1, 'aaa'||cast(x1 as varchar(10)) 
-  		 
+         
   from t140helper
 transpose 0,1,2,3,4,5,6,7,8,9 as x1;
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index a10a8d9..1f63cff 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -6428,14 +6428,14 @@ DefaultToken NADefaults::token(Int32 attrEnum,
 	  case '2':	return DF_HIGH;
 	  case '3':	return DF_MAXIMUM;
 	}
-    // HBASE_FILTER_PREDS
-      if ((attrEnum == HBASE_FILTER_PREDS) && value.length()==1)
-    switch (*value.data()){
-      case '0': return DF_OFF;
-      case '1': return DF_MINIMUM;
-      case '2': return DF_MEDIUM;
-      // in the future add DF_HIGH and DF_MAXIMUM when we implement more pushdown capabilities
-    }
+      // HBASE_FILTER_PREDS
+        if ((attrEnum == HBASE_FILTER_PREDS) && value.length()==1)
+      switch (*value.data()){
+        case '0': return DF_OFF;
+        case '1': return DF_MINIMUM;
+        case '2': return DF_MEDIUM;
+        // in the future add DF_HIGH and DF_MAXIMUM when we implement more pushdown capabilities
+      }
     if ( attrEnum == TEMPORARY_TABLE_HASH_PARTITIONS ||
          attrEnum == MVQR_REWRITE_CANDIDATES ||
          attrEnum == MVQR_PUBLISH_TABLE_LOCATION ||
@@ -6693,13 +6693,13 @@ DefaultToken NADefaults::token(Int32 attrEnum,
       break;
 
     case HBASE_FILTER_PREDS:
-    	if(tok == DF_OFF || tok == DF_ON)
-    	{
-    		if (tok == DF_ON)
-    			tok = DF_MINIMUM; // to keep backward compatibility
-    	isValid= TRUE;
-    	}
-    	break;
+        if(tok == DF_OFF || tok == DF_ON)
+        {
+            if (tok == DF_ON)
+                tok = DF_MINIMUM; // to keep backward compatibility
+        isValid= TRUE;
+        }
+        break;
 
     case ROBUST_QUERY_OPTIMIZATION:
       if (tok == DF_MINIMUM || tok == DF_SYSTEM || tok == DF_MAXIMUM ||


[08/15] incubator-trafodion git commit: following code review outcome on pull request 255: - for all files, fix tab with white space - ExHbaseAccess.cpp, add comment - Initialize nac in file GenPreCode.cpp, line 11938 and 11417 - Remove checks for ITM_RE

Posted by hz...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f7aaa280/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
index 5d936bc..ba29f99 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
@@ -365,417 +365,417 @@ public class HTableClient {
 		table.setAutoFlush(true, true);
 	}
 
-	private enum Op {
-		EQUAL, EQUAL_NULL, NOT_EQUAL, NOT_EQUAL_NULL, LESS, LESS_NULL, LESS_OR_EQUAL, LESS_OR_EQUAL_NULL, GREATER, GREATER_NULL, 
-		GREATER_OR_EQUAL, GREATER_OR_EQUAL_NULL, NO_OP, NO_OP_NULL,IS_NULL, IS_NULL_NULL, IS_NOT_NULL, IS_NOT_NULL_NULL, AND, OR};
-		
-	private Filter SingleColumnValueExcludeOrNotFilter(byte[] columnToFilter, 
-														CompareOp op,
-														ByteArrayComparable comparator, 
-														HashMap<String,Object> columnsToRemove, 
-														Boolean... filterIfMissing){
-		Filter result;
-		boolean fMissing = filterIfMissing.length>0?filterIfMissing[0]:false;//default to false 
-		if ((columnsToRemove == null) || !columnsToRemove.containsKey(new String(columnToFilter))){
-			result = new SingleColumnValueFilter(getFamily(columnToFilter), getName(columnToFilter), op, comparator);
-			((SingleColumnValueFilter)result).setFilterIfMissing(fMissing);
-		}
-		else{
-			result= new SingleColumnValueExcludeFilter(getFamily(columnToFilter), getName(columnToFilter), op, comparator);
-			((SingleColumnValueExcludeFilter)result).setFilterIfMissing(fMissing);
-		}
-		return result;
-	}
-	
-	// construct the hbase filter
-	// optimizes for OR and AND associativity
-	// optimizes for detection of a<? and a>? on nullable and non nullable column equivalent to a<>?
-	// optimize for null check factorization (A not null and (A <op> ?)) or (A not null and A <op2> ?) -> A not null and (A <op> ? or A <op2> ?)
-	//		this is an important optimzation for IN statement on non null column
-	// uses the columnToRemove parametter to know if we need to use the SingleColumnValue Exclude or not method to limit returned columns
-	
-	private Filter constructV2Filter(Object[] colNamesToFilter, 
+    private enum Op {
+        EQUAL, EQUAL_NULL, NOT_EQUAL, NOT_EQUAL_NULL, LESS, LESS_NULL, LESS_OR_EQUAL, LESS_OR_EQUAL_NULL, GREATER, GREATER_NULL, 
+        GREATER_OR_EQUAL, GREATER_OR_EQUAL_NULL, NO_OP, NO_OP_NULL,IS_NULL, IS_NULL_NULL, IS_NOT_NULL, IS_NOT_NULL_NULL, AND, OR};
+        
+    private Filter SingleColumnValueExcludeOrNotFilter(byte[] columnToFilter, 
+                                                        CompareOp op,
+                                                        ByteArrayComparable comparator, 
+                                                        HashMap<String,Object> columnsToRemove, 
+                                                        Boolean... filterIfMissing){
+        Filter result;
+        boolean fMissing = filterIfMissing.length>0?filterIfMissing[0]:false;//default to false 
+        if ((columnsToRemove == null) || !columnsToRemove.containsKey(new String(columnToFilter))){
+            result = new SingleColumnValueFilter(getFamily(columnToFilter), getName(columnToFilter), op, comparator);
+            ((SingleColumnValueFilter)result).setFilterIfMissing(fMissing);
+        }
+        else{
+            result= new SingleColumnValueExcludeFilter(getFamily(columnToFilter), getName(columnToFilter), op, comparator);
+            ((SingleColumnValueExcludeFilter)result).setFilterIfMissing(fMissing);
+        }
+        return result;
+    }
+    
+    // construct the hbase filter
+    // optimizes for OR and AND associativity
+    // optimizes for detection of a<? and a>? on nullable and non nullable column equivalent to a<>?
+    // optimize for null check factorization (A not null and (A <op> ?)) or (A not null and A <op2> ?) -> A not null and (A <op> ? or A <op2> ?)
+    //      this is an important optimzation for IN statement on non null column
+    // uses the columnToRemove parametter to know if we need to use the SingleColumnValue Exclude or not method to limit returned columns
+    
+    private Filter constructV2Filter(Object[] colNamesToFilter, 
                                  Object[] compareOpList, 
                                  Object[] colValuesToCompare,
                                  HashMap<String,Object> columnsToRemove){
-		LinkedList linkedList = new LinkedList();
-		//populate the list with nodes in reverse polish notation order.
-		int k=0;//column index
-		int kk=0;//value index
-		for (int i=1; i<compareOpList.length; i++){ // skip first one containing "V2" marker
-			String opStr = new String((byte[])compareOpList[i]);
-			switch(Op.valueOf(opStr)){
-				
-				case EQUAL:
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k], 
-							CompareOp.EQUAL, 
-							new BinaryComparator((byte[])colValuesToCompare[kk]),
-							columnsToRemove
-							));
-					k++;kk++;
-					break;
-				case EQUAL_NULL:
-					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
-										   SingleColumnValueExcludeOrNotFilter(
-												(byte[])colNamesToFilter[k],
-												CompareOp.EQUAL, 
-												new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
-												columnsToRemove,
-												true	//filterIfMissing
-												),
-										   SingleColumnValueExcludeOrNotFilter(
-													(byte[])colNamesToFilter[k], 
-													CompareOp.EQUAL, 
-													new BinaryComparator((byte[])colValuesToCompare[kk]),
-													columnsToRemove)));
-					k++;kk++;
-					break;
-				case NOT_EQUAL:
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k], 
-							CompareOp.NOT_EQUAL, 
-							new BinaryComparator((byte[])colValuesToCompare[kk]),
-							columnsToRemove));
-					k++;kk++;
-					break;
-				case NOT_EQUAL_NULL:
-					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k],
-									CompareOp.EQUAL, 
-									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
-									columnsToRemove,
-									true), //filterIfMissing,
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k], 
-									CompareOp.NOT_EQUAL, 
-									new BinaryComparator((byte[])colValuesToCompare[kk]),
-									columnsToRemove)));
-					k++;kk++;
-					break;
-				case LESS:
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k], 
-							CompareOp.LESS, 
-							new BinaryComparator((byte[])colValuesToCompare[kk]),
-							columnsToRemove));
-					k++;kk++;
-					break;
-				case LESS_NULL:
-					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k],
-									CompareOp.EQUAL, 
-									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
-									columnsToRemove,
-									true), //filterIfMissing,
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k], 
-									CompareOp.LESS, 
-									new BinaryComparator((byte[])colValuesToCompare[kk]),
-									columnsToRemove)));
-					k++;kk++;
-					break;
-				case LESS_OR_EQUAL:
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k], 
-							CompareOp.LESS_OR_EQUAL, 
-							new BinaryComparator((byte[])colValuesToCompare[kk]),
-							columnsToRemove));
-					k++;kk++;
-					break;
-				case LESS_OR_EQUAL_NULL:
-					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k],
-									CompareOp.EQUAL, 
-									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
-									columnsToRemove,
-									true), //filterIfMissing,
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k], 
-									CompareOp.LESS_OR_EQUAL, 
-									new BinaryComparator((byte[])colValuesToCompare[kk]),
-									columnsToRemove)));
-					k++;kk++;					
-					break;
-				case GREATER:
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k], 
-							CompareOp.GREATER, 
-							new BinaryComparator((byte[])colValuesToCompare[kk]),
-							columnsToRemove));
-					k++;kk++;
-					break;
-				case GREATER_NULL:
-					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k],
-									CompareOp.EQUAL, 
-									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
-									columnsToRemove,
-									true), //filterIfMissing, 
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k], 
-									CompareOp.GREATER, 
-									new BinaryComparator((byte[])colValuesToCompare[kk]),
-									columnsToRemove)));
-					k++;kk++;					
-					break;
-				case GREATER_OR_EQUAL:
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k], 
-							CompareOp.GREATER_OR_EQUAL, 
-							new BinaryComparator((byte[])colValuesToCompare[kk]),
-							columnsToRemove));
-					k++;kk++;
-					break;
-				case GREATER_OR_EQUAL_NULL:
-					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k],
-									CompareOp.EQUAL, 
-									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
-									columnsToRemove,
-									true), //filterIfMissing,
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k], 
-									CompareOp.GREATER_OR_EQUAL, 
-									new BinaryComparator((byte[])colValuesToCompare[kk]),
-									columnsToRemove)));
-					k++;kk++;
-					break;
-				case NO_OP:
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k], 
-							CompareOp.NO_OP, 
-							new BinaryComparator((byte[])colValuesToCompare[kk]),
-							columnsToRemove));
-					k++;kk++;
-					break;
-				case NO_OP_NULL:
-					linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k],
-									CompareOp.EQUAL, 
-									new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
-									columnsToRemove,
-									true), //filterIfMissing,
-							SingleColumnValueExcludeOrNotFilter(
-									(byte[])colNamesToFilter[k], 
-									CompareOp.NO_OP, 
-									new BinaryComparator((byte[])colValuesToCompare[kk]),
-									columnsToRemove)));
-					k++;kk++;					
-					break;
-				case IS_NULL:
-					// is null on a non nullable column!
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k], 
-							CompareOp.NO_OP, //exclude everything
-							new BinaryPrefixComparator((new byte[]{})),
-							columnsToRemove));
-					k++;
-					break;
-				case IS_NULL_NULL:
-					// is_null on nullable column: is absent OR has the first byte set to FF indicating NULL.
-					linkedList.addLast(
-							new FilterList(FilterList.Operator.MUST_PASS_ONE, //OR
-									SingleColumnValueExcludeOrNotFilter(
-											(byte[])colNamesToFilter[k],
-											CompareOp.EQUAL, 
-											new NullComparator(),//is absent?
-											columnsToRemove), 
-									SingleColumnValueExcludeOrNotFilter(
-											(byte[])colNamesToFilter[k],
-											CompareOp.EQUAL, 
-											new BinaryPrefixComparator(new byte[]{-1}),//0xFF has null prefix indicator
-											columnsToRemove)));
-					k++;
-					break;
-				case IS_NOT_NULL:
-					// is not null on a non nullable column!
-					// do nothing, always true
-					k++;
-					break;	
-				case IS_NOT_NULL_NULL:
-					// is_not_null on nullable column: is not absent AND has the first byte not set to FF indicating NULL.
-					linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
-							(byte[])colNamesToFilter[k],
-							CompareOp.NOT_EQUAL, 
-							new BinaryPrefixComparator(new byte[]{-1}),// 0xFF has null prefix indicator
-							columnsToRemove,
-							true));//filter if missing (if absent null)
-					k++;
-					break;
-				case AND:
-					linkedList.addLast("AND");
-					break;
-				case OR:
-					linkedList.addLast("OR");
-					break;
-					default:
-			}//switch
-		}//for
-		//evaluate the reverse polish notation list
-		while (linkedList.size()>1){// evaluate until only one element is left in the list
-			//look for first operator (AND or OR)
-			int j=0;
-			while (j<linkedList.size() && !(linkedList.get(j) instanceof String)){
-				j++;
-			}
-			//here j points on the first operator; (all operands are of type Filter)
-			if (j==linkedList.size()){logger.error("j==linkedList.size()");return null;} // should not happen
-			Filter leftOperand;
-			Filter rightOperand;
-			switch(Op.valueOf((String)linkedList.get(j))){
-			case AND:
-				FilterList filterListAnd = new FilterList(FilterList.Operator.MUST_PASS_ALL); //AND filterList
-				//left operand
-				leftOperand = (Filter)linkedList.get(j-2);
-				if (leftOperand instanceof FilterList && ((FilterList)leftOperand).getOperator()==FilterList.Operator.MUST_PASS_ALL){//associativity of AND optimization
-					//for(Filter f:((FilterList)leftOperand).getFilters())
-					//	filterListAnd.addFilter(f);
-					filterListAnd = (FilterList)leftOperand; //more efficient than the 2 lines above (kept commented out for code lisibility)
-				}else{
-					filterListAnd.addFilter(leftOperand);
-				}
-				// right operand
-				rightOperand = (Filter)linkedList.get(j-1);
-				if (rightOperand instanceof FilterList && ((FilterList)rightOperand).getOperator()==FilterList.Operator.MUST_PASS_ALL){//associativity of AND optimization
-					for(Filter f:((FilterList)rightOperand).getFilters())
-						filterListAnd.addFilter(f);					
-				}else{
-					filterListAnd.addFilter(rightOperand);
-				}				
-				// setup evaluated filter
-				linkedList.set(j,filterListAnd); // replace the operator with the constructer filter
-				linkedList.remove(j-1);// remove right operand
-				linkedList.remove(j-2);// remove left operand. warning order matter 
-				break;
-			case OR:
-				FilterList filterListOr = new FilterList(FilterList.Operator.MUST_PASS_ONE); //OR filterList
-				leftOperand = (Filter)linkedList.get(j-2);
-				rightOperand = (Filter)linkedList.get(j-1);
-				//begin detection of null check factorization (A not null and (A <op> ?)) or (A not null and A <op2> ?) -> A not null and (A <op> ? or A <op2> ?)  
-				//the code is doing more than just nullcheck, but any factorization where left operands are identical
-				if (leftOperand instanceof FilterList && rightOperand instanceof FilterList && 
-					((FilterList)leftOperand).getOperator() == FilterList.Operator.MUST_PASS_ALL &&
-					((FilterList)rightOperand).getOperator() == FilterList.Operator.MUST_PASS_ALL &&
-					((FilterList)leftOperand).getFilters().size() == 2 &&
-					((FilterList)rightOperand).getFilters().size() == 2 &&
-					((FilterList)leftOperand).getFilters().get(0) instanceof SingleColumnValueFilter && //cannot be SingleColumnValueExcludeFilter when we have the optimization scenario
-					((FilterList)rightOperand).getFilters().get(0) instanceof SingleColumnValueFilter){//cannot be SingleColumnValueExcludeFilter when we have the optimization scenario
-					SingleColumnValueFilter scvfLeft = (SingleColumnValueFilter)((FilterList)leftOperand).getFilters().get(0);
-					SingleColumnValueFilter scvfRight = (SingleColumnValueFilter)((FilterList)rightOperand).getFilters().get(0);
-					if (scvfLeft.getOperator() == scvfRight.getOperator() && //more general case than just for null check (identical operands)
-						Arrays.equals(scvfLeft.getQualifier(),scvfRight.getQualifier()) &&
-						Arrays.equals(scvfLeft.getFamily(),scvfRight.getFamily()) &&
-						Arrays.equals(scvfLeft.getComparator().getValue(),scvfRight.getComparator().getValue()) &&
-						(scvfLeft.getFilterIfMissing() == scvfRight.getFilterIfMissing())){
-						Filter left = ((FilterList)leftOperand).getFilters().get(1);
-						Filter right = ((FilterList)rightOperand).getFilters().get(1);
-						if (left instanceof FilterList && ((FilterList)left).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
-							//for(Filter f:((FilterList)left).getFilters())
-							//	filterListOr.addFilter(f);
-							filterListOr = (FilterList)left; // more efficient than the 2 lines above (kept commented out for code lisibility)
-						}else{
-							filterListOr.addFilter(left);
-						}
-						// right operand				
-						if (right instanceof FilterList && ((FilterList)right).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
-							for(Filter f:((FilterList)right).getFilters())
-								filterListOr.addFilter(f);					
-						}else{
-							filterListOr.addFilter(right);
-						}										
-						linkedList.set(j,new FilterList(FilterList.Operator.MUST_PASS_ALL,scvfLeft,filterListOr));//resulting factorized AND filter
-						linkedList.remove(j-1);// remove right operand
-						linkedList.remove(j-2);// remove left operand. warning order matter 
-						break;
-					}									
-				}
-				//end detection of null (and more) check factorization
-				//begin detection of RangeSpec a<>? transformed to a<? or a>? to convert it back to a <> ? when we push down
-				//check for <> on non nullable columns
-				if (leftOperand instanceof SingleColumnValueFilter && rightOperand instanceof SingleColumnValueFilter){
-					SingleColumnValueFilter leftscvf = (SingleColumnValueFilter)leftOperand;
-					SingleColumnValueFilter rightscvf = (SingleColumnValueFilter)rightOperand;
-					if (leftscvf.getOperator() == CompareOp.LESS && rightscvf.getOperator()== CompareOp.GREATER && 
-							Arrays.equals(leftscvf.getQualifier(), rightscvf.getQualifier()) &&
-							Arrays.equals(leftscvf.getFamily(), rightscvf.getFamily()) &&
-							Arrays.equals(leftscvf.getComparator().getValue(),rightscvf.getComparator().getValue())
-						){
-						// setup evaluated filter
-						linkedList.set(j,new SingleColumnValueFilter(leftscvf.getFamily(), leftscvf.getQualifier(), CompareOp.NOT_EQUAL, leftscvf.getComparator())); // replace the operator with the constructer filter
-						linkedList.remove(j-1);// remove right operand
-						linkedList.remove(j-2);// remove left operand. warning order matter 						
-						break;
-					}
-				}
-				//check for <> on nullable column
-				if( leftOperand instanceof FilterList && rightOperand instanceof FilterList){
-					//no need to check FilterList size, as all possible case FilterList size is at least 2.
-					if (((FilterList)leftOperand).getFilters().get(1) instanceof SingleColumnValueFilter &&
-						((FilterList)rightOperand).getFilters().get(1) instanceof SingleColumnValueFilter){
-						SingleColumnValueFilter leftscvf = (SingleColumnValueFilter)((FilterList)leftOperand).getFilters().get(1);
-						SingleColumnValueFilter rightscvf = (SingleColumnValueFilter)((FilterList)rightOperand).getFilters().get(1);
-						if (leftscvf.getOperator() == CompareOp.LESS && rightscvf.getOperator()== CompareOp.GREATER && 
-								Arrays.equals(leftscvf.getQualifier(), rightscvf.getQualifier()) &&
-								Arrays.equals(leftscvf.getFamily(), rightscvf.getFamily()) &&
-								Arrays.equals(leftscvf.getComparator().getValue(),rightscvf.getComparator().getValue())
-							){
-							// setup evaluated filter
-							SingleColumnValueFilter nullCheck = new SingleColumnValueFilter(// null checker
-									leftscvf.getFamily(), leftscvf.getQualifier(),
-									CompareOp.EQUAL, 
-									new BinaryPrefixComparator(new byte[]{0x00}));
-							nullCheck.setFilterIfMissing(true);
-							linkedList.set(j,new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
-									nullCheck, 
-									new SingleColumnValueFilter(
-											leftscvf.getFamily(), leftscvf.getQualifier(), 
-											CompareOp.NOT_EQUAL, 
-											leftscvf.getComparator()))); 
-							linkedList.remove(j-1);// remove right operand
-							linkedList.remove(j-2);// remove left operand. warning order matter 						
-							break;
-						}						
-					}
-				}				
-				//end detection of RangeSpec a<>?
-				//now general case...
-				//left operand			    
-				if (leftOperand instanceof FilterList && ((FilterList)leftOperand).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
-					//for(Filter f:((FilterList)leftOperand).getFilters())
-					//	filterListOr.addFilter(f);
-					filterListOr = (FilterList)leftOperand; // more efficient than the 2 lines above (kept commented out for code lisibility)
-				}else{
-					filterListOr.addFilter(leftOperand);
-				}
-				// right operand				
-				if (rightOperand instanceof FilterList && ((FilterList)rightOperand).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
-					for(Filter f:((FilterList)rightOperand).getFilters())
-						filterListOr.addFilter(f);					
-				}else{
-					filterListOr.addFilter(rightOperand);
-				}				
-				// setup evaluated filter
-				linkedList.set(j,filterListOr); // replace the operator with the constructer filter
-				linkedList.remove(j-1);// remove right operand
-				linkedList.remove(j-2);// remove left operand. warning order matter 
-				break;
-				default:
-					logger.error("operator different than OR or AND???");
-					return null;//should never happen
-			}			
-		}
-		// after evaluation, the linkedList contains only one element containing the filter built
-		return (Filter)linkedList.pop();
-	}
-	
-	
+        LinkedList linkedList = new LinkedList();
+        //populate the list with nodes in reverse polish notation order.
+        int k=0;//column index
+        int kk=0;//value index
+        for (int i=1; i<compareOpList.length; i++){ // skip first one containing "V2" marker
+            String opStr = new String((byte[])compareOpList[i]);
+            switch(Op.valueOf(opStr)){
+                
+                case EQUAL:
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k], 
+                            CompareOp.EQUAL, 
+                            new BinaryComparator((byte[])colValuesToCompare[kk]),
+                            columnsToRemove
+                            ));
+                    k++;kk++;
+                    break;
+                case EQUAL_NULL:
+                    linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+                                           SingleColumnValueExcludeOrNotFilter(
+                                                (byte[])colNamesToFilter[k],
+                                                CompareOp.EQUAL, 
+                                                new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+                                                columnsToRemove,
+                                                true    //filterIfMissing
+                                                ),
+                                           SingleColumnValueExcludeOrNotFilter(
+                                                    (byte[])colNamesToFilter[k], 
+                                                    CompareOp.EQUAL, 
+                                                    new BinaryComparator((byte[])colValuesToCompare[kk]),
+                                                    columnsToRemove)));
+                    k++;kk++;
+                    break;
+                case NOT_EQUAL:
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k], 
+                            CompareOp.NOT_EQUAL, 
+                            new BinaryComparator((byte[])colValuesToCompare[kk]),
+                            columnsToRemove));
+                    k++;kk++;
+                    break;
+                case NOT_EQUAL_NULL:
+                    linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k],
+                                    CompareOp.EQUAL, 
+                                    new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+                                    columnsToRemove,
+                                    true), //filterIfMissing,
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k], 
+                                    CompareOp.NOT_EQUAL, 
+                                    new BinaryComparator((byte[])colValuesToCompare[kk]),
+                                    columnsToRemove)));
+                    k++;kk++;
+                    break;
+                case LESS:
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k], 
+                            CompareOp.LESS, 
+                            new BinaryComparator((byte[])colValuesToCompare[kk]),
+                            columnsToRemove));
+                    k++;kk++;
+                    break;
+                case LESS_NULL:
+                    linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k],
+                                    CompareOp.EQUAL, 
+                                    new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+                                    columnsToRemove,
+                                    true), //filterIfMissing,
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k], 
+                                    CompareOp.LESS, 
+                                    new BinaryComparator((byte[])colValuesToCompare[kk]),
+                                    columnsToRemove)));
+                    k++;kk++;
+                    break;
+                case LESS_OR_EQUAL:
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k], 
+                            CompareOp.LESS_OR_EQUAL, 
+                            new BinaryComparator((byte[])colValuesToCompare[kk]),
+                            columnsToRemove));
+                    k++;kk++;
+                    break;
+                case LESS_OR_EQUAL_NULL:
+                    linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k],
+                                    CompareOp.EQUAL, 
+                                    new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+                                    columnsToRemove,
+                                    true), //filterIfMissing,
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k], 
+                                    CompareOp.LESS_OR_EQUAL, 
+                                    new BinaryComparator((byte[])colValuesToCompare[kk]),
+                                    columnsToRemove)));
+                    k++;kk++;                   
+                    break;
+                case GREATER:
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k], 
+                            CompareOp.GREATER, 
+                            new BinaryComparator((byte[])colValuesToCompare[kk]),
+                            columnsToRemove));
+                    k++;kk++;
+                    break;
+                case GREATER_NULL:
+                    linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k],
+                                    CompareOp.EQUAL, 
+                                    new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+                                    columnsToRemove,
+                                    true), //filterIfMissing, 
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k], 
+                                    CompareOp.GREATER, 
+                                    new BinaryComparator((byte[])colValuesToCompare[kk]),
+                                    columnsToRemove)));
+                    k++;kk++;                   
+                    break;
+                case GREATER_OR_EQUAL:
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k], 
+                            CompareOp.GREATER_OR_EQUAL, 
+                            new BinaryComparator((byte[])colValuesToCompare[kk]),
+                            columnsToRemove));
+                    k++;kk++;
+                    break;
+                case GREATER_OR_EQUAL_NULL:
+                    linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k],
+                                    CompareOp.EQUAL, 
+                                    new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+                                    columnsToRemove,
+                                    true), //filterIfMissing,
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k], 
+                                    CompareOp.GREATER_OR_EQUAL, 
+                                    new BinaryComparator((byte[])colValuesToCompare[kk]),
+                                    columnsToRemove)));
+                    k++;kk++;
+                    break;
+                case NO_OP:
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k], 
+                            CompareOp.NO_OP, 
+                            new BinaryComparator((byte[])colValuesToCompare[kk]),
+                            columnsToRemove));
+                    k++;kk++;
+                    break;
+                case NO_OP_NULL:
+                    linkedList.addLast(new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k],
+                                    CompareOp.EQUAL, 
+                                    new BinaryPrefixComparator(new byte[]{0x00}),//check for null indicator = 0 representing non null
+                                    columnsToRemove,
+                                    true), //filterIfMissing,
+                            SingleColumnValueExcludeOrNotFilter(
+                                    (byte[])colNamesToFilter[k], 
+                                    CompareOp.NO_OP, 
+                                    new BinaryComparator((byte[])colValuesToCompare[kk]),
+                                    columnsToRemove)));
+                    k++;kk++;                   
+                    break;
+                case IS_NULL:
+                    // is null on a non nullable column!
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k], 
+                            CompareOp.NO_OP, //exclude everything
+                            new BinaryPrefixComparator((new byte[]{})),
+                            columnsToRemove));
+                    k++;
+                    break;
+                case IS_NULL_NULL:
+                    // is_null on nullable column: is absent OR has the first byte set to FF indicating NULL.
+                    linkedList.addLast(
+                            new FilterList(FilterList.Operator.MUST_PASS_ONE, //OR
+                                    SingleColumnValueExcludeOrNotFilter(
+                                            (byte[])colNamesToFilter[k],
+                                            CompareOp.EQUAL, 
+                                            new NullComparator(),//is absent?
+                                            columnsToRemove), 
+                                    SingleColumnValueExcludeOrNotFilter(
+                                            (byte[])colNamesToFilter[k],
+                                            CompareOp.EQUAL, 
+                                            new BinaryPrefixComparator(new byte[]{-1}),//0xFF has null prefix indicator
+                                            columnsToRemove)));
+                    k++;
+                    break;
+                case IS_NOT_NULL:
+                    // is not null on a non nullable column!
+                    // do nothing, always true
+                    k++;
+                    break;  
+                case IS_NOT_NULL_NULL:
+                    // is_not_null on nullable column: is not absent AND has the first byte not set to FF indicating NULL.
+                    linkedList.addLast(SingleColumnValueExcludeOrNotFilter(
+                            (byte[])colNamesToFilter[k],
+                            CompareOp.NOT_EQUAL, 
+                            new BinaryPrefixComparator(new byte[]{-1}),// 0xFF has null prefix indicator
+                            columnsToRemove,
+                            true));//filter if missing (if absent null)
+                    k++;
+                    break;
+                case AND:
+                    linkedList.addLast("AND");
+                    break;
+                case OR:
+                    linkedList.addLast("OR");
+                    break;
+                    default:
+            }//switch
+        }//for
+        //evaluate the reverse polish notation list
+        while (linkedList.size()>1){// evaluate until only one element is left in the list
+            //look for first operator (AND or OR)
+            int j=0;
+            while (j<linkedList.size() && !(linkedList.get(j) instanceof String)){
+                j++;
+            }
+            //here j points on the first operator; (all operands are of type Filter)
+            if (j==linkedList.size()){logger.error("j==linkedList.size()");return null;} // should not happen
+            Filter leftOperand;
+            Filter rightOperand;
+            switch(Op.valueOf((String)linkedList.get(j))){
+            case AND:
+                FilterList filterListAnd = new FilterList(FilterList.Operator.MUST_PASS_ALL); //AND filterList
+                //left operand
+                leftOperand = (Filter)linkedList.get(j-2);
+                if (leftOperand instanceof FilterList && ((FilterList)leftOperand).getOperator()==FilterList.Operator.MUST_PASS_ALL){//associativity of AND optimization
+                    //for(Filter f:((FilterList)leftOperand).getFilters())
+                    //  filterListAnd.addFilter(f);
+                    filterListAnd = (FilterList)leftOperand; //more efficient than the 2 lines above (kept commented out for code lisibility)
+                }else{
+                    filterListAnd.addFilter(leftOperand);
+                }
+                // right operand
+                rightOperand = (Filter)linkedList.get(j-1);
+                if (rightOperand instanceof FilterList && ((FilterList)rightOperand).getOperator()==FilterList.Operator.MUST_PASS_ALL){//associativity of AND optimization
+                    for(Filter f:((FilterList)rightOperand).getFilters())
+                        filterListAnd.addFilter(f);                 
+                }else{
+                    filterListAnd.addFilter(rightOperand);
+                }               
+                // setup evaluated filter
+                linkedList.set(j,filterListAnd); // replace the operator with the constructer filter
+                linkedList.remove(j-1);// remove right operand
+                linkedList.remove(j-2);// remove left operand. warning order matter 
+                break;
+            case OR:
+                FilterList filterListOr = new FilterList(FilterList.Operator.MUST_PASS_ONE); //OR filterList
+                leftOperand = (Filter)linkedList.get(j-2);
+                rightOperand = (Filter)linkedList.get(j-1);
+                //begin detection of null check factorization (A not null and (A <op> ?)) or (A not null and A <op2> ?) -> A not null and (A <op> ? or A <op2> ?)  
+                //the code is doing more than just nullcheck, but any factorization where left operands are identical
+                if (leftOperand instanceof FilterList && rightOperand instanceof FilterList && 
+                    ((FilterList)leftOperand).getOperator() == FilterList.Operator.MUST_PASS_ALL &&
+                    ((FilterList)rightOperand).getOperator() == FilterList.Operator.MUST_PASS_ALL &&
+                    ((FilterList)leftOperand).getFilters().size() == 2 &&
+                    ((FilterList)rightOperand).getFilters().size() == 2 &&
+                    ((FilterList)leftOperand).getFilters().get(0) instanceof SingleColumnValueFilter && //cannot be SingleColumnValueExcludeFilter when we have the optimization scenario
+                    ((FilterList)rightOperand).getFilters().get(0) instanceof SingleColumnValueFilter){//cannot be SingleColumnValueExcludeFilter when we have the optimization scenario
+                    SingleColumnValueFilter scvfLeft = (SingleColumnValueFilter)((FilterList)leftOperand).getFilters().get(0);
+                    SingleColumnValueFilter scvfRight = (SingleColumnValueFilter)((FilterList)rightOperand).getFilters().get(0);
+                    if (scvfLeft.getOperator() == scvfRight.getOperator() && //more general case than just for null check (identical operands)
+                        Arrays.equals(scvfLeft.getQualifier(),scvfRight.getQualifier()) &&
+                        Arrays.equals(scvfLeft.getFamily(),scvfRight.getFamily()) &&
+                        Arrays.equals(scvfLeft.getComparator().getValue(),scvfRight.getComparator().getValue()) &&
+                        (scvfLeft.getFilterIfMissing() == scvfRight.getFilterIfMissing())){
+                        Filter left = ((FilterList)leftOperand).getFilters().get(1);
+                        Filter right = ((FilterList)rightOperand).getFilters().get(1);
+                        if (left instanceof FilterList && ((FilterList)left).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
+                            //for(Filter f:((FilterList)left).getFilters())
+                            //  filterListOr.addFilter(f);
+                            filterListOr = (FilterList)left; // more efficient than the 2 lines above (kept commented out for code lisibility)
+                        }else{
+                            filterListOr.addFilter(left);
+                        }
+                        // right operand                
+                        if (right instanceof FilterList && ((FilterList)right).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
+                            for(Filter f:((FilterList)right).getFilters())
+                                filterListOr.addFilter(f);                  
+                        }else{
+                            filterListOr.addFilter(right);
+                        }                                       
+                        linkedList.set(j,new FilterList(FilterList.Operator.MUST_PASS_ALL,scvfLeft,filterListOr));//resulting factorized AND filter
+                        linkedList.remove(j-1);// remove right operand
+                        linkedList.remove(j-2);// remove left operand. warning order matter 
+                        break;
+                    }                                   
+                }
+                //end detection of null (and more) check factorization
+                //begin detection of RangeSpec a<>? transformed to a<? or a>? to convert it back to a <> ? when we push down
+                //check for <> on non nullable columns
+                if (leftOperand instanceof SingleColumnValueFilter && rightOperand instanceof SingleColumnValueFilter){
+                    SingleColumnValueFilter leftscvf = (SingleColumnValueFilter)leftOperand;
+                    SingleColumnValueFilter rightscvf = (SingleColumnValueFilter)rightOperand;
+                    if (leftscvf.getOperator() == CompareOp.LESS && rightscvf.getOperator()== CompareOp.GREATER && 
+                            Arrays.equals(leftscvf.getQualifier(), rightscvf.getQualifier()) &&
+                            Arrays.equals(leftscvf.getFamily(), rightscvf.getFamily()) &&
+                            Arrays.equals(leftscvf.getComparator().getValue(),rightscvf.getComparator().getValue())
+                        ){
+                        // setup evaluated filter
+                        linkedList.set(j,new SingleColumnValueFilter(leftscvf.getFamily(), leftscvf.getQualifier(), CompareOp.NOT_EQUAL, leftscvf.getComparator())); // replace the operator with the constructer filter
+                        linkedList.remove(j-1);// remove right operand
+                        linkedList.remove(j-2);// remove left operand. warning order matter                         
+                        break;
+                    }
+                }
+                //check for <> on nullable column
+                if( leftOperand instanceof FilterList && rightOperand instanceof FilterList){
+                    //no need to check FilterList size, as all possible case FilterList size is at least 2.
+                    if (((FilterList)leftOperand).getFilters().get(1) instanceof SingleColumnValueFilter &&
+                        ((FilterList)rightOperand).getFilters().get(1) instanceof SingleColumnValueFilter){
+                        SingleColumnValueFilter leftscvf = (SingleColumnValueFilter)((FilterList)leftOperand).getFilters().get(1);
+                        SingleColumnValueFilter rightscvf = (SingleColumnValueFilter)((FilterList)rightOperand).getFilters().get(1);
+                        if (leftscvf.getOperator() == CompareOp.LESS && rightscvf.getOperator()== CompareOp.GREATER && 
+                                Arrays.equals(leftscvf.getQualifier(), rightscvf.getQualifier()) &&
+                                Arrays.equals(leftscvf.getFamily(), rightscvf.getFamily()) &&
+                                Arrays.equals(leftscvf.getComparator().getValue(),rightscvf.getComparator().getValue())
+                            ){
+                            // setup evaluated filter
+                            SingleColumnValueFilter nullCheck = new SingleColumnValueFilter(// null checker
+                                    leftscvf.getFamily(), leftscvf.getQualifier(),
+                                    CompareOp.EQUAL, 
+                                    new BinaryPrefixComparator(new byte[]{0x00}));
+                            nullCheck.setFilterIfMissing(true);
+                            linkedList.set(j,new FilterList(FilterList.Operator.MUST_PASS_ALL, //AND between if not null and the actual
+                                    nullCheck, 
+                                    new SingleColumnValueFilter(
+                                            leftscvf.getFamily(), leftscvf.getQualifier(), 
+                                            CompareOp.NOT_EQUAL, 
+                                            leftscvf.getComparator()))); 
+                            linkedList.remove(j-1);// remove right operand
+                            linkedList.remove(j-2);// remove left operand. warning order matter                         
+                            break;
+                        }                       
+                    }
+                }               
+                //end detection of RangeSpec a<>?
+                //now general case...
+                //left operand              
+                if (leftOperand instanceof FilterList && ((FilterList)leftOperand).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
+                    //for(Filter f:((FilterList)leftOperand).getFilters())
+                    //  filterListOr.addFilter(f);
+                    filterListOr = (FilterList)leftOperand; // more efficient than the 2 lines above (kept commented out for code lisibility)
+                }else{
+                    filterListOr.addFilter(leftOperand);
+                }
+                // right operand                
+                if (rightOperand instanceof FilterList && ((FilterList)rightOperand).getOperator()==FilterList.Operator.MUST_PASS_ONE){//associativity of OR optimization
+                    for(Filter f:((FilterList)rightOperand).getFilters())
+                        filterListOr.addFilter(f);                  
+                }else{
+                    filterListOr.addFilter(rightOperand);
+                }               
+                // setup evaluated filter
+                linkedList.set(j,filterListOr); // replace the operator with the constructer filter
+                linkedList.remove(j-1);// remove right operand
+                linkedList.remove(j-2);// remove left operand. warning order matter 
+                break;
+            default:
+                logger.error("operator different than OR or AND???");
+                return null;//should never happen
+            }           
+        }
+        // after evaluation, the linkedList contains only one element containing the filter built
+        return (Filter)linkedList.pop();
+    }
+    
+    
 	public boolean startScan(long transID, byte[] startRow, byte[] stopRow,
                                  Object[]  columns, long timestamp,
                                  boolean cacheBlocks, int numCacheRows,
@@ -839,140 +839,140 @@ public class HTableClient {
 	  else
 	    numColsInScan = 0;
 	  if (colNamesToFilter != null) {
-		FilterList list;
-		boolean narrowDownResultColumns = false; //to check if we need a narrow down column filter (V2 only feature)
-		if (compareOpList == null)return false;
-		if (new String((byte[])compareOpList[0]).equals("V2")){ // are we dealing with predicate pushdown V2
-			list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
-			HashMap<String,Object> columnsToRemove = new HashMap<String,Object>();
-			//if columnsToRemove not null, we are narrowing down using the SingleColumnValue[Exclude]Filter method
-			//else we will use the explicit FamilyFilter and QualifierFilter
-			//the simplified logic is that we can use the first method if and only if each and every column in the
-			//pushed down predicate shows up only once.
-		    for (int i = 0; i < colNamesToFilter.length; i++) {
-		      byte[] colName = (byte[])colNamesToFilter[i];
-	      
-		      // check if the filter column is already part of the column list, if not add it if we are limiting columns (not *)
-		      if(columns!=null && columns.length > 0){// if not *
-		    	  boolean columnAlreadyIn = false; //assume column not yet in the scan object
-		    	  for (int k=0; k<columns.length;k++){
-		    		  if (Arrays.equals(colName, (byte[])columns[k])){
-		    			  columnAlreadyIn = true;//found already exist
-		    			  break;//no need to look further
-		    		  }
-		    	  }
-		    	  if (!columnAlreadyIn){// column was not already in, so add it
-		    		  scan.addColumn(getFamily(colName),getName(colName));
-		    		  narrowDownResultColumns = true; //since we added a column for predicate eval, we need to remove it later out of result set
-		    		  String strColName = new String(colName);
-		    		  if (columnsToRemove != null && columnsToRemove.containsKey(strColName)){// if we already added this column, it means it shows up more than once
-		    			  columnsToRemove = null; // therefore, use the FamilyFilter/QualifierFilter method
-		    		  }else if (columnsToRemove != null)// else 
-		    			  columnsToRemove.put(strColName,null); // add it to the list of column that should be nuked with the Exclude version of the SingleColumnValueFilter
-		    	  }
-		      }	    	
-		    }
-		    if (columnsToRemove != null)
-		    { //we are almost done checking if Exclude version of SingleColumnnValueFilter can be used. Th elast check s about to know if there is a IS_NULL_NULL
-		      //operation that cannot be using the Exclude method, as it is transformed in a filterList with OR, therefore we cannot guaranty that the SingleColumnValueExcludeFilter
-		      //performing the exclusion will be reached.
-		    	boolean is_null_nullFound = false;
-		    	for (Object o:compareOpList ){
-		    		if (new String((byte[])o).equals("IS_NULL_NULL")){
-		    			is_null_nullFound = true;
-		    			break;
-		    		}		    			
-		    	}
-		    	if (is_null_nullFound){
-		    		columnsToRemove = null; // disable Exclude method version of SingleColumnnValueFilter
-		    	}else
-		    		narrowDownResultColumns = false; // we will use the Exclude version of SingleColumnnValueFilter, so bypass the Family/QualifierFilter method
-		    }
-		    Filter f =constructV2Filter(colNamesToFilter,compareOpList,colValuesToCompare, columnsToRemove);
-		    if (f==null) return false; // error logging done inside constructV2Filter
-		    list.addFilter(f);
-		}//end V2
-		else{// deal with V1
-		    list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
-		    
-		    for (int i = 0; i < colNamesToFilter.length; i++) {
-		      byte[] colName = (byte[])colNamesToFilter[i];
-		      byte[] coByte = (byte[])compareOpList[i];
-		      byte[] colVal = (byte[])colValuesToCompare[i];
-	
-		      if ((coByte == null) || (colVal == null)) {
-		        return false;
-		      }
-		      String coStr = new String(coByte);
-		      CompareOp co = CompareOp.valueOf(coStr);
-	
-		      SingleColumnValueFilter filter1 = 
-		          new SingleColumnValueFilter(getFamily(colName), getName(colName), 
-		              co, colVal);
-		      list.addFilter(filter1);
-		    }			
-		}//end V1
-	    // if we added a column for predicate eval, we need to filter down result columns
-	    FilterList resultColumnsOnlyFilter = null;
-	    if (narrowDownResultColumns){  	    	
-  		    HashMap<String,ArrayList<byte[]>> hm = new HashMap<String,ArrayList<byte[]>>(3);//use to deal with multiple family table
-  		    // initialize hm with list of columns requested for output
-  		    	for (int i=0; i<columns.length; i++){ // if we are here we know columns is not null
-  		    		if (hm.containsKey(new String(getFamily((byte[])columns[i])))){
-  		    			hm.get(new String(getFamily((byte[])columns[i]))).add((byte[])columns[i]);
-  		    		}else{
-  		    			ArrayList<byte[]> al = new ArrayList<byte[]>();
-  		    			al.add((byte[])columns[i]);
-  		    			hm.put(new String(getFamily((byte[])columns[i])), al);
-  		    		}	    			
-  		    	}
-  		    	
-  	    	if (hm.size()==1){//only one column family
-  	    		resultColumnsOnlyFilter = new FilterList(FilterList.Operator.MUST_PASS_ALL);
-  	    		if (columns.length == 1){
-  	  	    		resultColumnsOnlyFilter.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName((byte[])columns[0])))); 	    			
-  	    		}else{// more than one column
-  	    			FilterList flColumns = new FilterList(FilterList.Operator.MUST_PASS_ONE);
-  	    			for(int i=0; i<columns.length;i++)
-  	    				flColumns.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName((byte[])columns[i]))));  	    			
-  	    			resultColumnsOnlyFilter.addFilter(flColumns);
-  	    		}  	    		  	    		
-  	    		// note the optimization puting family check at the end
-  	    		resultColumnsOnlyFilter.addFilter(new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily((byte[])columns[0]))));
-  	    	}else{//more than one column family
-  	    		resultColumnsOnlyFilter = new FilterList(FilterList.Operator.MUST_PASS_ONE);
-  	    		for (Map.Entry<String,ArrayList<byte[]>> entry : hm.entrySet()){//for each column family
-  	    			ArrayList<byte[]> alb = entry.getValue();
-  	    			if (alb.size() == 1){// when only one column for the family
-  	    				resultColumnsOnlyFilter.addFilter(
-  	    						new FilterList(FilterList.Operator.MUST_PASS_ALL,
-  	    									   new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName(alb.get(0)))),
-  	    								       new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily(alb.get(0)))))
-  	    				);
-  	    			}else{// when multiple columns for the family
-	  	    			FamilyFilter familyFilter = null;
-	  	    			FilterList filterListCol = new FilterList(FilterList.Operator.MUST_PASS_ONE);
-	  	    			for(int j = 0; j<alb.size(); j++){
-	  	    				if (familyFilter == null)
-	  	    					familyFilter = new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily(alb.get(0))));
-	  	    				filterListCol.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName(alb.get(j)))));	  	    				
-	  	    			}
-  	    				resultColumnsOnlyFilter.addFilter(new FilterList(FilterList.Operator.MUST_PASS_ALL,filterListCol,familyFilter));
-  	    			}
-  	    		}
-  	    	}
-  	    	list.addFilter(resultColumnsOnlyFilter); // add column limiting filter
-  	    }//end narrowDownResultColumns
+	        FilterList list;
+	        boolean narrowDownResultColumns = false; //to check if we need a narrow down column filter (V2 only feature)
+	        if (compareOpList == null)return false;
+	        if (new String((byte[])compareOpList[0]).equals("V2")){ // are we dealing with predicate pushdown V2
+	            list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
+	            HashMap<String,Object> columnsToRemove = new HashMap<String,Object>();
+	            //if columnsToRemove not null, we are narrowing down using the SingleColumnValue[Exclude]Filter method
+	            //else we will use the explicit FamilyFilter and QualifierFilter
+	            //the simplified logic is that we can use the first method if and only if each and every column in the
+	            //pushed down predicate shows up only once.
+	            for (int i = 0; i < colNamesToFilter.length; i++) {
+	              byte[] colName = (byte[])colNamesToFilter[i];
+	          
+	              // check if the filter column is already part of the column list, if not add it if we are limiting columns (not *)
+	              if(columns!=null && columns.length > 0){// if not *
+	                  boolean columnAlreadyIn = false; //assume column not yet in the scan object
+	                  for (int k=0; k<columns.length;k++){
+	                      if (Arrays.equals(colName, (byte[])columns[k])){
+	                          columnAlreadyIn = true;//found already exist
+	                          break;//no need to look further
+	                      }
+	                  }
+	                  if (!columnAlreadyIn){// column was not already in, so add it
+	                      scan.addColumn(getFamily(colName),getName(colName));
+	                      narrowDownResultColumns = true; //since we added a column for predicate eval, we need to remove it later out of result set
+	                      String strColName = new String(colName);
+	                      if (columnsToRemove != null && columnsToRemove.containsKey(strColName)){// if we already added this column, it means it shows up more than once
+	                          columnsToRemove = null; // therefore, use the FamilyFilter/QualifierFilter method
+	                      }else if (columnsToRemove != null)// else 
+	                          columnsToRemove.put(strColName,null); // add it to the list of column that should be nuked with the Exclude version of the SingleColumnValueFilter
+	                  }
+	              }         
+	            }
+	            if (columnsToRemove != null)
+	            { //we are almost done checking if Exclude version of SingleColumnnValueFilter can be used. Th elast check s about to know if there is a IS_NULL_NULL
+	              //operation that cannot be using the Exclude method, as it is transformed in a filterList with OR, therefore we cannot guaranty that the SingleColumnValueExcludeFilter
+	              //performing the exclusion will be reached.
+	                boolean is_null_nullFound = false;
+	                for (Object o:compareOpList ){
+	                    if (new String((byte[])o).equals("IS_NULL_NULL")){
+	                        is_null_nullFound = true;
+	                        break;
+	                    }                       
+	                }
+	                if (is_null_nullFound){
+	                    columnsToRemove = null; // disable Exclude method version of SingleColumnnValueFilter
+	                }else
+	                    narrowDownResultColumns = false; // we will use the Exclude version of SingleColumnnValueFilter, so bypass the Family/QualifierFilter method
+	            }
+	            Filter f =constructV2Filter(colNamesToFilter,compareOpList,colValuesToCompare, columnsToRemove);
+	            if (f==null) return false; // error logging done inside constructV2Filter
+	            list.addFilter(f);
+	        }//end V2
+	        else{// deal with V1
+	            list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
+	            
+	            for (int i = 0; i < colNamesToFilter.length; i++) {
+	              byte[] colName = (byte[])colNamesToFilter[i];
+	              byte[] coByte = (byte[])compareOpList[i];
+	              byte[] colVal = (byte[])colValuesToCompare[i];
+	    
+	              if ((coByte == null) || (colVal == null)) {
+	                return false;
+	              }
+	              String coStr = new String(coByte);
+	              CompareOp co = CompareOp.valueOf(coStr);
+	    
+	              SingleColumnValueFilter filter1 = 
+	                  new SingleColumnValueFilter(getFamily(colName), getName(colName), 
+	                      co, colVal);
+	              list.addFilter(filter1);
+	            }           
+	        }//end V1
+	        // if we added a column for predicate eval, we need to filter down result columns
+	        FilterList resultColumnsOnlyFilter = null;
+	        if (narrowDownResultColumns){           
+	            HashMap<String,ArrayList<byte[]>> hm = new HashMap<String,ArrayList<byte[]>>(3);//use to deal with multiple family table
+	            // initialize hm with list of columns requested for output
+	                for (int i=0; i<columns.length; i++){ // if we are here we know columns is not null
+	                    if (hm.containsKey(new String(getFamily((byte[])columns[i])))){
+	                        hm.get(new String(getFamily((byte[])columns[i]))).add((byte[])columns[i]);
+	                    }else{
+	                        ArrayList<byte[]> al = new ArrayList<byte[]>();
+	                        al.add((byte[])columns[i]);
+	                        hm.put(new String(getFamily((byte[])columns[i])), al);
+	                    }                   
+	                }
+	                
+	            if (hm.size()==1){//only one column family
+	                resultColumnsOnlyFilter = new FilterList(FilterList.Operator.MUST_PASS_ALL);
+	                if (columns.length == 1){
+	                    resultColumnsOnlyFilter.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName((byte[])columns[0]))));                     
+	                }else{// more than one column
+	                    FilterList flColumns = new FilterList(FilterList.Operator.MUST_PASS_ONE);
+	                    for(int i=0; i<columns.length;i++)
+	                        flColumns.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName((byte[])columns[i]))));                   
+	                    resultColumnsOnlyFilter.addFilter(flColumns);
+	                }                               
+	                // note the optimization puting family check at the end
+	                resultColumnsOnlyFilter.addFilter(new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily((byte[])columns[0]))));
+	            }else{//more than one column family
+	                resultColumnsOnlyFilter = new FilterList(FilterList.Operator.MUST_PASS_ONE);
+	                for (Map.Entry<String,ArrayList<byte[]>> entry : hm.entrySet()){//for each column family
+	                    ArrayList<byte[]> alb = entry.getValue();
+	                    if (alb.size() == 1){// when only one column for the family
+	                        resultColumnsOnlyFilter.addFilter(
+	                                new FilterList(FilterList.Operator.MUST_PASS_ALL,
+	                                               new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName(alb.get(0)))),
+	                                               new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily(alb.get(0)))))
+	                        );
+	                    }else{// when multiple columns for the family
+	                        FamilyFilter familyFilter = null;
+	                        FilterList filterListCol = new FilterList(FilterList.Operator.MUST_PASS_ONE);
+	                        for(int j = 0; j<alb.size(); j++){
+	                            if (familyFilter == null)
+	                                familyFilter = new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(getFamily(alb.get(0))));
+	                            filterListCol.addFilter(new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(getName(alb.get(j)))));                           
+	                        }
+	                        resultColumnsOnlyFilter.addFilter(new FilterList(FilterList.Operator.MUST_PASS_ALL,filterListCol,familyFilter));
+	                    }
+	                }
+	            }
+	            list.addFilter(resultColumnsOnlyFilter); // add column limiting filter
+	        }//end narrowDownResultColumns
 	    if (samplePercent > 0.0f)
 	      list.addFilter(new RandomRowFilter(samplePercent));
-	    // last optimization is making sure we remove top level filter list if it is singleton MUST_PASS_ALL filterlist
-	    if (list.getFilters().size()==1){
-		    scan.setFilter(list.getFilters().get(0));
-		    if (logger.isTraceEnabled()) logger.trace("Pushed down filter:"+list.getFilters().get(0));
-	    }else{
+        // last optimization is making sure we remove top level filter list if it is singleton MUST_PASS_ALL filterlist
+        if (list.getFilters().size()==1){
+            scan.setFilter(list.getFilters().get(0));
+            if (logger.isTraceEnabled()) logger.trace("Pushed down filter:"+list.getFilters().get(0));
+        }else{
 	    scan.setFilter(list);
-	    if (logger.isTraceEnabled()) logger.trace("Pushed down filter:"+list );
-	    }
+        if (logger.isTraceEnabled()) logger.trace("Pushed down filter:"+list );
+        }
 	  } else if (samplePercent > 0.0f) {
 	    scan.setFilter(new RandomRowFilter(samplePercent));
 	  }


[03/15] incubator-trafodion git commit: First commit for advanced predicate pushdown feature (also known as pushdown V2) associated JIRA TRAFODION-1662 Predicate push down revisited (V2). The JIRA contains a blueprint document, useful to understand what

Posted by hz...@apache.org.
First commit for advanced predicate pushdown feature (also known as pushdown V2)
associated JIRA TRAFODION-1662 Predicate push down revisited (V2). The JIRA contains a blueprint document, useful to understand what the code is supposed to do.
This code is enabled using CQD hbase_filter_preds '2', and bypassed otherwise. Except for the change implemented in ValueDesc.cpp that is a global bug fix whereValueIdSet are supposed to contain set of valueID ANDed together, and should not contain any ValueID with operator ITM_AND.


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/1c5f243f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/1c5f243f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/1c5f243f

Branch: refs/heads/master
Commit: 1c5f243f7c79e9ceb4a008099e60641d90515037
Parents: ebe876d
Author: Eric Owhadi <er...@esgyn.com>
Authored: Thu Jan 7 01:25:54 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Thu Jan 7 01:25:54 2016 +0000

----------------------------------------------------------------------
 core/sql/executor/ExHbaseAccess.cpp             |  92 +-
 core/sql/generator/GenExplain.cpp               | 284 +++++-
 core/sql/generator/GenPreCode.cpp               | 587 +++++++++++-
 core/sql/generator/GenRelScan.cpp               |   3 +-
 core/sql/optimizer/RelScan.h                    |  10 +
 core/sql/optimizer/ValueDesc.cpp                |   7 +-
 core/sql/regress/executor/EXPECTED140           | 911 +++++++++++++++++++
 core/sql/regress/executor/FILTER140             |  42 +
 core/sql/regress/executor/TEST140               |  96 ++
 core/sql/regress/seabase/EXPECTED010            | 454 +++++----
 core/sql/regress/seabase/EXPECTED011            |  22 +-
 core/sql/regress/seabase/EXPECTED016            | 161 ++--
 core/sql/regress/tools/runregr_executor.ksh     |   2 +-
 core/sql/regress/tools/sbdefs                   |   2 +-
 core/sql/sqlcomp/DefaultConstants.h             |   2 +-
 core/sql/sqlcomp/nadefaults.cpp                 |  17 +
 .../java/org/trafodion/sql/HTableClient.java    | 571 +++++++++++-
 17 files changed, 2891 insertions(+), 372 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/executor/ExHbaseAccess.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHbaseAccess.cpp b/core/sql/executor/ExHbaseAccess.cpp
index 6559587..e229d2b 100644
--- a/core/sql/executor/ExHbaseAccess.cpp
+++ b/core/sql/executor/ExHbaseAccess.cpp
@@ -2808,53 +2808,51 @@ short ExHbaseAccessTcb::setupHbaseFilterPreds()
       (hbaseAccessTdb().listOfHbaseFilterColNames()->numEntries() == 0))
     return 0;
 
-  if (! hbaseFilterValExpr())
-    return 0;
-
-  ex_queue_entry *pentry_down = qparent_.down->getHeadEntry();
-
-  workAtp_->getTupp(hbaseAccessTdb().hbaseFilterValTuppIndex_)
-    .setDataPointer(hbaseFilterValRow_);
-  
-  ex_expr::exp_return_type evalRetCode =
-    hbaseFilterValExpr()->eval(pentry_down->getAtp(), workAtp_);
-  if (evalRetCode == ex_expr::EXPR_ERROR)
-    {
-      return -1;
-    }
-
-  ExpTupleDesc * hfrTD =
-    hbaseAccessTdb().workCriDesc_->getTupleDescriptor
-    (hbaseAccessTdb().hbaseFilterValTuppIndex_);
-  
-  hbaseFilterValues_.clear();
-  for (Lng32 i = 0; i <  hfrTD->numAttrs(); i++)
-    {
-      Attributes * attr = hfrTD->getAttr(i);
-  
-      if (attr)
-	{
-	  NAString value(getHeap());
-	  if (attr->getNullFlag())
-	    {
-	      char nullValChar = 0;
-
-	      short nullVal = *(short*)&hbaseFilterValRow_[attr->getNullIndOffset()];
-
-	      if (nullVal)
-		nullValChar = -1;
-	      value.append((char*)&nullValChar, sizeof(char));
-	    }	  
-
-	  char * colVal = &hbaseFilterValRow_[attr->getOffset()];
-
-	  value.append(colVal,
-		       attr->getLength(&hbaseFilterValRow_[attr->getVCLenIndOffset()]));
-
-	  hbaseFilterValues_.insert(value);
-	}
-    }
-
+  if (hbaseFilterValExpr()){// with pushdown V2 it can be null if we have only unary operation
+		  ex_queue_entry *pentry_down = qparent_.down->getHeadEntry();
+
+		  workAtp_->getTupp(hbaseAccessTdb().hbaseFilterValTuppIndex_)
+			.setDataPointer(hbaseFilterValRow_);
+
+		  ex_expr::exp_return_type evalRetCode =
+			hbaseFilterValExpr()->eval(pentry_down->getAtp(), workAtp_);
+		  if (evalRetCode == ex_expr::EXPR_ERROR)
+			{
+			  return -1;
+			}
+
+		  ExpTupleDesc * hfrTD =
+			hbaseAccessTdb().workCriDesc_->getTupleDescriptor
+			(hbaseAccessTdb().hbaseFilterValTuppIndex_);
+
+		  hbaseFilterValues_.clear();
+		  for (Lng32 i = 0; i <  hfrTD->numAttrs(); i++)
+			{
+			  Attributes * attr = hfrTD->getAttr(i);
+
+			  if (attr)
+			{
+			  NAString value(getHeap());
+			  if (attr->getNullFlag())
+				{
+				  char nullValChar = 0;
+
+				  short nullVal = *(short*)&hbaseFilterValRow_[attr->getNullIndOffset()];
+
+				  if (nullVal)
+				nullValChar = -1;
+				  value.append((char*)&nullValChar, sizeof(char));
+				}
+
+			  char * colVal = &hbaseFilterValRow_[attr->getOffset()];
+
+			  value.append(colVal,
+					   attr->getLength(&hbaseFilterValRow_[attr->getVCLenIndOffset()]));
+
+			  hbaseFilterValues_.insert(value);
+			}
+			}
+  }
   setupListOfColNames(hbaseAccessTdb().listOfHbaseFilterColNames(),
 		      hbaseFilterColumns_);
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/generator/GenExplain.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenExplain.cpp b/core/sql/generator/GenExplain.cpp
index 28e6c45..e79f9fc 100644
--- a/core/sql/generator/GenExplain.cpp
+++ b/core/sql/generator/GenExplain.cpp
@@ -660,6 +660,269 @@ FileScan::addSpecificExplainInfo(ExplainTupleMaster *explainTuple,
   return(explainTuple);
 }
 
+static void appendListOfColumns(Queue* listOfColNames,ComTdb *tdb, NAString& outNAString){
+
+	if (((ComTdbHbaseAccess*)tdb)->sqHbaseTable()){// if trafodion table
+	  char buf[1000];
+
+	  listOfColNames->position();
+	  for (Lng32 j = 0; j < listOfColNames->numEntries(); j++)
+	    {
+	      char * currPtr = (char*)listOfColNames->getCurr();
+
+	      Lng32 currPos = 0;
+	      Lng32 jj = 0;
+	      short colNameLen = *(short*)currPtr;
+	      currPos += sizeof(short);
+	      char colFam[100];
+	      while (currPtr[currPos] != ':')
+		{
+		  colFam[jj] = currPtr[currPos];
+		  currPos++;
+		  jj++;
+		}
+	      colFam[jj] = ':';
+	      jj++;
+	      currPos++;
+	      colFam[jj] = 0;
+	      colNameLen -= jj;
+
+	      NABoolean withAt = FALSE;
+	      char * colName = &currPtr[currPos];
+	      if (colName[0] == '@')
+		{
+		  colNameLen--;
+		  colName++;
+		  withAt = TRUE;
+		}
+
+	      Int64 v;
+	      if (colNameLen == sizeof(char))
+		v = *(char*)colName;
+	      else if (colNameLen == sizeof(unsigned short))
+		v = *(UInt16*)colName;
+	      else if (colNameLen == sizeof(Lng32))
+		v = *(ULng32*)colName;
+	      else
+		v = 0;
+	      if (j==0)
+		      str_sprintf(buf, "%s%s%Ld",
+				  colFam,
+				  (withAt ? "@" : ""),
+				  v);
+	      else
+			  str_sprintf(buf, ",%s%s%Ld",
+				  colFam,
+				  (withAt ? "@" : ""),
+				  v);
+
+	      outNAString += buf;
+
+	      listOfColNames->advance();
+	    } // for
+	}// trafodion tables
+	else
+	{// if hbase native tables
+	  char buf[1000];
+
+	  listOfColNames->position();
+	  for (Lng32 j = 0; j < listOfColNames->numEntries(); j++)
+	    {
+	      char * currPtr = (char*)listOfColNames->getCurr();
+
+	      char * colNamePtr = NULL;
+
+		  Lng32 currPos = 0;
+		  short colNameLen = *(short*)currPtr;
+		  currPos += sizeof(short);
+		  char colName[500];
+
+		  for (Lng32 i = 0; i < colNameLen; i++)
+		    {
+		      colName[i] = currPtr[currPos];
+		      currPos++;
+		    }
+
+		  colName[colNameLen] = 0;
+
+		  colNamePtr = colName;
+
+		  if (j==0)
+			  str_sprintf(buf, "%s",colNamePtr);
+		  else
+			  str_sprintf(buf, ",%s",colNamePtr);
+
+
+		  outNAString += buf;
+
+	      listOfColNames->advance();
+	    } // for
+
+	}// hbase native table
+	outNAString +=" ";
+}
+
+static void appendPushedDownExpression(ComTdb *tdb, NAString& outNAString){
+	// in predicate pushdown V2, the hbaseCompareOps list contains a reverse polish set of operation, were operators are
+	// AND or OR, the rest are operands. this function display the column, operator and replace any constant with ?. it keeps reverse polish format
+	// this can be improved in the future for better readability.
+	char buf[1000];
+	Queue* reversePolishItems = ((ComTdbHbaseAccess *)tdb)->listOfHbaseCompareOps();
+	Queue* pushedDownColumns = ((ComTdbHbaseAccess *)tdb)->listOfHbaseFilterColNames();
+	reversePolishItems->position();
+	pushedDownColumns->position();
+
+	for (Lng32 j = 0; j < reversePolishItems->numEntries(); j++){
+		char * currPtr = (char*)reversePolishItems->getCurr();
+		char buf2[1000];
+		if (strcmp(currPtr,"V2")!=0 && strcmp(currPtr,"AND")!=0 && strcmp(currPtr,"OR")!=0){//if an operand (not an operator or V2 marker), get the column name
+			if (((ComTdbHbaseAccess*)tdb)->sqHbaseTable()){// if trafodion table
+				char * currPtr2 = (char*)pushedDownColumns->getCurr();
+			      Lng32 currPos = 0;
+			      Lng32 jj = 0;
+			      short colNameLen = *(short*)currPtr2;
+			      currPos += sizeof(short);
+			      char colFam[100];
+			      while (currPtr2[currPos] != ':')
+				{
+				  colFam[jj] = currPtr2[currPos];
+				  currPos++;
+				  jj++;
+				}
+			      colFam[jj] = ':';
+			      jj++;
+			      currPos++;
+			      colFam[jj] = 0;
+			      colNameLen -= jj;
+
+			      NABoolean withAt = FALSE;
+			      char * colName = &currPtr2[currPos];
+			      if (colName[0] == '@')
+				{
+				  colNameLen--;
+				  colName++;
+				  withAt = TRUE;
+				}
+			      Int64 v;
+			      if (colNameLen == sizeof(char))
+				v = *(char*)colName;
+			      else if (colNameLen == sizeof(unsigned short))
+				v = *(UInt16*)colName;
+			      else if (colNameLen == sizeof(Lng32))
+				v = *(ULng32*)colName;
+			      else
+				v = 0;
+				  str_sprintf(buf2, "%s%s%Ld",
+					  colFam,
+					  (withAt ? "@" : ""),
+					  v);
+
+			}else{//native hbase table
+				 char * currPtr2 = (char*)pushedDownColumns->getCurr();
+			      char * colNamePtr1 = NULL;
+				  Lng32 currPos = 0;
+				  short colNameLen = *(short*)currPtr2;
+				  currPos += sizeof(short);
+				  char colName[500];
+				  for (Lng32 i = 0; i < colNameLen; i++)
+				    {
+				      colName[i] = currPtr2[currPos];
+				      currPos++;
+				    }
+				  colName[colNameLen] = 0;
+				  colNamePtr1 = colName;
+				  str_sprintf(buf2, "%s",colNamePtr1);
+			}
+			pushedDownColumns->advance();
+		}
+
+
+		char* colNamePtr = buf2;
+		if(strcmp(currPtr,"EQUAL")==0){
+			 str_sprintf(buf, "(%s=?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"NOT_EQUAL")==0){
+			 str_sprintf(buf, "(%s!=?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"LESS")==0){
+			 str_sprintf(buf, "(%s<?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if(strcmp(currPtr,"LESS_OR_EQUAL")==0){
+			 str_sprintf(buf, "(%s<=?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"GREATER")==0){
+			 str_sprintf(buf, "(%s>?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"GREATER_OR_EQUAL")==0){
+			 str_sprintf(buf, "(%s>=?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"NO_OP")==0){//should never happen
+			 str_sprintf(buf, "(%s??)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"EQUAL_NULL")==0){
+			 str_sprintf(buf, "(%s=.?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"NOT_EQUAL_NULL")==0){
+			 str_sprintf(buf, "(%s!=.?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"LESS_NULL")==0){
+			 str_sprintf(buf, "(%s<.?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"LESS_OR_EQUAL_NULL")==0){
+			 str_sprintf(buf, "(%s<=.?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"GREATER_NULL")==0){
+			 str_sprintf(buf, "(%s>.?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"GREATER_OR_EQUAL_NULL")==0){
+			 str_sprintf(buf, "(%s>=.?)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"NO_OP_NULL")==0){
+			 str_sprintf(buf, "(%s?.?)",colNamePtr);//should never happen
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"IS_NULL")==0){
+			 str_sprintf(buf, "(%s is_null)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"IS_NULL_NULL")==0){
+			 str_sprintf(buf, "(%s is_null.)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"IS_NOT_NULL")==0){
+			 str_sprintf(buf, "(%s is_not_null)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"IS_NOT_NULL_NULL")==0){
+			 str_sprintf(buf, "(%s is_not_null.)",colNamePtr);
+			 outNAString += buf;
+		 }
+		 else if (strcmp(currPtr,"AND")==0)
+			  outNAString += "AND";
+		 else if (strcmp(currPtr,"OR")==0)
+			  outNAString += "OR";
+
+
+		  reversePolishItems->advance();
+	    }
+	 outNAString +=' ';
+	}
+
+
+
 ExplainTuple *
 HbaseAccess::addSpecificExplainInfo(ExplainTupleMaster *explainTuple,
 				    ComTdb * tdb,
@@ -754,16 +1017,30 @@ HbaseAccess::addSpecificExplainInfo(ExplainTupleMaster *explainTuple,
 
   }
 
+  // get column retrieved
+  if (((ComTdbHbaseAccess *)tdb)->listOfFetchedColNames()){
+	  description += "column_retrieved: ";
+	  appendListOfColumns(((ComTdbHbaseAccess *)tdb)->listOfFetchedColNames(),tdb,description);
+  }
+  // get predicate pushed down in Reverse Polish Notation for the AND / OR operators.
+  // could transform it standard notation for better readability, but good enough for now...
+  // could also evaluate the constants instead of hard coded ?, but good enough for now...
+  if (((ComTdbHbaseAccess *)tdb)->listOfHbaseFilterColNames()){
+  	  description += "pushed_down_rpn: ";
+  	 appendPushedDownExpression(tdb, description);
+    }
+  // get pushed down predicate
 
 
-  /*
+
+/*
   // now get columns_retrieved
   description += "columns_retrieved: ";
-  char buf[27];
+  //char buf[27];
   //sprintf(buf, "%d ", retrievedCols().entries());
   sprintf(buf, "%d ", getIndexDesc()->getIndexColumns().entries());
   description += buf;
-  */
+*/
 
   explainTuple->setDescription(description);
 
@@ -2046,3 +2323,4 @@ ExplainTuple *ExeUtilHbaseCoProcAggr::addSpecificExplainInfo(
   return explainTuple;
 }
 
+

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index c730c4e..28bff1c 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -11222,7 +11222,7 @@ short HbaseAccess::extractHbaseFilterPreds(Generator * generator,
 					   ValueIdSet &preds, ValueIdSet &newExePreds)
 {
    if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_OFF)
-    return 0;
+     return 0;
    // cannot push preds for aligned format row
    NABoolean isAlignedFormat = getTableDesc()->getNATable()->isAlignedFormat(getIndexDesc());
 
@@ -11274,6 +11274,485 @@ short HbaseAccess::extractHbaseFilterPreds(Generator * generator,
   return 0;
 }
 
+////////////////////////////////////////////////////////////////////////////
+// To push down, the predicate must have the following form:
+//  xp:=  <column>  <op>  <value-expr>
+//  xp:=  <column> is not null (no support for hbase lookup)
+//  xp:=  <column> is null (no support for hbase lookup)
+// 	  (xp:=<column> like <value-expr> not yet implemented)
+//  xp:=<xp> OR <xp> (not evaluated in isHbaseFilterPredV2, but by extractHbaseFilterPredV2)
+//  xp:=<xp> AND <xp>(not evaluated in isHbaseFilterPredV2, but by extractHbaseFilterPredV2)
+//
+// and all of the following conditions must be met:
+//
+//      <column>:       a base table or index column which can be serialized and belong to the table being scanned.
+//                            serialized: either the column doesn't need encoding, like
+//                                            an unsigned integer,  or the column
+//                                            was declared with the SERIALIZED option.
+//						it also must not be an added column with default non null.
+//      <op>:              eq, ne, gt, ge, lt, le
+//      <value-expr>:  an expression that only contains const or param values, and
+//                     <value-expr>'s datatype is not a superset of <column>'s datatype.
+//
+/////////////////////////////////////////////////////////////////////////////
+NABoolean HbaseAccess::isHbaseFilterPredV2(Generator * generator, ItemExpr * ie,
+					 ValueId &colVID, ValueId &valueVID,
+					 NAString &op)
+{
+  NABoolean foundBinary = FALSE;
+  NABoolean foundUnary = FALSE;
+  NABoolean hbaseLookupPred = FALSE;
+  NABoolean flipOp = FALSE;  // set to TRUE when column is child(1)
+
+  if (ie &&
+      ((ie->getOperatorType() >= ITM_EQUAL) &&
+       (ie->getOperatorType() <= ITM_GREATER_EQ))) //binary operator case
+    {//begin expression
+      ItemExpr * child0 = ie->child(0)->castToItemExpr();
+      ItemExpr * child1 = ie->child(1)->castToItemExpr();
+
+      if ((ie->child(0)->getOperatorType() == ITM_BASECOLUMN) &&
+	  (NOT hasColReference(ie->child(1))))
+	{
+      foundBinary = TRUE;
+	  colVID = ie->child(0)->getValueId();
+	  valueVID = ie->child(1)->getValueId();
+	}
+      else if ((ie->child(1)->getOperatorType() == ITM_BASECOLUMN) &&
+	       (NOT hasColReference(ie->child(0))))
+	{
+      foundBinary = TRUE;
+      flipOp = TRUE;
+	  colVID = ie->child(1)->getValueId();
+	  valueVID = ie->child(0)->getValueId();
+	}
+      else if ((ie->child(0)->getOperatorType() == ITM_INDEXCOLUMN) &&
+	       (NOT hasColReference(ie->child(1))))
+	{
+      foundBinary = TRUE;
+	  colVID = ie->child(0)->getValueId();
+	  valueVID = ie->child(1)->getValueId();
+	}
+      else if ((ie->child(1)->getOperatorType() == ITM_INDEXCOLUMN) &&
+	       (NOT hasColReference(ie->child(0))))
+	{
+      foundBinary = TRUE;
+      flipOp = TRUE;
+	  colVID = ie->child(1)->getValueId();
+	  valueVID = ie->child(0)->getValueId();
+	}
+      else if ((ie->child(0)->getOperatorType() == ITM_REFERENCE) &&
+	       (NOT hasColReference(ie->child(1))))
+	{
+      foundBinary = TRUE;
+	  colVID = ie->child(0)->getValueId();
+	  valueVID = ie->child(1)->getValueId();
+	}
+      else if ((ie->child(1)->getOperatorType() == ITM_REFERENCE) &&
+	       (NOT hasColReference(ie->child(0))))
+	{
+      foundBinary = TRUE;
+      flipOp = TRUE;
+	  colVID = ie->child(1)->getValueId();
+	  valueVID = ie->child(0)->getValueId();
+	}
+      else if ((ie->child(0)->getOperatorType() == ITM_HBASE_COLUMN_LOOKUP) &&
+	       (NOT hasColReference(ie->child(1))))
+	{
+	  HbaseColumnLookup * hcl = (HbaseColumnLookup*)ie->child(0)->castToItemExpr();
+	  if (hcl->getValueId().getType().getTypeQualifier() == NA_CHARACTER_TYPE)
+	    {
+	      hbaseLookupPred = TRUE;
+
+	      ItemExpr * newCV = new(generator->wHeap()) ConstValue(hcl->hbaseCol());
+	      newCV = newCV->bindNode(generator->getBindWA());
+	      newCV = newCV->preCodeGen(generator);
+
+	      foundBinary = TRUE;
+	      colVID = newCV->getValueId();
+	      valueVID = ie->child(1)->getValueId();
+	    }
+	}
+      else if ((ie->child(1)->getOperatorType() == ITM_HBASE_COLUMN_LOOKUP) &&
+	       (NOT hasColReference(ie->child(0))))
+	{
+	  HbaseColumnLookup * hcl = (HbaseColumnLookup*)ie->child(1)->castToItemExpr();
+	  if (hcl->getValueId().getType().getTypeQualifier() == NA_CHARACTER_TYPE)
+	    {
+	      hbaseLookupPred = TRUE;
+
+	      ItemExpr * newCV = new(generator->wHeap()) ConstValue(hcl->hbaseCol());
+	      newCV = newCV->bindNode(generator->getBindWA());
+	      newCV = newCV->preCodeGen(generator);
+
+	      foundBinary = TRUE;
+	      flipOp = TRUE;
+	      colVID = newCV->getValueId();
+	      valueVID = ie->child(0)->getValueId();
+	    }
+	}
+    }//end binary operators
+  else if (ie && ((ie->getOperatorType() == ITM_IS_NULL)||(ie->getOperatorType() == ITM_IS_NOT_NULL))){//check for unary operators
+	  ItemExpr * child0 = ie->child(0)->castToItemExpr();
+	  if ((ie->child(0)->getOperatorType() == ITM_BASECOLUMN) ||
+		  (ie->child(0)->getOperatorType() == ITM_INDEXCOLUMN)||
+		  (ie->child(0)->getOperatorType() == ITM_REFERENCE)){
+		  foundUnary = TRUE;
+		  colVID = ie->child(0)->getValueId();
+		  valueVID = NULL_VALUE_ID;
+	  }
+
+  }//end unary operators
+
+  //check if found columns belong to table being scanned (so is not an input to the scan node)
+  if (foundBinary || foundUnary){
+	ValueId dummyValueId;
+	if (getGroupAttr()->getCharacteristicInputs().referencesTheGivenValue(colVID,dummyValueId)){
+		foundBinary=FALSE;
+		foundUnary=FALSE;
+	}
+  }
+  //check if not an added column with default non null
+  if ((foundBinary || foundUnary)&& (NOT hbaseLookupPred)){
+	  NAColumn * nac;
+		switch (colVID.getItemExpr()->getOperatorType()){
+		case ITM_BASECOLUMN:
+			nac = ((BaseColumn*)colVID.getItemExpr())->getNAColumn();
+			break;
+		case ITM_INDEXCOLUMN:
+			nac = ((IndexColumn*)colVID.getItemExpr())->getNAColumn();
+			break;
+		default:
+			break;
+		}
+		if (nac && nac->isAddedColumn() && nac->getDefaultValue()){
+			foundBinary=FALSE;
+			foundUnary=FALSE;
+		}
+  }
+
+  if (foundBinary)
+    {
+      const NAType &colType = colVID.getType();
+      const NAType &valueType = valueVID.getType();
+
+      NABoolean generateNarrow = FALSE;
+      if (NOT hbaseLookupPred)
+	{
+	  generateNarrow = valueType.errorsCanOccur(colType);
+	  if ((generateNarrow)  || // value not a superset of column
+	      (NOT columnEnabledForSerialization(colVID.getItemExpr())))
+		  foundBinary = FALSE;
+	}
+
+      if (foundBinary)
+	{
+	  if (colType.getTypeQualifier() == NA_CHARACTER_TYPE)
+	    {
+	      const CharType &charColType = (CharType&)colType;
+	      const CharType &charValType = (CharType&)valueType;
+
+	      if ((charColType.isCaseinsensitive() || charValType.isCaseinsensitive()) ||
+		  (charColType.isUpshifted() || charValType.isUpshifted()))
+	     foundBinary = FALSE;
+	    }
+	  else if (colType.getTypeQualifier() == NA_NUMERIC_TYPE)
+	    {
+	      const NumericType &numType = (NumericType&)colType;
+	      const NumericType &valType = (NumericType&)valueType;
+	      if (numType.isBigNum() || valType.isBigNum())
+	     foundBinary = FALSE;
+	    }
+	}
+
+      if (foundBinary)
+	{
+	  if ((ie) && (((BiRelat*)ie)->addedForLikePred()) &&
+	      (valueVID.getItemExpr()->getOperatorType() == ITM_CONSTANT))
+	    {
+	      // remove trailing '\0' characters since this is being pushed down to hbase.
+	      ConstValue * cv = (ConstValue*)(valueVID.getItemExpr());
+	      char * cvv = (char*)cv->getConstValue();
+	      Lng32 len = cv->getStorageSize() - 1;
+	      while ((len > 0) && (cvv[len] == '\0'))
+		len--;
+
+	      NAString newCVV(cvv, len+1);
+
+	      ItemExpr * newCV = new(generator->wHeap()) ConstValue(newCVV);
+	      newCV = newCV->bindNode(generator->getBindWA());
+	      newCV = newCV->preCodeGen(generator);
+	      valueVID = newCV->getValueId();
+	    }
+
+	  ItemExpr * castValue = NULL;
+          if (NOT hbaseLookupPred)
+            castValue = new(generator->wHeap()) Cast(valueVID.getItemExpr(), &colType);
+          else
+            {
+              castValue = new(generator->wHeap()) Cast(valueVID.getItemExpr(), &valueVID.getType());
+            }
+
+	  if ((NOT hbaseLookupPred) &&
+	      (isEncodingNeededForSerialization(colVID.getItemExpr())))
+	    {
+	      castValue = new(generator->wHeap()) CompEncode
+		(castValue, FALSE, -1, CollationInfo::Sort, TRUE, FALSE);
+	    }
+
+	  castValue = castValue->bindNode(generator->getBindWA());
+	  castValue = castValue->preCodeGen(generator);
+
+	  valueVID = castValue->getValueId();
+
+	  NAString nullType;
+
+	  if ((colType.supportsSQLnull()) ||
+	      (valueType.supportsSQLnull()))
+	    {
+	      nullType = "_NULL";
+	    }
+	  else
+	    {
+	      nullType = "";
+	    }
+
+	  // append -NULL to the operator to signify the java code generating pushdown filters to handle NULL semantic logic
+	  if (ie->getOperatorType() == ITM_EQUAL)
+		  op = "EQUAL"+nullType;
+	  else  if (ie->getOperatorType() == ITM_NOT_EQUAL)
+	    op = "NOT_EQUAL"+nullType;
+	  else  if (ie->getOperatorType() == ITM_LESS){
+		  if (flipOp)
+			  op = "GREATER"+nullType;
+		  else
+			  op = "LESS"+nullType;
+	  }
+	  else  if (ie->getOperatorType() == ITM_LESS_EQ){
+		  if (flipOp)
+			  op = "GREATER_OR_EQUAL"+nullType;
+		  else
+			  op = "LESS_OR_EQUAL"+nullType;
+	  }else  if (ie->getOperatorType() == ITM_GREATER){
+		  if (flipOp)
+			  op = "LESS"+nullType;
+		  else
+			  op = "GREATER"+nullType;
+	  }else  if (ie->getOperatorType() == ITM_GREATER_EQ){
+		  if (flipOp)
+			  op = "LESS_OR_EQUAL"+nullType;
+		  else
+			  op = "GREATER_OR_EQUAL"+nullType;
+	  }else
+	    op = "NO_OP"+nullType;
+	}
+    }
+  if (foundUnary){
+	  const NAType &colType = colVID.getType();
+	  NAString nullType;
+
+	  if (colType.supportsSQLnull())
+	    {
+	      nullType = "_NULL";
+	    }
+	  else
+	    {
+	      nullType = "";
+	    }
+	  if (ie->getOperatorType() == ITM_IS_NULL)
+	  		  op = "IS_NULL"+nullType;
+	  else if (ie->getOperatorType() == ITM_IS_NOT_NULL)
+		      op = "IS_NOT_NULL"+nullType;
+  }
+
+  return foundBinary || foundUnary;
+}
+short HbaseAccess::extractHbaseFilterPredsVX(Generator * generator,
+		   ValueIdSet &preds, ValueIdSet &newExePreds){
+	//separate the code that should not belong in the recursive function
+	   if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_OFF)
+	    return 0;
+	   // check if initial (version 1) implementation
+	   if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_MINIMUM)
+	    return extractHbaseFilterPreds(generator,preds,newExePreds);
+
+	   // if here, we are DF_MEDIUM
+	   // cannot push preds for aligned format row
+	   NABoolean isAlignedFormat = getTableDesc()->getNATable()->isAlignedFormat(getIndexDesc());
+
+	   if (isAlignedFormat)
+	     return 0;
+	   //recursive function call
+	   opList_.insert("V2");//to instruct the java side that we are dealing with predicate pushdown V2 semantic, add "V2" marker
+	   extractHbaseFilterPredsV2(generator,preds,newExePreds,FALSE,TRUE);
+	   return 0;
+
+}
+
+// return true if successfull push down of node
+NABoolean HbaseAccess::extractHbaseFilterPredsV2(Generator * generator,
+					   ValueIdSet &preds, ValueIdSet &newExePreds, NABoolean checkOnly, NABoolean isFirstAndLayer )
+{
+
+	// the isFirstAndLayer is used to allow detecting top level predicate that can still be pushed to executor
+	int addedNode=0;
+	for (ValueId vid = preds.init();
+       (preds.next(vid));
+       preds.advance(vid))
+    {
+      ItemExpr * ie = vid.getItemExpr();
+
+      // if it is AND operation, recurse through left and right children
+      if (ie->getOperatorType() == ITM_AND)
+        {
+          ValueIdSet leftPreds;
+          ValueIdSet rightPreds;
+          leftPreds += ie->child(0)->castToItemExpr()->getValueId();
+          rightPreds += ie->child(1)->castToItemExpr()->getValueId();
+          if (isFirstAndLayer){
+            NABoolean leftOK  = extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,TRUE, TRUE);
+            NABoolean rightOK = extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,TRUE, TRUE);
+            if (leftOK && rightOK){
+            	if (!checkOnly){
+					extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,FALSE, TRUE);//generate tree
+					extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,FALSE, TRUE);//generate tree
+					opList_.insert("AND"); // insert an AND node since both side are OK to push down
+					if (addedNode>0)opList_.insert("AND"); // if it is not the first node addd to the push down, AND it with the rest
+					addedNode++; // we just pushed it down, so increase the node count pushed down.
+            	}
+            	if (preds.entries()==1)
+            		return TRUE;
+            } else if (leftOK){  // if only left is OK to push down
+            	if(!checkOnly){
+					extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,FALSE, TRUE);//generate left tree
+					newExePreds.insert(rightPreds); //make sure we add the right child to predicates that needs executor evalvaluation
+					if (addedNode>0)opList_.insert("AND"); // if it is not the first node addd to the push down, AND it with the rest
+					addedNode++; // we pushed down left side so mark it
+            	}
+            	if (preds.entries()==1)
+            		return TRUE;
+            } else if (rightOK){// if only right is OK to push down
+            	if(!checkOnly){
+					extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,FALSE, TRUE);//generate right tree
+					newExePreds.insert(leftPreds);//make sure we add the left child to predicates that needs executor evalvaluation
+					if (addedNode>0)opList_.insert("AND"); // if it is not the first node addd to the push down, AND it with the rest
+					addedNode++;// we pushed down right side so mark it
+            	}
+            	if (preds.entries()==1)
+            		return TRUE;
+            } else{
+            	if(!checkOnly){
+            		newExePreds.insert(vid);// we pushed down nothing, make sure the whole node is evaluated by Executor
+            	}
+            	if (preds.entries()==1)
+            		return FALSE;
+
+            }
+          }
+          else{//if not first AND layer, both left and right must be pushable to get anything pushed
+              if(extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, TRUE, FALSE)&&
+                 extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, TRUE, FALSE)){// both left and right child must match
+            	  if(!checkOnly){
+					  extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, FALSE, FALSE);//generate tree
+					  extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, FALSE, FALSE);//generate tree
+					  opList_.insert("AND");
+            	  }
+              	if (preds.entries()==1)
+              		return TRUE;
+
+              }
+              else{
+            	  if(!checkOnly){
+            		  newExePreds.insert(vid);
+            	  }
+                  if (preds.entries()==1)
+                		return FALSE;
+              }
+          }
+          continue;
+
+          // the OR case is easier, as we don t have the case of top level expression that can still be pushed to executor
+        }//end if AND
+        else if(ie->getOperatorType() == ITM_OR){
+          ValueIdSet leftPreds;
+		  ValueIdSet rightPreds;
+		  leftPreds += ie->child(0)->castToItemExpr()->getValueId();
+		  rightPreds += ie->child(1)->castToItemExpr()->getValueId();
+          if (isFirstAndLayer){
+            NABoolean leftOK  = extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,TRUE, FALSE);
+            NABoolean rightOK = extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,TRUE, FALSE);
+            if (leftOK && rightOK){
+            	if (!checkOnly){
+					extractHbaseFilterPredsV2(generator, leftPreds, newExePreds,FALSE, FALSE);//generate tree
+					extractHbaseFilterPredsV2(generator, rightPreds, newExePreds,FALSE, FALSE);//generate tree
+					opList_.insert("OR"); // insert an OR node since both side are OK to push down
+					if (addedNode>0)opList_.insert("AND"); // if it is not the first node add to the push down, AND it with the rest
+					addedNode++; // we just pushed it down, so increase the node count pushed down.
+            	}
+            	if (preds.entries()==1)
+            		return TRUE;
+
+            } else{
+            	if(!checkOnly){
+            		newExePreds.insert(vid);// we pushed down nothing, make sure the whole node is evaluated by Executor
+            	}
+            	if (preds.entries()==1)
+            		return FALSE;
+            }
+
+           }else{//if not first AND layer, both left and right must be pushable to get anything pushed
+			  if(extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, TRUE, FALSE)&&
+				 extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, TRUE, FALSE)){// both left and right child must match
+				  if(!checkOnly){
+					  extractHbaseFilterPredsV2(generator, leftPreds, newExePreds, FALSE, FALSE);//generate tree
+					  extractHbaseFilterPredsV2(generator, rightPreds, newExePreds, FALSE, FALSE);//generate tree
+					  opList_.insert("OR");
+				  }
+				  if (preds.entries()==1)
+				   return TRUE;
+			  }
+			  else{// if predicate cannot be pushed down
+				  if(!checkOnly){
+					  newExePreds.insert(vid);
+				  }
+				  if (preds.entries()==1)
+						return FALSE;
+			  }
+            }
+
+		  continue;
+		  }//end if OR
+
+
+
+      ValueId colVID;
+      ValueId valueVID;
+
+      NAString op;
+      NABoolean isHFP =
+        isHbaseFilterPredV2(generator, ie, colVID, valueVID, op);
+
+      if (isHFP && !checkOnly){// if pushable, push it
+          hbaseFilterColVIDlist_.insert(colVID);
+          if (valueVID != NULL_VALUE_ID) hbaseFilterValueVIDlist_.insert(valueVID);// don't insert valueID for unary operators.
+          opList_.insert(op);
+          if(isFirstAndLayer){
+			if (addedNode>0)opList_.insert("AND"); // if it is not the first node add to the push down, AND it with the rest
+			addedNode++; // we just pushed it down, so increase the node count pushed down.
+          }
+        }else if (!checkOnly){//if not pushable, pass it for executor evaluation.
+        	newExePreds.insert(vid);
+        }
+      if (preds.entries()==1){
+    	  return isHFP; // if we are not on the first call level, where we can have multiple preds, exit returning the pushability
+      }
+
+    } // end for
+
+  return TRUE;//don't really care, means we are top level.
+}
+
+
 void HbaseAccess::computeRetrievedCols()
 {
   GroupAttributes     fakeGA;
@@ -11337,6 +11816,38 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
   if (! FileScan::preCodeGen(generator,externalInputs,pulledNewInputs))
     return NULL;
 
+    //compute isUnique:
+    NABoolean isUnique = FALSE;
+    if (listOfRangeRows_.entries() == 0)
+      {
+        if ((searchKey() && searchKey()->isUnique()) &&
+  	  (listOfUniqueRows_.entries() == 0))
+  	isUnique = TRUE;
+        else if ((NOT (searchKey() && searchKey()->isUnique())) &&
+  	       (listOfUniqueRows_.entries() == 1) &&
+  	       (listOfUniqueRows_[0].rowIds_.entries() == 1))
+  	isUnique = TRUE;
+      }
+
+    // executorPred() contains an ANDed list of predicates.
+    // if hbase filter preds are enabled, then extracts those preds from executorPred()
+    // which could be pushed down to hbase.
+    // Do this only for non-unique scan access.
+    ValueIdSet newExePreds;
+    ValueIdSet* originExePreds = new (generator->wHeap())ValueIdSet(executorPred()) ;//saved for futur nullable column check
+
+    if (CmpCommon::getDefault(HBASE_FILTER_PREDS) != DF_MINIMUM){ // the check for V2 and above is moved up before calculating retrieved columns
+		if ((NOT isUnique) &&
+			(extractHbaseFilterPredsVX(generator, executorPred(), newExePreds)))
+		  return this;
+
+		// if some filter preds were found, then initialize executor preds with new exe preds.
+		// newExePreds may be empty which means that all predicates were changed into
+		// hbase preds. In this case, nuke existing exe preds.
+		if (hbaseFilterColVIDlist_.entries() > 0)
+		  setExecutorPredicates(newExePreds);
+    }
+
   ValueIdSet colRefSet;
 
   computeRetrievedCols();
@@ -11383,6 +11894,7 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
       // first add all columns referenced in the executor pred.
       HbaseAccess::addReferenceFromVIDset(executorPred(), TRUE, TRUE, colRefSet);
 
+
       HbaseAccess::addReferenceFromVIDset
         (getGroupAttr()->getCharacteristicOutputs(), TRUE, TRUE, colRefSet);
 
@@ -11412,9 +11924,54 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
             }
         }
 
-      // add all the key columns. If values are missing in hbase, then atleast the key
+      // add key columns. If values are missing in hbase, then atleast the key
       // value is needed to retrieve a row.
-      HbaseAccess::addColReferenceFromVIDlist(getIndexDesc()->getIndexKey(), retColRefSet_);
+      //only if needed. If there is already a non nullable non added non nullable with default columns in the set, we should not need to add
+      //any other columns.
+      if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_MEDIUM){ //only enable column retrieval optimization with DF_MEDIUM
+          bool needAddingNonNullableColumn = true; //assume we need to add one non nullable column
+		  for (ValueId vid = retColRefSet_.init();// look for each column in th eresult set if one match the criteria non null non added non nullable with default
+				  retColRefSet_.next(vid);
+				  retColRefSet_.advance(vid))
+		  {
+			if (originExePreds->isNotNullable(vid)){// it is non nullable
+				NAColumn * nac;
+				switch (vid.getItemExpr()->getOperatorType()){
+				case ITM_BASECOLUMN:
+					nac = ((BaseColumn*)vid.getItemExpr())->getNAColumn();
+					break;
+				case ITM_INDEXCOLUMN:
+					nac = ((IndexColumn*)vid.getItemExpr())->getNAColumn();
+					break;
+				default:
+					break;
+				}
+				if (nac && !(nac->isAddedColumn()  && nac->getDefaultValue())){//check if  added and  with default... notgood
+					needAddingNonNullableColumn = false; // we found one column meeting all criteria
+					break;
+				}
+			}
+		  }
+		  if (needAddingNonNullableColumn){ // ok now we need to add one key column that is not nullable
+			  bool foundAtLeastOneKeyColumnNotNullable = false;
+			  for(int i=getIndexDesc()->getIndexKey().entries()-1; i>=0;i--)// doing reverse search is making sure we are trying to avoid to use _SALT_ column
+				  	  	  	  	  	  	  	  	  	  	  	  	  	  	 // because _SALT_ is physicaly the last column therefore we don't skip columns optimally if using _SALT_ column
+			  {
+				  ValueId vaId = getIndexDesc()->getIndexKey()[i];
+				  if ( (vaId.getItemExpr()->getOperatorType() == ITM_BASECOLUMN	&& !((BaseColumn*)vaId.getItemExpr())->getNAColumn()->getType()->supportsSQLnullPhysical())||
+						  (vaId.getItemExpr()->getOperatorType() == ITM_INDEXCOLUMN	&& !((IndexColumn*)vaId.getItemExpr())->getNAColumn()->getType()->supportsSQLnullPhysical())
+						  ){ //found good key column candidate?
+					  HbaseAccess::addReferenceFromItemExprTree(vaId.getItemExpr(),TRUE,FALSE,retColRefSet_); // add it
+					  foundAtLeastOneKeyColumnNotNullable = true; //tag we found it
+					  break; // no need to look further
+				  }
+			  }
+			  if (!foundAtLeastOneKeyColumnNotNullable){//oh well, did not find any key column non nullable, let s add all key columns
+				  HbaseAccess::addColReferenceFromVIDlist(getIndexDesc()->getIndexKey(), retColRefSet_);
+			  }
+		  }
+      }else //end if DF_MEDIUM
+    	  HbaseAccess::addColReferenceFromVIDlist(getIndexDesc()->getIndexKey(), retColRefSet_);
     }
 
   if ((getMdamKeyPtr()) &&
@@ -11429,18 +11986,6 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
   // flag for both hive and hbase tables
   generator->setHdfsAccess(TRUE);
 
-  NABoolean isUnique = FALSE;
-  if (listOfRangeRows_.entries() == 0)
-    {
-      if ((searchKey() && searchKey()->isUnique()) &&
-	  (listOfUniqueRows_.entries() == 0))
-	isUnique = TRUE;
-      else if ((NOT (searchKey() && searchKey()->isUnique())) &&
-	       (listOfUniqueRows_.entries() == 1) &&
-	       (listOfUniqueRows_[0].rowIds_.entries() == 1))
-	isUnique = TRUE;
-    }
-
   if (!isUnique)
       generator->oltOptInfo()->setMultipleRowsReturned(TRUE) ;
 
@@ -11471,17 +12016,17 @@ RelExpr * HbaseAccess::preCodeGen(Generator * generator,
   // if hbase filter preds are enabled, then extracts those preds from executorPred()
   // which could be pushed down to hbase.
   // Do this only for non-unique scan access.
-  ValueIdSet newExePreds;
-
-  if ((NOT isUnique) &&
-      (extractHbaseFilterPreds(generator, executorPred(), newExePreds)))
-    return this;
+  if (CmpCommon::getDefault(HBASE_FILTER_PREDS) == DF_MINIMUM){ //keep the check for pushdown after column retrieval for pushdown V1.
+    if ((NOT isUnique) &&
+        (extractHbaseFilterPreds(generator, executorPred(), newExePreds)))
+      return this;
 
   // if some filter preds were found, then initialize executor preds with new exe preds.
   // newExePreds may be empty which means that all predicates were changed into
   // hbase preds. In this case, nuke existing exe preds.
   if (hbaseFilterColVIDlist_.entries() > 0)
-    setExecutorPredicates(newExePreds);
+      setExecutorPredicates(newExePreds);
+  }//DF_MINIMUM
 
   snpType_ = SNP_NONE;
   DefaultToken  tok = CmpCommon::getDefault(TRAF_TABLE_SNAPSHOT_SCAN);

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/generator/GenRelScan.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelScan.cpp b/core/sql/generator/GenRelScan.cpp
index 573873f..a57bf8e 100644
--- a/core/sql/generator/GenRelScan.cpp
+++ b/core/sql/generator/GenRelScan.cpp
@@ -2643,7 +2643,8 @@ short HbaseAccess::codeGen(Generator * generator)
 					 ExpTupleDesc::LONG_FORMAT);     // [optional IN] target desc format
 
       work_cri_desc->setTupleDescriptor(hbaseFilterValTuppIndex, hbaseFilterValTupleDesc);
-
+    }
+  if (!hbaseFilterColVIDlist_.isEmpty()){// with unary operator we can have column without value
       genListOfColNames(generator, getIndexDesc(), hbaseFilterColVIDlist_,
 			hbaseFilterColNames);
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/optimizer/RelScan.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelScan.h b/core/sql/optimizer/RelScan.h
index 5fbaf7f..45c4a53 100644
--- a/core/sql/optimizer/RelScan.h
+++ b/core/sql/optimizer/RelScan.h
@@ -1453,6 +1453,16 @@ public:
 
   short extractHbaseFilterPreds(Generator * generator, ValueIdSet &preds,
                                 ValueIdSet &newExePreds);
+
+    NABoolean isHbaseFilterPredV2(Generator * generator, ItemExpr * ie,
+    							  ValueId &colVID, ValueId &valueVID,
+								  NAString &op);
+
+    short extractHbaseFilterPredsVX(Generator * generator,ValueIdSet &preds, ValueIdSet &newExePreds);
+
+    NABoolean extractHbaseFilterPredsV2(Generator * generator, ValueIdSet &preds, ValueIdSet &newExePreds,
+    								    NABoolean checkOnly, NABoolean isFirstAndLayer );
+
   NABoolean isSnapshotScanFeasible(LatestSnpSupportEnum snpNotSupported,
                                    char * tableName);
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/optimizer/ValueDesc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ValueDesc.cpp b/core/sql/optimizer/ValueDesc.cpp
index a23d2c9..2e2b424 100644
--- a/core/sql/optimizer/ValueDesc.cpp
+++ b/core/sql/optimizer/ValueDesc.cpp
@@ -3111,7 +3111,11 @@ void ValueIdSet::replaceVEGExpressions
           if (iePtr != exprId.getItemExpr())  // a replacement was done
 	    {
 	      subtractElement(exprId);        // remove existing ValueId
-	      newExpr += iePtr->getValueId(); // replace with a new one
+	      //insert new expression(s)
+	      if (iePtr->getOperatorType() == ITM_AND)
+	    	  iePtr->convertToValueIdSet(newExpr, NULL, ITM_AND, FALSE, FALSE);
+	      else
+	    	  newExpr += iePtr->getValueId(); // replace with a new one
 	    }
 	}
       else // delete the ValueId of the VEGPredicate/VEGReference from the set
@@ -6327,6 +6331,7 @@ ValueIdSet& ValueIdSet::intersectSetDeep(const ValueIdSet & v)
   return *this;
 }
 
+
 // --------------------------------------------------------------------
 // return true iff ValueIdSet has predicates that guarantee
 // that opd is not nullable

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/regress/executor/EXPECTED140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED140 b/core/sql/regress/executor/EXPECTED140
new file mode 100644
index 0000000..7af0f17
--- /dev/null
+++ b/core/sql/regress/executor/EXPECTED140
@@ -0,0 +1,911 @@
+>>obey TEST140(ddl);
+>>create table t140helper (a int not null, primary key(a));
+
+--- SQL operation complete.
+>>insert into t140helper values(1);
+
+--- 1 row(s) inserted.
+>>create table t140 (uniq int not null, uniq2 int not null , a int not null, b int not null,
++>    c int not null, an int, bn int, cn int, d varchar(10),					primary key (uniq,uniq2)) ;
+
+--- SQL operation complete.
+>>create table t140b (uniq int not null, uniq2 int not null , a int not null, b int not null,
++>    c int not null, an int, bn int, cn int, d varchar(10),					primary key (uniq,uniq2)) salt using 2 partitions on (uniq,uniq2) ;
+
+--- SQL operation complete.
+>>
+>>upsert using load 
++>into t140
++>  select  x1,x1,10*x1,100*x1,1000*x1,10*x1+1,100*x1+1, 1000*x1+1, 'aaa'||cast(x1 as varchar(10)) 
++>
++>  from t140helper
++>transpose 0,1,2,3,4,5,6,7,8,9 as x1;
+
+--- 10 row(s) inserted.
+>>
+>>insert into t140 values(11,11,12,102,1002,13,103,1003,'nullabs11');
+
+--- 1 row(s) inserted.
+>>insert into t140 values(12,12,22,202,2002,NULL,NULL,2003,'nullabs12');
+
+--- 1 row(s) inserted.
+>>insert into t140 values(13,13,32,302,3002,33,303,3003,'nullupd13');
+
+--- 1 row(s) inserted.
+>>update t140 set an = null, bn=null where uniq=13;
+
+--- 1 row(s) updated.
+>>insert into t140 values(14,14,42,402,4002,43,403,4003,NULL);
+
+--- 1 row(s) inserted.
+>>insert into t140 values(15,15,52,502,5002,53,503,5003,'asd');
+
+--- 1 row(s) inserted.
+>>update t140 set d = null where uniq = 15;
+
+--- 1 row(s) updated.
+>>
+>>obey TEST140(run);
+>>-- test returned rows with or without adding key column and test of all pushdown functions with null or non null column
+>>-- only one column retrieved
+>>explain select a from t140 where b>500;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212318881178144109
+ROWS_OUT ................ 33
+EST_TOTAL_COST ........... 0.05
+STATEMENT ................ select a from t140 where b>500;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ======================================  SEQ_NO 2        ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 33
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 50
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  statement_index ........ 0
+  affinity_value ......... 0
+  max_max_cardinality ... 33
+  total_overflow_size .... 0.00 KB
+  xn_access_mode ......... read_only
+  xn_autoabort_interval    0
+  auto_query_retry ....... enabled
+  plan_version ....... 2,600
+  embedded_arkcmp ........ used
+  IS_SQLCI ............... ON
+  LDAP_USERNAME
+  TARGET_CODE ............ DEBUG
+  TARGET_CPU_FREQUENCY   199
+  TARGET_IO_SEEK_TIME .... 0.02
+  TARGET_IO_SEQ_READ_RATE  2.5
+  TARGET_MSG_LOCAL_RATE   10
+  TARGET_MSG_LOCAL_TIME    0.01
+  TARGET_MSG_REMOTE_RAT  100
+  TARGET_MSG_REMOTE_TIME   0.01
+  ARKCMP_FAKE_HW ......... ON
+  SKIP_METADATA_VIEWS .... ON
+  DEF_NUM_SMP_CPUS ....... 2
+  MAX_ESPS_PER_CPU_PER_OP  1
+  DEF_NUM_NODES_IN_ACTIVE  1
+  POS_ALLOW_NON_PK_TABLES  ON
+  MODE_SEABASE ........... ON
+  SEABASE_VOLATILE_TABLES  ON
+  HBASE_ASYNC_DROP_TABLE   OFF
+  HBASE_SERIALIZATION .... ON
+  HBASE_FILTER_PREDS ..... 2
+  TRAF_ALIGNED_ROW_FORMAT  OFF
+  TRAF_INDEX_CREATE_OPT    ON
+  SCHEMA ................. TRAFODION.SCH
+  GENERATE_EXPLAIN ....... ON
+  ObjectUIDs ............. 5581172586932643718
+  select_list ............ TRAFODION.SCH.T140.A
+
+
+TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
+TABLE_NAME ............... T140
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 33
+EST_OPER_COST ............ 0.05
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 50
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  scan_type .............. subset scan of table TRAFODION.SCH.T140
+  object_type ............ Trafodion
+  columns ................ all
+  begin_keys(incl)
+  end_keys(incl)
+  cache_size ........... 100
+  probes ................. 1
+  rows_accessed ........ 100
+  column_retrieved ....... #1:3
+  pushed_down_rpn ........ (#1:4>?)
+  key_columns ............ UNIQ, UNIQ2
+
+--- SQL operation complete.
+>>select a from t140 where b>=500;
+
+A          
+-----------
+
+         50
+         60
+         70
+         80
+         90
+         52
+
+--- 6 row(s) selected.
+>>--verify that the column retrieved for null handling is not the _SALT_ for optimization of skips, salt being the last physical column
+>>explain select an from t140b where b<=200;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212318881179605475
+ROWS_OUT ................ 33
+EST_TOTAL_COST ........... 0.05
+STATEMENT ................ select an from t140b where b<=200;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ======================================  SEQ_NO 2        ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 33
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 75
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  statement_index ........ 0
+  affinity_value ......... 0
+  max_max_cardinality ... 33
+  total_overflow_size .... 0.00 KB
+  xn_access_mode ......... read_only
+  xn_autoabort_interval    0
+  auto_query_retry ....... enabled
+  plan_version ....... 2,600
+  embedded_arkcmp ........ used
+  IS_SQLCI ............... ON
+  LDAP_USERNAME
+  TARGET_CODE ............ DEBUG
+  TARGET_CPU_FREQUENCY   199
+  TARGET_IO_SEEK_TIME .... 0.02
+  TARGET_IO_SEQ_READ_RATE  2.5
+  TARGET_MSG_LOCAL_RATE   10
+  TARGET_MSG_LOCAL_TIME    0.01
+  TARGET_MSG_REMOTE_RAT  100
+  TARGET_MSG_REMOTE_TIME   0.01
+  ARKCMP_FAKE_HW ......... ON
+  SKIP_METADATA_VIEWS .... ON
+  DEF_NUM_SMP_CPUS ....... 2
+  MAX_ESPS_PER_CPU_PER_OP  1
+  DEF_NUM_NODES_IN_ACTIVE  1
+  POS_ALLOW_NON_PK_TABLES  ON
+  MODE_SEABASE ........... ON
+  SEABASE_VOLATILE_TABLES  ON
+  HBASE_ASYNC_DROP_TABLE   OFF
+  HBASE_SERIALIZATION .... ON
+  HBASE_FILTER_PREDS ..... 2
+  TRAF_ALIGNED_ROW_FORMAT  OFF
+  TRAF_INDEX_CREATE_OPT    ON
+  SCHEMA ................. TRAFODION.SCH
+  GENERATE_EXPLAIN ....... ON
+  ObjectUIDs ............. 5581172586932643812
+  select_list ............ TRAFODION.SCH.T140B.AN
+
+
+TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
+TABLE_NAME ............... T140B
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 33
+EST_OPER_COST ............ 0.05
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 75
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  scan_type .............. subset scan of table TRAFODION.SCH.T140B
+  object_type ............ Trafodion
+  columns ................ all
+  begin_keys(incl)
+  end_keys(incl)
+  cache_size ........... 100
+  probes ................. 1
+  rows_accessed ........ 100
+  column_retrieved ....... #1:2,#1:6
+  pushed_down_rpn ........ (#1:4<=?)
+  key_columns ............ _SALT_, UNIQ, UNIQ2
+
+--- SQL operation complete.
+>>-- we should have 2 columns retrieved since an is nullable
+>>explain select an from t140 where b<=200;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212318881179745708
+ROWS_OUT ................ 33
+EST_TOTAL_COST ........... 0.05
+STATEMENT ................ select an from t140 where b<=200;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ======================================  SEQ_NO 2        ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 33
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 75
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  statement_index ........ 0
+  affinity_value ......... 0
+  max_max_cardinality ... 33
+  total_overflow_size .... 0.00 KB
+  xn_access_mode ......... read_only
+  xn_autoabort_interval    0
+  auto_query_retry ....... enabled
+  plan_version ....... 2,600
+  embedded_arkcmp ........ used
+  IS_SQLCI ............... ON
+  LDAP_USERNAME
+  TARGET_CODE ............ DEBUG
+  TARGET_CPU_FREQUENCY   199
+  TARGET_IO_SEEK_TIME .... 0.02
+  TARGET_IO_SEQ_READ_RATE  2.5
+  TARGET_MSG_LOCAL_RATE   10
+  TARGET_MSG_LOCAL_TIME    0.01
+  TARGET_MSG_REMOTE_RAT  100
+  TARGET_MSG_REMOTE_TIME   0.01
+  ARKCMP_FAKE_HW ......... ON
+  SKIP_METADATA_VIEWS .... ON
+  DEF_NUM_SMP_CPUS ....... 2
+  MAX_ESPS_PER_CPU_PER_OP  1
+  DEF_NUM_NODES_IN_ACTIVE  1
+  POS_ALLOW_NON_PK_TABLES  ON
+  MODE_SEABASE ........... ON
+  SEABASE_VOLATILE_TABLES  ON
+  HBASE_ASYNC_DROP_TABLE   OFF
+  HBASE_SERIALIZATION .... ON
+  HBASE_FILTER_PREDS ..... 2
+  TRAF_ALIGNED_ROW_FORMAT  OFF
+  TRAF_INDEX_CREATE_OPT    ON
+  SCHEMA ................. TRAFODION.SCH
+  GENERATE_EXPLAIN ....... ON
+  ObjectUIDs ............. 5581172586932643718
+  select_list ............ TRAFODION.SCH.T140.AN
+
+
+TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
+TABLE_NAME ............... T140
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 33
+EST_OPER_COST ............ 0.05
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 75
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  scan_type .............. subset scan of table TRAFODION.SCH.T140
+  object_type ............ Trafodion
+  columns ................ all
+  begin_keys(incl)
+  end_keys(incl)
+  cache_size ........... 100
+  probes ................. 1
+  rows_accessed ........ 100
+  column_retrieved ....... #1:2,#1:6
+  pushed_down_rpn ........ (#1:4<=?)
+  key_columns ............ UNIQ, UNIQ2
+
+--- SQL operation complete.
+>>select an from t140 where b<=200;
+
+AN         
+-----------
+
+          1
+         11
+         21
+         13
+
+--- 4 row(s) selected.
+>>-- should not get back 2 column, only one since predicate says an is not null
+>>explain select an from t140 where b=200 and an is not null;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212318881179866410
+ROWS_OUT ................ 10
+EST_TOTAL_COST ........... 0.05
+STATEMENT ................ select an from t140 where b=200 and an is not null;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ======================================  SEQ_NO 2        ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 10
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 99
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  statement_index ........ 0
+  affinity_value ......... 0
+  max_max_cardinality ... 10
+  total_overflow_size .... 0.00 KB
+  xn_access_mode ......... read_only
+  xn_autoabort_interval    0
+  auto_query_retry ....... enabled
+  plan_version ....... 2,600
+  embedded_arkcmp ........ used
+  IS_SQLCI ............... ON
+  LDAP_USERNAME
+  TARGET_CODE ............ DEBUG
+  TARGET_CPU_FREQUENCY   199
+  TARGET_IO_SEEK_TIME .... 0.02
+  TARGET_IO_SEQ_READ_RATE  2.5
+  TARGET_MSG_LOCAL_RATE   10
+  TARGET_MSG_LOCAL_TIME    0.01
+  TARGET_MSG_REMOTE_RAT  100
+  TARGET_MSG_REMOTE_TIME   0.01
+  ARKCMP_FAKE_HW ......... ON
+  SKIP_METADATA_VIEWS .... ON
+  DEF_NUM_SMP_CPUS ....... 2
+  MAX_ESPS_PER_CPU_PER_OP  1
+  DEF_NUM_NODES_IN_ACTIVE  1
+  POS_ALLOW_NON_PK_TABLES  ON
+  MODE_SEABASE ........... ON
+  SEABASE_VOLATILE_TABLES  ON
+  HBASE_ASYNC_DROP_TABLE   OFF
+  HBASE_SERIALIZATION .... ON
+  HBASE_FILTER_PREDS ..... 2
+  TRAF_ALIGNED_ROW_FORMAT  OFF
+  TRAF_INDEX_CREATE_OPT    ON
+  SCHEMA ................. TRAFODION.SCH
+  GENERATE_EXPLAIN ....... ON
+  ObjectUIDs ............. 5581172586932643718
+  select_list ............ TRAFODION.SCH.T140.AN
+  input_variables ........ %(200)
+
+
+TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
+TABLE_NAME ............... T140
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 10
+EST_OPER_COST ............ 0.05
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 99
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  scan_type .............. subset scan of table TRAFODION.SCH.T140
+  object_type ............ Trafodion
+  columns ................ all
+  begin_keys(incl)
+  end_keys(incl)
+  cache_size ........... 100
+  probes ................. 1
+  rows_accessed ........ 100
+  column_retrieved ....... #1:6
+  pushed_down_rpn ........ (#1:4=?)(#1:6 is_not_null.)AND
+  key_columns ............ UNIQ, UNIQ2
+
+--- SQL operation complete.
+>>select an from t140 where b=200 and an is not null;
+
+AN         
+-----------
+
+         21
+
+--- 1 row(s) selected.
+>>-- should only get 2 column back since a is not null, no need to add key column
+>>explain select an, a from t140 where b!=500;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212318881179985030
+ROWS_OUT ................ 67
+EST_TOTAL_COST ........... 0.05
+STATEMENT ................ select an, a from t140 where b!=500;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ======================================  SEQ_NO 2        ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 67
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est ......... 100
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  statement_index ........ 0
+  affinity_value ......... 0
+  max_max_cardinality ... 67
+  total_overflow_size .... 0.00 KB
+  xn_access_mode ......... read_only
+  xn_autoabort_interval    0
+  auto_query_retry ....... enabled
+  plan_version ....... 2,600
+  embedded_arkcmp ........ used
+  IS_SQLCI ............... ON
+  LDAP_USERNAME
+  TARGET_CODE ............ DEBUG
+  TARGET_CPU_FREQUENCY   199
+  TARGET_IO_SEEK_TIME .... 0.02
+  TARGET_IO_SEQ_READ_RATE  2.5
+  TARGET_MSG_LOCAL_RATE   10
+  TARGET_MSG_LOCAL_TIME    0.01
+  TARGET_MSG_REMOTE_RAT  100
+  TARGET_MSG_REMOTE_TIME   0.01
+  ARKCMP_FAKE_HW ......... ON
+  SKIP_METADATA_VIEWS .... ON
+  DEF_NUM_SMP_CPUS ....... 2
+  MAX_ESPS_PER_CPU_PER_OP  1
+  DEF_NUM_NODES_IN_ACTIVE  1
+  POS_ALLOW_NON_PK_TABLES  ON
+  MODE_SEABASE ........... ON
+  SEABASE_VOLATILE_TABLES  ON
+  HBASE_ASYNC_DROP_TABLE   OFF
+  HBASE_SERIALIZATION .... ON
+  HBASE_FILTER_PREDS ..... 2
+  TRAF_ALIGNED_ROW_FORMAT  OFF
+  TRAF_INDEX_CREATE_OPT    ON
+  SCHEMA ................. TRAFODION.SCH
+  GENERATE_EXPLAIN ....... ON
+  ObjectUIDs ............. 5581172586932643718
+  select_list ............ TRAFODION.SCH.T140.AN, TRAFODION.SCH.T140.A
+
+
+TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
+TABLE_NAME ............... T140
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 67
+EST_OPER_COST ............ 0.05
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est ......... 100
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  scan_type .............. subset scan of table TRAFODION.SCH.T140
+  object_type ............ Trafodion
+  columns ................ all
+  begin_keys(incl)
+  end_keys(incl)
+  cache_size ........... 100
+  probes ................. 1
+  rows_accessed ........ 100
+  column_retrieved ....... #1:3,#1:6
+  pushed_down_rpn ........ (#1:4<?)(#1:4>?)OR
+  key_columns ............ UNIQ, UNIQ2
+
+--- SQL operation complete.
+>>select an, a from t140 where b!=500;
+
+AN           A          
+-----------  -----------
+
+          1            0
+         11           10
+         21           20
+         31           30
+         41           40
+         61           60
+         71           70
+         81           80
+         91           90
+         13           12
+          ?           22
+          ?           32
+         43           42
+         53           52
+
+--- 14 row(s) selected.
+>>-- see if we handle null logic correctly
+>>select a from t140 where bn>=501;
+
+A          
+-----------
+
+         50
+         60
+         70
+         80
+         90
+         52
+
+--- 6 row(s) selected.
+>>select an from t140 where bn<=201;
+
+AN         
+-----------
+
+          1
+         11
+         21
+         13
+
+--- 4 row(s) selected.
+>>explain select an from t140 where bn=201 and an is not null;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212318881180232505
+ROWS_OUT ................ 10
+EST_TOTAL_COST ........... 0.05
+STATEMENT ................ select an from t140 where bn=201 and an is not null;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ======================================  SEQ_NO 2        ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 10
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 99
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  statement_index ........ 0
+  affinity_value ......... 0
+  max_max_cardinality ... 10
+  total_overflow_size .... 0.00 KB
+  xn_access_mode ......... read_only
+  xn_autoabort_interval    0
+  auto_query_retry ....... enabled
+  plan_version ....... 2,600
+  embedded_arkcmp ........ used
+  IS_SQLCI ............... ON
+  LDAP_USERNAME
+  TARGET_CODE ............ DEBUG
+  TARGET_CPU_FREQUENCY   199
+  TARGET_IO_SEEK_TIME .... 0.02
+  TARGET_IO_SEQ_READ_RATE  2.5
+  TARGET_MSG_LOCAL_RATE   10
+  TARGET_MSG_LOCAL_TIME    0.01
+  TARGET_MSG_REMOTE_RAT  100
+  TARGET_MSG_REMOTE_TIME   0.01
+  ARKCMP_FAKE_HW ......... ON
+  SKIP_METADATA_VIEWS .... ON
+  DEF_NUM_SMP_CPUS ....... 2
+  MAX_ESPS_PER_CPU_PER_OP  1
+  DEF_NUM_NODES_IN_ACTIVE  1
+  POS_ALLOW_NON_PK_TABLES  ON
+  MODE_SEABASE ........... ON
+  SEABASE_VOLATILE_TABLES  ON
+  HBASE_ASYNC_DROP_TABLE   OFF
+  HBASE_SERIALIZATION .... ON
+  HBASE_FILTER_PREDS ..... 2
+  TRAF_ALIGNED_ROW_FORMAT  OFF
+  TRAF_INDEX_CREATE_OPT    ON
+  SCHEMA ................. TRAFODION.SCH
+  GENERATE_EXPLAIN ....... ON
+  ObjectUIDs ............. 5581172586932643718
+  select_list ............ TRAFODION.SCH.T140.AN
+  input_variables ........ %(201)
+
+
+TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
+TABLE_NAME ............... T140
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 10
+EST_OPER_COST ............ 0.05
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 99
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  scan_type .............. subset scan of table TRAFODION.SCH.T140
+  object_type ............ Trafodion
+  columns ................ all
+  begin_keys(incl)
+  end_keys(incl)
+  cache_size ........... 100
+  probes ................. 1
+  rows_accessed ........ 100
+  column_retrieved ....... #1:6
+  pushed_down_rpn ........ (#1:7=.?)(#1:6 is_not_null.)AND
+  key_columns ............ UNIQ, UNIQ2
+
+--- SQL operation complete.
+>>select an from t140 where bn=201 and an is not null;
+
+AN         
+-----------
+
+         21
+
+--- 1 row(s) selected.
+>>explain select an, a from t140 where bn!=501;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212318881180365492
+ROWS_OUT ................ 67
+EST_TOTAL_COST ........... 0.05
+STATEMENT ................ select an, a from t140 where bn!=501;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ======================================  SEQ_NO 2        ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 67
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est ......... 100
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  statement_index ........ 0
+  affinity_value ......... 0
+  max_max_cardinality ... 67
+  total_overflow_size .... 0.00 KB
+  xn_access_mode ......... read_only
+  xn_autoabort_interval    0
+  auto_query_retry ....... enabled
+  plan_version ....... 2,600
+  embedded_arkcmp ........ used
+  IS_SQLCI ............... ON
+  LDAP_USERNAME
+  TARGET_CODE ............ DEBUG
+  TARGET_CPU_FREQUENCY   199
+  TARGET_IO_SEEK_TIME .... 0.02
+  TARGET_IO_SEQ_READ_RATE  2.5
+  TARGET_MSG_LOCAL_RATE   10
+  TARGET_MSG_LOCAL_TIME    0.01
+  TARGET_MSG_REMOTE_RAT  100
+  TARGET_MSG_REMOTE_TIME   0.01
+  ARKCMP_FAKE_HW ......... ON
+  SKIP_METADATA_VIEWS .... ON
+  DEF_NUM_SMP_CPUS ....... 2
+  MAX_ESPS_PER_CPU_PER_OP  1
+  DEF_NUM_NODES_IN_ACTIVE  1
+  POS_ALLOW_NON_PK_TABLES  ON
+  MODE_SEABASE ........... ON
+  SEABASE_VOLATILE_TABLES  ON
+  HBASE_ASYNC_DROP_TABLE   OFF
+  HBASE_SERIALIZATION .... ON
+  HBASE_FILTER_PREDS ..... 2
+  TRAF_ALIGNED_ROW_FORMAT  OFF
+  TRAF_INDEX_CREATE_OPT    ON
+  SCHEMA ................. TRAFODION.SCH
+  GENERATE_EXPLAIN ....... ON
+  ObjectUIDs ............. 5581172586932643718
+  select_list ............ TRAFODION.SCH.T140.AN, TRAFODION.SCH.T140.A
+
+
+TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
+TABLE_NAME ............... T140
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 67
+EST_OPER_COST ............ 0.05
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est ......... 100
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  scan_type .............. subset scan of table TRAFODION.SCH.T140
+  object_type ............ Trafodion
+  columns ................ all
+  begin_keys(incl)
+  end_keys(incl)
+  cache_size ........... 100
+  probes ................. 1
+  rows_accessed ........ 100
+  column_retrieved ....... #1:3,#1:6
+  pushed_down_rpn ........ (#1:7<.?)(#1:7>.?)OR
+  key_columns ............ UNIQ, UNIQ2
+
+--- SQL operation complete.
+>>select an, a from t140 where bn!=501;
+
+AN           A          
+-----------  -----------
+
+          1            0
+         11           10
+         21           20
+         31           30
+         41           40
+         61           60
+         71           70
+         81           80
+         91           90
+         13           12
+         43           42
+         53           52
+
+--- 12 row(s) selected.
+>>select a from t140 where an is null;
+
+A          
+-----------
+
+         22
+         32
+
+--- 2 row(s) selected.
+>>select a from t140 where an is not null;
+
+A          
+-----------
+
+          0
+         10
+         20
+         30
+         40
+         50
+         60
+         70
+         80
+         90
+         12
+         42
+         52
+
+--- 13 row(s) selected.
+>>select a from t140 where a between 20 and 40;
+
+A          
+-----------
+
+         20
+         30
+         40
+         22
+         32
+
+--- 5 row(s) selected.
+>>-- make sure that we only retrieve one column as an cannot be null in the result set.
+>>explain select an from t140 where an between 20 and 40;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212318881180584307
+ROWS_OUT ................ 11
+EST_TOTAL_COST ........... 0.05
+STATEMENT ................ select an from t140 where an between 20 and 40;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ======================================  SEQ_NO 2        ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 11
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 75
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  statement_index ........ 0
+  affinity_value ......... 0
+  max_max_cardinality ... 11
+  total_overflow_size .... 0.00 KB
+  xn_access_mode ......... read_only
+  xn_autoabort_interval    0
+  auto_query_retry ....... enabled
+  plan_version ....... 2,600
+  embedded_arkcmp ........ used
+  IS_SQLCI ............... ON
+  LDAP_USERNAME
+  TARGET_CODE ............ DEBUG
+  TARGET_CPU_FREQUENCY   199
+  TARGET_IO_SEEK_TIME .... 0.02
+  TARGET_IO_SEQ_READ_RATE  2.5
+  TARGET_MSG_LOCAL_RATE   10
+  TARGET_MSG_LOCAL_TIME    0.01
+  TARGET_MSG_REMOTE_RAT  100
+  TARGET_MSG_REMOTE_TIME   0.01
+  ARKCMP_FAKE_HW ......... ON
+  SKIP_METADATA_VIEWS .... ON
+  DEF_NUM_SMP_CPUS ....... 2
+  MAX_ESPS_PER_CPU_PER_OP  1
+  DEF_NUM_NODES_IN_ACTIVE  1
+  POS_ALLOW_NON_PK_TABLES  ON
+  MODE_SEABASE ........... ON
+  SEABASE_VOLATILE_TABLES  ON
+  HBASE_ASYNC_DROP_TABLE   OFF
+  HBASE_SERIALIZATION .... ON
+  HBASE_FILTER_PREDS ..... 2
+  TRAF_ALIGNED_ROW_FORMAT  OFF
+  TRAF_INDEX_CREATE_OPT    ON
+  SCHEMA ................. TRAFODION.SCH
+  GENERATE_EXPLAIN ....... ON
+  ObjectUIDs ............. 5581172586932643718
+  select_list ............ TRAFODION.SCH.T140.AN
+
+
+TRAFODION_SCAN ============================  SEQ_NO 1        NO CHILDREN
+TABLE_NAME ............... T140
+REQUESTS_IN .............. 1
+ROWS_OUT ................ 11
+EST_OPER_COST ............ 0.05
+EST_TOTAL_COST ........... 0.05
+DESCRIPTION
+  max_card_est .......... 75
+  fragment_id ............ 0
+  parent_frag ............ (none)
+  fragment_type .......... master
+  scan_type .............. subset scan of table TRAFODION.SCH.T140
+  object_type ............ Trafodion
+  columns ................ all
+  begin_keys(incl)
+  end_keys(incl)
+  cache_size ........... 100
+  probes ................. 1
+  rows_accessed ........ 100
+  column_retrieved ....... #1:6
+  pushed_down_rpn ........ (#1:6>=.?)(#1:6<=.?)AND
+  key_columns ............ UNIQ, UNIQ2
+
+--- SQL operation complete.
+>>select an from t140 where an between 20 and 40;
+
+AN         
+-----------
+
+         21
+         31
+
+--- 2 row(s) selected.
+>>select an from t140 where an in (21,41,51,61,10);
+
+AN         
+-----------
+
+         21
+         41
+         51
+         61
+
+--- 4 row(s) selected.
+>>
+>>obey TEST140(clnup);
+>>drop table t140helper;
+
+--- SQL operation complete.
+>>drop table t140;
+
+--- SQL operation complete.
+>>drop table t140b;
+
+--- SQL operation complete.
+>>
+>>exit;
+
+End of MXCI Session
+

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/regress/executor/FILTER140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/FILTER140 b/core/sql/regress/executor/FILTER140
new file mode 100755
index 0000000..0d32084
--- /dev/null
+++ b/core/sql/regress/executor/FILTER140
@@ -0,0 +1,42 @@
+#! /bin/sh
+# @@@ START COPYRIGHT @@@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# @@@ END COPYRIGHT @@@
+
+# Like the pattern-masking of QACOMP, here we filter out such stuff as
+# transaction id.  Called by the runregr script before doing diff.
+
+fil=$1
+sed "
+s/^\([ ]*affinity_value[ ]*[\.]*\) .*/affinity_value removed/g
+s/^\([ ]*max_max_cardinality[ ]*[\.]*\) .*/max_max_cardinality removed/g
+s/^\([ ]*PLAN_ID[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*HBASE_PORT[ ]*[\.]*\) .*/ HBASE_PORT........ removed/g
+s/^\([ ]*HBASE_SERVER[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*HBASE_INTERFACE[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*HBASE_SERIALIZATION[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*HBASE_FILTER_PREDS[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*TRAF_ALIGNED_ROW_FORMAT[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*TRAF_INDEX_CREATE_OPT[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*embedded_arkcmp[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*EST_TOTAL_COST[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*EST_OPER_COST[ ]*[\.]*\) .*/\1 removed/g
+s/VOLATILE_SCHEMA_MXID[0-9]*/VOLATILE_SCHEMA_00/
+" $fil
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/1c5f243f/core/sql/regress/executor/TEST140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/TEST140 b/core/sql/regress/executor/TEST140
new file mode 100644
index 0000000..8325db8
--- /dev/null
+++ b/core/sql/regress/executor/TEST140
@@ -0,0 +1,96 @@
+-- ============================================================================
+-- Test: TEST0140 (Executor)
+-- @@@ START COPYRIGHT @@@
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements.  See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership.  The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License.  You may obtain a copy of the License at
+--
+--   http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,
+-- software distributed under the License is distributed on an
+-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+-- KIND, either express or implied.  See the License for the
+-- specific language governing permissions and limitations
+-- under the License.
+--
+-- @@@ END COPYRIGHT @@@
+--
+-- Functionality: Advanced predicate pushdown (V2)
+-- Expected files: EXPECTED140
+-- Table created: t140 t140b t140helper
+-- Limitations:
+-- To do:
+-- Revision history:
+-- ============================================================================
+obey TEST140(clnup);
+log LOG140 clear;
+obey TEST140(ddl);
+obey TEST140(run);
+obey TEST140(clnup);
+exit;
+
+?section clnup
+drop table t140helper;
+drop table t140;
+drop table t140b;
+
+?section ddl
+create table t140helper (a int not null, primary key(a));
+insert into t140helper values(1);
+create table t140 (uniq int not null, uniq2 int not null , a int not null, b int not null,
+    c int not null, an int, bn int, cn int, d varchar(10),					primary key (uniq,uniq2)) ;
+create table t140b (uniq int not null, uniq2 int not null , a int not null, b int not null,
+    c int not null, an int, bn int, cn int, d varchar(10),					primary key (uniq,uniq2)) salt using 2 partitions on (uniq,uniq2) ;
+
+upsert using load 
+into t140
+  select  x1,x1,10*x1,100*x1,1000*x1,10*x1+1,100*x1+1, 1000*x1+1, 'aaa'||cast(x1 as varchar(10)) 
+  		 
+  from t140helper
+transpose 0,1,2,3,4,5,6,7,8,9 as x1;
+
+insert into t140 values(11,11,12,102,1002,13,103,1003,'nullabs11');
+insert into t140 values(12,12,22,202,2002,NULL,NULL,2003,'nullabs12');
+insert into t140 values(13,13,32,302,3002,33,303,3003,'nullupd13');
+update t140 set an = null, bn=null where uniq=13;
+insert into t140 values(14,14,42,402,4002,43,403,4003,NULL);
+insert into t140 values(15,15,52,502,5002,53,503,5003,'asd');
+update t140 set d = null where uniq = 15;
+
+?section run
+-- test returned rows with or without adding key column and test of all pushdown functions with null or non null column
+-- only one column retrieved
+explain select a from t140 where b>500;
+select a from t140 where b>=500;
+--verify that the column retrieved for null handling is not the _SALT_ for optimization of skips, salt being the last physical column
+explain select an from t140b where b<=200;
+-- we should have 2 columns retrieved since an is nullable
+explain select an from t140 where b<=200;
+select an from t140 where b<=200;
+-- should not get back 2 column, only one since predicate says an is not null
+explain select an from t140 where b=200 and an is not null;
+select an from t140 where b=200 and an is not null;
+-- should only get 2 column back since a is not null, no need to add key column
+explain select an, a from t140 where b!=500;
+select an, a from t140 where b!=500;
+-- see if we handle null logic correctly
+select a from t140 where bn>=501;
+select an from t140 where bn<=201;
+explain select an from t140 where bn=201 and an is not null;
+select an from t140 where bn=201 and an is not null;
+explain select an, a from t140 where bn!=501;
+select an, a from t140 where bn!=501;
+select a from t140 where an is null;
+select a from t140 where an is not null;
+select a from t140 where a between 20 and 40;
+-- make sure that we only retrieve one column as an cannot be null in the result set.
+explain select an from t140 where an between 20 and 40;
+select an from t140 where an between 20 and 40;
+select an from t140 where an in (21,41,51,61,10);
+


[05/15] incubator-trafodion git commit: Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2

Posted by hz...@apache.org.
Merge branch 'master' of github.com:apache/incubator-trafodion into predicatePushdownV2


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/38573bff
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/38573bff
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/38573bff

Branch: refs/heads/master
Commit: 38573bff44e90a4b6bb82d03af8d83631a6e38bb
Parents: 8a6f220 24d6bdb
Author: Eric Owhadi <er...@esgyn.com>
Authored: Fri Jan 8 01:59:05 2016 +0000
Committer: Eric Owhadi <er...@esgyn.com>
Committed: Fri Jan 8 01:59:05 2016 +0000

----------------------------------------------------------------------
 core/conn/jdbc_type2/native/SrvrCommon.cpp      |  73 +--
 core/sql/executor/hiveHook.cpp                  |   2 +-
 .../java/org/trafodion/jdbc_test/BatchTest.java | 582 +++++++++++++++++++
 .../org/trafodion/jdbc_test/JdbcCommon.java     | 224 +++++++
 .../org/trafodion/phoenix/end2end/BaseTest.java |   5 -
 .../trafodion/phoenix/end2end/BatchTest.java    | 250 --------
 6 files changed, 823 insertions(+), 313 deletions(-)
----------------------------------------------------------------------