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(-)
----------------------------------------------------------------------