You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by se...@apache.org on 2017/09/13 23:23:19 UTC
[01/15] incubator-trafodion git commit: Following changes are done in
BMO memory quota
Repository: incubator-trafodion
Updated Branches:
refs/heads/master cd5419573 -> 6177090d9
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/seabase/EXPECTED011
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED011 b/core/sql/regress/seabase/EXPECTED011
index bd28f64..8c569db 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 Feb 17 17:11:37 2017
+-- Definition current Wed Mar 15 04:56:19 2017
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -143,7 +143,7 @@ A B
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212354111499137048
+PLAN_ID .................. 212356313781270580
ROWS_OUT ................. 7
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t011t1 where a >= 3 and a < 5;
@@ -156,6 +156,7 @@ ROWS_OUT ................. 7
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 11
fragment_id ............ 0
parent_frag ............ (none)
@@ -182,7 +183,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 1451969908907031756
+ ObjectUIDs ............. 8107166460522311880
select_list ............ TRAFODION.SCH.T011T1.A, TRAFODION.SCH.T011T1.B
@@ -1275,7 +1276,7 @@ METRIC_TEXT_TABLE
>>invoke trafodion."_REPOS_".metric_query_table;
-- Definition of Trafodion table TRAFODION."_REPOS_".METRIC_QUERY_TABLE
--- Definition current Fri Feb 17 17:13:41 2017
+-- Definition current Wed Mar 15 04:58:05 2017
(
INSTANCE_ID INT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1463,7 +1464,7 @@ METRIC_TEXT_TABLE
>>-- get qid for the prepared stmt
>>get qid for statement explstmt;
-MXID11000018963212354111473302000000000000206U3333300_2378_EXPLSTMT
+MXID11000014401212356313741542000000000000206U3333300_2496_EXPLSTMT
--- SQL operation complete.
>>
@@ -1515,7 +1516,7 @@ SEQ_NUM OPERATOR
--- SQL command prepared.
>>get qid for statement explstmt2;
-MXID11000018963212354111473302000000000000206U3333300_2389_EXPLSTMT2
+MXID11000014401212356313741542000000000000206U3333300_2507_EXPLSTMT2
--- SQL operation complete.
>>set qid MXID123456 for explstmt2;
@@ -2078,6 +2079,12 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
--- SQL operation complete.
>>
+PLAN_ID .................. 212356313965892034
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ ObjectUIDs ............. 8107166460522328383, 8107166460522328813
+PLAN_ID .................. 212356313967422361
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ ObjectUIDs ............. 8107166460522329555, 8107166460522329995
>>
>>
>>
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/seabase/EXPECTED016
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED016 b/core/sql/regress/seabase/EXPECTED016
index ca81ae2..1919aa7 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 .................. 212341125600218829
+PLAN_ID .................. 212356389659920262
ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
STATEMENT ................ select f,count(f)
from mcStatPart7 <<+ cardinality 10e8 >>
group by f;
@@ -192,8 +192,9 @@ ROOT ====================================== SEQ_NO 5 ONLY CHILD 4
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -224,7 +225,7 @@ DESCRIPTION
HBASE_MIN_BYTES_PER_ESP 1
USTAT_COLLECT_MC_SKEW_V ON
PARALLEL_NUM_ESPS ...... 4
- ObjectUIDs ............. 4615735661077609573
+ ObjectUIDs ............. 8834497876105223292
select_list ............ TRAFODION.HBASE.MCSTATPART7.F,
cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART7.
F)))
@@ -234,13 +235,14 @@ HASH_PARTIAL_GROUPBY_ROOT ================= SEQ_NO 4 ONLY CHILD 3
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
memory_quota ........... 1200 MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
+ est_memory_per_instance 0.041 KB
grouping_columns ....... TRAFODION.HBASE.MCSTATPART7.F
aggregates ............. sum(count_nonull(TRAFODION.HBASE.MCSTATPART7.F))
@@ -249,12 +251,13 @@ ESP_EXCHANGE ============================== SEQ_NO 3 ONLY CHILD 2
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
parent_frag ............ 0
fragment_type .......... esp
+ est_memory_per_node .... 29.297 KB
buffer_size ........ 5,000
record_length ......... 16
parent_processes ....... 1
@@ -267,8 +270,8 @@ DESCRIPTION
HASH_PARTIAL_GROUPBY_LEAF ================= SEQ_NO 2 ONLY CHILD 1
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
-EST_OPER_COST ............ 4.98
-EST_TOTAL_COST ......... 553.48
+EST_OPER_COST ............ 1.99
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
@@ -282,8 +285,8 @@ TRAFODION_SCAN ============================ SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... MCSTATPART7
REQUESTS_IN .............. 1
ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 548.5
-EST_TOTAL_COST ......... 548.5
+EST_OPER_COST .......... 477.46
+EST_TOTAL_COST ......... 477.46
DESCRIPTION
max_card_est ........... 1e+09
fragment_id ............ 2
@@ -325,9 +328,9 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212341125600682569
+PLAN_ID .................. 212356389660135016
ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 568.59
+EST_TOTAL_COST ......... 493.55
STATEMENT ................ select f,count(f)
from mcStatPart5 <<+ cardinality 10e8 >>
group by f;
@@ -338,8 +341,9 @@ ROOT ====================================== SEQ_NO 5 ONLY CHILD 4
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 568.59
+EST_TOTAL_COST ......... 493.55
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -370,7 +374,7 @@ DESCRIPTION
HBASE_MIN_BYTES_PER_ESP 1
USTAT_COLLECT_MC_SKEW_V ON
PARALLEL_NUM_ESPS ...... 4
- ObjectUIDs ............. 4615735661077611408
+ ObjectUIDs ............. 8834497876105225664
select_list ............ TRAFODION.HBASE.MCSTATPART5.F,
cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART5.
F)))
@@ -380,13 +384,14 @@ HASH_PARTIAL_GROUPBY_ROOT ================= SEQ_NO 4 ONLY CHILD 3
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 568.59
+EST_TOTAL_COST ......... 493.55
DESCRIPTION
memory_quota ........... 1200 MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
+ est_memory_per_instance 0.041 KB
grouping_columns ....... TRAFODION.HBASE.MCSTATPART5.F
aggregates ............. sum(count_nonull(TRAFODION.HBASE.MCSTATPART5.F))
@@ -395,12 +400,13 @@ ESP_EXCHANGE ============================== SEQ_NO 3 ONLY CHILD 2
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 568.59
+EST_TOTAL_COST ......... 493.55
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
parent_frag ............ 0
fragment_type .......... esp
+ est_memory_per_node .... 29.297 KB
buffer_size ........ 5,000
record_length ......... 16
parent_processes ....... 1
@@ -413,8 +419,8 @@ DESCRIPTION
HASH_PARTIAL_GROUPBY_LEAF ================= SEQ_NO 2 ONLY CHILD 1
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
-EST_OPER_COST ............ 4.98
-EST_TOTAL_COST ......... 568.59
+EST_OPER_COST ............ 1.99
+EST_TOTAL_COST ......... 493.55
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
@@ -428,8 +434,8 @@ TRAFODION_SCAN ============================ SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... MCSTATPART5
REQUESTS_IN .............. 1
ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 563.62
-EST_TOTAL_COST ......... 563.62
+EST_OPER_COST .......... 491.56
+EST_TOTAL_COST ......... 491.56
DESCRIPTION
max_card_est ........... 1e+09
fragment_id ............ 2
@@ -471,9 +477,9 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212341125601113093
+PLAN_ID .................. 212356389660322806
ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
STATEMENT ................ select f,count(f)
from mcStatPart3 <<+ cardinality 10e8 >>
group by f;
@@ -484,8 +490,9 @@ ROOT ====================================== SEQ_NO 5 ONLY CHILD 4
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -516,7 +523,7 @@ DESCRIPTION
HBASE_MIN_BYTES_PER_ESP 1
USTAT_COLLECT_MC_SKEW_V ON
PARALLEL_NUM_ESPS ...... 4
- ObjectUIDs ............. 4615735661077612835
+ ObjectUIDs ............. 8834497876105227029
select_list ............ TRAFODION.HBASE.MCSTATPART3.F,
cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART3.
F)))
@@ -526,13 +533,14 @@ HASH_PARTIAL_GROUPBY_ROOT ================= SEQ_NO 4 ONLY CHILD 3
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
memory_quota ........... 1200 MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
+ est_memory_per_instance 0.041 KB
grouping_columns ....... TRAFODION.HBASE.MCSTATPART3.F
aggregates ............. sum(count_nonull(TRAFODION.HBASE.MCSTATPART3.F))
@@ -541,12 +549,13 @@ ESP_EXCHANGE ============================== SEQ_NO 3 ONLY CHILD 2
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
parent_frag ............ 0
fragment_type .......... esp
+ est_memory_per_node .... 29.297 KB
buffer_size ........ 5,000
record_length ......... 16
parent_processes ....... 1
@@ -559,8 +568,8 @@ DESCRIPTION
HASH_PARTIAL_GROUPBY_LEAF ================= SEQ_NO 2 ONLY CHILD 1
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
-EST_OPER_COST ............ 4.98
-EST_TOTAL_COST ......... 553.48
+EST_OPER_COST ............ 1.99
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
@@ -574,8 +583,8 @@ TRAFODION_SCAN ============================ SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... MCSTATPART3
REQUESTS_IN .............. 1
ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 548.5
-EST_TOTAL_COST ......... 548.5
+EST_OPER_COST .......... 477.46
+EST_TOTAL_COST ......... 477.46
DESCRIPTION
max_card_est ........... 1e+09
fragment_id ............ 2
@@ -617,9 +626,9 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212341125601513932
+PLAN_ID .................. 212356389660516738
ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 523.92
+EST_TOTAL_COST ......... 451.99
STATEMENT ................ select f,count(f)
from mcStatPart6 <<+ cardinality 10e8 >>
group by f;
@@ -630,8 +639,9 @@ ROOT ====================================== SEQ_NO 5 ONLY CHILD 4
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 523.92
+EST_TOTAL_COST ......... 451.99
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -662,7 +672,7 @@ DESCRIPTION
HBASE_MIN_BYTES_PER_ESP 1
USTAT_COLLECT_MC_SKEW_V ON
PARALLEL_NUM_ESPS ...... 4
- ObjectUIDs ............. 4615735661077614228
+ ObjectUIDs ............. 8834497876105228765
select_list ............ TRAFODION.HBASE.MCSTATPART6.F,
cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART6.
F)))
@@ -672,13 +682,14 @@ HASH_PARTIAL_GROUPBY_ROOT ================= SEQ_NO 4 ONLY CHILD 3
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 523.92
+EST_TOTAL_COST ......... 451.99
DESCRIPTION
memory_quota ........... 1200 MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
+ est_memory_per_instance 0.041 KB
grouping_columns ....... TRAFODION.HBASE.MCSTATPART6.F
aggregates ............. sum(count_nonull(TRAFODION.HBASE.MCSTATPART6.F))
@@ -687,12 +698,13 @@ ESP_EXCHANGE ============================== SEQ_NO 3 ONLY CHILD 2
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 523.92
+EST_TOTAL_COST ......... 451.99
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
parent_frag ............ 0
fragment_type .......... esp
+ est_memory_per_node .... 29.297 KB
buffer_size ........ 5,000
record_length ......... 16
parent_processes ....... 1
@@ -705,8 +717,8 @@ DESCRIPTION
HASH_PARTIAL_GROUPBY_LEAF ================= SEQ_NO 2 ONLY CHILD 1
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
-EST_OPER_COST ............ 4.98
-EST_TOTAL_COST ......... 523.92
+EST_OPER_COST ............ 1.99
+EST_TOTAL_COST ......... 451.99
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
@@ -720,8 +732,8 @@ TRAFODION_SCAN ============================ SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... MCSTATPART6
REQUESTS_IN .............. 1
ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 518.94
-EST_TOTAL_COST ......... 518.94
+EST_OPER_COST .......... 450
+EST_TOTAL_COST ......... 450
DESCRIPTION
max_card_est ........... 1e+09
fragment_id ............ 2
@@ -763,9 +775,9 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212341125601934693
+PLAN_ID .................. 212356389660712070
ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 523.92
+EST_TOTAL_COST ......... 451.99
STATEMENT ................ select f,count(f)
from mcStatPart2 <<+ cardinality 10e8 >>
group by f;
@@ -776,8 +788,9 @@ ROOT ====================================== SEQ_NO 5 ONLY CHILD 4
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 523.92
+EST_TOTAL_COST ......... 451.99
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -808,7 +821,7 @@ DESCRIPTION
HBASE_MIN_BYTES_PER_ESP 1
USTAT_COLLECT_MC_SKEW_V ON
PARALLEL_NUM_ESPS ...... 4
- ObjectUIDs ............. 4615735661077615714
+ ObjectUIDs ............. 8834497876105230514
select_list ............ TRAFODION.HBASE.MCSTATPART2.F,
cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART2.
F)))
@@ -818,13 +831,14 @@ HASH_PARTIAL_GROUPBY_ROOT ================= SEQ_NO 4 ONLY CHILD 3
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 523.92
+EST_TOTAL_COST ......... 451.99
DESCRIPTION
memory_quota ........... 1200 MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
+ est_memory_per_instance 0.041 KB
grouping_columns ....... TRAFODION.HBASE.MCSTATPART2.F
aggregates ............. sum(count_nonull(TRAFODION.HBASE.MCSTATPART2.F))
@@ -833,12 +847,13 @@ ESP_EXCHANGE ============================== SEQ_NO 3 ONLY CHILD 2
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 523.92
+EST_TOTAL_COST ......... 451.99
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
parent_frag ............ 0
fragment_type .......... esp
+ est_memory_per_node .... 29.297 KB
buffer_size ........ 5,000
record_length ......... 16
parent_processes ....... 1
@@ -851,8 +866,8 @@ DESCRIPTION
HASH_PARTIAL_GROUPBY_LEAF ================= SEQ_NO 2 ONLY CHILD 1
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
-EST_OPER_COST ............ 4.98
-EST_TOTAL_COST ......... 523.92
+EST_OPER_COST ............ 1.99
+EST_TOTAL_COST ......... 451.99
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
@@ -866,8 +881,8 @@ TRAFODION_SCAN ============================ SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... MCSTATPART2
REQUESTS_IN .............. 1
ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 518.94
-EST_TOTAL_COST ......... 518.94
+EST_OPER_COST .......... 450
+EST_TOTAL_COST ......... 450
DESCRIPTION
max_card_est ........... 1e+09
fragment_id ............ 2
@@ -909,9 +924,9 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212341125602445711
+PLAN_ID .................. 212356389660911781
ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 538.3
+EST_TOTAL_COST ......... 465.32
STATEMENT ................ select f,count(f)
from mcStatPart1 <<+ cardinality 10e8 >>
group by f;
@@ -922,8 +937,9 @@ ROOT ====================================== SEQ_NO 5 ONLY CHILD 4
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 538.3
+EST_TOTAL_COST ......... 465.32
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -954,7 +970,7 @@ DESCRIPTION
HBASE_MIN_BYTES_PER_ESP 1
USTAT_COLLECT_MC_SKEW_V ON
PARALLEL_NUM_ESPS ...... 4
- ObjectUIDs ............. 4615735661077617072
+ ObjectUIDs ............. 8834497876105232246
select_list ............ TRAFODION.HBASE.MCSTATPART1.F,
cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART1.
F)))
@@ -964,13 +980,14 @@ HASH_PARTIAL_GROUPBY_ROOT ================= SEQ_NO 4 ONLY CHILD 3
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 538.3
+EST_TOTAL_COST ......... 465.32
DESCRIPTION
memory_quota ........... 1200 MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
+ est_memory_per_instance 0.041 KB
grouping_columns ....... TRAFODION.HBASE.MCSTATPART1.F
aggregates ............. sum(count_nonull(TRAFODION.HBASE.MCSTATPART1.F))
@@ -979,12 +996,13 @@ ESP_EXCHANGE ============================== SEQ_NO 3 ONLY CHILD 2
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 538.3
+EST_TOTAL_COST ......... 465.32
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
parent_frag ............ 0
fragment_type .......... esp
+ est_memory_per_node .... 29.297 KB
buffer_size ........ 5,000
record_length ......... 16
parent_processes ....... 1
@@ -997,8 +1015,8 @@ DESCRIPTION
HASH_PARTIAL_GROUPBY_LEAF ================= SEQ_NO 2 ONLY CHILD 1
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
-EST_OPER_COST ............ 4.98
-EST_TOTAL_COST ......... 538.3
+EST_OPER_COST ............ 1.99
+EST_TOTAL_COST ......... 465.32
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
@@ -1012,8 +1030,8 @@ TRAFODION_SCAN ============================ SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... MCSTATPART1
REQUESTS_IN .............. 1
ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 533.33
-EST_TOTAL_COST ......... 533.33
+EST_OPER_COST .......... 463.33
+EST_TOTAL_COST ......... 463.33
DESCRIPTION
max_card_est ........... 1e+09
fragment_id ............ 2
@@ -1055,9 +1073,9 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... ST1
-PLAN_ID .................. 212341125602861602
+PLAN_ID .................. 212356389661126399
ROWS_OUT ................. 1
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
STATEMENT ................ select f,count(f)
from mcStatPart8 <<+ cardinality 10e8 >>
group by f;
@@ -1068,8 +1086,9 @@ ROOT ====================================== SEQ_NO 5 ONLY CHILD 4
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -1100,7 +1119,7 @@ DESCRIPTION
HBASE_MIN_BYTES_PER_ESP 1
USTAT_COLLECT_MC_SKEW_V ON
PARALLEL_NUM_ESPS ...... 4
- ObjectUIDs ............. 4615735661077618405
+ ObjectUIDs ............. 8834497876105233956
select_list ............ TRAFODION.HBASE.MCSTATPART8.F,
cast(sum(count_nonull(TRAFODION.HBASE.MCSTATPART8.
F)))
@@ -1110,13 +1129,14 @@ HASH_PARTIAL_GROUPBY_ROOT ================= SEQ_NO 4 ONLY CHILD 3
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
memory_quota ........... 1200 MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
+ est_memory_per_instance 0.041 KB
grouping_columns ....... TRAFODION.HBASE.MCSTATPART8.F
aggregates ............. sum(count_nonull(TRAFODION.HBASE.MCSTATPART8.F))
@@ -1125,12 +1145,13 @@ ESP_EXCHANGE ============================== SEQ_NO 3 ONLY CHILD 2
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0.01
-EST_TOTAL_COST ......... 553.48
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
parent_frag ............ 0
fragment_type .......... esp
+ est_memory_per_node .... 29.297 KB
buffer_size ........ 5,000
record_length ......... 16
parent_processes ....... 1
@@ -1143,8 +1164,8 @@ DESCRIPTION
HASH_PARTIAL_GROUPBY_LEAF ================= SEQ_NO 2 ONLY CHILD 1
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
-EST_OPER_COST ............ 4.98
-EST_TOTAL_COST ......... 553.48
+EST_OPER_COST ............ 1.99
+EST_TOTAL_COST ......... 479.46
DESCRIPTION
max_card_est ........... 1
fragment_id ............ 2
@@ -1158,8 +1179,8 @@ TRAFODION_SCAN ============================ SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... MCSTATPART8
REQUESTS_IN .............. 1
ROWS_OUT ..... 1,000,000,000
-EST_OPER_COST .......... 548.5
-EST_TOTAL_COST ......... 548.5
+EST_OPER_COST .......... 477.46
+EST_TOTAL_COST ......... 477.46
DESCRIPTION
max_card_est ........... 1e+09
fragment_id ............ 2
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/sort/SortTopN.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sort/SortTopN.cpp b/core/sql/sort/SortTopN.cpp
index 0ef3221..5d557c3 100644
--- a/core/sql/sort/SortTopN.cpp
+++ b/core/sql/sort/SortTopN.cpp
@@ -73,7 +73,7 @@ SortTopN::SortTopN(ULng32 runsize, ULng32 sortmaxmem, ULng32 recsize,
isHeapified_ = FALSE;
- topNKeys_ = (RecKeyBuffer *)heap_->allocateMemory(sizeof(RecKeyBuffer) * allocRunSize_);
+ topNKeys_ = (RecKeyBuffer *) new (heap_) BYTE[sizeof(RecKeyBuffer) * allocRunSize_];
// Below asserts useful in debug mode.
ex_assert(topNKeys_ != NULL, "Sort: Initial topNKeys_ allocation failed");
@@ -125,6 +125,8 @@ Lng32 SortTopN::sortSend(void *rec, ULng32 len, void* tupp)
//Note lookIndex_ contains the current number of filled elements.
buildHeap();
}
+ if (bmoStats_)
+ bmoStats_->updateBMOHeapUsage((NAHeap *)heap_);
return SORT_SUCCESS;
}
@@ -133,7 +135,7 @@ Lng32 SortTopN::sortSend(void *rec, ULng32 len, void* tupp)
//new rec key with the root node of the heap ( root node is always the greatest).
insertRec(rec, len, tupp);
return SORT_SUCCESS;
- }
+}
void SortTopN::buildHeap()
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/sort/SortUtil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sort/SortUtil.cpp b/core/sql/sort/SortUtil.cpp
index 812914d..e5f6f7d 100644
--- a/core/sql/sort/SortUtil.cpp
+++ b/core/sql/sort/SortUtil.cpp
@@ -924,7 +924,7 @@ NABoolean SortUtil::consumeMemoryQuota(UInt32 bufferSizeBytes)
config_->callingTcb_->getGlobals()->castToExExeStmtGlobals();
//Check if memory quota is available.
- if(exe_glob->unusedMemoryQuota() < memNeededMB)
+ if(GetCliGlobals()->unusedMemoryQuota() < memNeededMB)
{
return FALSE;
}
@@ -934,7 +934,7 @@ NABoolean SortUtil::consumeMemoryQuota(UInt32 bufferSizeBytes)
config_->memoryQuotaMB_ += (short)memNeededMB;
if(this->withinMemoryLimitsAndPressure(bufferSizeBytes))
{
- if(exe_glob->grabMemoryQuotaIfAvailable(memNeededMB))
+ if(GetCliGlobals()->grabMemoryQuotaIfAvailable(memNeededMB))
{
config_->memoryQuotaUsedBytes_ += bufferSizeBytes;
return TRUE;
@@ -1013,7 +1013,7 @@ void SortUtil::returnExcessMemoryQuota(UInt32 overheadPerRecord)
ExExeStmtGlobals* exe_glob =
config_->callingTcb_->getGlobals()->castToExExeStmtGlobals();
- exe_glob->yieldMemoryQuota((UInt32) excessMemoryQuotaMB);
+ GetCliGlobals()->yieldMemoryQuota((UInt32) excessMemoryQuotaMB);
config_->memoryQuotaMB_ -= (short)excessMemoryQuotaMB;
}
}
@@ -1030,7 +1030,7 @@ UInt32 SortUtil::getMaxAvailableQuotaMB(void)
UInt32 maxAvailableQuotaMB =
config_->memoryQuotaMB_ -
(config_->memoryQuotaUsedBytes_/ONE_MB) +
- exe_glob->unusedMemoryQuota();
+ GetCliGlobals()->unusedMemoryQuota();
return (maxAvailableQuotaMB);
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h
index 71176a6..597c8ee 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -2696,9 +2696,6 @@ enum DefaultConstants
// perform substring transformation (ICBC PoC)
SUBSTRING_TRANSFORMATION,
- // Memory not available for BMOs in master fragment in mxosrvr
- // (mostly due to QIO).
- EXE_MEMORY_RESERVED_FOR_MXOSRVR_IN_MB,
// by default, a primary key or unique constraint must be non-nullable.
// This default, if set, allows them to be nullable.
@@ -2906,19 +2903,16 @@ enum DefaultConstants
// Total mem size (MB) for a query
- EXE_MEMORY_LIMIT_PER_CPU,
-
- // The percent of total nBMO memory in EXE_MEMORY_LIMIT_PER_CPU
- EXE_MEMORY_LIMIT_NONBMOS_PERCENT,
+ BMO_MEMORY_LIMIT_PER_NODE,
// lower-bound memory limit for BMOs
- EXE_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN,
+ BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN,
EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN,
- EXE_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY ,
- EXE_MEMORY_LIMIT_LOWER_BOUND_SORT ,
+ BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY ,
+ BMO_MEMORY_LIMIT_LOWER_BOUND_SORT ,
// lower-bound memory limit for nBMOs
- EXE_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE ,
+ BMO_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE ,
EXE_MEMORY_LIMIT_LOWER_BOUND_PA ,
EXE_MEMORY_LIMIT_LOWER_BOUND_SEQUENCE ,
EXE_MEMORY_LIMIT_LOWER_BOUND_EXCHANGE ,
@@ -3905,6 +3899,9 @@ enum DefaultConstants
// on hive could be created without registering them.
// This default is for internal testing usage only and not externalized.
HIVE_NO_REGISTER_OBJECTS,
+
+ BMO_MEMORY_LIMIT_UPPER_BOUND,
+ BMO_MEMORY_ESTIMATE_RATIO_CAP,
// if set, cleanse output of explain text by filtering values that
// may not be deterministic on different systems.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index 5603ca3..9de911b 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -464,6 +464,14 @@ SDDkwd__(ALLOW_DP2_ROW_SAMPLING, "SYSTEM"),
DDflte_(BMO_CITIZENSHIP_FACTOR, "1."),
+ DDflte_(BMO_MEMORY_ESTIMATE_RATIO_CAP, "0.7"),
+ DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY , "25"),
+ DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN, "25"),
+ DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE , "25"),
+ DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_SORT , "200"),
+ XDDui___(BMO_MEMORY_LIMIT_PER_NODE, "10240"),
+ DDui___(BMO_MEMORY_LIMIT_UPPER_BOUND, "1200"),
+
DDui1__(BMO_MEMORY_SIZE, "204800"),
// percentage of physical main memory availabe for BMO.
// This value is only used by HJ and HGB to come up with
@@ -1335,22 +1343,9 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"),
// lower-bound memory limit for BMOs/nbmos (in MB)
DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_EXCHANGE, "10"),
- DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY , "10"),
- DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN, "10"),
DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN, "10"),
DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_PA , "10"),
- DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE , "10"),
DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_SEQUENCE , "10"),
- DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_SORT , "10"),
-
- // total memory limit per CPU per query in MB
- DDpct1_50(EXE_MEMORY_LIMIT_NONBMOS_PERCENT, "15"),
- XDDui___(EXE_MEMORY_LIMIT_PER_CPU, "0"),
-
-
- // Memory not available for BMOs in master fragment in mxosrvr
- // (mostly due to QIO).
- DDui___(EXE_MEMORY_RESERVED_FOR_MXOSRVR_IN_MB,"544"),
// Override the memory quota system; set limit per each and every BMO
SDDflt__(EXE_MEM_LIMIT_PER_BMO_IN_MB, "0"),
@@ -5178,11 +5173,11 @@ NABoolean NADefaults::isReadonlyAttribute(const char* attrName) const
( stricmp(attrName, "VALIDATE_VIEWS_AT_OPEN_TIME") == 0 ) ||
( stricmp(attrName, "USER_EXPERIENCE_LEVEL") == 0 ) ||
( stricmp(attrName, "POS_DISKS_IN_SEGMENT") == 0 ) ||
- ( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN") == 0 ) ||
+ ( stricmp(attrName, "BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN") == 0 ) ||
( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN") == 0 ) ||
- ( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY") == 0 ) ||
- ( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_SORT") == 0 ) ||
- ( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE") == 0 ) ||
+ ( stricmp(attrName, "BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY") == 0 ) ||
+ ( stricmp(attrName, "BMO_MEMORY_LIMIT_LOWER_BOUND_SORT") == 0 ) ||
+ ( stricmp(attrName, "BMO_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE") == 0 ) ||
( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_PA") == 0 ) ||
( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_SEQUENCE") == 0 ) ||
( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_EXCHANGE") == 0 ) ||
[15/15] incubator-trafodion git commit: Merge PR 1288
[TRAFODION-2733] Provide an improved memory quota assignment for big memory
operators (BMO)
Posted by se...@apache.org.
Merge PR 1288 [TRAFODION-2733] Provide an improved memory quota assignment for big memory operators (BMO)
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/6177090d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/6177090d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/6177090d
Branch: refs/heads/master
Commit: 6177090d973f9a4740d9414714264700e5d3414d
Parents: cd54195 adac3cf
Author: selvaganesang <se...@apache.org>
Authored: Wed Sep 13 23:22:02 2017 +0000
Committer: selvaganesang <se...@apache.org>
Committed: Wed Sep 13 23:22:02 2017 +0000
----------------------------------------------------------------------
core/sqf/src/seatrans/.gitignore | 1 +
core/sql/cli/Context.cpp | 3 +-
core/sql/cli/Context.h | 18 +-
core/sql/cli/Globals.cpp | 47 +
core/sql/cli/Globals.h | 8 +-
core/sql/cli/Statement.cpp | 4 +-
core/sql/cli/sqlcli.h | 5 +-
core/sql/comexe/ComTdb.h | 1 +
core/sql/comexe/ComTdbHashGrby.h | 20 +-
core/sql/comexe/ComTdbHashj.cpp | 6 +-
core/sql/comexe/ComTdbHashj.h | 18 +-
core/sql/comexe/ComTdbRoot.cpp | 4 +-
core/sql/comexe/ComTdbRoot.h | 8 +
core/sql/comexe/ComTdbSort.cpp | 9 +-
core/sql/comexe/ComTdbSort.h | 27 +-
core/sql/comexe/ComTdbStats.cpp | 10 +-
core/sql/comexe/ComTdbStats.h | 7 +-
core/sql/common/ComSmallDefs.h | 7 +
core/sql/common/NAMemory.cpp | 1 +
core/sql/common/NAMemory.h | 3 +-
core/sql/executor/ExExeUtilGetStats.cpp | 2 +-
core/sql/executor/ExStats.cpp | 20 +-
core/sql/executor/ExStats.h | 3 +
core/sql/executor/cluster.cpp | 11 +-
core/sql/executor/cluster.h | 4 +-
core/sql/executor/ex_exe_stmt_globals.h | 28 +-
core/sql/executor/ex_frag_rt.cpp | 113 +-
core/sql/executor/ex_frag_rt.h | 8 +-
core/sql/executor/ex_hashj.cpp | 4 +-
core/sql/executor/ex_sort.cpp | 8 +-
core/sql/generator/GenExplain.cpp | 49 +-
core/sql/generator/GenPreCode.cpp | 51 +-
core/sql/generator/GenProbeCache.cpp | 57 +-
core/sql/generator/GenRelEnforcer.cpp | 27 +-
core/sql/generator/GenRelGrby.cpp | 113 +-
core/sql/generator/GenRelJoin.cpp | 137 +-
core/sql/generator/GenRelMisc.cpp | 127 +-
core/sql/generator/GenRelSequence.cpp | 79 +-
core/sql/generator/Generator.cpp | 27 +-
core/sql/generator/Generator.h | 41 +-
core/sql/optimizer/RelEnforcer.h | 9 +-
core/sql/optimizer/RelExpr.cpp | 91 +-
core/sql/optimizer/RelExpr.h | 19 +-
core/sql/optimizer/RelGrby.h | 2 +-
core/sql/optimizer/RelJoin.h | 2 +-
core/sql/optimizer/RelProbeCache.h | 2 +-
core/sql/optimizer/RelSequence.h | 2 +-
core/sql/regress/executor/EXPECTED107 | 47 +
core/sql/regress/executor/EXPECTED140 | 18 +-
core/sql/regress/executor/FILTER131 | 2 +
core/sql/regress/executor/FILTER140 | 2 +
core/sql/regress/executor/TEST107 | 6 +
core/sql/regress/hive/EXPECTED009 | 6 +-
core/sql/regress/hive/EXPECTED030 | 2636 ++++++++++++++++++++++
core/sql/regress/hive/FILTER009 | 1 +
core/sql/regress/seabase/EXPECTED010 | 84 +
core/sql/regress/seabase/EXPECTED011 | 1 +
core/sql/regress/seabase/EXPECTED016 | 49 +-
core/sql/regress/tools/regress-filter-linux | 2 +
core/sql/sort/SortTopN.cpp | 6 +-
core/sql/sort/SortUtil.cpp | 8 +-
core/sql/sort/SortUtilCfg.cpp | 2 +-
core/sql/sort/SortUtilCfg.h | 6 +-
core/sql/sqlcomp/DefaultConstants.h | 28 +-
core/sql/sqlcomp/DefaultValidator.h | 8 +
core/sql/sqlcomp/nadefaults.cpp | 37 +-
66 files changed, 3524 insertions(+), 668 deletions(-)
----------------------------------------------------------------------
[12/15] incubator-trafodion git commit: [TRAFODION-2733] Provide an
improved memory quota assignment for big memory operators (BMO)
Posted by se...@apache.org.
[TRAFODION-2733] Provide an improved memory quota assignment for big memory operators (BMO)
Added SplitBanceHelper.java. This file was deleted inadvertently
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/fd3275c8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/fd3275c8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/fd3275c8
Branch: refs/heads/master
Commit: fd3275c8ca90c5ce99690103b4711cbe1164b291
Parents: eece870
Author: selvaganesang <se...@esgyn.com>
Authored: Sat Sep 9 04:24:42 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Sat Sep 9 04:24:42 2017 +0000
----------------------------------------------------------------------
.../transactional/SplitBalanceHelper.java | 394 +++++++++++++++++++
1 file changed, 394 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/fd3275c8/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
----------------------------------------------------------------------
diff --git a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
new file mode 100644
index 0000000..989415b
--- /dev/null
+++ b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
@@ -0,0 +1,394 @@
+/**
+ * * @@@ 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 @@@
+ * **/
+
+package org.apache.hadoop.hbase.coprocessor.transactional;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.regionserver.HRegion;
+import org.apache.hadoop.hbase.regionserver.transactional.TransactionalRegionScannerHolder;
+import org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState;
+import org.apache.hadoop.hbase.regionserver.transactional.TransactionState;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.zookeeper.ZKUtil;
+import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+import org.apache.zookeeper.KeeperException;
+
+public class SplitBalanceHelper {
+ private static final Log LOG = LogFactory.getLog(SplitBalanceHelper.class);
+
+ private Path flushPath;
+
+ private static String zkTable;
+ private static String zSplitBalPath = TrxRegionObserver.zTrafPath + "splitbalance/";
+ private static String zSplitBalPathNoSlash = TrxRegionObserver.zTrafPath + "splitbalance";
+ private static String SPLIT = "SPLIT";
+ private static String BALANCE = "BALANCE";
+ private static final String FLUSH_PATH = "traf.txn.out";
+ private static AtomicBoolean needsCleanup = new AtomicBoolean(true);
+ private String balancePath;
+ private String splitPath;
+ private String regionPath;
+
+ private ZooKeeperWatcher zkw;
+ private HRegionInfo hri;
+ private HRegion region;
+ private String tablename;
+
+ public SplitBalanceHelper(HRegion my_Region, ZooKeeperWatcher zkw, Configuration conf) {
+
+ String parentZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,
+ HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);
+ SplitBalanceHelper.zkTable = parentZNode + "/table";
+ if(LOG.isDebugEnabled()) LOG.debug("zkTable value: " + SplitBalanceHelper.zkTable);
+
+ String fileName = FLUSH_PATH + getTimeStamp();
+ this.region = my_Region;
+ this.hri = my_Region.getRegionInfo();
+ this.zkw = zkw;
+ this.tablename = my_Region.getTableDesc().getNameAsString();
+ try {
+ if (ZKUtil.checkExists(zkw, zSplitBalPathNoSlash) == -1) {
+ if (LOG.isDebugEnabled()) LOG.debug("HELPER create with parents");
+ ZKUtil.createWithParents(zkw, zSplitBalPathNoSlash);
+ }
+ } catch (KeeperException ke) {
+ LOG.error("ERROR: Zookeeper exception: " + ke);
+ }
+ this.flushPath = new Path(region.getRegionFileSystem().getRegionDir(), fileName);
+ regionPath = zSplitBalPath + this.tablename + "/" + hri.getEncodedName();
+ balancePath = regionPath + "/" + BALANCE + "/";
+ splitPath = regionPath + "/" + SPLIT + "/";
+
+ if (SplitBalanceHelper.needsCleanup.compareAndSet(true, false)) {
+ zkCleanup();
+ }
+ }
+
+ public Path getPath() {
+ return flushPath;
+ }
+
+ public boolean getSplit() {
+ return getSplit(null);
+ }
+
+ public boolean getSplit(StringBuilder path) {
+ try {
+ byte[] splPath = ZKUtil.getData(zkw, splitPath.substring(0, splitPath.length() - 1));
+ if (splPath == null) {
+ return false;
+ } else {
+ if (path != null)
+ path.append(splPath.toString());
+ if (LOG.isDebugEnabled()) LOG.debug("Split information retrieved, path is: " + splPath.toString());
+ return true;
+ }
+ } catch (Exception e) {
+ if (LOG.isErrorEnabled()) LOG.error("Keeper exception: " + e);
+ return false;
+ }
+ }
+
+ public void setSplit(HRegion leftRegion, HRegion rightRegion) throws IOException {
+ String zLeftKey = zSplitBalPath + leftRegion.getRegionInfo().getEncodedName();
+ String zRightKey = zSplitBalPath + rightRegion.getRegionInfo().getEncodedName();
+
+ try {
+ if (ZKUtil.checkExists(zkw, balancePath.substring(0, balancePath.length() - 1)) != -1) {
+ clearBalance();
+ }
+ if (LOG.isDebugEnabled()) LOG.debug("Split checking for left key ");
+ if (ZKUtil.checkExists(zkw, zLeftKey) == -1) {
+ if (LOG.isDebugEnabled()) LOG.debug("Split creating left key with parents");
+ ZKUtil.createWithParents(zkw, zLeftKey);
+ }
+ if (LOG.isDebugEnabled()) LOG.debug("Split checking for right key ");
+ if (ZKUtil.checkExists(zkw, zRightKey) == -1) {
+ if (LOG.isDebugEnabled()) LOG.debug("Split creating right key with parents");
+ ZKUtil.createWithParents(zkw, zRightKey);
+ }
+ if (LOG.isDebugEnabled()) LOG.debug("Split createAndFailSilent for left key ");
+ ZKUtil.createAndFailSilent(zkw, zLeftKey + "/" + SPLIT, Bytes.toBytes(flushPath.toString()));
+ if (LOG.isDebugEnabled()) LOG.debug("Split createAndFailSilent for right key ");
+ ZKUtil.createAndFailSilent(zkw, zRightKey + "/" + SPLIT, Bytes.toBytes(flushPath.toString()));
+ if (LOG.isDebugEnabled()) LOG.debug("Split coordination node written for " + leftRegion.getRegionInfo().getRegionNameAsString() + " and " + rightRegion.getRegionInfo().getRegionNameAsString());
+ } catch (KeeperException ke) {
+ LOG.error("ERROR: Zookeeper exception: " + ke);
+ }
+ }
+
+ public void setSplit() {
+
+ try {
+ if (ZKUtil.checkExists(zkw, balancePath.substring(0, balancePath.length() - 1)) != -1) {
+ clearBalance();
+ }
+ if (ZKUtil.checkExists(zkw, splitPath.substring(0, splitPath.length() - 1)) == -1) {
+ ZKUtil.createWithParents(zkw, splitPath.substring(0, splitPath.length() - 1));
+ }
+ ZKUtil.createSetData(zkw, splitPath.substring(0, splitPath.length() - 1), Bytes.toBytes(flushPath.toString()));
+ if (LOG.isDebugEnabled()) LOG.debug("Setting split coordination node for " + hri.getRegionNameAsString());
+ } catch (KeeperException ke) {
+ LOG.error("ERROR: Zookeeper exception: " + ke);
+ }
+ }
+
+ public void clearSplit() {
+ if (LOG.isTraceEnabled()) LOG.trace("clearSplit called for region: " + this.hri.getRegionNameAsString());
+ try {
+ ZKUtil.deleteNodeRecursively(zkw, regionPath);
+ } catch (KeeperException ke) {
+ LOG.error("Zookeeper exception: " + ke);
+ }
+ }
+
+ public boolean getBalance(StringBuilder path) {
+ try {
+ byte[] balPath = ZKUtil.getData(zkw, balancePath.substring(0, balancePath.length() - 1));
+ if (balPath == null)
+ return false;
+ else {
+ path.append(new String(balPath));
+ if (LOG.isDebugEnabled()) LOG.debug("Balance information retrieved, path is: " + new String(balPath));
+ return true;
+ }
+ } catch (Exception e) {
+ if (LOG.isErrorEnabled())
+ LOG.error("Keeper exception: " + e);
+ }
+ return true;
+ }
+
+ public void setBalance() throws IOException {
+
+ try {
+ if (ZKUtil.checkExists(zkw, splitPath.substring(0, splitPath.length() - 1)) != -1) {
+ throw new IOException("SPLIT node already exists when trying to add BALANCE node");
+ }
+
+ if (ZKUtil.checkExists(zkw, balancePath.substring(0, balancePath.length() - 1)) == -1) {
+ if (LOG.isDebugEnabled()) LOG.debug("setBalance createWithParents balancePath");
+ ZKUtil.createWithParents(zkw, balancePath.substring(0, balancePath.length() - 1));
+ }
+ ZKUtil.createSetData(zkw, balancePath.substring(0, balancePath.length() - 1), Bytes.toBytes(flushPath.toString()));
+ if (LOG.isDebugEnabled()) LOG.debug("Setting balance coordination node for " + hri.getRegionNameAsString());
+
+ } catch (KeeperException ke) {
+ LOG.error("ERROR: Zookeeper exception: " + ke);
+ }
+ }
+
+ public void clearBalance() {
+ if (LOG.isTraceEnabled()) LOG.trace("clearBalance called for region: " + this.hri.getRegionNameAsString());
+ try {
+ ZKUtil.deleteNodeRecursively(zkw, regionPath);
+ } catch (KeeperException ke) {
+ LOG.error("Zookeeper exception: " + ke);
+ }
+ }
+
+ private long getTimeStamp() {
+ return System.currentTimeMillis();
+ }
+
+ protected boolean pendingListClear(Set<TrxTransactionState> commitPendingTransactions) throws IOException {
+ if (commitPendingTransactions.isEmpty()) {
+ if (LOG.isDebugEnabled())
+ LOG.debug("pendingListClear is true because commitPendingTransactions is empty " + hri.getRegionNameAsString());
+ return true;
+ } else {
+ // Check to see if all of the TrxTransaction state objects
+ // have dropTable Recorded, in which case the pending list is
+ // considered clear of pending list.
+ for (TrxTransactionState transactionState : commitPendingTransactions) {
+ // if even one transaction state does not have drop table recorded
+ // then pendingList is not yet clear.
+ if (!transactionState.dropTableRecorded()) {
+ if (LOG.isDebugEnabled())
+ LOG.debug("pendingListClear is false commitPendingTransactions is not empty "
+ + hri.getRegionNameAsString());
+ return false;
+ }
+ }
+ // Reaching here means pendingListClear.
+ LOG.info("pendingListClear is true because dropTableRecorded is true " + hri.getRegionNameAsString());
+ return true;
+ }
+ }
+
+ //Returning true indicates scannerList is Clear.
+ protected boolean scannersListClear(ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners,
+ ConcurrentHashMap<String, TrxTransactionState> transactionsById) throws IOException {
+ if(scanners.isEmpty())
+ {
+ if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Scanners is empty: " + hri.getRegionNameAsString());
+ return true;
+ }
+ else
+ {
+ if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Scanners is not empty: " + hri.getRegionNameAsString());
+ Iterator<Map.Entry<Long, TransactionalRegionScannerHolder>> scannerIter = scanners.entrySet().iterator();
+ TransactionalRegionScannerHolder rsh = null;
+ Map.Entry<Long, TransactionalRegionScannerHolder> entry;
+ while(scannerIter.hasNext())
+ {
+ entry = scannerIter.next();
+ rsh = entry.getValue();
+ if (rsh != null)
+ {
+ if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Active Scanner is: "+ rsh.scannerId +
+ " Txid: "+ rsh.transId + " Region: " + hri.getRegionNameAsString());
+ String key = hri.getRegionNameAsString() + rsh.transId;
+ TrxTransactionState trxState = transactionsById.get(key);
+
+ //if trxState is present means there is activity with this region.
+ //Hence don't return true.
+ if(trxState != null)
+ {
+ LOG.info("scannersListClear Active Scanner found, ScannerId: " +
+ rsh.scannerId + " Txid: "+ rsh.transId + " Region: " + hri.getRegionNameAsString());
+ return false;
+
+ }
+ }
+ }
+ //Reaching here means, there is no active scanner.
+ return true;
+ }
+ }
+
+ protected void pendingWait(Set<TrxTransactionState> commitPendingTransactions, int pendingDelayLen) throws IOException {
+ int count = 1;
+ while (!pendingListClear(commitPendingTransactions)) {
+ try {
+ if (LOG.isDebugEnabled()) LOG.debug("pendingWait() delay, count " + count++ + " on: " + hri.getRegionNameAsString());
+ Thread.sleep(pendingDelayLen);
+ } catch (InterruptedException e) {
+ String error = "Problem while calling sleep() on pendingWait delay, " + e;
+ if (LOG.isErrorEnabled()) LOG.error("Problem while calling sleep() on preSplit delay, returning. " + e);
+ throw new IOException(error);
+ }
+ }
+ }
+
+ /*
+ protected void scannersWait(ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners, int pendingDelayLen)
+ throws IOException {
+ int count = 1;
+ while (!scannersListClear(scanners)) {
+ try {
+ if (LOG.isDebugEnabled()) LOG.debug("scannersWait() delay, count " + count++ + " on: " + hri.getRegionNameAsString());
+ Thread.sleep(pendingDelayLen);
+ } catch (InterruptedException e) {
+ String error = "Problem while calling sleep() on scannersWait delay, " + e;
+ if (LOG.isErrorEnabled()) LOG.error("Problem while calling sleep() on preSplit delay, returning. " + e);
+ throw new IOException(error);
+ }
+ }
+ }
+ */
+
+ protected void pendingAndScannersWait(Set<TrxTransactionState> commitPendingTransactions,
+ ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners,
+ ConcurrentHashMap<String, TrxTransactionState> transactionsById, int pendingDelayLen) throws IOException {
+ int count = 1;
+ while (!scannersListClear(scanners, transactionsById) || !pendingListClear(commitPendingTransactions)) {
+ try {
+ if (LOG.isDebugEnabled()) LOG.debug("pendingAndScannersWait() delay, count " + count++ + " on: " + hri.getRegionNameAsString());
+ Thread.sleep(pendingDelayLen);
+ } catch (InterruptedException e) {
+ String error = "Problem while calling sleep() on pendingAndScannersWait delay, " + e;
+ if (LOG.isErrorEnabled()) LOG.error("Problem while calling sleep() on pendingAndScannersWait delay, returning. " + e);
+ throw new IOException(error);
+ }
+ }
+ }
+
+ protected void activeWait(ConcurrentHashMap<String, TrxTransactionState> transactionsById, int activeDelayLen,
+ int splitDelayLimit) throws IOException {
+ int counter = 0;
+ int minutes = 0;
+ int currentMin = 0;
+
+ boolean delayMsg = false;
+ while (!transactionsById.isEmpty()) {
+ try {
+ delayMsg = true;
+ Thread.sleep(activeDelayLen);
+ counter++;
+ currentMin = (counter * activeDelayLen) / 60000;
+
+ if (currentMin > minutes) {
+ minutes = currentMin;
+ if (LOG.isInfoEnabled()) LOG.info("Delaying split due to transactions present. Delayed : " + minutes + " minute(s) on "
+ + hri.getRegionNameAsString());
+ }
+ if (minutes >= splitDelayLimit) {
+ if (LOG.isWarnEnabled()) LOG.warn("Surpassed split delay limit of " + splitDelayLimit + " minutes. Continuing with split");
+ delayMsg = false;
+ break;
+ }
+ } catch (InterruptedException e) {
+ String error = "Problem while calling sleep() on preSplit delay - activeWait: " + e;
+ if (LOG.isErrorEnabled()) LOG.error(error);
+ throw new IOException(error);
+ }
+ }
+ if (delayMsg) {
+ if (LOG.isWarnEnabled()) LOG.warn("Continuing with split operation, no active transactions on: " + hri.getRegionNameAsString());
+ }
+ }
+
+ protected void zkCleanup() {
+ if (LOG.isTraceEnabled()) LOG.trace("zkCleanup -- ENTRY");
+ try {
+ List<String> trafTables = ZKUtil.listChildrenNoWatch(zkw, zSplitBalPathNoSlash);
+ List<String> hbaseTables = ZKUtil.listChildrenNoWatch(zkw, SplitBalanceHelper.zkTable);
+ if(trafTables != null && hbaseTables != null) {
+ for (String tableName : trafTables) {
+ if (!hbaseTables.contains(tableName)) {
+ if (LOG.isTraceEnabled()) LOG.trace("zkCleanup, removing " + zSplitBalPath + tableName);
+ ZKUtil.deleteNodeRecursively(zkw, zSplitBalPath + tableName);
+ }
+ }
+ }
+ } catch (KeeperException ke) {
+ if (LOG.isErrorEnabled()) LOG.error("zkCleanup error, please check your ZooKeeper: " + ke);
+ }
+ if (LOG.isTraceEnabled()) LOG.trace("zkCleanup -- EXIT");
+ }
+
+}
[14/15] incubator-trafodion git commit: [TRAFODION-2733] Provide an
improved memory quota assignment for big memory operators (BMO)
Posted by se...@apache.org.
[TRAFODION-2733] Provide an improved memory quota assignment for big memory operators (BMO)
Removed the 2nd sortHeap_ creation.
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/adac3cfd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/adac3cfd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/adac3cfd
Branch: refs/heads/master
Commit: adac3cfd52da21491842a56f05073a1715c11185
Parents: 14d66a9
Author: selvaganesang <se...@esgyn.com>
Authored: Wed Sep 13 19:05:31 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Wed Sep 13 19:05:31 2017 +0000
----------------------------------------------------------------------
core/sql/executor/ex_sort.cpp | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/adac3cfd/core/sql/executor/ex_sort.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_sort.cpp b/core/sql/executor/ex_sort.cpp
index a70b9a2..a6bac14 100644
--- a/core/sql/executor/ex_sort.cpp
+++ b/core/sql/executor/ex_sort.cpp
@@ -366,8 +366,6 @@ ExSortTcb::ExSortTcb(const ExSortTdb & sort_tdb,
break;
}
- sortHeap_ = new(getHeap()) NAHeap("Sort Heap", (NAHeap *)getHeap(), 204800);
-
sortUtil_ = new(sortHeap_) SortUtil(sort_tdb.getExplainNodeId());
sortDiag_ = NULL;
[03/15] incubator-trafodion git commit: Following changes are done in
BMO memory quota
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/hive/FILTER009
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/FILTER009 b/core/sql/regress/hive/FILTER009
index 1635dc7..10305d3 100755
--- a/core/sql/regress/hive/FILTER009
+++ b/core/sql/regress/hive/FILTER009
@@ -29,4 +29,5 @@ fi
sed "
s/\/\* ObjectUID = *[0-9]*/ObjectUID = <UID removed>/g
+s/est_memory_per_node[ ]*[\.]* .*/est_memory_per_node... removed/g
" $fil
[11/15] incubator-trafodion git commit: [TRAFODION-2733] Provide an
improved memory quota assignment for big memory operators (BMO)
Posted by se...@apache.org.
[TRAFODION-2733] Provide an improved memory quota assignment for big memory operators (BMO)
Enabled memory quota per node. The CQD BMO_MEMORY_LIMIT_PER_NODE
(renamed from EXE_MEMORY_LIMIT_PER_CPU) is set to 10240 MB by default.
Old attribute Old value Renamed Attribute New value
EXE_MEMORY_LIMIT_PER_CPU 0 BMO_MEMORY_LIMIT_PER_NODE 10240
EXE_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY 10 BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY 25
EXE_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN 10 BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN 25
EXE_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE 10 BMO_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE 25
EXE_MEMORY_LIMIT_LOWER_BOUND_SORT 10 BMO_MEMORY_LIMIT_LOWER_BOUND_SORT 200
Changes in EXPLAIN
Estimated memory per node for all BMOs at ROOT operator
Estimated memory per instance for every BMO operator
Memory quota per instance for every BMO operator
BMO TDB contains the memory quota per esp instance now.
Root TDB now contains the limit per node and estimated memory per node.
This can be used by WMS to change the memory allocation during
runtime without compilation. - Not yet implemented.
Added a CQD BMO_MEMORY_LIMIT_UPPER_BOUND to gap the memory
consumed by BMO by the same queries with less number of
bmos.
The unused memory quota is yielded to other fragments in the process
also.
Removed the code to limit the ESPs from being assigned to a fragement
based on the BMO memory quota.
Added a new CQD BMO_MEMORY_ESTIMATE_RATIO_CAP to gap the memory
estimate skew by any one BMO operator to 0.7.
To disable the memory quota per node, set BMO_MEMORY_LIMIT_PER_NODE to 0.
This memory quota is distributed proportionally based on the estimated memory
taking into consideration the number of bmo instances per operator and
the number of nodes available in the cluster to host these instances.
Hence, this memory quota should be valid in multi-fragments independent of the
number of fragments in an ESP.
Removed the CQD EXE_MEMORY_LIMIT_NONBMOS_PERCENT and EXE_MEMORY_RESERVED_FOR_MXOSRVR_IN_MB
Fixed BMO stats WM to be at least the allocated memory.
Changed the sort operator to account the bmo memory correctly.
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/eece8702
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/eece8702
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/eece8702
Branch: refs/heads/master
Commit: eece8702212df8d32924717e344059c893e4fa5b
Parents: 7d2c4a8
Author: selvaganesang <se...@esgyn.com>
Authored: Sat Sep 9 01:19:24 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Sat Sep 9 01:19:24 2017 +0000
----------------------------------------------------------------------
core/sqf/src/seatrans/.gitignore | 1 -
core/sql/regress/executor/EXPECTED131 | 12 ---------
core/sql/regress/executor/EXPECTED140 | 33 ------------------------
core/sql/regress/executor/FILTER131 | 2 ++
core/sql/regress/executor/FILTER140 | 2 ++
core/sql/regress/hive/EXPECTED009 | 22 +++++-----------
core/sql/regress/seabase/EXPECTED011 | 6 -----
core/sql/regress/tools/regress-filter-linux | 2 ++
8 files changed, 12 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/eece8702/core/sqf/src/seatrans/.gitignore
----------------------------------------------------------------------
diff --git a/core/sqf/src/seatrans/.gitignore b/core/sqf/src/seatrans/.gitignore
index ac89993..a172a66 100644
--- a/core/sqf/src/seatrans/.gitignore
+++ b/core/sqf/src/seatrans/.gitignore
@@ -15,6 +15,5 @@ hbase-trx/src/main/java/org/apache/hadoop/hbase/regionserver/transactional/Trans
hbase-trx/src/main/java/org/apache/hadoop/hbase/regionserver/transactional/TrxTransactionState.java
hbase-trx/src/main/java/org/apache/hadoop/hbase/client/ClientScanner98.java
hbase-trx/src/main/java/org/apache/hadoop/hbase/client/TrafParallelClientScanner.java
-hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
hbase-trx/src/main/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionalRegionScannerHolder.java
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/eece8702/core/sql/regress/executor/EXPECTED131
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED131 b/core/sql/regress/executor/EXPECTED131
index f9937ba..f5309b9 100644
--- a/core/sql/regress/executor/EXPECTED131
+++ b/core/sql/regress/executor/EXPECTED131
@@ -70,14 +70,12 @@
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356314945966316
STATEMENT ................ select * from t1311k where uniq >2 and uniq <5;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -89,7 +87,6 @@ DESCRIPTION
SCHEMA ................. T131SCH
HBASE_SMALL_SCANNER .... SYSTEM
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 5307053393310817782
select_list ............ TRAFODION.T131SCH.T1311K.UNIQ,
TRAFODION.T131SCH.T1311K.C1000,
TRAFODION.T131SCH.T1311K.STR1
@@ -116,14 +113,12 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356314946168645
STATEMENT ................ select * from t1311k where uniq >2 and uniq <99;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -135,7 +130,6 @@ DESCRIPTION
SCHEMA ................. T131SCH
HBASE_SMALL_SCANNER .... SYSTEM
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 5307053393310817782
select_list ............ TRAFODION.T131SCH.T1311K.UNIQ,
TRAFODION.T131SCH.T1311K.C1000,
TRAFODION.T131SCH.T1311K.STR1
@@ -274,14 +268,12 @@ UNIQ C1000
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356314946403715
STATEMENT ................ select * from t1311k where uniq >2 and uniq <30;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -293,7 +285,6 @@ DESCRIPTION
SCHEMA ................. T131SCH
HBASE_SMALL_SCANNER .... SYSTEM
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 5307053393310817782
select_list ............ TRAFODION.T131SCH.T1311K.UNIQ,
TRAFODION.T131SCH.T1311K.C1000,
TRAFODION.T131SCH.T1311K.STR1
@@ -320,14 +311,12 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356314948478264
STATEMENT ................ select * from t1311kbis where uniq >2 and uniq <30;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -339,7 +328,6 @@ DESCRIPTION
SCHEMA ................. T131SCH
HBASE_SMALL_SCANNER .... SYSTEM
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 5307053393310820283
select_list ............ TRAFODION.T131SCH.T1311KBIS.UNIQ,
TRAFODION.T131SCH.T1311KBIS.C1000,
TRAFODION.T131SCH.T1311KBIS.STR1
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/eece8702/core/sql/regress/executor/EXPECTED140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED140 b/core/sql/regress/executor/EXPECTED140
index 423692c..1f2086f 100644
--- a/core/sql/regress/executor/EXPECTED140
+++ b/core/sql/regress/executor/EXPECTED140
@@ -155,14 +155,12 @@ Task: COMPLETION Status: Ended Elapsed Time: 00:00:01.117
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315173074373
STATEMENT ................ select a from t140 where b>500;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -181,7 +179,6 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.A
@@ -220,14 +217,12 @@ A
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315173447116
STATEMENT ................ select an from t140b where b<=200;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -246,7 +241,6 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987055175
select_list ............ TRAFODION.SCH.T140B.AN
@@ -272,14 +266,12 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315173646450
STATEMENT ................ select an from t140 where b<=200;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -298,7 +290,6 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN
@@ -335,14 +326,12 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315173857360
STATEMENT ................ select an from t140 where b=200 and an is not null;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -361,7 +350,6 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN
input_variables ........ %(200)
@@ -396,14 +384,12 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315174057982
STATEMENT ................ select an, a from t140 where b!=500;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -422,7 +408,6 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN, TRAFODION.SCH.T140.A
@@ -493,14 +478,12 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315174338478
STATEMENT ................ select an from t140 where bn=201 and an is not null;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -519,7 +502,6 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN
input_variables ........ %(201)
@@ -553,14 +535,12 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315174528713
STATEMENT ................ select an, a from t140 where bn!=501;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -579,7 +559,6 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN, TRAFODION.SCH.T140.A
@@ -665,14 +644,12 @@ A
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315174798695
STATEMENT ................ select an from t140 where an between 20 and 40;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -691,7 +668,6 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN
@@ -749,14 +725,12 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315175120583
STATEMENT ................ select avg(a) from t140b;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 3 ONLY CHILD 2
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -777,7 +751,6 @@ DESCRIPTION
PARALLEL_NUM_ESPS ...... 1
HBASE_DOP_PARALLEL_SCAN 2
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987055175
select_list ............ cast(cast((cast((cast((cast(sum(TRAFODION.SCH.T140B.
A)) * 10000 ...0)) / cast(count(1 )))) / 10000
...0)))
@@ -823,14 +796,12 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315175459703
STATEMENT ................ select avg(a) from t140b;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 3 ONLY CHILD 2
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -851,7 +822,6 @@ DESCRIPTION
PARALLEL_NUM_ESPS ...... 1
HBASE_DOP_PARALLEL_SCAN 1
GENERATE_EXPLAIN ....... ON
- ObjectUIDs ............. 6364273405987055175
select_list ............ cast(cast((cast((cast((cast(sum(TRAFODION.SCH.T140B.
A)) * 10000 ...0)) / cast(count(1 )))) / 10000
...0)))
@@ -893,14 +863,12 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
-PLAN_ID .................. 212356315175459703
STATEMENT ................ select avg(a) from t140b;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 3 ONLY CHILD 2
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -920,7 +888,6 @@ DESCRIPTION
HBASE_SMALL_SCANNER .... OFF
PARALLEL_NUM_ESPS ...... 1
HBASE_DOP_PARALLEL_SCAN 1
- ObjectUIDs ............. 6364273405987055175
select_list ............ cast(cast((cast((cast((cast(sum(TRAFODION.SCH.T140B.
A)) * 10000 ...0)) / cast(count(1 )))) / 10000
...0)))
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/eece8702/core/sql/regress/executor/FILTER131
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/FILTER131 b/core/sql/regress/executor/FILTER131
index 8b2a15e..35e6e66 100755
--- a/core/sql/regress/executor/FILTER131
+++ b/core/sql/regress/executor/FILTER131
@@ -25,5 +25,7 @@
fil=$1
sed "
+s/^\([ ]*PLAN_ID[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*est_memory_per_node[ ]*[\.]*\) .*/\1 removed/g
" $fil
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/eece8702/core/sql/regress/executor/FILTER140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/FILTER140 b/core/sql/regress/executor/FILTER140
index f396578..9f8187f 100755
--- a/core/sql/regress/executor/FILTER140
+++ b/core/sql/regress/executor/FILTER140
@@ -39,4 +39,6 @@ s/.*PREPARATION.*/removed/
s/.*COMPLETION.*/removed/
s/Time:.*/Time:@time@/
s/VOLATILE_SCHEMA_MXID[0-9]*/VOLATILE_SCHEMA_00/
+s/^\([ ]*PLAN_ID[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*est_memory_per_node[ ]*[\.]*\) .*/\1 removed/g
" $fil
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/eece8702/core/sql/regress/hive/EXPECTED009
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/EXPECTED009 b/core/sql/regress/hive/EXPECTED009
index 60607af..92af6e4 100644
--- a/core/sql/regress/hive/EXPECTED009
+++ b/core/sql/regress/hive/EXPECTED009
@@ -479,8 +479,6 @@ A B C D
1 9 12 1936
--- 10 row(s) selected.
--- Definition current Wed Mar 15 05:30:03 2017
--- Definition current Wed Mar 15 05:30:05 2017
>>
>>obey TEST009(test_hbase);
>>select count(*) from hbase."_ROW_"."baseball";
@@ -618,7 +616,7 @@ ROW_ID COLS
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME ............ ###
STATEMENT_NAME ........... S
-PLAN_ID .................. 212356315820604834
+PLAN_ID ................ 212356315820604834
ROWS_OUT ............... ###
EST_TOTAL_COST ......... ###
STATEMENT ................ select * from store_sales where ss_item_sk = 1;
@@ -632,11 +630,13 @@ EST_OPER_COST .......... ###
EST_TOTAL_COST ......... ###
DESCRIPTION
est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ max_card_est ......... ###
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
affinity_value ....... ###
max_max_cardinality ###
+ total_overflow_size ###
xn_access_mode ......... read_only
xn_autoabort_interval ###
auto_query_retry ....... enabled
@@ -672,7 +672,6 @@ DESCRIPTION
input_variables ........ %(1)
- est_memory_per_node .... 29.297 KB
HIVE_SCAN ================================= SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... HIVE.HIVE.STORE_SALES
REQUESTS_IN ............ ###
@@ -745,8 +744,6 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... S
-PLAN_ID .................. 212356315822978424
-EST_TOTAL_COST ...... 28,735.03
STATEMENT ................ select *
from customer, store_sales
where store_sales.ss_item_sk =
@@ -756,9 +753,7 @@ MUST_MATCH ............... forced nested join(forced scan, forced scan)
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 4 ONLY CHILD 3
-EST_TOTAL_COST ...... 28,735.03
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -813,7 +808,6 @@ DESCRIPTION
NESTED_JOIN =============================== SEQ_NO 3 CHILDREN 1, 2
-EST_TOTAL_COST ...... 28,735.03
DESCRIPTION
fragment_id ............ 0
parent_frag ............ (none)
@@ -824,8 +818,6 @@ DESCRIPTION
HIVE_SCAN ================================= SEQ_NO 2 NO CHILDREN
TABLE_NAME ............... HIVE.HIVE.STORE_SALES
-EST_OPER_COST ....... 28,734.5
-EST_TOTAL_COST ...... 28,734.5
DESCRIPTION
fragment_id ............ 0
parent_frag ............ (none)
@@ -1069,7 +1061,7 @@ CREATE EXTERNAL TABLE DATE_DIM
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME ............ ###
STATEMENT_NAME ........... S
-PLAN_ID .................. 212356315833683208
+PLAN_ID ................ 212356315833683208
ROWS_OUT ............... ###
EST_TOTAL_COST ......... ###
STATEMENT ................ select *
@@ -1085,11 +1077,13 @@ EST_OPER_COST .......... ###
EST_TOTAL_COST ......... ###
DESCRIPTION
est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ max_card_est ......... ###
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
affinity_value ....... ###
max_max_cardinality ###
+ total_overflow_size ###
xn_access_mode ......... read_only
xn_autoabort_interval ###
auto_query_retry ....... enabled
@@ -1126,7 +1120,6 @@ DESCRIPTION
input_variables ........ %(2016-01-27)
- est_memory_per_node .... 35.400 KB
HIVE_SCAN ================================= SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... HIVE.HIVE.DATE_DIM
REQUESTS_IN ............ ###
@@ -1300,7 +1293,6 @@ CREATE EXTERNAL TABLE DATE_DIM
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... S
-PLAN_ID .................. 212356315851245875
STATEMENT ................ select *
from hive.hive.date_dim
where d_date = date '2016-01-27';
@@ -1309,7 +1301,6 @@ STATEMENT ................ select *
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -1347,7 +1338,6 @@ DESCRIPTION
input_variables ........ %(2016-01-27)
- est_memory_per_node .... 35.400 KB
HIVE_SCAN ================================= SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... HIVE.HIVE.DATE_DIM
DESCRIPTION
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/eece8702/core/sql/regress/seabase/EXPECTED011
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED011 b/core/sql/regress/seabase/EXPECTED011
index 626784b..6554d26 100644
--- a/core/sql/regress/seabase/EXPECTED011
+++ b/core/sql/regress/seabase/EXPECTED011
@@ -2078,12 +2078,6 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
--- SQL operation complete.
>>
-PLAN_ID .................. 212356313965892034
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
- ObjectUIDs ............. 8107166460522328383, 8107166460522328813
-PLAN_ID .................. 212356313967422361
- est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
- ObjectUIDs ............. 8107166460522329555, 8107166460522329995
>>
>>
>>
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/eece8702/core/sql/regress/tools/regress-filter-linux
----------------------------------------------------------------------
diff --git a/core/sql/regress/tools/regress-filter-linux b/core/sql/regress/tools/regress-filter-linux
index 940370d..2e1ae49 100755
--- a/core/sql/regress/tools/regress-filter-linux
+++ b/core/sql/regress/tools/regress-filter-linux
@@ -434,6 +434,8 @@ s/^\([ ]*HBASE_FILTER_PREDS[ ]*\) .*/\1 removed/g
# For ObjectUIDs , which are now included in EXPLAIN.
s/^ ObjectUIDs \.\.\.\.\.\.\.\.\.\.\.\.\. [0-9,]*$/ ObjectUIDs filtered/g
+s/^\([ ]*PLAN_ID[ ]*[\.]*\) .*/\1 removed/g
+s/^\([ ]*est_memory_per_node[ ]*[\.]*\) .*/\1 removed/g
# Query IDs
s/qid MXID11.*$/qid filtered/g
[05/15] incubator-trafodion git commit: Following changes are done in
BMO memory quota
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/optimizer/RelExpr.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExpr.h b/core/sql/optimizer/RelExpr.h
index 1b9fad9..da265a4 100644
--- a/core/sql/optimizer/RelExpr.h
+++ b/core/sql/optimizer/RelExpr.h
@@ -293,22 +293,19 @@ public:
// change literals in cacheable query's kids into ConstantParameters
void normalizeKidsForCache(CacheWA& cachewa, BindWA& bindWA);
- // How much memory do we expect this operator's executor to be able to use?
- // The method takes into consideration the memory needed by ODBC.
- Lng32 getExeMemoryAvailable(NABoolean inMaster, Lng32 BMOsMemoryLimit) const;
-
// How much memory do we expect this operator's executor to be able to use
// per ESP/master fragment ?
Lng32 getExeMemoryAvailable(NABoolean inMaster) const;
// compute the memory quota
double computeMemoryQuota(NABoolean inMaster,
- NABoolean perCPU,
+ NABoolean perNode,
double BMOsMemoryLimit,
UInt16 totalNumBMOs,
double totalBMOsMemoryUsage,
UInt16 numBMOsPerFragment,
- double BMOsMemoryUsagePerFragment
+ double BMOMemoryUsage,
+ Lng32 numStreams
);
@@ -1296,11 +1293,12 @@ public:
// ---------------------------------------------------------------------
virtual NABoolean isBigMemoryOperator(const PlanWorkSpace* pws,
const Lng32 planNumber);
+/*
+ virtual CostScalar getEstimatedRunTimeMemoryUsageInMB(NABoolean perNode)
+ { return getEstimatedRunTimeMemoryUsage(perNode) / (1024*1024); }
+*/
- virtual CostScalar getEstimatedRunTimeMemoryUsageInMB(NABoolean perCPU)
- { return getEstimatedRunTimeMemoryUsage(perCPU) / (1024*1024); }
-
- virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perCPU) {return 0;}
+ virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams = NULL) {return 0;}
virtual double getEstimatedRunTimeMemoryUsage(ComTdb * tdb) {return 0;}
inline NABoolean isinBlockStmt() const
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/optimizer/RelGrby.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelGrby.h b/core/sql/optimizer/RelGrby.h
index 8f4c21b..f6089b9 100644
--- a/core/sql/optimizer/RelGrby.h
+++ b/core/sql/optimizer/RelGrby.h
@@ -826,7 +826,7 @@ public:
virtual NABoolean isBigMemoryOperator(const PlanWorkSpace* pws,
const Lng32 planNumber);
- virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perCPU);
+ virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams = NULL);
virtual double getEstimatedRunTimeMemoryUsage(ComTdb * tdb);
virtual double getEstimatedRunTimeOverflowSize(double memoryQuotaMB);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/optimizer/RelJoin.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelJoin.h b/core/sql/optimizer/RelJoin.h
index 38c43c4..5495960 100644
--- a/core/sql/optimizer/RelJoin.h
+++ b/core/sql/optimizer/RelJoin.h
@@ -1641,7 +1641,7 @@ public:
virtual NABoolean isBigMemoryOperator(const PlanWorkSpace* pws,
const Lng32 planNumber);
- virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perCPU);
+ virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams = NULL);
virtual double getEstimatedRunTimeMemoryUsage(ComTdb * tdb);
virtual double getEstimatedRunTimeOverflowSize(double memoryQuotaMB);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/optimizer/RelProbeCache.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelProbeCache.h b/core/sql/optimizer/RelProbeCache.h
index 38b234f..bc79a3d 100644
--- a/core/sql/optimizer/RelProbeCache.h
+++ b/core/sql/optimizer/RelProbeCache.h
@@ -74,7 +74,7 @@ public:
virtual short codeGen(Generator *g);
- virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perCPU);
+ virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams = NULL);
virtual double getEstimatedRunTimeMemoryUsage(ComTdb * tdb);
virtual const NAString getText() const;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/optimizer/RelSequence.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelSequence.h b/core/sql/optimizer/RelSequence.h
index 44dd9aa..8fc09b5 100644
--- a/core/sql/optimizer/RelSequence.h
+++ b/core/sql/optimizer/RelSequence.h
@@ -434,7 +434,7 @@ public:
virtual NABoolean isBigMemoryOperator(const Context* context,
const Lng32 planNumber);
- virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perCPU);
+ virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams = NULL);
virtual double getEstimatedRunTimeMemoryUsage(ComTdb * tdb);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/executor/EXPECTED107
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED107 b/core/sql/regress/executor/EXPECTED107
index 20272d9..77c8306 100644
--- a/core/sql/regress/executor/EXPECTED107
+++ b/core/sql/regress/executor/EXPECTED107
@@ -147,6 +147,14 @@ C100K
99994
--- 1 row(s) selected.
+>>execute xx;
+
+C100K
+-----------
+
+ 99994
+
+--- 1 row(s) selected.
>>
>>-- Test #1A: uses TOPN sort
>>prepare xx from SELECT [first 10] c100k from t107100k order by c100k;
@@ -169,6 +177,23 @@ C100K
14
--- 10 row(s) selected.
+>>execute xx;
+
+C100K
+-----------
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 10
+ 11
+ 12
+ 13
+ 14
+
+--- 10 row(s) selected.
>>
>>-- Test#1B: negetive test, zero records to sort.
>>prepare xx from SELECT c100k from t107100k where c100k < 0 order by c100k;
@@ -177,6 +202,9 @@ C100K
>>execute xx;
--- 0 row(s) selected.
+>>execute xx;
+
+--- 0 row(s) selected.
>>
>>-- Test#1C: negetive test, zero records to sort, TOPN
>>prepare xx from SELECT [first 10] c100k from t107100k where c100k < 0 order by c100k;
@@ -185,6 +213,9 @@ C100K
>>execute xx;
--- 0 row(s) selected.
+>>execute xx;
+
+--- 0 row(s) selected.
>>
>>-- Test #2: SQL buffer overflow, overflow and merge
>>set envvar SCRATCH_IO_PENDING 280;
@@ -204,6 +235,14 @@ C100K STR1
99994 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--- 1 row(s) selected.
+>>execute xx;
+
+C100K STR1
+----------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------
+
+ 99994 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+--- 1 row(s) selected.
>>
>>-- Test #2a: sortRecLen > 512kb scratchIOBlock, overflow.
>>cqd GEN_SORT_MAX_NUM_BUFFERS '1';
@@ -268,6 +307,14 @@ C100K STR1
99994 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--- 1 row(s) selected.
+>>execute xx;
+
+C100K STR1
+----------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------
+
+ 99994 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+--- 1 row(s) selected.
>>
>>#ifLINUX
>>obey TEST107(cif_dml);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/executor/EXPECTED131
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED131 b/core/sql/regress/executor/EXPECTED131
index f5309b9..f9937ba 100644
--- a/core/sql/regress/executor/EXPECTED131
+++ b/core/sql/regress/executor/EXPECTED131
@@ -70,12 +70,14 @@
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356314945966316
STATEMENT ................ select * from t1311k where uniq >2 and uniq <5;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -87,6 +89,7 @@ DESCRIPTION
SCHEMA ................. T131SCH
HBASE_SMALL_SCANNER .... SYSTEM
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 5307053393310817782
select_list ............ TRAFODION.T131SCH.T1311K.UNIQ,
TRAFODION.T131SCH.T1311K.C1000,
TRAFODION.T131SCH.T1311K.STR1
@@ -113,12 +116,14 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356314946168645
STATEMENT ................ select * from t1311k where uniq >2 and uniq <99;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -130,6 +135,7 @@ DESCRIPTION
SCHEMA ................. T131SCH
HBASE_SMALL_SCANNER .... SYSTEM
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 5307053393310817782
select_list ............ TRAFODION.T131SCH.T1311K.UNIQ,
TRAFODION.T131SCH.T1311K.C1000,
TRAFODION.T131SCH.T1311K.STR1
@@ -268,12 +274,14 @@ UNIQ C1000
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356314946403715
STATEMENT ................ select * from t1311k where uniq >2 and uniq <30;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -285,6 +293,7 @@ DESCRIPTION
SCHEMA ................. T131SCH
HBASE_SMALL_SCANNER .... SYSTEM
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 5307053393310817782
select_list ............ TRAFODION.T131SCH.T1311K.UNIQ,
TRAFODION.T131SCH.T1311K.C1000,
TRAFODION.T131SCH.T1311K.STR1
@@ -311,12 +320,14 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356314948478264
STATEMENT ................ select * from t1311kbis where uniq >2 and uniq <30;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -328,6 +339,7 @@ DESCRIPTION
SCHEMA ................. T131SCH
HBASE_SMALL_SCANNER .... SYSTEM
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 5307053393310820283
select_list ............ TRAFODION.T131SCH.T1311KBIS.UNIQ,
TRAFODION.T131SCH.T1311KBIS.C1000,
TRAFODION.T131SCH.T1311KBIS.STR1
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/executor/EXPECTED140
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED140 b/core/sql/regress/executor/EXPECTED140
index e3fec24..423692c 100644
--- a/core/sql/regress/executor/EXPECTED140
+++ b/core/sql/regress/executor/EXPECTED140
@@ -124,18 +124,18 @@
+> , SS_NET_PROFIT
+>from hive.hive.store_sales where ss_sold_date_sk is not null;
Task: LOAD Status: Started Object: TRAFODION.SCH.T140C
-Task: CLEANUP Status: Started Time: 2017-07-12 21:31:50.149
-Task: CLEANUP Status: Ended Time: 2017-07-12 21:31:50.167
-Task: CLEANUP Status: Ended Elapsed Time: 00:00:00.019
-Task: LOADING DATA Status: Started Time: 2017-07-12 21:31:50.167
+Task: CLEANUP Status: Started Time: 2017-03-15 05:17:16.759
+Task: CLEANUP Status: Ended Time: 2017-03-15 05:17:16.781
+Task: CLEANUP Status: Ended Elapsed Time: 00:00:00.022
+Task: LOADING DATA Status: Started Time: 2017-03-15 05:17:16.781
Rows Processed: 2750311
Error Rows: 0
-Task: LOADING DATA Status: Ended Time: 2017-07-12 21:32:23.296
-Task: LOADING DATA Status: Ended Elapsed Time: 00:00:33.128
-Task: COMPLETION Status: Started Time: 2017-07-12 21:32:23.296
+Task: LOADING DATA Status: Ended Time: 2017-03-15 05:18:33.540
+Task: LOADING DATA Status: Ended Elapsed Time: 00:01:16.759
+Task: COMPLETION Status: Started Time: 2017-03-15 05:18:33.540
Rows Loaded: 2750311
-Task: COMPLETION Status: Ended Time: 2017-07-12 21:32:24.240
-Task: COMPLETION Status: Ended Elapsed Time: 00:00:00.728
+Task: COMPLETION Status: Ended Time: 2017-03-15 05:18:34.657
+Task: COMPLETION Status: Ended Elapsed Time: 00:00:01.117
--- 2750311 row(s) loaded.
>>update statistics for table t140c on every column sample;
@@ -155,12 +155,14 @@ Task: COMPLETION Status: Ended Elapsed Time: 00:00:00.728
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315173074373
STATEMENT ................ select a from t140 where b>500;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -179,6 +181,7 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.A
@@ -217,12 +220,14 @@ A
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315173447116
STATEMENT ................ select an from t140b where b<=200;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -241,6 +246,7 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987055175
select_list ............ TRAFODION.SCH.T140B.AN
@@ -266,12 +272,14 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315173646450
STATEMENT ................ select an from t140 where b<=200;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -290,6 +298,7 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN
@@ -326,12 +335,14 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315173857360
STATEMENT ................ select an from t140 where b=200 and an is not null;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -350,6 +361,7 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN
input_variables ........ %(200)
@@ -384,12 +396,14 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315174057982
STATEMENT ................ select an, a from t140 where b!=500;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -408,6 +422,7 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN, TRAFODION.SCH.T140.A
@@ -478,12 +493,14 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315174338478
STATEMENT ................ select an from t140 where bn=201 and an is not null;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -502,6 +519,7 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN
input_variables ........ %(201)
@@ -535,12 +553,14 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315174528713
STATEMENT ................ select an, a from t140 where bn!=501;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -559,6 +579,7 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN, TRAFODION.SCH.T140.A
@@ -644,12 +665,14 @@ A
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315174798695
STATEMENT ................ select an from t140 where an between 20 and 40;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -668,6 +691,7 @@ DESCRIPTION
SCHEMA ................. TRAFODION.SCH
TRAF_ALIGNED_ROW_FORMAT OFF
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987054695
select_list ............ TRAFODION.SCH.T140.AN
@@ -725,12 +749,14 @@ AN
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315175120583
STATEMENT ................ select avg(a) from t140b;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 3 ONLY CHILD 2
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -751,6 +777,7 @@ DESCRIPTION
PARALLEL_NUM_ESPS ...... 1
HBASE_DOP_PARALLEL_SCAN 2
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987055175
select_list ............ cast(cast((cast((cast((cast(sum(TRAFODION.SCH.T140B.
A)) * 10000 ...0)) / cast(count(1 )))) / 10000
...0)))
@@ -796,12 +823,14 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315175459703
STATEMENT ................ select avg(a) from t140b;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 3 ONLY CHILD 2
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -822,6 +851,7 @@ DESCRIPTION
PARALLEL_NUM_ESPS ...... 1
HBASE_DOP_PARALLEL_SCAN 1
GENERATE_EXPLAIN ....... ON
+ ObjectUIDs ............. 6364273405987055175
select_list ............ cast(cast((cast((cast((cast(sum(TRAFODION.SCH.T140B.
A)) * 10000 ...0)) / cast(count(1 )))) / 10000
...0)))
@@ -863,12 +893,14 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356315175459703
STATEMENT ................ select avg(a) from t140b;
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 3 ONLY CHILD 2
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -888,6 +920,7 @@ DESCRIPTION
HBASE_SMALL_SCANNER .... OFF
PARALLEL_NUM_ESPS ...... 1
HBASE_DOP_PARALLEL_SCAN 1
+ ObjectUIDs ............. 6364273405987055175
select_list ............ cast(cast((cast((cast((cast(sum(TRAFODION.SCH.T140B.
A)) * 10000 ...0)) / cast(count(1 )))) / 10000
...0)))
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/executor/TEST107
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/TEST107 b/core/sql/regress/executor/TEST107
index ffc4f75..249f351 100644
--- a/core/sql/regress/executor/TEST107
+++ b/core/sql/regress/executor/TEST107
@@ -160,24 +160,29 @@ insert into t107t3 values(1,'a','b','c','d','e','f'), (2,'a','b','c','d','e','f'
-- Test #1: In memory sort ,double & copy
prepare xx from SELECT [last 1] c100k from t107100k order by c100k;
execute xx;
+execute xx;
-- Test #1A: uses TOPN sort
prepare xx from SELECT [first 10] c100k from t107100k order by c100k;
execute xx;
+execute xx;
-- Test#1B: negetive test, zero records to sort.
prepare xx from SELECT c100k from t107100k where c100k < 0 order by c100k;
execute xx;
+execute xx;
-- Test#1C: negetive test, zero records to sort, TOPN
prepare xx from SELECT [first 10] c100k from t107100k where c100k < 0 order by c100k;
execute xx;
+execute xx;
-- Test #2: SQL buffer overflow, overflow and merge
set envvar SCRATCH_IO_PENDING 280;
control query default GEN_SORT_MAX_NUM_BUFFERS '1';
prepare xx from SELECT [last 1] c100k, str1 from t107100k order by 1,2;
execute xx;
+execute xx;
-- Test #2a: sortRecLen > 512kb scratchIOBlock, overflow.
cqd GEN_SORT_MAX_NUM_BUFFERS '1';
@@ -201,6 +206,7 @@ control query default GEN_SORT_MAX_NUM_BUFFERS '1';
control query default SORT_MAX_HEAP_SIZE_MB '1';
prepare xx from SELECT [last 1] c100k, str1 from t107100k order by 1,2;
execute xx;
+execute xx;
?section dml1
-------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/hive/EXPECTED009
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/EXPECTED009 b/core/sql/regress/hive/EXPECTED009
index e318532..79eaf00 100644
--- a/core/sql/regress/hive/EXPECTED009
+++ b/core/sql/regress/hive/EXPECTED009
@@ -434,7 +434,7 @@ T009T2
>>invoke hive.sch_t009.t009t1;
-- Definition of hive table T009T1
--- Definition current Wed Jul 12 21:39:07 2017
+-- Definition current Wed Mar 15 05:29:50 2017
(
A INT
@@ -479,6 +479,8 @@ A B C D
1 9 12 1936
--- 10 row(s) selected.
+-- Definition current Wed Mar 15 05:30:03 2017
+-- Definition current Wed Mar 15 05:30:05 2017
>>
>>obey TEST009(test_hbase);
>>select count(*) from hbase."_ROW_"."baseball";
@@ -572,7 +574,7 @@ ROW_ID COLS
>>invoke hive.hive.store_sales;
-- Definition of hive table STORE_SALES
--- Definition current Wed Jul 12 21:39:32 2017
+-- Definition current Wed Mar 15 05:30:20 2017
(
SS_SOLD_DATE_SK INT
@@ -616,7 +618,7 @@ ROW_ID COLS
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME ............ ###
STATEMENT_NAME ........... S
-PLAN_ID ................ ###
+PLAN_ID .................. 212356315820604834
ROWS_OUT ............... ###
EST_TOTAL_COST ......... ###
STATEMENT ................ select * from store_sales where ss_item_sk = 1;
@@ -629,14 +631,13 @@ ROWS_OUT ............... ###
EST_OPER_COST .......... ###
EST_TOTAL_COST ......... ###
DESCRIPTION
- max_card_est ......... ###
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
statement_index ...... ###
affinity_value ....... ###
max_max_cardinality ###
- total_overflow_size ###
xn_access_mode ......... read_only
xn_autoabort_interval ###
auto_query_retry ....... enabled
@@ -672,6 +673,7 @@ DESCRIPTION
input_variables ........ %(1)
+ est_memory_per_node .... 29.297 KB
HIVE_SCAN ================================= SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... HIVE.HIVE.STORE_SALES
REQUESTS_IN ............ ###
@@ -744,6 +746,8 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... S
+PLAN_ID .................. 212356315822978424
+EST_TOTAL_COST ...... 28,735.03
STATEMENT ................ select *
from customer, store_sales
where store_sales.ss_item_sk =
@@ -753,7 +757,9 @@ MUST_MATCH ............... forced nested join(forced scan, forced scan)
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 4 ONLY CHILD 3
+EST_TOTAL_COST ...... 28,735.03
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -808,6 +814,7 @@ DESCRIPTION
NESTED_JOIN =============================== SEQ_NO 3 CHILDREN 1, 2
+EST_TOTAL_COST ...... 28,735.03
DESCRIPTION
fragment_id ............ 0
parent_frag ............ (none)
@@ -818,6 +825,8 @@ DESCRIPTION
HIVE_SCAN ================================= SEQ_NO 2 NO CHILDREN
TABLE_NAME ............... HIVE.HIVE.STORE_SALES
+EST_OPER_COST ....... 28,734.5
+EST_TOTAL_COST ...... 28,734.5
DESCRIPTION
fragment_id ............ 0
parent_frag ............ (none)
@@ -917,7 +926,7 @@ DESCRIPTION
>>invoke hive.hive.date_dim;
-- Definition of hive table DATE_DIM
--- Definition current Wed Jul 12 21:39:40 2017
+-- Definition current Wed Mar 15 05:30:28 2017
(
D_DATE_SK INT
@@ -1061,7 +1070,7 @@ CREATE EXTERNAL TABLE DATE_DIM
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME ............ ###
STATEMENT_NAME ........... S
-PLAN_ID ................ ###
+PLAN_ID .................. 212356315833683208
ROWS_OUT ............... ###
EST_TOTAL_COST ......... ###
STATEMENT ................ select *
@@ -1076,14 +1085,13 @@ ROWS_OUT ............... ###
EST_OPER_COST .......... ###
EST_TOTAL_COST ......... ###
DESCRIPTION
- max_card_est ......... ###
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
statement_index ...... ###
affinity_value ....... ###
max_max_cardinality ###
- total_overflow_size ###
xn_access_mode ......... read_only
xn_autoabort_interval ###
auto_query_retry ....... enabled
@@ -1120,6 +1128,7 @@ DESCRIPTION
input_variables ........ %(2016-01-27)
+ est_memory_per_node .... 35.400 KB
HIVE_SCAN ================================= SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... HIVE.HIVE.DATE_DIM
REQUESTS_IN ............ ###
@@ -1152,7 +1161,7 @@ DESCRIPTION
>>invoke hive.hive.date_dim;
-- Definition of hive table DATE_DIM
--- Definition current Wed Jul 12 21:39:56 2017
+-- Definition current Wed Mar 15 05:30:46 2017
(
D_DATE_SK INT
@@ -1295,6 +1304,7 @@ CREATE EXTERNAL TABLE DATE_DIM
------------------------------------------------------------------ PLAN SUMMARY
STATEMENT_NAME ........... S
+PLAN_ID .................. 212356315851245875
STATEMENT ................ select *
from hive.hive.date_dim
where d_date = date '2016-01-27';
@@ -1303,6 +1313,7 @@ STATEMENT ................ select *
------------------------------------------------------------------ NODE LISTING
ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
@@ -1340,6 +1351,7 @@ DESCRIPTION
input_variables ........ %(2016-01-27)
+ est_memory_per_node .... 35.400 KB
HIVE_SCAN ================================= SEQ_NO 1 NO CHILDREN
TABLE_NAME ............... HIVE.HIVE.DATE_DIM
DESCRIPTION
[06/15] incubator-trafodion git commit: Following changes are done in
BMO memory quota
Posted by se...@apache.org.
Following changes are done in BMO memory quota
1) Enabled memory quota per node. The CQD BMO_MEMORY_LIMIT_PER_NODE
(renamed from EXE_MEMORY_LIMIT_PER_CPU) is set to 10240 MB by default.
Old attribute Old value Renamed Attribute New value
EXE_MEMORY_LIMIT_PER_CPU 0 BMO_MEMORY_LIMIT_PER_CPU 10240
EXE_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY 10 BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY 25
EXE_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN 10 BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN 25
EXE_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE 10 BMO_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE 25
EXE_MEMORY_LIMIT_LOWER_BOUND_SORT 10 BMO_MEMORY_LIMIT_LOWER_BOUND_SORT 200
2) Changes in EXPLAIN
Estimated memory per node for all BMOs at ROOT operator
Estimated memory per instance for every BMO operator
Memory quota per instance for every BMO operator
3) BMO TDB contains the memory quota per esp instance now.
4) Root TDB now contains the limit per node and estimated memory per node.
This can be used by WMS to change the memory allocation during
runtime without compilation. - Not yet implemented.
4) Added a CQD BMO_MEMORY_LIMIT_UPPER_BOUND to gap the memory
consumed by BMO by the same queries with less number of
bmos.
5) The unused memory quota is yielded to other fragments in the process
also.
6) Removed the code to limit the ESPs from being assigned to a fragement
based on the BMO memory quota.
7) Added a new CQD BMO_MEMORY_ESTIMATE_RATIO_CAP to gap the memory
estimate skew by any one BMO operator to 0.7.
8) To disable the memory quota per node, set BMO_MEMORY_LIMIT_PER_NODE to 0.
9) This memory quota is distributed proportionally based on the estimated memory
taking into consideration the number of bmo instances per operator and
the number of nodes available in the cluster to host these instances.
Hence, this memory quota should be valid in multi-fragments independent of the
number of fragments in an ESP.
10) Removed the CQD EXE_MEMORY_LIMIT_NONBMOS_PERCENT and EXE_MEMORY_RESERVED_FOR_MXOSRVR_IN_MB
11) Fixed BMO stats WM to be at least the allocated memory.
12) Changed the sort operator to account the bmo memory correctly.
(cherry picked from commit ba19c04a58890fdd845b03f8d915abdd487b6407)
Conflicts:
core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
core/sql/cli/Context.cpp
core/sql/executor/ex_frag_rt.cpp
core/sql/executor/ex_sort.cpp
core/sql/regress/executor/EXPECTED131
core/sql/regress/executor/EXPECTED140
core/sql/regress/hive/EXPECTED009
core/sql/regress/hive/EXPECTED030
core/sql/regress/hive/FILTER009
core/sql/regress/seabase/EXPECTED010
core/sql/regress/seabase/EXPECTED011
core/sql/regress/seabase/EXPECTED016
core/sql/sqlcomp/DefaultConstants.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/00e3b874
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/00e3b874
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/00e3b874
Branch: refs/heads/master
Commit: 00e3b87432feb9d84455ca8d20e9899611fdb7ff
Parents: 3f9429f
Author: selvaganesang <se...@esgyn.com>
Authored: Fri Sep 1 06:31:57 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Fri Sep 1 06:31:57 2017 +0000
----------------------------------------------------------------------
core/sqf/src/seatrans/.gitignore | 2 +
.../transactional/SplitBalanceHelper.java | 394 ---
core/sql/cli/Context.cpp | 3 +-
core/sql/cli/Context.h | 18 +-
core/sql/cli/Globals.cpp | 47 +
core/sql/cli/Globals.h | 6 +-
core/sql/cli/Statement.cpp | 8 +-
core/sql/comexe/ComTdbRoot.cpp | 4 +-
core/sql/comexe/ComTdbRoot.h | 8 +
core/sql/executor/Allocator.cpp | 4 +-
core/sql/executor/ExStats.h | 2 +
core/sql/executor/cluster.cpp | 16 +-
core/sql/executor/ex_frag_rt.cpp | 45 +-
core/sql/executor/ex_mj.cpp | 2 +-
core/sql/executor/ex_sort.cpp | 3 +
core/sql/executor/ex_split_bottom.cpp | 2 +-
core/sql/generator/GenExplain.cpp | 37 +-
core/sql/generator/GenPreCode.cpp | 40 +-
core/sql/generator/GenProbeCache.cpp | 32 +-
core/sql/generator/GenRelEnforcer.cpp | 22 +-
core/sql/generator/GenRelGrby.cpp | 73 +-
core/sql/generator/GenRelJoin.cpp | 79 +-
core/sql/generator/GenRelMisc.cpp | 70 +-
core/sql/generator/GenRelSequence.cpp | 46 +-
core/sql/optimizer/RelEnforcer.h | 4 +-
core/sql/optimizer/RelExpr.cpp | 75 +-
core/sql/optimizer/RelExpr.h | 18 +-
core/sql/optimizer/RelGrby.h | 2 +-
core/sql/optimizer/RelJoin.h | 2 +-
core/sql/optimizer/RelProbeCache.h | 2 +-
core/sql/optimizer/RelSequence.h | 2 +-
core/sql/regress/executor/EXPECTED107 | 47 +
core/sql/regress/executor/EXPECTED131 | 12 +
core/sql/regress/executor/EXPECTED140 | 51 +-
core/sql/regress/executor/TEST107 | 6 +
core/sql/regress/hive/EXPECTED009 | 32 +-
core/sql/regress/hive/EXPECTED030 | 2636 ++++++++++++++++++
core/sql/regress/hive/FILTER009 | 1 +
core/sql/regress/seabase/EXPECTED010 | 460 +--
core/sql/regress/seabase/EXPECTED011 | 19 +-
core/sql/regress/seabase/EXPECTED016 | 161 +-
core/sql/sort/SortTopN.cpp | 6 +-
core/sql/sort/SortUtil.cpp | 8 +-
core/sql/sqlcomp/DefaultConstants.h | 19 +-
core/sql/sqlcomp/nadefaults.cpp | 29 +-
45 files changed, 3507 insertions(+), 1048 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sqf/src/seatrans/.gitignore
----------------------------------------------------------------------
diff --git a/core/sqf/src/seatrans/.gitignore b/core/sqf/src/seatrans/.gitignore
index e1dcf48..ac89993 100644
--- a/core/sqf/src/seatrans/.gitignore
+++ b/core/sqf/src/seatrans/.gitignore
@@ -15,4 +15,6 @@ hbase-trx/src/main/java/org/apache/hadoop/hbase/regionserver/transactional/Trans
hbase-trx/src/main/java/org/apache/hadoop/hbase/regionserver/transactional/TrxTransactionState.java
hbase-trx/src/main/java/org/apache/hadoop/hbase/client/ClientScanner98.java
hbase-trx/src/main/java/org/apache/hadoop/hbase/client/TrafParallelClientScanner.java
+hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
+hbase-trx/src/main/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionalRegionScannerHolder.java
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
----------------------------------------------------------------------
diff --git a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
deleted file mode 100644
index 989415b..0000000
--- a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/**
- * * @@@ 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 @@@
- * **/
-
-package org.apache.hadoop.hbase.coprocessor.transactional;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.regionserver.HRegion;
-import org.apache.hadoop.hbase.regionserver.transactional.TransactionalRegionScannerHolder;
-import org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState;
-import org.apache.hadoop.hbase.regionserver.transactional.TransactionState;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.zookeeper.ZKUtil;
-import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
-import org.apache.zookeeper.KeeperException;
-
-public class SplitBalanceHelper {
- private static final Log LOG = LogFactory.getLog(SplitBalanceHelper.class);
-
- private Path flushPath;
-
- private static String zkTable;
- private static String zSplitBalPath = TrxRegionObserver.zTrafPath + "splitbalance/";
- private static String zSplitBalPathNoSlash = TrxRegionObserver.zTrafPath + "splitbalance";
- private static String SPLIT = "SPLIT";
- private static String BALANCE = "BALANCE";
- private static final String FLUSH_PATH = "traf.txn.out";
- private static AtomicBoolean needsCleanup = new AtomicBoolean(true);
- private String balancePath;
- private String splitPath;
- private String regionPath;
-
- private ZooKeeperWatcher zkw;
- private HRegionInfo hri;
- private HRegion region;
- private String tablename;
-
- public SplitBalanceHelper(HRegion my_Region, ZooKeeperWatcher zkw, Configuration conf) {
-
- String parentZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,
- HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);
- SplitBalanceHelper.zkTable = parentZNode + "/table";
- if(LOG.isDebugEnabled()) LOG.debug("zkTable value: " + SplitBalanceHelper.zkTable);
-
- String fileName = FLUSH_PATH + getTimeStamp();
- this.region = my_Region;
- this.hri = my_Region.getRegionInfo();
- this.zkw = zkw;
- this.tablename = my_Region.getTableDesc().getNameAsString();
- try {
- if (ZKUtil.checkExists(zkw, zSplitBalPathNoSlash) == -1) {
- if (LOG.isDebugEnabled()) LOG.debug("HELPER create with parents");
- ZKUtil.createWithParents(zkw, zSplitBalPathNoSlash);
- }
- } catch (KeeperException ke) {
- LOG.error("ERROR: Zookeeper exception: " + ke);
- }
- this.flushPath = new Path(region.getRegionFileSystem().getRegionDir(), fileName);
- regionPath = zSplitBalPath + this.tablename + "/" + hri.getEncodedName();
- balancePath = regionPath + "/" + BALANCE + "/";
- splitPath = regionPath + "/" + SPLIT + "/";
-
- if (SplitBalanceHelper.needsCleanup.compareAndSet(true, false)) {
- zkCleanup();
- }
- }
-
- public Path getPath() {
- return flushPath;
- }
-
- public boolean getSplit() {
- return getSplit(null);
- }
-
- public boolean getSplit(StringBuilder path) {
- try {
- byte[] splPath = ZKUtil.getData(zkw, splitPath.substring(0, splitPath.length() - 1));
- if (splPath == null) {
- return false;
- } else {
- if (path != null)
- path.append(splPath.toString());
- if (LOG.isDebugEnabled()) LOG.debug("Split information retrieved, path is: " + splPath.toString());
- return true;
- }
- } catch (Exception e) {
- if (LOG.isErrorEnabled()) LOG.error("Keeper exception: " + e);
- return false;
- }
- }
-
- public void setSplit(HRegion leftRegion, HRegion rightRegion) throws IOException {
- String zLeftKey = zSplitBalPath + leftRegion.getRegionInfo().getEncodedName();
- String zRightKey = zSplitBalPath + rightRegion.getRegionInfo().getEncodedName();
-
- try {
- if (ZKUtil.checkExists(zkw, balancePath.substring(0, balancePath.length() - 1)) != -1) {
- clearBalance();
- }
- if (LOG.isDebugEnabled()) LOG.debug("Split checking for left key ");
- if (ZKUtil.checkExists(zkw, zLeftKey) == -1) {
- if (LOG.isDebugEnabled()) LOG.debug("Split creating left key with parents");
- ZKUtil.createWithParents(zkw, zLeftKey);
- }
- if (LOG.isDebugEnabled()) LOG.debug("Split checking for right key ");
- if (ZKUtil.checkExists(zkw, zRightKey) == -1) {
- if (LOG.isDebugEnabled()) LOG.debug("Split creating right key with parents");
- ZKUtil.createWithParents(zkw, zRightKey);
- }
- if (LOG.isDebugEnabled()) LOG.debug("Split createAndFailSilent for left key ");
- ZKUtil.createAndFailSilent(zkw, zLeftKey + "/" + SPLIT, Bytes.toBytes(flushPath.toString()));
- if (LOG.isDebugEnabled()) LOG.debug("Split createAndFailSilent for right key ");
- ZKUtil.createAndFailSilent(zkw, zRightKey + "/" + SPLIT, Bytes.toBytes(flushPath.toString()));
- if (LOG.isDebugEnabled()) LOG.debug("Split coordination node written for " + leftRegion.getRegionInfo().getRegionNameAsString() + " and " + rightRegion.getRegionInfo().getRegionNameAsString());
- } catch (KeeperException ke) {
- LOG.error("ERROR: Zookeeper exception: " + ke);
- }
- }
-
- public void setSplit() {
-
- try {
- if (ZKUtil.checkExists(zkw, balancePath.substring(0, balancePath.length() - 1)) != -1) {
- clearBalance();
- }
- if (ZKUtil.checkExists(zkw, splitPath.substring(0, splitPath.length() - 1)) == -1) {
- ZKUtil.createWithParents(zkw, splitPath.substring(0, splitPath.length() - 1));
- }
- ZKUtil.createSetData(zkw, splitPath.substring(0, splitPath.length() - 1), Bytes.toBytes(flushPath.toString()));
- if (LOG.isDebugEnabled()) LOG.debug("Setting split coordination node for " + hri.getRegionNameAsString());
- } catch (KeeperException ke) {
- LOG.error("ERROR: Zookeeper exception: " + ke);
- }
- }
-
- public void clearSplit() {
- if (LOG.isTraceEnabled()) LOG.trace("clearSplit called for region: " + this.hri.getRegionNameAsString());
- try {
- ZKUtil.deleteNodeRecursively(zkw, regionPath);
- } catch (KeeperException ke) {
- LOG.error("Zookeeper exception: " + ke);
- }
- }
-
- public boolean getBalance(StringBuilder path) {
- try {
- byte[] balPath = ZKUtil.getData(zkw, balancePath.substring(0, balancePath.length() - 1));
- if (balPath == null)
- return false;
- else {
- path.append(new String(balPath));
- if (LOG.isDebugEnabled()) LOG.debug("Balance information retrieved, path is: " + new String(balPath));
- return true;
- }
- } catch (Exception e) {
- if (LOG.isErrorEnabled())
- LOG.error("Keeper exception: " + e);
- }
- return true;
- }
-
- public void setBalance() throws IOException {
-
- try {
- if (ZKUtil.checkExists(zkw, splitPath.substring(0, splitPath.length() - 1)) != -1) {
- throw new IOException("SPLIT node already exists when trying to add BALANCE node");
- }
-
- if (ZKUtil.checkExists(zkw, balancePath.substring(0, balancePath.length() - 1)) == -1) {
- if (LOG.isDebugEnabled()) LOG.debug("setBalance createWithParents balancePath");
- ZKUtil.createWithParents(zkw, balancePath.substring(0, balancePath.length() - 1));
- }
- ZKUtil.createSetData(zkw, balancePath.substring(0, balancePath.length() - 1), Bytes.toBytes(flushPath.toString()));
- if (LOG.isDebugEnabled()) LOG.debug("Setting balance coordination node for " + hri.getRegionNameAsString());
-
- } catch (KeeperException ke) {
- LOG.error("ERROR: Zookeeper exception: " + ke);
- }
- }
-
- public void clearBalance() {
- if (LOG.isTraceEnabled()) LOG.trace("clearBalance called for region: " + this.hri.getRegionNameAsString());
- try {
- ZKUtil.deleteNodeRecursively(zkw, regionPath);
- } catch (KeeperException ke) {
- LOG.error("Zookeeper exception: " + ke);
- }
- }
-
- private long getTimeStamp() {
- return System.currentTimeMillis();
- }
-
- protected boolean pendingListClear(Set<TrxTransactionState> commitPendingTransactions) throws IOException {
- if (commitPendingTransactions.isEmpty()) {
- if (LOG.isDebugEnabled())
- LOG.debug("pendingListClear is true because commitPendingTransactions is empty " + hri.getRegionNameAsString());
- return true;
- } else {
- // Check to see if all of the TrxTransaction state objects
- // have dropTable Recorded, in which case the pending list is
- // considered clear of pending list.
- for (TrxTransactionState transactionState : commitPendingTransactions) {
- // if even one transaction state does not have drop table recorded
- // then pendingList is not yet clear.
- if (!transactionState.dropTableRecorded()) {
- if (LOG.isDebugEnabled())
- LOG.debug("pendingListClear is false commitPendingTransactions is not empty "
- + hri.getRegionNameAsString());
- return false;
- }
- }
- // Reaching here means pendingListClear.
- LOG.info("pendingListClear is true because dropTableRecorded is true " + hri.getRegionNameAsString());
- return true;
- }
- }
-
- //Returning true indicates scannerList is Clear.
- protected boolean scannersListClear(ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners,
- ConcurrentHashMap<String, TrxTransactionState> transactionsById) throws IOException {
- if(scanners.isEmpty())
- {
- if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Scanners is empty: " + hri.getRegionNameAsString());
- return true;
- }
- else
- {
- if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Scanners is not empty: " + hri.getRegionNameAsString());
- Iterator<Map.Entry<Long, TransactionalRegionScannerHolder>> scannerIter = scanners.entrySet().iterator();
- TransactionalRegionScannerHolder rsh = null;
- Map.Entry<Long, TransactionalRegionScannerHolder> entry;
- while(scannerIter.hasNext())
- {
- entry = scannerIter.next();
- rsh = entry.getValue();
- if (rsh != null)
- {
- if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Active Scanner is: "+ rsh.scannerId +
- " Txid: "+ rsh.transId + " Region: " + hri.getRegionNameAsString());
- String key = hri.getRegionNameAsString() + rsh.transId;
- TrxTransactionState trxState = transactionsById.get(key);
-
- //if trxState is present means there is activity with this region.
- //Hence don't return true.
- if(trxState != null)
- {
- LOG.info("scannersListClear Active Scanner found, ScannerId: " +
- rsh.scannerId + " Txid: "+ rsh.transId + " Region: " + hri.getRegionNameAsString());
- return false;
-
- }
- }
- }
- //Reaching here means, there is no active scanner.
- return true;
- }
- }
-
- protected void pendingWait(Set<TrxTransactionState> commitPendingTransactions, int pendingDelayLen) throws IOException {
- int count = 1;
- while (!pendingListClear(commitPendingTransactions)) {
- try {
- if (LOG.isDebugEnabled()) LOG.debug("pendingWait() delay, count " + count++ + " on: " + hri.getRegionNameAsString());
- Thread.sleep(pendingDelayLen);
- } catch (InterruptedException e) {
- String error = "Problem while calling sleep() on pendingWait delay, " + e;
- if (LOG.isErrorEnabled()) LOG.error("Problem while calling sleep() on preSplit delay, returning. " + e);
- throw new IOException(error);
- }
- }
- }
-
- /*
- protected void scannersWait(ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners, int pendingDelayLen)
- throws IOException {
- int count = 1;
- while (!scannersListClear(scanners)) {
- try {
- if (LOG.isDebugEnabled()) LOG.debug("scannersWait() delay, count " + count++ + " on: " + hri.getRegionNameAsString());
- Thread.sleep(pendingDelayLen);
- } catch (InterruptedException e) {
- String error = "Problem while calling sleep() on scannersWait delay, " + e;
- if (LOG.isErrorEnabled()) LOG.error("Problem while calling sleep() on preSplit delay, returning. " + e);
- throw new IOException(error);
- }
- }
- }
- */
-
- protected void pendingAndScannersWait(Set<TrxTransactionState> commitPendingTransactions,
- ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners,
- ConcurrentHashMap<String, TrxTransactionState> transactionsById, int pendingDelayLen) throws IOException {
- int count = 1;
- while (!scannersListClear(scanners, transactionsById) || !pendingListClear(commitPendingTransactions)) {
- try {
- if (LOG.isDebugEnabled()) LOG.debug("pendingAndScannersWait() delay, count " + count++ + " on: " + hri.getRegionNameAsString());
- Thread.sleep(pendingDelayLen);
- } catch (InterruptedException e) {
- String error = "Problem while calling sleep() on pendingAndScannersWait delay, " + e;
- if (LOG.isErrorEnabled()) LOG.error("Problem while calling sleep() on pendingAndScannersWait delay, returning. " + e);
- throw new IOException(error);
- }
- }
- }
-
- protected void activeWait(ConcurrentHashMap<String, TrxTransactionState> transactionsById, int activeDelayLen,
- int splitDelayLimit) throws IOException {
- int counter = 0;
- int minutes = 0;
- int currentMin = 0;
-
- boolean delayMsg = false;
- while (!transactionsById.isEmpty()) {
- try {
- delayMsg = true;
- Thread.sleep(activeDelayLen);
- counter++;
- currentMin = (counter * activeDelayLen) / 60000;
-
- if (currentMin > minutes) {
- minutes = currentMin;
- if (LOG.isInfoEnabled()) LOG.info("Delaying split due to transactions present. Delayed : " + minutes + " minute(s) on "
- + hri.getRegionNameAsString());
- }
- if (minutes >= splitDelayLimit) {
- if (LOG.isWarnEnabled()) LOG.warn("Surpassed split delay limit of " + splitDelayLimit + " minutes. Continuing with split");
- delayMsg = false;
- break;
- }
- } catch (InterruptedException e) {
- String error = "Problem while calling sleep() on preSplit delay - activeWait: " + e;
- if (LOG.isErrorEnabled()) LOG.error(error);
- throw new IOException(error);
- }
- }
- if (delayMsg) {
- if (LOG.isWarnEnabled()) LOG.warn("Continuing with split operation, no active transactions on: " + hri.getRegionNameAsString());
- }
- }
-
- protected void zkCleanup() {
- if (LOG.isTraceEnabled()) LOG.trace("zkCleanup -- ENTRY");
- try {
- List<String> trafTables = ZKUtil.listChildrenNoWatch(zkw, zSplitBalPathNoSlash);
- List<String> hbaseTables = ZKUtil.listChildrenNoWatch(zkw, SplitBalanceHelper.zkTable);
- if(trafTables != null && hbaseTables != null) {
- for (String tableName : trafTables) {
- if (!hbaseTables.contains(tableName)) {
- if (LOG.isTraceEnabled()) LOG.trace("zkCleanup, removing " + zSplitBalPath + tableName);
- ZKUtil.deleteNodeRecursively(zkw, zSplitBalPath + tableName);
- }
- }
- }
- } catch (KeeperException ke) {
- if (LOG.isErrorEnabled()) LOG.error("zkCleanup error, please check your ZooKeeper: " + ke);
- }
- if (LOG.isTraceEnabled()) LOG.trace("zkCleanup -- EXIT");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/cli/Context.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Context.cpp b/core/sql/cli/Context.cpp
index ac3d9d9..9e03b7d 100644
--- a/core/sql/cli/Context.cpp
+++ b/core/sql/cli/Context.cpp
@@ -186,7 +186,8 @@ ContextCli::ContextCli(CliGlobals *cliGlobals)
arkcmpInitFailed_(&exHeap_),
trustedRoutines_(&exHeap_),
roleIDs_(NULL),
- numRoles_(0)
+ numRoles_(0),
+ unusedBMOsMemoryQuota_(0)
{
exHeap_.setJmpBuf(cliGlobals->getJmpBuf());
cliSemaphore_ = new (&exHeap_) CLISemaphore();
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/cli/Context.h
----------------------------------------------------------------------
diff --git a/core/sql/cli/Context.h b/core/sql/cli/Context.h
index ad5a0be..8a257fa 100644
--- a/core/sql/cli/Context.h
+++ b/core/sql/cli/Context.h
@@ -217,7 +217,21 @@ public:
ExSqlComp::ReturnStatus sendXnMsgToArkcmp
(char * data, Lng32 dataSize,
Lng32 xnMsgType, ComDiagsArea* &diagsArea);
-
+
+ inline NABoolean grabMemoryQuotaIfAvailable(ULng32 size)
+ {
+ if ( unusedBMOsMemoryQuota_ < size ) return FALSE;
+ unusedBMOsMemoryQuota_ -= size ;
+ return TRUE;
+ }
+
+ inline void resetMemoryQuota() { unusedBMOsMemoryQuota_ = 0 ; }
+
+ inline ULng32 unusedMemoryQuota() { return unusedBMOsMemoryQuota_; }
+
+ inline void yieldMemoryQuota(ULng32 size)
+ { unusedBMOsMemoryQuota_ += size; }
+
private:
// The heap where executor 'stuff' will be allocated from.
@@ -513,6 +527,8 @@ private:
// It points to a list of 'black box' of data allocated by user and is returned
// back whenever this context is in use.
HashQueue * trafSElist_;
+ // memory quota allocation given back by BMOs to be used by other BMOs
+ ULng32 unusedBMOsMemoryQuota_;
NABoolean deleteStats()
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/cli/Globals.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Globals.cpp b/core/sql/cli/Globals.cpp
index 070ed84..6f97513 100644
--- a/core/sql/cli/Globals.cpp
+++ b/core/sql/cli/Globals.cpp
@@ -121,6 +121,7 @@ CliGlobals::CliGlobals(NABoolean espProcess)
#ifdef SQ_PHANDLE_VERIFIER
, myVerifier_(-1)
#endif
+ , espProcess_(espProcess)
{
globalsAreInitialized_ = FALSE;
executorMemory_.setThreadSafe();
@@ -1141,6 +1142,52 @@ void CliGlobals::deleteContexts()
}
#endif // _DEBUG
+// The unused BMO memory quota can now be utilized by the other
+// BMO instances from the same or different fragment
+// In case of ESP process, the unused memory quota is maintained
+// at the defaultContext. In case of master process, the ununsed
+// memory quota is maintained in the context of the connection
+
+NABoolean CliGlobals::grabMemoryQuotaIfAvailable(ULng32 size)
+{
+ ContextCli *context;
+ if (espProcess_)
+ context = defaultContext_;
+ else
+ context = currContext();
+ return context->grabMemoryQuotaIfAvailable(size);
+}
+
+void CliGlobals::resetMemoryQuota()
+{
+ ContextCli *context;
+ if (espProcess_)
+ context = defaultContext_;
+ else
+ context = currContext();
+ return context->resetMemoryQuota();
+}
+
+ULng32 CliGlobals::unusedMemoryQuota()
+{
+ ContextCli *context;
+ if (espProcess_)
+ context = defaultContext_;
+ else
+ context = currContext();
+ return context->unusedMemoryQuota();
+}
+
+void CliGlobals::yieldMemoryQuota(ULng32 size)
+{
+ ContextCli *context;
+ if (espProcess_)
+ context = defaultContext_;
+ else
+ context = currContext();
+ return context->yieldMemoryQuota(size);
+}
+
void SQ_CleanupThread(void *arg)
{
HBaseClient_JNI::deleteInstance();
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/cli/Globals.h
----------------------------------------------------------------------
diff --git a/core/sql/cli/Globals.h b/core/sql/cli/Globals.h
index 2eeb746..2af4f1b 100644
--- a/core/sql/cli/Globals.h
+++ b/core/sql/cli/Globals.h
@@ -431,10 +431,13 @@ inline
LmLanguageManagerC * getLanguageManagerC();
LmLanguageManagerJava * getLanguageManagerJava();
-
#ifdef _DEBUG
void deleteContexts();
#endif // _DEBUG
+ NABoolean grabMemoryQuotaIfAvailable(ULng32 size);
+ void resetMemoryQuota();
+ ULng32 unusedMemoryQuota();
+ void yieldMemoryQuota(ULng32 size);
private:
enum {
@@ -622,6 +625,7 @@ private:
// for trusted UDR invocations from executor and compiler
LmLanguageManagerC *langManC_;
LmLanguageManagerJava *langManJava_;
+ NABoolean espProcess_;
};
#pragma warn(1506) // warning elimination
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/cli/Statement.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Statement.cpp b/core/sql/cli/Statement.cpp
index a6aead5..d0e2541 100644
--- a/core/sql/cli/Statement.cpp
+++ b/core/sql/cli/Statement.cpp
@@ -2962,7 +2962,13 @@ RETCODE Statement::execute(CliGlobals * cliGlobals, Descriptor * input_desc,
break;
}
}
-
+ // In case of master, the unused memory quota needs to be reset
+ // with every statement execution. Hence, when there are multiple
+ // statements active in the master, the unused memory quota management
+ // may not work as expected
+ // Currently only one active statement can be assigned to an ESP
+ // So, esp unused memory quota management should work correctly.
+ context_->resetMemoryQuota();
/* execute it */
if( root_tdb )
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/comexe/ComTdbRoot.cpp
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbRoot.cpp b/core/sql/comexe/ComTdbRoot.cpp
index 511e991..c77471e 100644
--- a/core/sql/comexe/ComTdbRoot.cpp
+++ b/core/sql/comexe/ComTdbRoot.cpp
@@ -70,7 +70,9 @@ ComTdbRoot::ComTdbRoot()
rtFlags5_(0),
compilationStatsData_(NULL),
objectUidList_(NULL),
- cursorType_(SQL_READONLY_CURSOR)
+ cursorType_(SQL_READONLY_CURSOR),
+ bmoMemLimitPerNode_(0),
+ estBmoMemPerNode_(0)
{
//setPlanVersion(ComVersion_GetCurrentPlanVersion());
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/comexe/ComTdbRoot.h
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbRoot.h b/core/sql/comexe/ComTdbRoot.h
index b1e4662..9c40a07 100644
--- a/core/sql/comexe/ComTdbRoot.h
+++ b/core/sql/comexe/ComTdbRoot.h
@@ -577,6 +577,8 @@ protected:
NABasicPtr snapshotscanTempLocation_; // 360-367
QueuePtr listOfSnapshotScanTables_; // 368-375
+ Float64 bmoMemLimitPerNode_;
+ Float64 estBmoMemPerNode_;
public:
@@ -1312,6 +1314,12 @@ public:
Int64 getCpuLimit() { return cpuLimit_; }
+ void setBmoMemoryLimitPerNode(double limit) { bmoMemLimitPerNode_ = limit; }
+ double getBmoMemoryLimitPerNode() { return bmoMemLimitPerNode_; }
+
+ void setEstBmoMemoryPerNode(double estMem) { estBmoMemPerNode_ = estMem; }
+ double getEstBmoMemoryPerNode() { return estBmoMemPerNode_; }
+
NABoolean getQueryLimitDebug() const
{return ((rtFlags4_ & QUERY_LIMIT_DEBUG) != 0);};
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/executor/Allocator.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/Allocator.cpp b/core/sql/executor/Allocator.cpp
index c9a451f..8870488 100644
--- a/core/sql/executor/Allocator.cpp
+++ b/core/sql/executor/Allocator.cpp
@@ -117,7 +117,7 @@ namespace ExOverflow
#endif
if (yieldMB)
{
- exeGlobals_->yieldMemoryQuota(yieldMB);
+ GetCliGlobals()->yieldMemoryQuota(yieldMB);
}
}
@@ -184,7 +184,7 @@ namespace ExOverflow
ByteCount quotaIncrease = (ByteCount) (totalBytes - quota_);
#endif
UInt32 quotaIncreaseMB = (quotaIncrease + ONE_MEGABYTE - 1)/ ONE_MEGABYTE;
- if (exeGlobals_->grabMemoryQuotaIfAvailable(quotaIncreaseMB))
+ if (GetCliGlobals()->grabMemoryQuotaIfAvailable(quotaIncreaseMB))
{
quota_ += (quotaIncreaseMB * ONE_MEGABYTE);
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/executor/ExStats.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExStats.h b/core/sql/executor/ExStats.h
index f2128f7..2b1d255 100644
--- a/core/sql/executor/ExStats.h
+++ b/core/sql/executor/ExStats.h
@@ -1194,6 +1194,8 @@ public:
bmoHeapAlloc_ = (Int32)(heap->getTotalSize() >> 10);
bmoHeapUsage_ = (Int32)(heap->getAllocSize() >> 10);
bmoHeapWM_ = (Int32)(heap->getHighWaterMark() >> 10);
+ if (bmoHeapAlloc_ > bmoHeapWM_)
+ bmoHeapWM_ = bmoHeapAlloc_;
}
inline void setScratchOverflowMode(Int16 overflowMode)
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/executor/cluster.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/cluster.cpp b/core/sql/executor/cluster.cpp
index 8e8f1e8..00492bb 100644
--- a/core/sql/executor/cluster.cpp
+++ b/core/sql/executor/cluster.cpp
@@ -503,7 +503,7 @@ void ClusterDB::yieldAllMemoryQuota()
{
if ( memoryQuotaMB_ == 0 || memoryQuotaMB_ <= minMemoryQuotaMB_ ) return;
- stmtGlobals_->yieldMemoryQuota( memoryQuotaMB_ - minMemoryQuotaMB_ );
+ GetCliGlobals()->yieldMemoryQuota( memoryQuotaMB_ - minMemoryQuotaMB_ );
if ( doLog_ ) { // LOG -- to show that memory was yielded
char msg[256];
@@ -511,7 +511,7 @@ void ClusterDB::yieldAllMemoryQuota()
"YIELDED ALL MEMORY ALLOWED: %u MB (%u). Unused pool %u MB",
memoryQuotaMB_-minMemoryQuotaMB_,
0, // NA_64BIT, use instance id later
- stmtGlobals_->unusedMemoryQuota() );
+ GetCliGlobals()->unusedMemoryQuota() );
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
}
@@ -535,7 +535,7 @@ void ClusterDB::YieldQuota(UInt32 memNeeded)
// if there is no memory to yield - then return
if ( memToYieldMB <= 1 ) return; // 1 MB - to avoid thrashing
- stmtGlobals_->yieldMemoryQuota( memToYieldMB ); // Now yield
+ GetCliGlobals()->yieldMemoryQuota( memToYieldMB ); // Now yield
if ( doLog_ ) { // LOG -- to show that memory was yielded
char msg[256], msg1[64];
@@ -547,7 +547,7 @@ void ClusterDB::YieldQuota(UInt32 memNeeded)
hashOperator_ == HASH_GROUP_BY ? "HGB" :
hashOperator_ == SEQUENCE_OLAP ? "OLAP" : "HJ",
memToYieldMB, id, msg1, memNeededMB,
- stmtGlobals_->unusedMemoryQuota());
+ GetCliGlobals()->unusedMemoryQuota());
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
@@ -628,7 +628,7 @@ void ClusterDB::yieldUnusedMemoryQuota(Cluster * theOFList,
// if there is no memory to yield - then return
if ( memToYieldMB <= 1 ) return; // 1 MB - to avoid thrashing
- stmtGlobals_->yieldMemoryQuota( memToYieldMB ); // Now yield
+ GetCliGlobals()->yieldMemoryQuota( memToYieldMB ); // Now yield
if ( doLog_ ) { // LOG -- to show that memory was yielded
char msg[256], msg1[64];
@@ -639,7 +639,7 @@ void ClusterDB::yieldUnusedMemoryQuota(Cluster * theOFList,
extraBuffers == 1 ? "HJ" : "HGB", memToYieldMB,
0, // NA_64BIT, use instance id later
msg1, memNeededMB,
- stmtGlobals_->unusedMemoryQuota());
+ GetCliGlobals()->unusedMemoryQuota());
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
@@ -709,7 +709,7 @@ NABoolean ClusterDB::enoughMemory(ULng32 reqSize, NABoolean checkCompilerHints)
}
// Try to increase the memory quota (from the global "pool") to meet need
- if ( stmtGlobals_->grabMemoryQuotaIfAvailable(memNeededMB) ) {
+ if ( GetCliGlobals()->grabMemoryQuotaIfAvailable(memNeededMB) ) {
memoryQuotaMB_ += memNeededMB ; // got it
@@ -723,7 +723,7 @@ NABoolean ClusterDB::enoughMemory(ULng32 reqSize, NABoolean checkCompilerHints)
"GRABBED %u MB (%u). Memory used %u, now allowed %u MB, request size %u, unused pool %u",
memNeededMB, 0, // NA_64BIT, use instance id later
memoryUsed_,
- memoryQuotaMB_, reqSize,stmtGlobals_->unusedMemoryQuota() );
+ memoryQuotaMB_, reqSize,GetCliGlobals()->unusedMemoryQuota() );
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/executor/ex_frag_rt.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_frag_rt.cpp b/core/sql/executor/ex_frag_rt.cpp
index f468fd6..5da8ecb 100644
--- a/core/sql/executor/ex_frag_rt.cpp
+++ b/core/sql/executor/ex_frag_rt.cpp
@@ -245,12 +245,8 @@ void ExRtFragTable::setInactiveState()
// multi fragment esp - begin
static NABoolean sv_esp_multi_fragment = TRUE;
static UInt8 sv_esp_num_fragments = MAX_NUM_FRAGMENTS_PER_ESP;
-static UInt16 sv_esp_multi_fragment_vm = 4000;
-static NABoolean sv_esp_fragment_quotas = TRUE;
static char *sv_envvar_esp_multi_fragment = 0;
static char *sv_envvar_esp_num_fragments = 0;
-static char *sv_envvar_esp_multi_fragment_vm = 0;
-static char *sv_envvar_esp_fragment_quotas = 0;
static
void
@@ -264,18 +260,9 @@ getAssignedEspEnvVar()
sv_envvar_esp_multi_fragment = getenv("ESP_MULTI_FRAGMENTS");
sv_envvar_esp_num_fragments = getenv("ESP_NUM_FRAGMENTS");
- sv_envvar_esp_multi_fragment_vm = getenv("ESP_MULTI_FRAGMENT_QUOTA_VM");
- sv_envvar_esp_fragment_quotas = getenv("ESP_MULTI_FRAGMENT_QUOTAS");
lv_checked = true;
Int32 lv_i;
- if (sv_envvar_esp_fragment_quotas) {
- lv_i = atoi(sv_envvar_esp_fragment_quotas);
- if (lv_i == 0)
- sv_esp_fragment_quotas = FALSE;
- else
- sv_esp_fragment_quotas = TRUE;
- }
if (sv_envvar_esp_multi_fragment) {
lv_i = atoi(sv_envvar_esp_multi_fragment);
if (lv_i == 0)
@@ -283,21 +270,13 @@ getAssignedEspEnvVar()
else
sv_esp_multi_fragment = TRUE;
}
- if (sv_esp_fragment_quotas == TRUE)
- sv_esp_num_fragments = MAX_NUM_FRAGMENTS_PER_ESP;
+ sv_esp_num_fragments = 6;
if (sv_envvar_esp_num_fragments) {
lv_i = atoi(sv_envvar_esp_num_fragments);
if (lv_i > 0 && lv_i <= MAX_NUM_FRAGMENTS_PER_ESP) {
sv_esp_num_fragments = (UInt8)lv_i;
}
}
- if (sv_envvar_esp_multi_fragment_vm) {
- lv_i = atoi(sv_envvar_esp_multi_fragment_vm);
- if (lv_i >= 1500 && lv_i <=4000) {
- sv_esp_multi_fragment_vm = (UInt16)lv_i;
- }
- }
-
return;
}
// multi fragment esp - end
@@ -342,12 +321,8 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
if (!sv_envvar_esp_multi_fragment)
sv_esp_multi_fragment = fragDir_->espMultiFragments();
- if (!sv_envvar_esp_fragment_quotas)
- sv_esp_fragment_quotas = fragDir_->espFragmentQuotas();
if (!sv_envvar_esp_num_fragments)
sv_esp_num_fragments = fragDir_->espNumFragments();
- if (!sv_envvar_esp_multi_fragment_vm)
- sv_esp_multi_fragment_vm = fragDir_->espMultiFragmentVm();
// de-coupling ESP with database uid if set
const char *esp_with_uid = getenv("ESP_WITH_USERID");
@@ -383,12 +358,7 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
AssignEspArrays assignEspArrays((NAHeap *)heap, fragEntry.numEsps_);
Lng32 espLevel = fragDir_->getEspLevel(i);
NABoolean soloFragment = fragDir_->soloFrag(i);
- UInt16 fragmentMemoryQuota = fragDir_->getFragmentMemoryQuota(i);
NABoolean containsBMOs = fragDir_->containsBMOs(i);
- if (fragmentMemoryQuota == 0 && containsBMOs)
- fragmentMemoryQuota = sv_esp_multi_fragment_vm - 400;
- if (sv_esp_fragment_quotas == 0)
- fragmentMemoryQuota = 0; // sv_esp_num_fragments will apply
entryNumber = launchesStarted = 0;
for (Lng32 e = 0; e < fragEntry.numEsps_ && state_ != ERROR; e++)
@@ -401,7 +371,7 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
assignEspArrays.instance_[e]->clusterName_ = nodeMap->getClusterName(e);
assignEspArrays.instance_[e]->cpuNum_ = cpuNum;
- assignEspArrays.instance_[e]->memoryQuota_ = fragmentMemoryQuota;
+ assignEspArrays.instance_[e]->memoryQuota_ = 0;
assignEspArrays.instance_[e]->state_ = ESP_ASSIGNED;
assignEspArrays.instance_[e]->fragmentHandle_ = NullFragInstanceHandle;
assignEspArrays.instance_[e]->numControlMessages_ = 0;
@@ -497,7 +467,7 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
}
}
// for multi fragment esp - begin
- if (sv_esp_multi_fragment || sv_esp_fragment_quotas) {
+ if (sv_esp_multi_fragment) {
alreadyAssignedEsps.clear();
}
// for multi fragment esp - end
@@ -598,7 +568,7 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
while (glob_->getIpcEnvironment()->getNumOpensInProgress() > 0)
glob_->getIpcEnvironment()->getAllConnections()->waitOnAll(IpcInfiniteTimeout);
// multi fragment esp - begin
- if (sv_esp_multi_fragment || sv_esp_fragment_quotas)
+ if (sv_esp_multi_fragment)
{
alreadyAssignedEsps.clear();
}
@@ -1557,7 +1527,7 @@ void ExRtFragTable::releaseEsps(NABoolean closeAllOpens)
// multi fragment esp - begin
if (fragInst->usedEsp_) {
if ((releasedEsps.insert(fragInst->usedEsp_) == FALSE) &&
- (sv_esp_multi_fragment || sv_esp_fragment_quotas)) {
+ (sv_esp_multi_fragment)) {
// decrement the usageCount_ of fragInst->usedEsp_
glob_->getEspManager( )->releaseEsp(fragInst->usedEsp_, glob_->verifyESP(), fragInst->usedEsp_->inUse());
}
@@ -3113,7 +3083,7 @@ ExEspDbEntry *ExEspManager::getEspFromCache(LIST(ExEspDbEntry *) &alreadyAssigne
ExEspDbEntry *e = espList->usedEntry(i);
- if ((e->inUse_) && (e->soloFragment_ || soloFragment || !(sv_esp_multi_fragment || sv_esp_fragment_quotas) || e->statement_ != statement))
+ if ((e->inUse_) && (e->soloFragment_ || soloFragment || !(sv_esp_multi_fragment) || e->statement_ != statement))
continue;
// don't reuse a broken ESP
@@ -3197,8 +3167,7 @@ ExEspDbEntry *ExEspManager::getEspFromCache(LIST(ExEspDbEntry *) &alreadyAssigne
// we have found a free esp for reuse
if ((2 * e->usageCount_ + 1 <= nowaitDepth) &&
- (e->usageCount_ < sv_esp_num_fragments) &&
- (e->totalMemoryQuota_ + 100 + memoryQuota < sv_esp_multi_fragment_vm))
+ (e->usageCount_ < sv_esp_num_fragments))
{
e->usageCount_++; // multi fragment esp
e->statement_ = statement;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/executor/ex_mj.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_mj.cpp b/core/sql/executor/ex_mj.cpp
index 55a589b..d22ebcc 100644
--- a/core/sql/executor/ex_mj.cpp
+++ b/core/sql/executor/ex_mj.cpp
@@ -206,7 +206,7 @@ ex_mj_tcb::ex_mj_tcb(const ex_mj_tdb & mj_tdb,
if (assumedMaxMB < quotaMB)
{
- stmtGlobals->yieldMemoryQuota(quotaMB - assumedMaxMB);
+ GetCliGlobals()->yieldMemoryQuota(quotaMB - assumedMaxMB);
quotaMB = assumedMaxMB;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/executor/ex_sort.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_sort.cpp b/core/sql/executor/ex_sort.cpp
index c92a38e..4ef5bc2 100644
--- a/core/sql/executor/ex_sort.cpp
+++ b/core/sql/executor/ex_sort.cpp
@@ -363,12 +363,15 @@ ExSortTcb::ExSortTcb(const ExSortTdb & sort_tdb,
sortType_.useIterQSForRunGeneration_ = 1;
break;
}
+
+ sortHeap_ = new(getHeap()) NAHeap("Sort Heap", (NAHeap *)getHeap(), 204800);
sortUtil_ = new(sortHeap_) SortUtil(sort_tdb.getExplainNodeId());
sortDiag_ = NULL;
sortCfg_ = new(sortHeap_) SortUtilConfig(sortHeap_);
+ sortCfg_ = new(sortHeap_) SortUtilConfig(sortHeap_);
sortCfg_->setSortType(sortType_);
sortCfg_->setScratchThreshold(st->sortOptions_->scratchFreeSpaceThresholdPct());
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/executor/ex_split_bottom.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_split_bottom.cpp b/core/sql/executor/ex_split_bottom.cpp
index 6dd35aa..2a7e3cc 100644
--- a/core/sql/executor/ex_split_bottom.cpp
+++ b/core/sql/executor/ex_split_bottom.cpp
@@ -736,7 +736,7 @@ ExWorkProcRetcode ex_split_bottom_tcb::work()
setWorkState(WORK_ON_REQUEST);
glob_->clearAllActivatedSendTopTcbs();
- glob_->resetMemoryQuota();
+ GetCliGlobals()->resetMemoryQuota();
glob_->incExecutionCount();
} // if (okToPush)
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/generator/GenExplain.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenExplain.cpp b/core/sql/generator/GenExplain.cpp
index 738d95e..0177dc3 100644
--- a/core/sql/generator/GenExplain.cpp
+++ b/core/sql/generator/GenExplain.cpp
@@ -320,10 +320,10 @@ RelExpr::addExplainInfo(ComTdb * tdb,
NAString fragdescr;
NADefaults &defs = ActiveSchemaDB()->getDefaults();
- double mlimit = defs.getAsDouble(EXE_MEMORY_LIMIT_PER_CPU);
+ double mlimit = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE);
double quotaPerBMO = defs.getAsDouble(EXE_MEM_LIMIT_PER_BMO_IN_MB);
- const char * memory_quota_str = "memory_quota_per_esp: %d MB " ;
+ const char * memory_quota_str = "memory_quota_per_instance: %d MB " ;
if ( generator->getEspLevel() == 0 )
memory_quota_str = "memory_quota: %d MB " ;
@@ -333,12 +333,12 @@ RelExpr::addExplainInfo(ComTdb * tdb,
if ( quotaPerBMO > 0 || mlimit == 0 )
break;
- double BMOsMemoryLimit =
- generator->getBMOsMemoryLimitPerCPU().value() / (1024 * 1024);
+ double BMOsMemory =
+ generator->getTotalBMOsMemoryPerCPU().value() / (1024 * 1024);
double nBMOsTotalMemory =
(generator->getTotalNBMOsMemoryPerCPU()).value() / (1024 * 1024);
- snprintf(buf, 120, "memory_limit_per_cpu: %.2f(total), %.2f(BMOs), %.2f(nBMOs) ",
- mlimit, BMOsMemoryLimit, nBMOsTotalMemory);
+ snprintf(buf, 120, "est_memory_per_node: %.2f(Limit), %.2f(BMOs), %.2f(nBMOs) MB ",
+ mlimit, BMOsMemory, nBMOsTotalMemory);
fragdescr += buf;
}
break;
@@ -438,13 +438,13 @@ RelExpr::addExplainInfo(ComTdb * tdb,
explainTuple->setDescription(rowsetNAR);
}
-
if ( mlimit > 0 && quotaPerBMO == 0 )
{
// Report estimate memory usage per CPU (both BMOs and nBMOs)
NABoolean reportMemoryEst = TRUE;
- switch (tdb->getNodeType()) {
+ ComTdb::ex_node_type nodeType = tdb->getNodeType();
+ switch (nodeType) {
case ComTdb::ex_HASH_GRBY:
reportMemoryEst = ((ComTdbHashGrby*)tdb)->memoryQuotaMB() > 0;
break;
@@ -454,12 +454,21 @@ RelExpr::addExplainInfo(ComTdb * tdb,
default:
break;
}
-
if ( reportMemoryEst == TRUE ) {
- double memUsage = getEstimatedRunTimeMemoryUsage(TRUE).value()/1024;
- if ( memUsage > 0 ) {
- sprintf(buf, "est_memory_per_cpu: %.3f KB ", memUsage);
- explainTuple->setDescription(buf);
+ if (nodeType == ComTdb::ex_HASH_GRBY || nodeType == ComTdb::ex_HASHJ
+ || nodeType == ComTdb::ex_SORT) {
+ double memUsage = getEstimatedRunTimeMemoryUsage(FALSE).value()/1024;
+ if ( memUsage > 0 ) {
+ sprintf(buf, "est_memory_per_instance: %.3f KB ", memUsage);
+ explainTuple->setDescription(buf);
+ }
+ }
+ else {
+ double memUsage = getEstimatedRunTimeMemoryUsage(TRUE).value()/1024;
+ if ( memUsage > 0 ) {
+ sprintf(buf, "est_memory_per_node: %.3f KB ", memUsage);
+ explainTuple->setDescription(buf);
+ }
}
}
} else {
@@ -1423,7 +1432,7 @@ RelRoot::addSpecificExplainInfo(ExplainTupleMaster *explainTuple,
ComTdbRoot *rootTdb = (ComTdbRoot *)tdb;
NADefaults &defs = ActiveSchemaDB()->getDefaults();
- Lng32 mlimit = defs.getAsLong(EXE_MEMORY_LIMIT_PER_CPU);
+ Lng32 mlimit = defs.getAsLong(BMO_MEMORY_LIMIT_PER_NODE);
if (mlimit == 0 && rootTdb->getQueryCostInfo())
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index 0505432..88a4194 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -2155,34 +2155,10 @@ RelExpr * RelRoot::preCodeGen(Generator * generator,
// Compute the total available memory quota for BMOs
NADefaults &defs = ActiveSchemaDB()->getDefaults();
- // total per CPU
- double m = defs.getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) * (1024*1024);
-
- // total memory usage for all nBMOs
- double m1 = (generator->getTotalNBMOsMemoryPerCPU()).value();
-
- // total memory limit for all BMOs
- double m2 = m-m1;
-
- double ratio =
- defs.getAsDouble(EXE_MEMORY_LIMIT_NONBMOS_PERCENT) / 100;
-
- if ( m2 < 0 ) {
- // EXE_MEMORY_LIMIT_PER_CPU is set too small, set the total
- // memory limit for BMOs to zero. When the memory quota for
- // each BMO is computed (via method RelExpr::computeMemoryQuota()),
- // the lower-bound for each BMO will kick in and each will receive
- // a quota equal to the lower-bound value.
- m2 = 0;
- } else {
-
- // nBMOs use more memory than the portion, adjust m2 to
- // that of (1-ratio)*m
- if (m1 > m*ratio )
- m2 = m*(1-ratio);
- }
+ // total per node
+ double m = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) * (1024*1024);
- generator->setBMOsMemoryLimitPerCPU(m2);
+ generator->setBMOsMemoryLimitPerCPU(m);
}
@@ -3758,7 +3734,7 @@ RelExpr * HashJoin::preCodeGen(Generator * generator,
// Count this BMO and add its needed memory to the total needed
generator->incrNumBMOs();
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
@@ -6008,7 +5984,7 @@ RelExpr * GroupByAgg::preCodeGen(Generator * generator,
// Count this BMO and add its needed memory to the total needed
generator->incrNumBMOs();
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
}
@@ -6651,7 +6627,7 @@ RelExpr * Sort::preCodeGen(Generator * generator,
if (CmpCommon::getDefault(SORT_MEMORY_QUOTA_SYSTEM) != DF_OFF) {
generator->incrNumBMOs();
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
}
}
@@ -6753,7 +6729,7 @@ RelExpr *ProbeCache::preCodeGen(Generator * generator,
generator->incrNumBMOs();
*/
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
generator->incrNBMOsMemoryPerCPU(getEstimatedRunTimeMemoryUsage(TRUE));
markAsPreCodeGenned();
@@ -7258,7 +7234,7 @@ RelExpr * Exchange::preCodeGen(Generator * generator,
} // isEspExchange() && !eliminateThisExchange
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
generator->incrNBMOsMemoryPerCPU(getEstimatedRunTimeMemoryUsage(TRUE));
return result;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/generator/GenProbeCache.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenProbeCache.cpp b/core/sql/generator/GenProbeCache.cpp
index 9228e10..63035e9 100644
--- a/core/sql/generator/GenProbeCache.cpp
+++ b/core/sql/generator/GenProbeCache.cpp
@@ -450,7 +450,7 @@ short ProbeCache::codeGen(Generator *generator)
return 0;
}
-CostScalar ProbeCache::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
+CostScalar ProbeCache::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams)
{
const Lng32 probeSize =
getGroupAttr()->getCharacteristicInputs().getRowLength();
@@ -470,18 +470,25 @@ CostScalar ProbeCache::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
}
const double outputBufferSize = resultSize * numBufferPoolEntries; // in bytes
- // totalMemory is perCPU at this point of time.
+ // totalMemory is perNode at this point of time.
double totalMemory = cacheSize + outputBufferSize;
- if ( perCPU == FALSE ) {
- const PhysicalProperty* const phyProp = getPhysicalProperty();
-
- if (phyProp != NULL)
- {
- PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
- totalMemory *= partFunc->getCountOfPartitions();
- }
+ Lng32 numOfStreams = 1;
+ const PhysicalProperty* const phyProp = getPhysicalProperty();
+ if (phyProp)
+ {
+ PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
+ numOfStreams = partFunc->getCountOfPartitions();
+ if (numOfStreams <= 0)
+ numOfStreams = 1;
+ totalMemory *= numOfStreams;
}
+ if (numStreams != NULL)
+ *numStreams = numOfStreams;
+ if ( perNode == TRUE )
+ totalMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
+ else
+ totalMemory /= numOfStreams;
double memoryLimitPerCpu =
ActiveSchemaDB()->getDefaults().getAsLong(EXE_MEMORY_FOR_PROBE_CACHE_IN_MB) * 1024 * 1024;
@@ -494,6 +501,9 @@ double ProbeCache::getEstimatedRunTimeMemoryUsage(ComTdb * tdb)
{
// tdb is ignored for ProbeCache because this operator
// does not participate in the BMO quota system.
- return getEstimatedRunTimeMemoryUsage(FALSE).value();
+ Lng32 numOfStreams = 1;
+ CostScalar totalMemory = getEstimatedRunTimeMemoryUsage(FALSE, &numOfStreams);
+ totalMemory = totalMemory * numOfStreams ;
+ return totalMemory.value();
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/generator/GenRelEnforcer.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelEnforcer.cpp b/core/sql/generator/GenRelEnforcer.cpp
index 6067711..52ff9ed 100644
--- a/core/sql/generator/GenRelEnforcer.cpp
+++ b/core/sql/generator/GenRelEnforcer.cpp
@@ -1328,7 +1328,7 @@ ExpTupleDesc::TupleDataFormat Exchange::determineInternalFormat( const ValueIdLi
considerBufferDefrag);
}
-CostScalar Exchange::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
+CostScalar Exchange::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams)
{
//////////////////////////////////////
// compute the buffer length (for both
@@ -1393,20 +1393,26 @@ CostScalar Exchange::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
// split top.
}
- if ( perCPU == FALSE ) {
- const PhysicalProperty* const phyProp = getPhysicalProperty();
- if (phyProp != NULL) {
- memoryRequired = numTopEsps * memoryRequired;
- }
+ const PhysicalProperty* const phyProp = getPhysicalProperty();
+ if (phyProp != NULL) {
+ memoryRequired = numTopEsps * memoryRequired;
}
-
+ if (numStreams != NULL)
+ *numStreams = numTopEsps;
+ if ( perNode == TRUE )
+ memoryRequired /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numTopEsps);
+ else
+ memoryRequired /= numTopEsps;
return memoryRequired;
}
double Exchange::getEstimatedRunTimeMemoryUsage(ComTdb * tdb)
{
- return (getEstimatedRunTimeMemoryUsage(FALSE)).value();
+ Lng32 numOfStreams = 1;
+ CostScalar totalMemory = getEstimatedRunTimeMemoryUsage(FALSE, &numOfStreams);
+ totalMemory = totalMemory * numOfStreams ;
+ return totalMemory.value();
}
bool Exchange::thisExchangeCanUseSM(BindWA *bindWA) const
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/generator/GenRelGrby.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelGrby.cpp b/core/sql/generator/GenRelGrby.cpp
index 69aeab4..b54777c 100644
--- a/core/sql/generator/GenRelGrby.cpp
+++ b/core/sql/generator/GenRelGrby.cpp
@@ -1474,6 +1474,7 @@ short HashGroupBy::codeGen(Generator * generator) {
hashGrbyTdb->setScratchIOVectorSize((Int16)getDefault(SCRATCH_IO_VECTOR_SIZE_HASH));
double memQuota = 0;
+ Lng32 numStreams;
if(isPartialGroupBy) {
// The Quota system does not apply to Partial GroupBy
@@ -1504,25 +1505,30 @@ short HashGroupBy::codeGen(Generator * generator) {
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerCPU = defs.getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0;
+ NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
if ( mlimitPerCPU || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
+ double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
memQuota =
computeMemoryQuota(generator->getEspLevel() == 0,
mlimitPerCPU,
generator->getBMOsMemoryLimitPerCPU().value(),
- generator->getTotalNumBMOsPerCPU(),
+ //generator->getTotalNumBMOsPerCPU(),
+ generator->getTotalNumBMOs(),
generator->getTotalBMOsMemoryPerCPU().value(),
numBMOsInFrag,
- generator->getFragmentDir()->getBMOsMemoryUsage()
+ bmoMemoryUsage,
+ numStreams
);
- Lng32 hjGyMemoryLowbound =
- defs.getAsLong(EXE_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY);
+ Lng32 hjGyMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
if ( memQuota < hjGyMemoryLowbound )
memQuota = hjGyMemoryLowbound;
+ else if (memQuota > memoryUpperbound)
+ memQuota = memoryUpperbound;
hashGrbyTdb->setMemoryQuotaMB( UInt16(memQuota) );
}
@@ -1626,7 +1632,7 @@ ExpTupleDesc::TupleDataFormat HashGroupBy::determineInternalFormat( const ValueI
}
-CostScalar HashGroupBy::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
+CostScalar HashGroupBy::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams)
{
GroupAttributes * childGroupAttr = child(0).getGroupAttr();
const CostScalar childRecordSize = childGroupAttr->getCharacteristicOutputs().getRowLength();
@@ -1642,52 +1648,29 @@ CostScalar HashGroupBy::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
CostScalar totalHashTableMemory =
childRowCount * (childRecordSize + memOverheadPerRecord);
- if ( perCPU == TRUE ) {
- const PhysicalProperty* const phyProp = getPhysicalProperty();
- if (phyProp)
- {
- PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
-
- // totalHashTableMemory is per CPU at this point of time.
- totalHashTableMemory /= partFunc->getCountOfPartitions();
- }
+ Lng32 numOfStreams = 1;
+ const PhysicalProperty* const phyProp = getPhysicalProperty();
+ if (phyProp)
+ {
+ PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
+ numOfStreams = partFunc->getCountOfPartitions();
+ if (numOfStreams <= 0)
+ numOfStreams = 1;
}
+ if (numStreams != NULL)
+ *numStreams = numOfStreams;
+ if ( perNode == TRUE )
+ totalHashTableMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
+ else
+ totalHashTableMemory /= numOfStreams;
return totalHashTableMemory;
}
double HashGroupBy::getEstimatedRunTimeMemoryUsage(ComTdb * tdb)
{
- CostScalar totalHashTableMemory = getEstimatedRunTimeMemoryUsage(FALSE);
-
- double memoryLimitPerCpu;
- ULng32 memoryQuotaInMB = ((ComTdbHashGrby *)tdb)->memoryQuotaMB();
- if (memoryQuotaInMB)
- memoryLimitPerCpu = memoryQuotaInMB * 1024 * 1024 ;
- else if ( isNotAPartialGroupBy() == FALSE)
- {
- memoryLimitPerCpu =
- ActiveSchemaDB()->getDefaults().getAsLong(EXE_MEMORY_FOR_PARTIALHGB_IN_MB) * 1024 * 1024;
- }
- else
- {
- memoryLimitPerCpu =
- ActiveSchemaDB()->getDefaults().getAsLong(EXE_MEMORY_AVAILABLE_IN_MB) * 1024 * 1024 ;
- }
-
- const PhysicalProperty* const phyProp = getPhysicalProperty();
Lng32 numOfStreams = 1;
- if (phyProp)
- {
- PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
- numOfStreams = partFunc->getCountOfPartitions();
- }
-
- CostScalar memoryPerCpu = totalHashTableMemory/numOfStreams ;
- if ( memoryPerCpu > memoryLimitPerCpu )
- {
- memoryPerCpu = memoryLimitPerCpu;
- }
- totalHashTableMemory = memoryPerCpu * numOfStreams ;
+ CostScalar totalHashTableMemory = getEstimatedRunTimeMemoryUsage(FALSE, &numOfStreams);
+ totalHashTableMemory *= numOfStreams ;
return totalHashTableMemory.value();
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/generator/GenRelJoin.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelJoin.cpp b/core/sql/generator/GenRelJoin.cpp
index b38b44c..5c3617b 100644
--- a/core/sql/generator/GenRelJoin.cpp
+++ b/core/sql/generator/GenRelJoin.cpp
@@ -1784,7 +1784,7 @@ short HashJoin::codeGen(Generator * generator) {
UInt16 numBMOsInFrag = (UInt16)generator->getFragmentDir()->getNumBMOs();
double memQuota = 0;
-
+ Lng32 numStreams;
if (mmu != 0) {
memQuota = mmu;
hashj_tdb->setMemoryQuotaMB(mmu);
@@ -1792,25 +1792,29 @@ short HashJoin::codeGen(Generator * generator) {
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerCPU = defs.getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0;
-
+ NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+
if ( mlimitPerCPU || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
-
+ double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
memQuota =
computeMemoryQuota(generator->getEspLevel() == 0,
mlimitPerCPU,
generator->getBMOsMemoryLimitPerCPU().value(),
- generator->getTotalNumBMOsPerCPU(),
+ generator->getTotalNumBMOs(),
generator->getTotalBMOsMemoryPerCPU().value(),
numBMOsInFrag,
- generator->getFragmentDir()->getBMOsMemoryUsage()
+ bmoMemoryUsage,
+ numStreams
);
- Lng32 hjMemoryLowbound = defs.getAsLong(EXE_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN);
+ Lng32 hjMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
if ( memQuota < hjMemoryLowbound )
memQuota = hjMemoryLowbound;
+ else if (memQuota > memoryUpperbound)
+ memQuota = memoryUpperbound;
hashj_tdb->setMemoryQuotaMB( UInt16(memQuota) );
}
@@ -1826,10 +1830,6 @@ short HashJoin::codeGen(Generator * generator) {
double hjMemEst = getEstimatedRunTimeMemoryUsage(hashj_tdb);
generator->addToTotalEstimatedMemory(hjMemEst);
- generator->addToTotalOverflowMemory(
- getEstimatedRunTimeOverflowSize(memQuota)
- );
-
if ( generator->getRightSideOfFlow() )
hashj_tdb->setPossibleMultipleCalls(TRUE);
@@ -2064,7 +2064,7 @@ ExpTupleDesc::TupleDataFormat HashJoin::determineInternalFormat( const ValueIdLi
}
-CostScalar HashJoin::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
+CostScalar HashJoin::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams)
{
GroupAttributes * childGroupAttr = child(1).getGroupAttr();
const CostScalar childRecordSize = childGroupAttr->getCharacteristicOutputs().getRowLength();
@@ -2087,47 +2087,25 @@ CostScalar HashJoin::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
{
partFunc = phyProp -> getPartitioningFunction() ;
numOfStreams = partFunc->getCountOfPartitions();
+ if (numOfStreams <= 0)
+ numOfStreams = 1;
if ( partFunc -> isAReplicationPartitioningFunction() == TRUE )
- {
totalHashTableMemory *= numOfStreams;
- }
}
-
- if ( perCPU == TRUE ) {
+ if (numStreams != NULL)
+ *numStreams = numOfStreams;
+ if ( perNode == TRUE )
+ totalHashTableMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
+ else
totalHashTableMemory /= numOfStreams;
- }
-
return totalHashTableMemory;
}
double HashJoin::getEstimatedRunTimeMemoryUsage(ComTdb * tdb)
{
- CostScalar totalHashTableMemory = getEstimatedRunTimeMemoryUsage(FALSE);
-
- double memoryLimitPerCpu;
- ULng32 memoryQuotaInMB = ((ComTdbHashj *)tdb)->memoryQuotaMB();
- if (memoryQuotaInMB)
- memoryLimitPerCpu = memoryQuotaInMB * 1024 * 1024 ;
- else
- {
- memoryLimitPerCpu =
- ActiveSchemaDB()->getDefaults().getAsLong(EXE_MEMORY_AVAILABLE_IN_MB) * 1024 * 1024 ;
- }
-
Lng32 numOfStreams = 1;
- const PhysicalProperty* const phyProp = getPhysicalProperty() ;
- if (phyProp)
- {
- PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
- numOfStreams = partFunc->getCountOfPartitions();
- }
-
- CostScalar memoryPerCpu = totalHashTableMemory/numOfStreams ;
- if ( memoryPerCpu > memoryLimitPerCpu )
- {
- memoryPerCpu = memoryLimitPerCpu;
- }
- totalHashTableMemory = memoryPerCpu * numOfStreams ;
+ CostScalar totalHashTableMemory = getEstimatedRunTimeMemoryUsage(FALSE, &numOfStreams);
+ totalHashTableMemory *= numOfStreams ;
return totalHashTableMemory.value();
}
@@ -3097,6 +3075,7 @@ short MergeJoin::codeGen(Generator * generator)
double BMOsMemoryLimit = 0;
UInt16 quotaMB = 0;
+ Lng32 numStreams;
if ( CmpCommon::getDefaultLong(MJ_BMO_QUOTA_PERCENT) != 0)
{
@@ -3104,28 +3083,34 @@ short MergeJoin::codeGen(Generator * generator)
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
NADefaults &defs = ActiveSchemaDB()->getDefaults();
- NABoolean mlimitPerCPU = defs.getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0;
+ NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
if ( mlimitPerCPU || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
+ double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
quotaMB = (UInt16)
computeMemoryQuota(generator->getEspLevel() == 0,
mlimitPerCPU,
generator->getBMOsMemoryLimitPerCPU().value(),
- generator->getTotalNumBMOsPerCPU(),
+ // generator->getTotalNumBMOsPerCPU(),
+ generator->getTotalNumBMOs(),
generator->getTotalBMOsMemoryPerCPU().value(),
numBMOsInFrag,
- generator->getFragmentDir()->getBMOsMemoryUsage()
+ bmoMemoryUsage,
+ numStreams
);
Lng32 mjMemoryLowbound = defs.getAsLong(EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
if ( quotaMB < mjMemoryLowbound )
quotaMB = (UInt16)mjMemoryLowbound;
+ else if (quotaMB > memoryUpperbound)
+ quotaMB = memoryUpperbound;
}
} else {
- Lng32 memoryMB = getExeMemoryAvailable(generator->getEspLevel() == 0, 0);
+ Lng32 memoryMB = getExeMemoryAvailable(generator->getEspLevel() == 0);
quotaMB = (UInt16)( (numBMOsInFrag > 1) ? (memoryMB/numBMOsInFrag) : 0 ) ;
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/generator/GenRelMisc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelMisc.cpp b/core/sql/generator/GenRelMisc.cpp
index c7ad623..98b29cc 100644
--- a/core/sql/generator/GenRelMisc.cpp
+++ b/core/sql/generator/GenRelMisc.cpp
@@ -2820,6 +2820,9 @@ short RelRoot::codeGen(Generator * generator)
if(generator->hiveAccess())
root_tdb->setHiveAccess(TRUE);
+ root_tdb->setBmoMemoryLimitPerNode(ActiveSchemaDB()->getDefaults().getAsDouble(BMO_MEMORY_LIMIT_PER_NODE));
+ root_tdb->setEstBmoMemoryPerNode(generator->getTotalBMOsMemoryPerCPU().value());
+
Int32 numSikEntries = securityKeySet_.entries();
if (numSikEntries > 0)
{
@@ -2937,7 +2940,7 @@ short RelRoot::codeGen(Generator * generator)
// now set the values of the previously allocated directory entry
- NABoolean mlimitPerCPU = CmpCommon::getDefaultLong(EXE_MEMORY_LIMIT_PER_CPU) > 0;
+ NABoolean mlimitPerCPU = CmpCommon::getDefaultLong(BMO_MEMORY_LIMIT_PER_NODE) > 0;
UInt16 BMOsMemoryUsage = 0;
if (mlimitPerCPU == TRUE)
BMOsMemoryUsage = (UInt16)compFragDir->getBMOsMemoryUsage(i);
@@ -3132,6 +3135,7 @@ short Sort::generateTdb(Generator * generator,
// The CQD EXE_MEM_LIMIT_PER_BMO_IN_MB has precedence over the mem quota sys
memoryQuotaMB = (UInt16)defs.getAsDouble(EXE_MEM_LIMIT_PER_BMO_IN_MB);
+ Lng32 numStreams;
if (memoryQuotaMB > 0) {
sort_options->memoryQuotaMB() = memoryQuotaMB;
@@ -3143,25 +3147,31 @@ short Sort::generateTdb(Generator * generator,
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerCPU = defs.getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0;
+ NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
if ( mlimitPerCPU || numBMOsInFrag > 1 ) {
+ double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
memoryQuotaMB = (short)
computeMemoryQuota(generator->getEspLevel() == 0,
mlimitPerCPU,
generator->getBMOsMemoryLimitPerCPU().value(),
- generator->getTotalNumBMOsPerCPU(),
+ //generator->getTotalNumBMOsPerCPU(),
+ generator->getTotalNumBMOs(),
generator->getTotalBMOsMemoryPerCPU().value(),
numBMOsInFrag,
- generator->getFragmentDir()->getBMOsMemoryUsage()
+ bmoMemoryUsage,
+ numStreams
);
- Lng32 sortMemoryLowbound = defs.getAsLong(EXE_MEMORY_LIMIT_LOWER_BOUND_SORT);
+ Lng32 sortMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_SORT);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
if ( memoryQuotaMB < sortMemoryLowbound )
memoryQuotaMB = (short)sortMemoryLowbound;
+ else if (memoryQuotaMB > memoryUpperbound)
+ memoryQuotaMB = memoryUpperbound;
}
}
}
@@ -3948,52 +3958,36 @@ double Sort::getEstimatedRunTimeOverflowSize(double memoryQuotaMB)
return 0;
}
-CostScalar Sort::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
+CostScalar Sort::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams)
{
GroupAttributes * childGroupAttr = child(0).getGroupAttr();
Lng32 childRecordSize =
childGroupAttr->getCharacteristicOutputs().getRowLength();
CostScalar totalMemory = getEstRowsUsed() * childRecordSize;
- if ( perCPU == TRUE ) {
- const PhysicalProperty* const phyProp = getPhysicalProperty();
- if (phyProp != NULL)
- {
- PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
- totalMemory /= partFunc->getCountOfPartitions();
- }
+ Lng32 numOfStreams = 1;
+ const PhysicalProperty* const phyProp = getPhysicalProperty();
+ if (phyProp != NULL)
+ {
+ PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
+ numOfStreams = partFunc->getCountOfPartitions();
+ if (numOfStreams <= 0)
+ numOfStreams = 1;
}
-
+ if (numStreams != NULL)
+ *numStreams = numOfStreams;
+ if ( perNode == TRUE )
+ totalMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
+ else
+ totalMemory /= numOfStreams;
return totalMemory;
}
double Sort::getEstimatedRunTimeMemoryUsage(ComTdb * tdb)
{
- CostScalar totalMemory = getEstimatedRunTimeMemoryUsage(FALSE);
-
- const Int32 numBuffs = ActiveSchemaDB()->getDefaults().getAsLong(GEN_SORT_MAX_NUM_BUFFERS);
- const Int32 bufSize = ActiveSchemaDB()->getDefaults().getAsLong(GEN_SORT_MAX_BUFFER_SIZE);
- double memoryLimitPerCpu;
- short memoryQuotaInMB = ((ComTdbSort *)tdb)->getSortOptions()->memoryQuotaMB();
- if (memoryQuotaInMB)
- memoryLimitPerCpu = memoryQuotaInMB * 1024 * 1024 ;
- else
- memoryLimitPerCpu = numBuffs * bufSize ;
-
- const PhysicalProperty* const phyProp = getPhysicalProperty();
Lng32 numOfStreams = 1;
- if (phyProp != NULL)
- {
- PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
- numOfStreams = partFunc->getCountOfPartitions();
- }
-
- CostScalar memoryPerCpu = totalMemory/numOfStreams ;
- if ( memoryPerCpu > memoryLimitPerCpu )
- {
- memoryPerCpu = memoryLimitPerCpu;
- }
- totalMemory = memoryPerCpu * numOfStreams ;
+ CostScalar totalMemory = getEstimatedRunTimeMemoryUsage(FALSE, &numOfStreams);
+ totalMemory = totalMemory * numOfStreams ;
return totalMemory.value();
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/generator/GenRelSequence.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelSequence.cpp b/core/sql/generator/GenRelSequence.cpp
index 52eea4f..4522344 100644
--- a/core/sql/generator/GenRelSequence.cpp
+++ b/core/sql/generator/GenRelSequence.cpp
@@ -772,13 +772,12 @@ RelExpr * PhysSequence::preCodeGen(Generator * generator,
///addCheckPartitionChangeExpr(generator->wHeap());
transformOlapFunctions(generator->wHeap());
-
if ( getUnboundedFollowing() ) {
// Count this Seq as a BMO and add its needed memory to the total needed
generator->incrNumBMOs();
if ((ActiveSchemaDB()->getDefaults()).
- getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0)
+ getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
}
else
@@ -1121,24 +1120,28 @@ PhysSequence::codeGen(Generator *generator)
NADefaults &defs = ActiveSchemaDB()->getDefaults();
UInt16 mmu = (UInt16)(defs.getAsDouble(EXE_MEM_LIMIT_PER_BMO_IN_MB));
UInt16 numBMOsInFrag = (UInt16)generator->getFragmentDir()->getNumBMOs();
+ Lng32 numStreams;
if (mmu != 0)
sequenceTdb->setMemoryQuotaMB(mmu);
else {
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerCPU = defs.getAsDouble(EXE_MEMORY_LIMIT_PER_CPU) > 0;
+ NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
if ( mlimitPerCPU || numBMOsInFrag > 1 ) {
+ double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
double memQuota =
computeMemoryQuota(generator->getEspLevel() == 0,
mlimitPerCPU,
generator->getBMOsMemoryLimitPerCPU().value(),
- generator->getTotalNumBMOsPerCPU(),
+ //generator->getTotalNumBMOsPerCPU(),
+ generator->getTotalNumBMOs(),
generator->getTotalBMOsMemoryPerCPU().value(),
numBMOsInFrag,
- generator->getFragmentDir()->getBMOsMemoryUsage()
+ bmoMemoryUsage,
+ numStreams
);
sequenceTdb->setMemoryQuotaMB( UInt16(memQuota) );
@@ -1286,7 +1289,7 @@ void PhysSequence::computeHistoryParams(Lng32 histRecLength,
}
-CostScalar PhysSequence::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
+CostScalar PhysSequence::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams)
{
// input param is not used as this operator does not participate in the
// quota system.
@@ -1303,23 +1306,32 @@ CostScalar PhysSequence::getEstimatedRunTimeMemoryUsage(NABoolean perCPU)
// totalMemory is per CPU at this point of time.
double totalMemory = historyBufferSizeInBytes;
- if ( perCPU == FALSE ) {
- const PhysicalProperty* const phyProp = getPhysicalProperty();
- if (phyProp != NULL)
- {
- PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
-
- // totalMemory is for all CPUs at this point of time.
- totalMemory *= partFunc->getCountOfPartitions();
- }
+ const PhysicalProperty* const phyProp = getPhysicalProperty();
+ Lng32 numOfStreams = 1;
+ if (phyProp != NULL)
+ {
+ PartitioningFunction * partFunc = phyProp -> getPartitioningFunction() ;
+ numOfStreams = partFunc->getCountOfPartitions();
+ if (numOfStreams <= 0)
+ numOfStreams = 1;
+ // totalMemory is for all CPUs at this point of time.
+ totalMemory *= numOfStreams;
}
-
+ if (numStreams != NULL)
+ *numStreams = numOfStreams;
+ if ( perNode == TRUE )
+ totalMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
+ else
+ totalMemory /= numOfStreams;
return totalMemory;
}
double PhysSequence::getEstimatedRunTimeMemoryUsage(ComTdb * tdb)
{
- return getEstimatedRunTimeMemoryUsage(FALSE).value();
+ Lng32 numOfStreams = 1;
+ CostScalar totalMemory = getEstimatedRunTimeMemoryUsage(FALSE, &numOfStreams);
+ totalMemory = totalMemory * numOfStreams ;
+ return totalMemory.value();
}
ExplainTuple*
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/optimizer/RelEnforcer.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelEnforcer.h b/core/sql/optimizer/RelEnforcer.h
index 2c4a14b..8fc705c 100644
--- a/core/sql/optimizer/RelEnforcer.h
+++ b/core/sql/optimizer/RelEnforcer.h
@@ -185,7 +185,7 @@ public:
virtual NABoolean isBigMemoryOperator(const PlanWorkSpace* pws,
const Lng32 planNumber);
- virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perCPU);
+ virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams = NULL);
virtual double getEstimatedRunTimeMemoryUsage(ComTdb * tdb);
virtual double getEstimatedRunTimeOverflowSize(double memoryQuotaMB);
@@ -580,7 +580,7 @@ public:
inline void setBMOsMemoryUsage(CostScalar x) { BMOsMemoryUsage_ = x; }
inline CostScalar getBMOsMemoryUsage() { return BMOsMemoryUsage_ ; }
- virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perCPU);
+ virtual CostScalar getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStreams = NULL);
virtual double getEstimatedRunTimeMemoryUsage(ComTdb * tdb);
void setExtractProducerFlag() { isExtractProducer_ = TRUE; }
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/optimizer/RelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExpr.cpp b/core/sql/optimizer/RelExpr.cpp
index 959ecb7..8aece47 100644
--- a/core/sql/optimizer/RelExpr.cpp
+++ b/core/sql/optimizer/RelExpr.cpp
@@ -1988,41 +1988,32 @@ NABoolean RelExpr::containsNode(OperatorTypeEnum nodeType)
}
double RelExpr::computeMemoryQuota(NABoolean inMaster,
- NABoolean perCPU,
- double BMOsMemoryLimit, // in bytes
- UInt16 totalNumBMOs, // per CPU
- double totalBMOsMemoryUsage, // per CPU, in bytes
+ NABoolean perNode,
+ double BMOsMemoryLimit, // in MB
+ UInt16 totalNumBMOs, // per query
+ double totalBMOsMemoryUsage, // for all BMOs per node in bytes
UInt16 numBMOsPerFragment, // per fragment
- double BMOsMemoryUsagePerFragment // per fragment, in bytes
+ double bmoMemoryUsage, // for the current BMO/Operator per node in bytes
+ Lng32 numStreams
)
{
- if ( perCPU == TRUE ) {
+ if ( perNode == TRUE ) {
Lng32 exeMem = Lng32(BMOsMemoryLimit/(1024*1024));
- if ( inMaster && CmpCommon::getDefault(ODBC_PROCESS) == DF_ON ) {
-
- // Limiting the total memory in the master process when in both
- // the per-CPU estimation and the ODBC mode.
-
- NADefaults &defs = ActiveSchemaDB()->getDefaults();
-
- Lng32 inCpuLimitDelta =
- defs.getAsLong(EXE_MEMORY_AVAILABLE_IN_MB)
- -
- defs.getAsLong(EXE_MEMORY_RESERVED_FOR_MXOSRVR_IN_MB);
-
- if ( inCpuLimitDelta < 0 )
- inCpuLimitDelta = 50;
-
- if (exeMem > inCpuLimitDelta)
- exeMem = inCpuLimitDelta;
+ // the quota is allocated in proportion of the given BMO operator
+ // estimated memory usage to the total estimated memory usage of all BMOs
+ // The ratio can be capped by the CQD
+ double bmoMemoryRatio = bmoMemoryUsage / totalBMOsMemoryUsage;
+ double capMemoryRatio = 1;
+ if (totalNumBMOs > 1) {
+ capMemoryRatio = ActiveSchemaDB()->getDefaults().getAsDouble(BMO_MEMORY_ESTIMATE_RATIO_CAP);
+ if (capMemoryRatio > 0 && capMemoryRatio <=1 && bmoMemoryRatio > capMemoryRatio)
+ bmoMemoryRatio = capMemoryRatio;
}
-
- // the quota is propotional to both the # of BMOs and the estimated memory
- // usage in the fragment, and evenly distrbuted among BMOs in the fragment.
- return ((exeMem/2) * (BMOsMemoryUsagePerFragment/totalBMOsMemoryUsage +
- double(numBMOsPerFragment)/totalNumBMOs)
- ) / numBMOsPerFragment;
+ double bmoMemoryQuotaPerNode = exeMem * bmoMemoryRatio;
+ double numInstancesPerNode = numStreams / MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numStreams);
+ double bmoMemoryQuotaPerInstance = bmoMemoryQuotaPerNode / numInstancesPerNode;
+ return bmoMemoryQuotaPerInstance;
} else {
// the old way to compute quota
Lng32 exeMem = getExeMemoryAvailable(inMaster);
@@ -2030,35 +2021,11 @@ double RelExpr::computeMemoryQuota(NABoolean inMaster,
}
}
-Lng32 RelExpr::getExeMemoryAvailable(NABoolean inMaster,
- Lng32 BMOsMemoryLimit) const
-{
- Lng32 exeMemAvailMB = BMOsMemoryLimit;
-
- if ((CmpCommon::getDefault(ODBC_PROCESS) == DF_ON) &&
- inMaster &&
- (exeMemAvailMB != 0)) // if the cqd is zero, then we do not do BMO quota
- {
- // Adjustment because MXOSRVR has QIO segments in competition with
- // executor.
- exeMemAvailMB -=
- ActiveSchemaDB()->getDefaults().getAsLong(
- EXE_MEMORY_RESERVED_FOR_MXOSRVR_IN_MB);
-
- if (exeMemAvailMB < 50)
- exeMemAvailMB = 50;
- }
-
- return exeMemAvailMB;
-} // RelExpr::getExeMemoryAvailable()
-
-
Lng32 RelExpr::getExeMemoryAvailable(NABoolean inMaster) const
{
Lng32 exeMemAvailMB =
ActiveSchemaDB()->getDefaults().getAsLong(EXE_MEMORY_AVAILABLE_IN_MB);
-
- return getExeMemoryAvailable(inMaster, exeMemAvailMB);
+ return exeMemAvailMB;
}
// -----------------------------------------------------------------------
[02/15] incubator-trafodion git commit: Following changes are done in
BMO memory quota
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/seabase/EXPECTED010
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED010 b/core/sql/regress/seabase/EXPECTED010
index c949f10..5ae9348 100644
--- a/core/sql/regress/seabase/EXPECTED010
+++ b/core/sql/regress/seabase/EXPECTED010
@@ -58,7 +58,7 @@
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Wed Mar 15 02:25:11 2017
+-- Definition current Wed Mar 15 04:46:08 2017
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -71,7 +71,7 @@
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:25:11 2017
+-- Definition current Wed Mar 15 04:46:09 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -90,7 +90,7 @@
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:25:11 2017
+-- Definition current Wed Mar 15 04:46:09 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -221,7 +221,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304713548391
+PLAN_ID .................. 212356313172059838
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -234,6 +234,7 @@ ROWS_OUT ................ 11
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 51
fragment_id ............ 0
parent_frag ............ (none)
@@ -263,7 +264,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968296
+ ObjectUIDs ............. 2859346994099779361
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -303,7 +304,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304713627230
+PLAN_ID .................. 212356313172169062
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -317,6 +318,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -346,7 +348,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968296
+ ObjectUIDs ............. 2859346994099779361
select_list ............ %(1), %('1')
input_variables ........ %(1), %('1')
@@ -385,7 +387,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304713727245
+PLAN_ID .................. 212356313172281112
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -398,6 +400,7 @@ ROWS_OUT ................ 10
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -427,7 +430,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968296
+ ObjectUIDs ............. 2859346994099779361
select_list ............ TRAFODION.SCH.T010T1.A, %('1')
input_variables ........ %('1')
@@ -467,7 +470,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304712746144
+PLAN_ID .................. 212356313171430661
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a = 2;
@@ -481,6 +484,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -510,7 +514,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968296
+ ObjectUIDs ............. 2859346994099779361
select_list ............ %(2), TRAFODION.SCH.T010T1.B
input_variables ........ %(2)
@@ -773,7 +777,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212356304714542757
+PLAN_ID .................. 212356313173554097
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -788,6 +792,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -817,7 +822,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -851,7 +856,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212356304714609170
+PLAN_ID .................. 212356313173636696
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -867,6 +872,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -896,7 +902,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -931,7 +937,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212356304714682650
+PLAN_ID .................. 212356313173725195
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -946,6 +952,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -975,7 +982,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -1010,7 +1017,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212356304714760334
+PLAN_ID .................. 212356313173804409
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -1024,6 +1031,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -1054,7 +1062,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
input_variables ........ %('a')
@@ -1118,7 +1126,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212356304714959599
+PLAN_ID .................. 212356313174019828
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -1134,6 +1142,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -1164,7 +1173,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
input_variables ........ %('upd'), %(4)
@@ -1191,7 +1200,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212356304715042908
+PLAN_ID .................. 212356313174104497
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -1206,6 +1215,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -1236,7 +1246,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -1270,7 +1280,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212356304715100531
+PLAN_ID .................. 212356313174167381
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -1286,6 +1296,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -1316,7 +1327,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -1351,7 +1362,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212356304715175937
+PLAN_ID .................. 212356313174242944
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -1366,6 +1377,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -1396,7 +1408,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -1431,7 +1443,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212356304715268897
+PLAN_ID .................. 212356313174311134
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -1445,6 +1457,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -1476,7 +1489,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
input_variables ........ %('a')
@@ -1540,7 +1553,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212356304715430313
+PLAN_ID .................. 212356313174437434
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -1556,6 +1569,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -1587,7 +1601,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811968703
+ ObjectUIDs ............. 2859346994099779848
input_variables ........ %('uuu'), %(4)
@@ -1764,7 +1778,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Wed Mar 15 02:25:49 2017
+-- Definition current Wed Mar 15 04:46:48 2017
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1777,7 +1791,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:25:49 2017
+-- Definition current Wed Mar 15 04:46:48 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -1796,7 +1810,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:25:49 2017
+-- Definition current Wed Mar 15 04:46:49 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -1927,7 +1941,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304751044503
+PLAN_ID .................. 212356313210623435
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -1940,6 +1954,7 @@ ROWS_OUT ................ 11
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 51
fragment_id ............ 0
parent_frag ............ (none)
@@ -1969,7 +1984,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972377
+ ObjectUIDs ............. 2859346994099783433
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -2009,7 +2024,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304751132896
+PLAN_ID .................. 212356313210718030
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -2023,6 +2038,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -2052,7 +2068,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972377
+ ObjectUIDs ............. 2859346994099783433
select_list ............ 1, '1'
@@ -2090,7 +2106,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304751234081
+PLAN_ID .................. 212356313210812624
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -2103,6 +2119,7 @@ ROWS_OUT ................ 10
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -2132,7 +2149,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972377
+ ObjectUIDs ............. 2859346994099783433
select_list ............ TRAFODION.SCH.T010T1.A, '1'
@@ -2171,7 +2188,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304751352362
+PLAN_ID .................. 212356313210906842
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1;
@@ -2185,6 +2202,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -2214,7 +2232,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972377
+ ObjectUIDs ............. 2859346994099783433
select_list ............ 1, TRAFODION.SCH.T010T1.B
@@ -2476,7 +2494,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212356304753693894
+PLAN_ID .................. 212356313213568470
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -2491,6 +2509,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -2520,7 +2539,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -2554,7 +2573,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212356304753750298
+PLAN_ID .................. 212356313213639735
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -2570,6 +2589,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -2599,7 +2619,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -2646,7 +2666,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212356304753793359
+PLAN_ID .................. 212356313213730971
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -2661,6 +2681,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -2690,7 +2711,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -2728,7 +2749,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212356304753832303
+PLAN_ID .................. 212356313213778809
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -2742,6 +2763,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -2772,7 +2794,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -2839,7 +2861,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212356304753912740
+PLAN_ID .................. 212356313213876892
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -2855,6 +2877,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -2885,7 +2908,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -2915,7 +2938,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212356304753990824
+PLAN_ID .................. 212356313213962634
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -2930,6 +2953,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -2960,7 +2984,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -2995,7 +3019,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212356304754029491
+PLAN_ID .................. 212356313214005301
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -3011,6 +3035,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -3041,7 +3066,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -3077,7 +3102,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212356304754067803
+PLAN_ID .................. 212356313214044784
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -3092,6 +3117,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -3122,7 +3148,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -3158,7 +3184,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212356304754107558
+PLAN_ID .................. 212356313214095016
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -3172,6 +3198,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -3203,7 +3230,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -3267,7 +3294,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212356304754184445
+PLAN_ID .................. 212356313214165665
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -3283,6 +3310,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -3314,7 +3342,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811972619
+ ObjectUIDs ............. 2859346994099783881
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -3491,7 +3519,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Wed Mar 15 02:26:18 2017
+-- Definition current Wed Mar 15 04:47:26 2017
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -3504,7 +3532,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:26:18 2017
+-- Definition current Wed Mar 15 04:47:27 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -3523,7 +3551,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:26:18 2017
+-- Definition current Wed Mar 15 04:47:27 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -3654,7 +3682,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304779721578
+PLAN_ID .................. 212356313249041698
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -3667,6 +3695,7 @@ ROWS_OUT ................ 11
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 51
fragment_id ............ 0
parent_frag ............ (none)
@@ -3696,7 +3725,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975304
+ ObjectUIDs ............. 2859346994099787397
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -3736,7 +3765,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304779821552
+PLAN_ID .................. 212356313249143521
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -3750,6 +3779,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -3779,7 +3809,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975304
+ ObjectUIDs ............. 2859346994099787397
select_list ............ %(1), %('1')
input_variables ........ %(1), %('1')
@@ -3818,7 +3848,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304779906972
+PLAN_ID .................. 212356313249229314
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -3831,6 +3861,7 @@ ROWS_OUT ................ 10
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -3860,7 +3891,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975304
+ ObjectUIDs ............. 2859346994099787397
select_list ............ TRAFODION.SCH.T010T1.A, %('1')
input_variables ........ %('1')
@@ -3900,7 +3931,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304778960764
+PLAN_ID .................. 212356313248419784
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a = 2;
@@ -3914,6 +3945,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -3943,7 +3975,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975304
+ ObjectUIDs ............. 2859346994099787397
select_list ............ %(2), TRAFODION.SCH.T010T1.B
input_variables ........ %(2)
@@ -4206,7 +4238,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212356304782258948
+PLAN_ID .................. 212356313251935046
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4221,6 +4253,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -4250,7 +4283,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -4285,7 +4318,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212356304782305790
+PLAN_ID .................. 212356313252009482
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4301,6 +4334,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -4330,7 +4364,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -4366,7 +4400,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212356304782347906
+PLAN_ID .................. 212356313252102006
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4381,6 +4415,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -4410,7 +4445,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -4446,7 +4481,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212356304782399979
+PLAN_ID .................. 212356313252149550
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -4460,6 +4495,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -4490,7 +4526,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
input_variables ........ %('a')
@@ -4554,7 +4590,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212356304782487785
+PLAN_ID .................. 212356313252244269
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -4570,6 +4606,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -4600,7 +4637,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
input_variables ........ %('upd'), %(4)
@@ -4627,7 +4664,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212356304782567336
+PLAN_ID .................. 212356313252335133
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4642,6 +4679,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -4672,7 +4710,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -4707,7 +4745,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212356304782607298
+PLAN_ID .................. 212356313252386717
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4723,6 +4761,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -4753,7 +4792,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -4789,7 +4828,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212356304782645724
+PLAN_ID .................. 212356313252435300
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4804,6 +4843,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -4834,7 +4874,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -4870,7 +4910,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212356304782694053
+PLAN_ID .................. 212356313252482689
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -4884,6 +4924,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -4915,7 +4956,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
input_variables ........ %('a')
@@ -4979,7 +5020,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212356304782772302
+PLAN_ID .................. 212356313252574207
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -4995,6 +5036,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -5026,7 +5068,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811975515
+ ObjectUIDs ............. 2859346994099787821
input_variables ........ %('uuu'), %(4)
@@ -5203,7 +5245,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Wed Mar 15 02:26:50 2017
+-- Definition current Wed Mar 15 04:48:10 2017
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -5216,7 +5258,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:26:50 2017
+-- Definition current Wed Mar 15 04:48:10 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -5235,7 +5277,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:26:50 2017
+-- Definition current Wed Mar 15 04:48:10 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -5366,7 +5408,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304812067827
+PLAN_ID .................. 212356313292283282
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -5379,6 +5421,7 @@ ROWS_OUT ................ 11
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 51
fragment_id ............ 0
parent_frag ............ (none)
@@ -5408,7 +5451,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978441
+ ObjectUIDs ............. 2859346994099791562
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -5448,7 +5491,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304812165826
+PLAN_ID .................. 212356313292379547
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -5462,6 +5505,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -5491,7 +5535,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978441
+ ObjectUIDs ............. 2859346994099791562
select_list ............ 1, '1'
@@ -5529,7 +5573,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304812270202
+PLAN_ID .................. 212356313292467446
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -5542,6 +5586,7 @@ ROWS_OUT ................ 10
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -5571,7 +5616,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978441
+ ObjectUIDs ............. 2859346994099791562
select_list ............ TRAFODION.SCH.T010T1.A, '1'
@@ -5610,7 +5655,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304812367499
+PLAN_ID .................. 212356313292547915
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1;
@@ -5624,6 +5669,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -5653,7 +5699,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978441
+ ObjectUIDs ............. 2859346994099791562
select_list ............ 1, TRAFODION.SCH.T010T1.B
@@ -5915,7 +5961,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212356304814574894
+PLAN_ID .................. 212356313295221521
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -5930,6 +5976,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -5959,7 +6006,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -5992,7 +6039,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212356304814637647
+PLAN_ID .................. 212356313295298206
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6008,6 +6055,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -6037,7 +6085,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -6071,7 +6119,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212356304814713897
+PLAN_ID .................. 212356313295404025
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6086,6 +6134,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -6115,7 +6164,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -6149,7 +6198,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212356304814788364
+PLAN_ID .................. 212356313295473112
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -6163,6 +6212,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -6193,7 +6243,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -6256,7 +6306,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212356304814931991
+PLAN_ID .................. 212356313295586092
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -6272,6 +6322,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -6302,7 +6353,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -6332,7 +6383,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212356304814999113
+PLAN_ID .................. 212356313295657245
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6347,6 +6398,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -6377,7 +6429,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -6410,7 +6462,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212356304815058061
+PLAN_ID .................. 212356313295714027
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6426,6 +6478,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -6456,7 +6509,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -6490,7 +6543,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212356304815129977
+PLAN_ID .................. 212356313295786320
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6505,6 +6558,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -6535,7 +6589,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -6569,7 +6623,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212356304815206675
+PLAN_ID .................. 212356313295858682
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -6583,6 +6637,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -6614,7 +6669,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -6677,7 +6732,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212356304815341474
+PLAN_ID .................. 212356313295984508
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -6693,6 +6748,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -6724,7 +6780,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811978693
+ ObjectUIDs ............. 2859346994099792020
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -6924,7 +6980,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Wed Mar 15 02:27:20 2017
+-- Definition current Wed Mar 15 04:48:54 2017
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -6937,7 +6993,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:27:20 2017
+-- Definition current Wed Mar 15 04:48:54 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -6956,7 +7012,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:27:20 2017
+-- Definition current Wed Mar 15 04:48:55 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -7087,7 +7143,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304841870306
+PLAN_ID .................. 212356313336700026
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -7100,6 +7156,7 @@ ROWS_OUT ................ 11
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 51
fragment_id ............ 0
parent_frag ............ (none)
@@ -7129,7 +7186,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981438
+ ObjectUIDs ............. 2859346994099796017
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -7169,7 +7226,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304841968327
+PLAN_ID .................. 212356313336780228
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -7183,6 +7240,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -7212,7 +7270,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981438
+ ObjectUIDs ............. 2859346994099796017
select_list ............ %(1), %('1')
input_variables ........ %(1), %('1')
@@ -7251,7 +7309,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304842057826
+PLAN_ID .................. 212356313336859521
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -7264,6 +7322,7 @@ ROWS_OUT ................ 10
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -7293,7 +7352,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981438
+ ObjectUIDs ............. 2859346994099796017
select_list ............ TRAFODION.SCH.T010T1.A, %('1')
input_variables ........ %('1')
@@ -7333,7 +7392,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304841099325
+PLAN_ID .................. 212356313336139679
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a = 2;
@@ -7347,6 +7406,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -7376,7 +7436,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981438
+ ObjectUIDs ............. 2859346994099796017
select_list ............ %(2), TRAFODION.SCH.T010T1.B
input_variables ........ %(2)
@@ -7639,7 +7699,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212356304844349013
+PLAN_ID .................. 212356313339575626
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -7654,6 +7714,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -7683,7 +7744,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -7717,7 +7778,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212356304844409731
+PLAN_ID .................. 212356313339654963
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -7733,6 +7794,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -7762,7 +7824,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -7797,7 +7859,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212356304844484629
+PLAN_ID .................. 212356313339740700
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -7812,6 +7874,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -7841,7 +7904,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -7876,7 +7939,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212356304844560891
+PLAN_ID .................. 212356313339808753
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -7890,6 +7953,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -7920,7 +7984,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
input_variables ........ %('a')
@@ -7984,7 +8048,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212356304844715624
+PLAN_ID .................. 212356313339977235
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -8000,6 +8064,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -8030,7 +8095,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
input_variables ........ %('upd'), %(4)
@@ -8057,7 +8122,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212356304844790614
+PLAN_ID .................. 212356313340053968
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -8072,6 +8137,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -8102,7 +8168,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -8136,7 +8202,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212356304844844169
+PLAN_ID .................. 212356313340111617
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -8152,6 +8218,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -8182,7 +8249,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -8217,7 +8284,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212356304844914885
+PLAN_ID .................. 212356313340182585
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -8232,6 +8299,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -8262,7 +8330,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -8297,7 +8365,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212356304844979384
+PLAN_ID .................. 212356313340247660
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -8311,6 +8379,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -8342,7 +8411,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
input_variables ........ %('a')
@@ -8406,7 +8475,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212356304845119317
+PLAN_ID .................. 212356313340380802
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -8422,6 +8491,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -8453,7 +8523,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811981668
+ ObjectUIDs ............. 2859346994099796462
input_variables ........ %('uuu'), %(4)
@@ -8630,7 +8700,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Wed Mar 15 02:27:48 2017
+-- Definition current Wed Mar 15 04:49:34 2017
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -8643,7 +8713,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:27:48 2017
+-- Definition current Wed Mar 15 04:49:34 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -8662,7 +8732,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Wed Mar 15 02:27:49 2017
+-- Definition current Wed Mar 15 04:49:34 2017
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -8793,7 +8863,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304870397294
+PLAN_ID .................. 212356313376332553
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -8806,6 +8876,7 @@ ROWS_OUT ................ 11
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 51
fragment_id ............ 0
parent_frag ............ (none)
@@ -8835,7 +8906,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984293
+ ObjectUIDs ............. 2859346994099800064
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -8875,7 +8946,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304870488453
+PLAN_ID .................. 212356313376418627
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -8889,6 +8960,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -8918,7 +8990,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984293
+ ObjectUIDs ............. 2859346994099800064
select_list ............ 1, '1'
@@ -8956,7 +9028,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304870577345
+PLAN_ID .................. 212356313376501269
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -8969,6 +9041,7 @@ ROWS_OUT ................ 10
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -8998,7 +9071,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984293
+ ObjectUIDs ............. 2859346994099800064
select_list ............ TRAFODION.SCH.T010T1.A, '1'
@@ -9037,7 +9110,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212356304870656226
+PLAN_ID .................. 212356313376599683
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1;
@@ -9051,6 +9124,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@ -9080,7 +9154,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984293
+ ObjectUIDs ............. 2859346994099800064
select_list ............ 1, TRAFODION.SCH.T010T1.B
@@ -9342,7 +9416,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212356304872859573
+PLAN_ID .................. 212356313379264431
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9357,6 +9431,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -9386,7 +9461,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984530
+ ObjectUIDs ............. 2859346994099800520
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -9419,7 +9494,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212356304872923669
+PLAN_ID .................. 212356313379338870
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9435,6 +9510,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -9464,7 +9540,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984530
+ ObjectUIDs ............. 2859346994099800520
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -9498,7 +9574,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212356304872999893
+PLAN_ID .................. 212356313379425705
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9513,6 +9589,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -9542,7 +9619,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984530
+ ObjectUIDs ............. 2859346994099800520
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -9576,7 +9653,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212356304873072049
+PLAN_ID .................. 212356313379495410
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -9590,6 +9667,7 @@ ROWS_OUT ................. 4
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0.01
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 4
fragment_id ............ 0
parent_frag ............ (none)
@@ -9620,7 +9698,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984530
+ ObjectUIDs ............. 2859346994099800520
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -9683,7 +9761,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212356304873229690
+PLAN_ID .................. 212356313379641655
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -9699,6 +9777,7 @@ EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
olt_optimization ....... used
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 2
fragment_id ............ 0
parent_frag ............ (none)
@@ -9729,7 +9808,7 @@ DESCRIPTION
TRAF_ALIGNED_ROW_FORMAT ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 4453058303811984530
+ ObjectUIDs ............. 2859346994099800520
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -9759,7 +9838,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212356304873302029
+PLAN_ID .................. 212356313379752431
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9774,6 +9853,7 @@ ROWS_OUT ................. 2
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -9804,7 +9884,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811984530
+ ObjectUIDs ............. 2859346994099800520
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -9837,7 +9917,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212356304873366824
+PLAN_ID .................. 212356313379815724
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9853,6 +9933,7 @@ ROWS_OUT ................. 5
EST_OPER_COST ............ 0
EST_TOTAL_COST ........... 0
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est .......... 99
fragment_id ............ 0
parent_frag ............ (none)
@@ -9883,7 +9964,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 4453058303811984530
+ ObjectUIDs ............. 2859346994099800520
select_l
<TRUNCATED>
[10/15] incubator-trafodion git commit: Provision to tune the BMO
memory quota.
Posted by se...@apache.org.
Provision to tune the BMO memory quota.
Currently, BMO quota is allocated based on memory estimate of the BMO operator
and the BMO_MEMORY_LIMIT_PER_NODE. Introducing a new CQD BMO_MEMORY_EQUAL_QUOTA_SHARE_RATIO
to determine how much of BMO_MEMORY_LIMITE_PER_NODE is divided equally between
BMO operators and the rest would depend upon the memory estimate. This ratio is set
to 0.5 by default. Changing it to 0 will get the current behavior. This change is needed
to get better BMO quota allocation when the memory estimate goes awry for certain types of query.
(cherry picked from commit f3dd246b50905f1e83e852f1fb2e556dc4189761)
Conflicts:
core/sql/optimizer/RelExpr.cpp
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/7d2c4a85
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/7d2c4a85
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/7d2c4a85
Branch: refs/heads/master
Commit: 7d2c4a85b1ab09702e6bf52e456050aab200e5dd
Parents: f538c2f
Author: selvaganesang <se...@esgyn.com>
Authored: Fri Sep 8 05:42:20 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Fri Sep 8 05:42:20 2017 +0000
----------------------------------------------------------------------
core/sql/optimizer/RelExpr.cpp | 25 ++++++++++++++++++++-----
core/sql/sqlcomp/DefaultConstants.h | 4 ++++
core/sql/sqlcomp/nadefaults.cpp | 1 +
3 files changed, 25 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7d2c4a85/core/sql/optimizer/RelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExpr.cpp b/core/sql/optimizer/RelExpr.cpp
index 81c48b0..fa785a3 100644
--- a/core/sql/optimizer/RelExpr.cpp
+++ b/core/sql/optimizer/RelExpr.cpp
@@ -1999,20 +1999,35 @@ double RelExpr::computeMemoryQuota(NABoolean inMaster,
)
{
if ( perNode == TRUE ) {
- Lng32 exeMem = Lng32(BMOsMemoryLimit/(1024*1024));
+ Lng32 exeMem = Lng32(BMOsMemoryLimit/(1024*1024));
- // the quota is allocated in proportion of the given BMO operator
+ // the quota is allocated in 2 parts
+ // The constant part divided equally across all bmo operators
+ // The variable part allocated in proportion of the given BMO operator
// estimated memory usage to the total estimated memory usage of all BMOs
+
// The ratio can be capped by the CQD
+ double equalQuotaShareRatio = 0;
+ equalQuotaShareRatio = ActiveSchemaDB()->getDefaults().getAsDouble(BMO_MEMORY_EQUAL_QUOTA_SHARE_RATIO);
+/*
+ char *equalQuotaShareRatioStr = getenv("BMO_MEMORY_EQUAL_QUOTA_SHARE_RATIO");
+ if (equalQuotaShareRatioStr != NULL)
+ equalQuotaShareRatio = atof(equalQuotaShareRatioStr);
+*/
+ double constMemQuota = 0;
+ double variableMemLimit = exeMem;
+ if (equalQuotaShareRatio > 0 && totalNumBMOs > 1) {
+ constMemQuota = (exeMem * equalQuotaShareRatio )/ totalNumBMOs;
+ variableMemLimit = (1-equalQuotaShareRatio) * exeMem;
+ }
double bmoMemoryRatio = bmoMemoryUsage / totalBMOsMemoryUsage;
double capMemoryRatio = 1;
if (totalNumBMOs > 1) {
capMemoryRatio = ActiveSchemaDB()->getDefaults().getAsDouble(BMO_MEMORY_ESTIMATE_RATIO_CAP);
if (capMemoryRatio > 0 && capMemoryRatio <=1 && bmoMemoryRatio > capMemoryRatio)
- bmoMemoryRatio = capMemoryRatio;
+ bmoMemoryRatio = capMemoryRatio;
}
- bmoQuotaRatio = bmoMemoryRatio;
- double bmoMemoryQuotaPerNode = exeMem * bmoMemoryRatio;
+ double bmoMemoryQuotaPerNode = constMemQuota + (variableMemLimit * bmoMemoryRatio);
double numInstancesPerNode = numStreams / MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numStreams);
double bmoMemoryQuotaPerInstance = bmoMemoryQuotaPerNode / numInstancesPerNode;
return bmoMemoryQuotaPerInstance;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7d2c4a85/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h
index 99b4af3..49e048a 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -3883,6 +3883,10 @@ enum DefaultConstants
// Threshold when TOPN sort becomes a regular sort
GEN_SORT_TOPN_THRESHOLD,
+ // Ratio of BMO_MEMORY_LIMIT_PER_NODE that will be divided
+ // equally across all BMO operators
+ BMO_MEMORY_EQUAL_QUOTA_SHARE_RATIO,
+
// This enum constant must be the LAST one in the list; it's a count,
// not an Attribute (it's not IN DefaultDefaults; it's the SIZE of it)!
__NUM_DEFAULT_ATTRIBUTES
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7d2c4a85/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index 2de3a2a..e921931 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -461,6 +461,7 @@ SDDkwd__(ALLOW_DP2_ROW_SAMPLING, "SYSTEM"),
DDflte_(BMO_CITIZENSHIP_FACTOR, "1."),
+ DDflte_(BMO_MEMORY_EQUAL_QUOTA_SHARE_RATIO, "0.5"),
DDflte_(BMO_MEMORY_ESTIMATE_RATIO_CAP, "0.7"),
DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY , "25"),
DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN, "25"),
[09/15] incubator-trafodion git commit: Ensured that CQD
NUM_ESP_FRAGMENTS can take value upto 8. Removed the environment variable
concept to set the number of esp fragments. Removed the CQDs
ESP_NUM_FRAGMENTS_WITH_QUOTAS and ESP_MULTI_FRAGMENT_QUOTAS. U
Posted by se...@apache.org.
Ensured that CQD NUM_ESP_FRAGMENTS can take value upto 8.
Removed the environment variable concept to set the number of esp
fragments. Removed the CQDs ESP_NUM_FRAGMENTS_WITH_QUOTAS and
ESP_MULTI_FRAGMENT_QUOTAS. Use the corresponding CQD
ESP_NUM_FRAGMENTS and ESP_MUTLI_FRAGMENT instead
(cherry picked from commit 72534e89633f3d4b8a61ab26d471aaa8b7f3e12a)
Conflicts:
core/sql/executor/ex_frag_rt.cpp
core/sql/executor/ex_frag_rt.h
core/sql/generator/GenRelMisc.cpp
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/f538c2f9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/f538c2f9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/f538c2f9
Branch: refs/heads/master
Commit: f538c2f9d45872a3d5a081032a849563b9d053be
Parents: 175402b
Author: selvaganesang <se...@esgyn.com>
Authored: Fri Sep 8 05:20:05 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Fri Sep 8 05:20:05 2017 +0000
----------------------------------------------------------------------
core/sql/cli/Globals.h | 2 +-
core/sql/cli/Statement.cpp | 8 +--
core/sql/cli/sqlcli.h | 5 +-
core/sql/comexe/ComTdb.h | 1 +
core/sql/comexe/ComTdbHashGrby.h | 20 ++++--
core/sql/comexe/ComTdbHashj.cpp | 6 +-
core/sql/comexe/ComTdbHashj.h | 18 ++++--
core/sql/comexe/ComTdbSort.cpp | 9 +--
core/sql/comexe/ComTdbSort.h | 27 ++++++--
core/sql/comexe/ComTdbStats.cpp | 10 ++-
core/sql/comexe/ComTdbStats.h | 7 ++-
core/sql/common/ComSmallDefs.h | 7 +++
core/sql/common/NAMemory.cpp | 1 +
core/sql/common/NAMemory.h | 3 +-
core/sql/executor/Allocator.cpp | 4 +-
core/sql/executor/ExExeUtilGetStats.cpp | 2 +-
core/sql/executor/ExStats.cpp | 20 ++++--
core/sql/executor/ExStats.h | 1 +
core/sql/executor/cluster.cpp | 25 ++++----
core/sql/executor/cluster.h | 4 +-
core/sql/executor/ex_exe_stmt_globals.h | 28 +++++++--
core/sql/executor/ex_frag_rt.cpp | 80 +++++++-----------------
core/sql/executor/ex_frag_rt.h | 8 ++-
core/sql/executor/ex_hashj.cpp | 4 +-
core/sql/executor/ex_mj.cpp | 2 +-
core/sql/executor/ex_sort.cpp | 5 +-
core/sql/executor/ex_split_bottom.cpp | 2 +-
core/sql/generator/GenExplain.cpp | 16 ++---
core/sql/generator/GenPreCode.cpp | 13 +++-
core/sql/generator/GenProbeCache.cpp | 25 +++-----
core/sql/generator/GenRelEnforcer.cpp | 11 +---
core/sql/generator/GenRelGrby.cpp | 58 ++++++++----------
core/sql/generator/GenRelJoin.cpp | 92 ++++++++++++++--------------
core/sql/generator/GenRelMisc.cpp | 81 ++++++++++++------------
core/sql/generator/GenRelSequence.cpp | 43 +++++++------
core/sql/generator/Generator.cpp | 27 +++-----
core/sql/generator/Generator.h | 41 +++++++------
core/sql/optimizer/RelEnforcer.h | 5 ++
core/sql/optimizer/RelExpr.cpp | 5 +-
core/sql/optimizer/RelExpr.h | 3 +-
core/sql/sort/SortUtil.cpp | 16 ++---
core/sql/sort/SortUtilCfg.cpp | 2 +-
core/sql/sort/SortUtilCfg.h | 6 +-
core/sql/sqlcomp/DefaultConstants.h | 7 +--
core/sql/sqlcomp/DefaultValidator.h | 8 +++
core/sql/sqlcomp/nadefaults.cpp | 11 ++--
46 files changed, 412 insertions(+), 367 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/cli/Globals.h
----------------------------------------------------------------------
diff --git a/core/sql/cli/Globals.h b/core/sql/cli/Globals.h
index 864f891..fb98334 100644
--- a/core/sql/cli/Globals.h
+++ b/core/sql/cli/Globals.h
@@ -424,7 +424,7 @@ inline
void resetMemoryQuota();
ULng32 unusedMemoryQuota();
void yieldMemoryQuota(ULng32 size);
-
+ NABoolean isEspProcess() { return espProcess_; }
private:
enum {
DEFAULT_CONTEXT_HANDLE = 2000
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/cli/Statement.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Statement.cpp b/core/sql/cli/Statement.cpp
index 6084153..3c5eeda 100644
--- a/core/sql/cli/Statement.cpp
+++ b/core/sql/cli/Statement.cpp
@@ -2906,12 +2906,8 @@ RETCODE Statement::execute(CliGlobals * cliGlobals, Descriptor * input_desc,
}
}
// In case of master, the unused memory quota needs to be reset
- // with every statement execution. Hence, when there are multiple
- // statements active in the master, the unused memory quota management
- // may not work as expected
- // Currently only one active statement can be assigned to an ESP
- // So, esp unused memory quota management should work correctly.
- context_->resetMemoryQuota();
+ // with every statement execution.
+ statementGlobals_->resetMemoryQuota();
/* execute it */
if( root_tdb )
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/cli/sqlcli.h
----------------------------------------------------------------------
diff --git a/core/sql/cli/sqlcli.h b/core/sql/cli/sqlcli.h
index a27d942..3a28e54 100644
--- a/core/sql/cli/sqlcli.h
+++ b/core/sql/cli/sqlcli.h
@@ -662,7 +662,9 @@ typedef struct {
double overflowSize;
short queryType;
short subqueryType;
- char filler[28];
+ float bmoMemLimitPerNode;
+ float estBmoMemPerNode;
+ char filler[20];
} SQL_QUERY_COMPILER_STATS_INFO;
/* struct to hold statistics to be returned. */
@@ -1174,6 +1176,7 @@ enum SQLSTATS_ITEM_ID {
SQLSTATS_SCRATCH_READ_COUNT = 162,
SQLSTATS_SCRATCH_WRITE_COUNT = 163,
SQLSTATS_SCRATCH_IO_MAX_TIME = 164,
+ SQLSTATS_BMO_EST_MEMORY = 165,
SQLSTATS_BMO_PHASE = 166,
SQLSTATS_INTERIM_ROW_COUNT = 167,
/* SQLSTATS_ITEM_ID for UDR_BASE_STATS */
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/comexe/ComTdb.h
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdb.h b/core/sql/comexe/ComTdb.h
index 4a7b754..fdae66a 100644
--- a/core/sql/comexe/ComTdb.h
+++ b/core/sql/comexe/ComTdb.h
@@ -634,6 +634,7 @@ public:
ex_cri_desc *getCriDescUp() { return criDescUp_; };
void setCriDescUp(ex_cri_desc *cri) { criDescUp_ = cri; };
+ virtual Float32 getEstimatedMemoryUsage() { return 0; }
enum Type
{
TABLE_INFO,
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/comexe/ComTdbHashGrby.h
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbHashGrby.h b/core/sql/comexe/ComTdbHashGrby.h
index f31f70e..4e0a9ea 100644
--- a/core/sql/comexe/ComTdbHashGrby.h
+++ b/core/sql/comexe/ComTdbHashGrby.h
@@ -88,11 +88,13 @@ protected:
UInt32 numInBatch_; // 176-179
UInt16 forceOverflowEvery_; // 180-181
UInt16 hgbGrowthPercent_; // 182-183
- Float32 hgbMemEstInMbPerCpu_; // 184-187
+ Float32 hgbMemEstInKBPerNode_; // 184-187
Int16 scratchIOVectorSize_; // 188-189
UInt16 bmoMinMemBeforePressureCheck_; // 190-191
UInt16 bmoMaxMemThresholdMB_; // 192-193
- char fillersComTdbHashGrby_[6]; // 194-199
+ char fillersComTdbHashGrby_[2]; // 194-195
+ Float32 estMemoryUsage_; // 196-199
+ Float32 bmoQuotaRatio_;
public:
@@ -311,9 +313,9 @@ public:
void setPartialGrbyMemoryMB(UInt16 v) { partialGrbyMemoryMB_ = v; }
- void setHgbMemEstInMbPerCpu(Float32 s) {hgbMemEstInMbPerCpu_=s;}
+ void setHgbMemEstInKBPerNode(Float32 s) {hgbMemEstInKBPerNode_=s;}
- Float32 getHgbMemEstInMbPerCpu() {return hgbMemEstInMbPerCpu_;}
+ Float32 getHgbMemEstInKBPerNode() {return hgbMemEstInKBPerNode_;}
Float32 hgbGrowthPercent() {return Float32(hgbGrowthPercent_/100.0);}
@@ -333,6 +335,16 @@ public:
UInt16 getBMOMaxMemThresholdMB()
{ return bmoMaxMemThresholdMB_; }
+ void setEstimatedMemoryUsage(Float32 estMemory)
+ { estMemoryUsage_ = estMemory; }
+ virtual Float32 getEstimatedMemoryUsage(void)
+ { return estMemoryUsage_;}
+
+ void setBmoQuotaRatio(Float32 bmoQuotaRatio)
+ { bmoQuotaRatio_ = bmoQuotaRatio; }
+ virtual Float32 getBmoQuotaRatio(void)
+ { return bmoQuotaRatio_;}
+
NABoolean isNonBMOPartialGroupBy() { return (isPartialGroup_ == TRUE); }
};
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/comexe/ComTdbHashj.cpp
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbHashj.cpp b/core/sql/comexe/ComTdbHashj.cpp
index 56f5cab..2c8e2b8 100644
--- a/core/sql/comexe/ComTdbHashj.cpp
+++ b/core/sql/comexe/ComTdbHashj.cpp
@@ -199,7 +199,7 @@ ComTdbHashj::ComTdbHashj(ComTdb * leftChildTdb,
checkInnerNullExpr_(checkInnerNullExpr),
checkOuterNullExpr_(checkOuterNullExpr),
afterJoinPred5_(afterJoinPred5),
- hjMemEstInMbPerCpu_(0),
+ hjMemEstInKBPerNode_(0),
bmoCitizenshipFactor_(0),
pMemoryContingencyMB_(0),
bmoMinMemBeforePressureCheck_(0),
@@ -379,8 +379,8 @@ void ComTdbHashj::displayContents(Space * space,ULng32 flag)
memUsagePercent_,pressureThreshold_);
space->allocateAndCopyToAlignedSpace(buf, str_len(buf), sizeof(short));
- str_sprintf(buf,"hjMemEstInMbPerCpu = %f, estimateErrorPenalty = %d ",
- hjMemEstInMbPerCpu_, hjGrowthPercent_);
+ str_sprintf(buf,"hjMemEstInKbPerNode = %f, estimateErrorPenalty = %d ",
+ hjMemEstInKBPerNode_, hjGrowthPercent_);
space->allocateAndCopyToAlignedSpace(buf, str_len(buf), sizeof(short));
str_sprintf(buf,"bmoCitizenshipFactor = %f, PhyMemoryContingencyMB = %d ",
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/comexe/ComTdbHashj.h
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbHashj.h b/core/sql/comexe/ComTdbHashj.h
index a32aa05..f382acb 100644
--- a/core/sql/comexe/ComTdbHashj.h
+++ b/core/sql/comexe/ComTdbHashj.h
@@ -478,7 +478,7 @@ private:
ExExprPtr checkInnerNullExpr_; // 296-303
ExExprPtr checkOuterNullExpr_; // 304-311
ExExprPtr afterJoinPred5_; // 312-319
- Float32 hjMemEstInMbPerCpu_; // 320-323
+ Float32 hjMemEstInKBPerNode_; // 320-323
Float32 bmoCitizenshipFactor_; // 324-327
Int32 pMemoryContingencyMB_; // 328-331
Int16 scratchIOVectorSize_; // 332-333
@@ -506,7 +506,8 @@ private:
// additional tuple for the min max values.
ExCriDescPtr leftDownCriDesc_; // 352-369
UInt16 hjFlags2_; // 370-371
- char fillersComTdbHashj_[4]; // 372-375
+ Float32 estMemoryUsage_; // 372-375
+ Float32 bmoQuotaRatio_;
protected:
@@ -533,8 +534,8 @@ protected:
Int32 getMemoryContingencyMB(void)
{ return pMemoryContingencyMB_; }
- void setHjMemEstInMbPerCpu(Float32 s) {hjMemEstInMbPerCpu_=s;}
- Float32 getHjMemEstInMbPerCpu() {return hjMemEstInMbPerCpu_;}
+ void setHjMemEstInKBPerNode(Float32 s) {hjMemEstInKBPerNode_=s;}
+ Float32 getHjMemEstInKBPerNode() {return hjMemEstInKBPerNode_;}
Float32 hjGrowthPercent() {return Float32(hjGrowthPercent_/100.0);}
void setBmoMinMemBeforePressureCheck(UInt16 m)
{ bmoMinMemBeforePressureCheck_ = m ; }
@@ -544,6 +545,15 @@ protected:
{ bmoMaxMemThresholdMB_ = m ; }
UInt16 getBMOMaxMemThresholdMB()
{ return bmoMaxMemThresholdMB_; }
+ void setEstimatedMemoryUsage(Float32 estMemory)
+ { estMemoryUsage_ = estMemory; }
+ virtual Float32 getEstimatedMemoryUsage(void)
+ { return estMemoryUsage_;}
+
+ void setBmoQuotaRatio(Float32 bmoQuotaRatio)
+ { bmoQuotaRatio_ = bmoQuotaRatio; }
+ virtual Float32 getBmoQuotaRatio(void)
+ { return bmoQuotaRatio_;}
};
inline ComTdb * ComTdbHashj::getLeftChildTdb() {
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/comexe/ComTdbSort.cpp
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbSort.cpp b/core/sql/comexe/ComTdbSort.cpp
index 154cad2..4ca4e45 100644
--- a/core/sql/comexe/ComTdbSort.cpp
+++ b/core/sql/comexe/ComTdbSort.cpp
@@ -90,10 +90,11 @@ ComTdbSort::ComTdbSort(ex_expr * sort_key_expr,
#pragma warn(1506) // warning elimination
sortOptions_(sort_options),
flags_(0),
- sortMemEstInMbPerCpu_(0),
+ sortMemEstInKBPerNode_(0),
sortGrowthPercent_(sortGrowthPercent),
bmoCitizenshipFactor_(0),
- pMemoryContingencyMB_(0)
+ pMemoryContingencyMB_(0),
+ topNThreshold_(-1)
{
}
@@ -151,8 +152,8 @@ void ComTdbSort::displayContents(Space * space,ULng32 flag)
str_sprintf(buf,"tuppIndex_ = %d", tuppIndex_);
space->allocateAndCopyToAlignedSpace(buf, str_len(buf), sizeof(short));
- str_sprintf(buf,"sortMemEstInMbPerCpu = %f, estimateErrorPenalty = %d ",
- sortMemEstInMbPerCpu_, sortGrowthPercent_);
+ str_sprintf(buf,"sortMemEstInKBPerNode_ = %f, estimateErrorPenalty = %d ",
+ sortMemEstInKBPerNode_, sortGrowthPercent_);
space->allocateAndCopyToAlignedSpace(buf, str_len(buf), sizeof(short));
str_sprintf(buf,"bmoCitizenshipFactor = %f, PhyMemoryContingencyMB = %d ",
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/comexe/ComTdbSort.h
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbSort.h b/core/sql/comexe/ComTdbSort.h
index 15a64c3..28e772e 100644
--- a/core/sql/comexe/ComTdbSort.h
+++ b/core/sql/comexe/ComTdbSort.h
@@ -201,11 +201,15 @@ protected:
Int32 sortPartialKeyLen_; // 56-59
UInt32 minimalSortRecs_; // 60-63
- Float32 sortMemEstInMbPerCpu_; // 64-67
+ Float32 sortMemEstInKBPerNode_; // 64-67
Float32 bmoCitizenshipFactor_; // 68-71
Int32 pMemoryContingencyMB_; // 72-75
UInt16 sortGrowthPercent_; // 76-77
- char fillersComTdbSort_[18]; // 78-95
+ char filler_1[2]; // 78-79
+ Int32 topNThreshold_; // 80-83
+ Float32 estMemoryUsage_; // 84-87
+ Float32 bmoQuotaRatio_; // 88-92
+ char fillersComTdbSort_[4]; // 93-96
public:
@@ -331,10 +335,25 @@ public:
Int32 getMemoryContingencyMB(void)
{ return pMemoryContingencyMB_; }
- void setSortMemEstInMbPerCpu(Float32 s) {sortMemEstInMbPerCpu_=s;}
- Float32 getSortMemEstInMbPerCpu() {return sortMemEstInMbPerCpu_;}
+ void setSortMemEstInKBPerNode(Float32 s) {sortMemEstInKBPerNode_=s;}
+ Float32 getSortMemEstInKBPerNode() {return sortMemEstInKBPerNode_;}
Float32 sortGrowthPercent() {return Float32(sortGrowthPercent_/100.0);}
+ void setTopNThreshold(Int32 limit)
+ { topNThreshold_ = limit;}
+ Int32 getTopNThreshold(void)
+ { return topNThreshold_; }
+
+ void setEstimatedMemoryUsage(Float32 estMemory)
+ { estMemoryUsage_ = estMemory; }
+ virtual Float32 getEstimatedMemoryUsage(void)
+ { return estMemoryUsage_;}
+
+ void setBmoQuotaRatio(Float32 bmoQuotaRatio)
+ { bmoQuotaRatio_ = bmoQuotaRatio; }
+ virtual Float32 getBmoQuotaRatio(void)
+ { return bmoQuotaRatio_;}
+
// ---------------------------------------------------------------------
// Used by the internal SHOWPLAN command to get attributes of a TDB.
// ---------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/comexe/ComTdbStats.cpp
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbStats.cpp b/core/sql/comexe/ComTdbStats.cpp
index 27db4c1..90c0c4c 100644
--- a/core/sql/comexe/ComTdbStats.cpp
+++ b/core/sql/comexe/ComTdbStats.cpp
@@ -212,7 +212,9 @@ CompilerStatsInfo::CompilerStatsInfo()
ofMode_((UInt16)ComTdb::OFM_DISK),
collectStatsType_((UInt16)ComTdb::NO_STATS),
queryType_((Int16)ComTdbRoot::SQL_UNKNOWN),
- subqueryType_((Int16)ComTdbRoot::SQL_STMT_NA)
+ subqueryType_((Int16)ComTdbRoot::SQL_STMT_NA),
+ bmoMemLimitPerNode_(0),
+ estBmoMemPerNode_(0)
{
}
@@ -250,7 +252,8 @@ CompilerStatsInfo& CompilerStatsInfo::operator=(CompilerStatsInfo&csi)
ofMode_ = csi.ofMode_;
queryType_ = csi.queryType_;
subqueryType_ = csi.subqueryType_;
-
+ bmoMemLimitPerNode_ = csi.bmoMemLimitPerNode_;
+ estBmoMemPerNode_ = csi.estBmoMemPerNode_;
return *this;
}
@@ -323,7 +326,8 @@ void CompilerStatsInfo :: translateToExternalFormat(SQL_QUERY_COMPILER_STATS_INF
= queryType();
query_comp_stats_info->subqueryType
= subqueryType();
-
+ query_comp_stats_info->bmoMemLimitPerNode = bmoMemLimitPerNode();
+ query_comp_stats_info->estBmoMemPerNode = estBmoMemPerNode();
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/comexe/ComTdbStats.h
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbStats.h b/core/sql/comexe/ComTdbStats.h
index 272cf65..ce9cdbe 100644
--- a/core/sql/comexe/ComTdbStats.h
+++ b/core/sql/comexe/ComTdbStats.h
@@ -268,7 +268,6 @@ private:
NABasicPtr compileInfo_; // 88 - 95
Int32 compileInfoLen_; // 96 - 99
-
char filler_[42]; // 100 - 141
};
@@ -310,6 +309,8 @@ public:
UInt16 &ofMode() { return ofMode_; }
Int16 &queryType() { return queryType_; }
Int16 &subqueryType() { return subqueryType_; }
+ double &bmoMemLimitPerNode() { return bmoMemLimitPerNode_; }
+ double &estBmoMemPerNode() { return estBmoMemPerNode_; }
NABoolean mandatoryCrossProduct() { return (flags_ & MANDATORY_CROSS_PRODUCT) != 0; }
void setMandatoryCrossProduct(NABoolean v)
@@ -370,7 +371,9 @@ private:
UInt16 ofMode_;
Int16 queryType_;
Int16 subqueryType_;
- char filler_[48];
+ double bmoMemLimitPerNode_;
+ double estBmoMemPerNode_;
+ char filler_[32];
};
// the enum values assigned to the enums must be the same as the
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/common/ComSmallDefs.h
----------------------------------------------------------------------
diff --git a/core/sql/common/ComSmallDefs.h b/core/sql/common/ComSmallDefs.h
index 67a9af2..ab07e6a 100644
--- a/core/sql/common/ComSmallDefs.h
+++ b/core/sql/common/ComSmallDefs.h
@@ -1946,6 +1946,13 @@ enum ComQiScope
#define MAX_CHAR_COL_LENGTH_IN_BYTES 16777216
#define MAX_CHAR_COL_LENGTH_IN_BYTES_STR "16777216"
+enum BMOQuotaRatio
+ {
+ NO_RATIO = -1,
+ MIN_QUOTA = 0,
+ MAX_QUOTA = 1
+ };
+
//
// Definition of class ComUID
//
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/common/NAMemory.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/NAMemory.cpp b/core/sql/common/NAMemory.cpp
index 3dd5afd..ce78db9 100644
--- a/core/sql/common/NAMemory.cpp
+++ b/core/sql/common/NAMemory.cpp
@@ -2489,6 +2489,7 @@ NABoolean NAMemory::getUsage(size_t * lastBlockSize, size_t * freeSize, size_t *
return crowded;
}
+
// ---------------------------------------------------------------------------
// NASegGlobals methods
// ---------------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/common/NAMemory.h
----------------------------------------------------------------------
diff --git a/core/sql/common/NAMemory.h b/core/sql/common/NAMemory.h
index 609e936..a6f04c5 100644
--- a/core/sql/common/NAMemory.h
+++ b/core/sql/common/NAMemory.h
@@ -393,8 +393,9 @@ public:
inline NASegGlobals * getSegGlobals() { return segGlobals_; }
char *getName() { return name_; }
NAMemoryType getType() { return type_; }
+
NABoolean getUsage(size_t* lastSegSize, size_t* freeSize, size_t* totalSize);
- // for debugging
+
NABoolean containsAddress(void *addr)
{ return NABlock::blockHolding(firstBlk_, addr) != NULL; }
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/Allocator.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/Allocator.cpp b/core/sql/executor/Allocator.cpp
index 8870488..c9a451f 100644
--- a/core/sql/executor/Allocator.cpp
+++ b/core/sql/executor/Allocator.cpp
@@ -117,7 +117,7 @@ namespace ExOverflow
#endif
if (yieldMB)
{
- GetCliGlobals()->yieldMemoryQuota(yieldMB);
+ exeGlobals_->yieldMemoryQuota(yieldMB);
}
}
@@ -184,7 +184,7 @@ namespace ExOverflow
ByteCount quotaIncrease = (ByteCount) (totalBytes - quota_);
#endif
UInt32 quotaIncreaseMB = (quotaIncrease + ONE_MEGABYTE - 1)/ ONE_MEGABYTE;
- if (GetCliGlobals()->grabMemoryQuotaIfAvailable(quotaIncreaseMB))
+ if (exeGlobals_->grabMemoryQuotaIfAvailable(quotaIncreaseMB))
{
quota_ += (quotaIncreaseMB * ONE_MEGABYTE);
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ExExeUtilGetStats.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilGetStats.cpp b/core/sql/executor/ExExeUtilGetStats.cpp
index 1dd0d44..81d94e8 100644
--- a/core/sql/executor/ExExeUtilGetStats.cpp
+++ b/core/sql/executor/ExExeUtilGetStats.cpp
@@ -3095,7 +3095,7 @@ short ExExeUtilGetRTSStatisticsTcb::work()
bmoStatsItems_[17].statsItem_id = SQLSTATS_SCRATCH_IO_TIME;
bmoStatsItems_[18].statsItem_id = SQLSTATS_SCRATCH_IO_MAX_TIME;
- // maxBMOStatsItems_ is set to 19
+ // maxBMOStatsItems_ is set to 18
// TDB_NAME
bmoStatsItems_[1].str_value = new (getGlobals()->getDefaultHeap())
char[MAX_TDB_NAME_LEN+1];
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ExStats.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExStats.cpp b/core/sql/executor/ExStats.cpp
index a2d20f6..5231714 100644
--- a/core/sql/executor/ExStats.cpp
+++ b/core/sql/executor/ExStats.cpp
@@ -10420,6 +10420,7 @@ ExBMOStats::ExBMOStats(NAMemory *heap, StatType statType)
spaceBufferSize_ = -1;
scratchIOSize_ = -1;
scratchOverflowMode_ = -1;
+ estMemoryUsage_ = 0;
}
ExBMOStats::ExBMOStats(NAMemory *heap, StatType statType,
@@ -10430,10 +10431,14 @@ ExBMOStats::ExBMOStats(NAMemory *heap, StatType statType,
init(FALSE);
spaceBufferSize_ = -1;
scratchIOSize_ = -1;
- if (tdb != NULL)
+ if (tdb != NULL) {
scratchOverflowMode_ = ((ComTdb *)tdb)->getOverFlowMode();
- else
+ estMemoryUsage_ = ((ComTdb *)tdb)->getEstimatedMemoryUsage();
+ }
+ else {
scratchOverflowMode_ = -1;
+ estMemoryUsage_ = 0;
+ }
}
ExBMOStats::ExBMOStats(NAMemory *heap,
@@ -10445,10 +10450,14 @@ ExBMOStats::ExBMOStats(NAMemory *heap,
init(FALSE);
spaceBufferSize_ = -1;
scratchIOSize_ = -1;
- if (tdb != NULL)
+ if (tdb != NULL) {
scratchOverflowMode_ = ((ComTdb *)tdb)->getOverFlowMode();
- else
+ estMemoryUsage_ = ((ComTdb *)tdb)->getEstimatedMemoryUsage();
+ }
+ else {
scratchOverflowMode_ = -1;
+ estMemoryUsage_ = 0;
+ }
}
void ExBMOStats::init(NABoolean resetDop)
@@ -10693,6 +10702,9 @@ Lng32 ExBMOStats::getStatsItem(SQLSTATS_ITEM* sqlStats_item)
case SQLSTATS_SCRATCH_IO_MAX_TIME:
sqlStats_item->int64_value = scratchIOMaxTime_;
break;
+ case SQLSTATS_BMO_EST_MEMORY:
+ sqlStats_item->double_value = estMemoryUsage_;
+ break;
case SQLSTATS_INTERIM_ROW_COUNT:
sqlStats_item->int64_value = interimRowCount_;
break;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ExStats.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExStats.h b/core/sql/executor/ExStats.h
index 5b3b1a8..7b4da48 100644
--- a/core/sql/executor/ExStats.h
+++ b/core/sql/executor/ExStats.h
@@ -1061,6 +1061,7 @@ private:
Int16 scratchOverflowMode_; // 0 - disk 1 - SSD
Int32 topN_; // TOPN value
Int64 interimRowCount_;
+ Float32 estMemoryUsage_;
Int16 phase_;
};
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/cluster.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/cluster.cpp b/core/sql/executor/cluster.cpp
index 327c59c..0875a32 100644
--- a/core/sql/executor/cluster.cpp
+++ b/core/sql/executor/cluster.cpp
@@ -308,7 +308,7 @@ ClusterDB::ClusterDB(HashOperator hashOperator,
Float32 bmoCitizenshipFactor,
Int32 pMemoryContingencyMB,
Float32 estimateErrorPenalty,
- Float32 hashMemEstInMbPerCpu,
+ Float32 hashMemEstInKBPerNode,
ULng32 initialHashTableSize,
ExOperStats * hashOperStats
)
@@ -364,7 +364,7 @@ ClusterDB::ClusterDB(HashOperator hashOperator,
bmoCitizenshipFactor_(bmoCitizenshipFactor),
pMemoryContingencyMB_(pMemoryContingencyMB),
estimateErrorPenalty_(estimateErrorPenalty),
- hashMemEstInMbPerCpu_(hashMemEstInMbPerCpu),
+ hashMemEstInKBPerNode_(hashMemEstInKBPerNode),
totalPhase3TimeNoHL_(0),
maxPhase3Time_(0),
@@ -476,7 +476,7 @@ void ClusterDB::yieldAllMemoryQuota()
{
if ( memoryQuotaMB_ == 0 || memoryQuotaMB_ <= minMemoryQuotaMB_ ) return;
- GetCliGlobals()->yieldMemoryQuota( memoryQuotaMB_ - minMemoryQuotaMB_ );
+ stmtGlobals_->yieldMemoryQuota( memoryQuotaMB_ - minMemoryQuotaMB_ );
if ( doLog_ ) { // LOG -- to show that memory was yielded
char msg[256];
@@ -508,7 +508,7 @@ void ClusterDB::YieldQuota(UInt32 memNeeded)
// if there is no memory to yield - then return
if ( memToYieldMB <= 1 ) return; // 1 MB - to avoid thrashing
- GetCliGlobals()->yieldMemoryQuota( memToYieldMB ); // Now yield
+ stmtGlobals_->yieldMemoryQuota( memToYieldMB ); // Now yield
if ( doLog_ ) { // LOG -- to show that memory was yielded
char msg[256], msg1[64];
@@ -520,7 +520,7 @@ void ClusterDB::YieldQuota(UInt32 memNeeded)
hashOperator_ == HASH_GROUP_BY ? "HGB" :
hashOperator_ == SEQUENCE_OLAP ? "OLAP" : "HJ",
memToYieldMB, id, msg1, memNeededMB,
- GetCliGlobals()->unusedMemoryQuota());
+ stmtGlobals_->unusedMemoryQuota());
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
@@ -601,7 +601,7 @@ void ClusterDB::yieldUnusedMemoryQuota(Cluster * theOFList,
// if there is no memory to yield - then return
if ( memToYieldMB <= 1 ) return; // 1 MB - to avoid thrashing
- GetCliGlobals()->yieldMemoryQuota( memToYieldMB ); // Now yield
+ stmtGlobals_->yieldMemoryQuota( memToYieldMB ); // Now yield
if ( doLog_ ) { // LOG -- to show that memory was yielded
char msg[256], msg1[64];
@@ -612,7 +612,7 @@ void ClusterDB::yieldUnusedMemoryQuota(Cluster * theOFList,
extraBuffers == 1 ? "HJ" : "HGB", memToYieldMB,
0,
msg1, memNeededMB,
- GetCliGlobals()->unusedMemoryQuota());
+ stmtGlobals_->unusedMemoryQuota());
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
@@ -679,7 +679,7 @@ NABoolean ClusterDB::enoughMemory(ULng32 reqSize, NABoolean checkCompilerHints)
}
// Try to increase the memory quota (from the global "pool") to meet need
- if ( GetCliGlobals()->grabMemoryQuotaIfAvailable(memNeededMB) ) {
+ if ( stmtGlobals_->grabMemoryQuotaIfAvailable(memNeededMB) ) {
memoryQuotaMB_ += memNeededMB ; // got it
@@ -693,7 +693,7 @@ NABoolean ClusterDB::enoughMemory(ULng32 reqSize, NABoolean checkCompilerHints)
"GRABBED %u MB (%u). Memory used %u, now allowed %u MB, request size %u, unused pool %u",
memNeededMB, 0,
memoryUsed_,
- memoryQuotaMB_, reqSize,GetCliGlobals()->unusedMemoryQuota() );
+ memoryQuotaMB_, reqSize,stmtGlobals_->unusedMemoryQuota() );
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
}
@@ -714,6 +714,7 @@ NABoolean ClusterDB::enoughMemory(ULng32 reqSize, NABoolean checkCompilerHints)
}
}
+/*
// Check if we are running out of address space or swap space.
// getUsage() would return TRUE if and only if memory gets crowded (i.e. we
// failed at least once to allocate a desired flat segment size, and the
@@ -736,7 +737,7 @@ NABoolean ClusterDB::enoughMemory(ULng32 reqSize, NABoolean checkCompilerHints)
return FALSE;
}
}
-
+*/
if (memMonitor_ && memoryUsed_ >= minMemBeforePressureCheck_ ) {
@@ -863,7 +864,7 @@ NABoolean ClusterDB::enoughMemory(ULng32 reqSize, NABoolean checkCompilerHints)
// do the following check if HJ still in phase 1.
if ( checkCompilerHints )
{
- Float32 E = hashMemEstInMbPerCpu_ ; //expected memory consumption
+ Float32 E = hashMemEstInKBPerNode_ / 1024 ; //expected memory consumption
#ifdef FUTURE_WORK
//check extreme case first. Expected cannot be more than
@@ -898,7 +899,7 @@ NABoolean ClusterDB::enoughMemory(ULng32 reqSize, NABoolean checkCompilerHints)
if ( C > E ) // consumed memory exceeded the expected -- adjust E
{
E = C * ( 1 + estimateErrorPenalty ) ;
- hashMemEstInMbPerCpu_ = E ;
+ hashMemEstInKBPerNode_ = E * 1024;
}
Float32 m = E - C; //delta memory required to avoid overflow.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/cluster.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/cluster.h b/core/sql/executor/cluster.h
index 7e7fa74..e3b7b1b 100644
--- a/core/sql/executor/cluster.h
+++ b/core/sql/executor/cluster.h
@@ -604,7 +604,7 @@ public:
Float32 bmoCitizenshipFactor = 0,
Int32 pMemoryContingencyMB = 0,
Float32 estimateErrorPenalty = 0,
- Float32 hashMemEstInMbPerCpu = 0,
+ Float32 hashMemEstInKBPerNode = 0,
ULng32 initialHashTableSize = 0, // default not resizable
ExOperStats * hashOperStats = NULL
);
@@ -749,7 +749,7 @@ private:
Float32 bmoCitizenshipFactor_;
Int32 pMemoryContingencyMB_;
Float32 estimateErrorPenalty_;
- Float32 hashMemEstInMbPerCpu_;
+ Float32 hashMemEstInKBPerNode_;
Int64 totalPhase3TimeNoHL_;
Int64 maxPhase3Time_;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ex_exe_stmt_globals.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_exe_stmt_globals.h b/core/sql/executor/ex_exe_stmt_globals.h
index 5815eb7..c007b73 100644
--- a/core/sql/executor/ex_exe_stmt_globals.h
+++ b/core/sql/executor/ex_exe_stmt_globals.h
@@ -307,18 +307,38 @@ public:
inline NABoolean grabMemoryQuotaIfAvailable(ULng32 size)
{
+ CliGlobals *cli_globals = GetCliGlobals();
+ if (cli_globals->isEspProcess())
+ return cli_globals->grabMemoryQuotaIfAvailable(size);
if ( unusedBMOsMemoryQuota_ < size ) return FALSE;
unusedBMOsMemoryQuota_ -= size ;
return TRUE;
}
- inline void resetMemoryQuota() { unusedBMOsMemoryQuota_ = 0 ; }
+ inline void resetMemoryQuota()
+ {
+ CliGlobals *cli_globals = GetCliGlobals();
+ if (cli_globals->isEspProcess())
+ return cli_globals->resetMemoryQuota();
+ unusedBMOsMemoryQuota_ = 0 ;
+ }
- inline ULng32 unusedMemoryQuota() { return unusedBMOsMemoryQuota_; }
+ inline ULng32 unusedMemoryQuota()
+ {
+ CliGlobals *cli_globals = GetCliGlobals();
+ if (cli_globals->isEspProcess())
+ return cli_globals->unusedMemoryQuota();
+ return unusedBMOsMemoryQuota_;
+ }
inline void yieldMemoryQuota(ULng32 size)
- { unusedBMOsMemoryQuota_ += size; }
-
+ {
+ CliGlobals *cli_globals = GetCliGlobals();
+ if (cli_globals->isEspProcess())
+ return cli_globals->yieldMemoryQuota(size);
+ unusedBMOsMemoryQuota_ += size;
+ }
+
// getStreamTimeout: return TRUE (FALSE) if the stream-timeout was set (was
// not set). If set, the timeoutValue parameter would return that value
virtual NABoolean getStreamTimeout( Lng32 & timeoutValue );
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ex_frag_rt.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_frag_rt.cpp b/core/sql/executor/ex_frag_rt.cpp
index d8b7fa2..bdcea36 100644
--- a/core/sql/executor/ex_frag_rt.cpp
+++ b/core/sql/executor/ex_frag_rt.cpp
@@ -241,51 +241,12 @@ void ExRtFragTable::setInactiveState()
numRootRequests_--;
}
-#define MAX_NUM_FRAGMENTS_PER_ESP 6
-// multi fragment esp - begin
-static NABoolean sv_esp_multi_fragment = TRUE;
-static UInt8 sv_esp_num_fragments = MAX_NUM_FRAGMENTS_PER_ESP;
-static char *sv_envvar_esp_multi_fragment = 0;
-static char *sv_envvar_esp_num_fragments = 0;
-
-static
-void
-getAssignedEspEnvVar()
-{
- static bool lv_checked = false;
-
- if (lv_checked) {
- return;
- }
-
- sv_envvar_esp_multi_fragment = getenv("ESP_MULTI_FRAGMENTS");
- sv_envvar_esp_num_fragments = getenv("ESP_NUM_FRAGMENTS");
- lv_checked = true;
-
- Int32 lv_i;
- if (sv_envvar_esp_multi_fragment) {
- lv_i = atoi(sv_envvar_esp_multi_fragment);
- if (lv_i == 0)
- sv_esp_multi_fragment = FALSE;
- else
- sv_esp_multi_fragment = TRUE;
- }
- sv_esp_num_fragments = 6;
- if (sv_envvar_esp_num_fragments) {
- lv_i = atoi(sv_envvar_esp_num_fragments);
- if (lv_i > 0 && lv_i <= MAX_NUM_FRAGMENTS_PER_ESP) {
- sv_esp_num_fragments = (UInt8)lv_i;
- }
- }
- return;
-}
-// multi fragment esp - end
-
void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
UInt32 &numOfTotalEspsUsed,
UInt32 &numOfEspsStarted
)
{
+ Int16 esp_multi_fragment, esp_num_fragments;
Int32 entryNumber, numEntries, launchesStarted, launchesCompleted;
if (state_ == NO_ESPS_USED)
@@ -299,10 +260,7 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
ComDiagsArea *diags = glob_->getDiagsArea();
LIST(ExEspDbEntry *) alreadyAssignedEsps(heap);
- // multi fragment esp - begin
- getAssignedEspEnvVar(); // sets the static variable: sv_esp_multi_fragment
// Note: alreadyAssignedEsps is cleared after assigning ESPs for all the instances of a fragment
- // multi fragment esp - end
// $$$$ check with the resource governor
@@ -319,10 +277,8 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
Lng32 idleTimeout = getEspIdleTimeout();
Lng32 assignTimeWindow = currentContext->getSessionDefaults()->getEspAssignTimeWindow();
- if (!sv_envvar_esp_multi_fragment)
- sv_esp_multi_fragment = fragDir_->espMultiFragments();
- if (!sv_envvar_esp_num_fragments)
- sv_esp_num_fragments = fragDir_->espNumFragments();
+ esp_multi_fragment = fragDir_->espMultiFragments();
+ esp_num_fragments = fragDir_->espNumFragments();
// de-coupling ESP with database uid if set
const char *esp_with_uid = getenv("ESP_WITH_USERID");
@@ -409,7 +365,9 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
idleTimeout,
assignTimeWindow,
&assignEspArrays.creatingEspEntry_[entryNumber],
- soloFragment
+ soloFragment,
+ esp_multi_fragment,
+ esp_num_fragments
);
break; // Retry is done in IpcGuardianServer::launchNSKLiteProcess
@@ -467,7 +425,7 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
}
}
// for multi fragment esp - begin
- if (sv_esp_multi_fragment) {
+ if (esp_multi_fragment) {
alreadyAssignedEsps.clear();
}
// for multi fragment esp - end
@@ -501,7 +459,9 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
idleTimeout,
assignTimeWindow,
&assignEspArrays.creatingEspEntry_[entryNumber],
- soloFragment);
+ soloFragment,
+ esp_multi_fragment,
+ esp_num_fragments);
if (assignEspArrays.creatingEspEntry_[entryNumber] && assignEspArrays.creatingEspEntry_[entryNumber]->isReady())
{
if (glob_->getIpcEnvironment()->getNumOpensInProgress() >= FS_MAX_CONCUR_NOWAIT_OPENS)
@@ -568,7 +528,7 @@ void ExRtFragTable::assignEsps(NABoolean /*checkResourceGovernor*/,
while (glob_->getIpcEnvironment()->getNumOpensInProgress() > 0)
glob_->getIpcEnvironment()->getAllConnections()->waitOnAll(IpcInfiniteTimeout);
// multi fragment esp - begin
- if (sv_esp_multi_fragment)
+ if (esp_multi_fragment)
{
alreadyAssignedEsps.clear();
}
@@ -1522,7 +1482,7 @@ void ExRtFragTable::releaseEsps(NABoolean closeAllOpens)
// multi fragment esp - begin
if (fragInst->usedEsp_) {
if ((releasedEsps.insert(fragInst->usedEsp_) == FALSE) &&
- (sv_esp_multi_fragment)) {
+ fragDir_->espMultiFragments()) {
// decrement the usageCount_ of fragInst->usedEsp_
glob_->getEspManager( )->releaseEsp(fragInst->usedEsp_, glob_->verifyESP(), fragInst->usedEsp_->inUse());
}
@@ -2807,7 +2767,9 @@ ExEspDbEntry *ExEspManager::shareEsp(
Lng32 idleTimeout,
Lng32 assignTimeWindow,
IpcGuardianServer **creatingEsp,
- NABoolean soloFragment)
+ NABoolean soloFragment,
+ Int16 esp_multi_fragment,
+ Int16 esp_num_fragments)
{
Int32 nowaitDepth;
IpcServer *server;
@@ -2828,7 +2790,7 @@ ExEspDbEntry *ExEspManager::shareEsp(
// look up the cache for esp to share
NABoolean espServerError = FALSE;
- result = getEspFromCache(alreadyAssignedEsps, statementHeap, statement, clusterName, cpuNum, memoryQuota, user_id, verifyESP, espLevel, idleTimeout, assignTimeWindow, nowaitDepth, espServerError, soloFragment);
+ result = getEspFromCache(alreadyAssignedEsps, statementHeap, statement, clusterName, cpuNum, memoryQuota, user_id, verifyESP, espLevel, idleTimeout, assignTimeWindow, nowaitDepth, espServerError, soloFragment, esp_multi_fragment, esp_num_fragments);
if (espServerError == TRUE)
// found error from ESP already assigned to prev segment
{
@@ -2857,7 +2819,7 @@ ExEspDbEntry *ExEspManager::shareEsp(
// remote segment not available. look up cache for esp on local segment.
ptrToClusterName = cliGlobals_->myNodeName();
NABoolean espServerError = FALSE;
- result = getEspFromCache(alreadyAssignedEsps, statementHeap, statement, ptrToClusterName, cpuNum, memoryQuota, user_id, verifyESP, espLevel, idleTimeout, assignTimeWindow, nowaitDepth, espServerError, soloFragment);
+ result = getEspFromCache(alreadyAssignedEsps, statementHeap, statement, ptrToClusterName, cpuNum, memoryQuota, user_id, verifyESP, espLevel, idleTimeout, assignTimeWindow, nowaitDepth, espServerError, soloFragment, esp_multi_fragment, esp_num_fragments);
if (espServerError == TRUE)
// found error from ESP already assigned to prev segment
{
@@ -3000,7 +2962,9 @@ ExEspDbEntry *ExEspManager::getEspFromCache(LIST(ExEspDbEntry *) &alreadyAssigne
Lng32 assignTimeWindow,
Int32 nowaitDepth,
NABoolean &espServerError,
- NABoolean soloFragment)
+ NABoolean soloFragment,
+ Int16 esp_multi_fragment,
+ Int16 esp_num_fragments)
{
ExEspDbEntry *result = NULL;
LIST(ExEspDbEntry *) badEsps(statementHeap);
@@ -3076,7 +3040,7 @@ ExEspDbEntry *ExEspManager::getEspFromCache(LIST(ExEspDbEntry *) &alreadyAssigne
ExEspDbEntry *e = espList->usedEntry(i);
- if ((e->inUse_) && (e->soloFragment_ || soloFragment || !(sv_esp_multi_fragment) || e->statement_ != statement))
+ if ((e->inUse_) && (e->soloFragment_ || soloFragment || !(esp_multi_fragment) || e->statement_ != statement))
continue;
// don't reuse a broken ESP
@@ -3160,7 +3124,7 @@ ExEspDbEntry *ExEspManager::getEspFromCache(LIST(ExEspDbEntry *) &alreadyAssigne
// we have found a free esp for reuse
if ((2 * e->usageCount_ + 1 <= nowaitDepth) &&
- (e->usageCount_ < sv_esp_num_fragments))
+ (e->usageCount_ < esp_num_fragments))
{
e->usageCount_++; // multi fragment esp
e->statement_ = statement;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ex_frag_rt.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_frag_rt.h b/core/sql/executor/ex_frag_rt.h
index 9dc6ee5..00400ac 100644
--- a/core/sql/executor/ex_frag_rt.h
+++ b/core/sql/executor/ex_frag_rt.h
@@ -527,7 +527,9 @@ class ExEspManager
Lng32 idleTimeout,
Lng32 assignTimeWindow,
IpcGuardianServer **creatingEsp,
- NABoolean soloFragment);
+ NABoolean soloFragment,
+ Int16 esp_multi_fragment,
+ Int16 esp_num_fragments);
void releaseEsp(ExEspDbEntry *esp, NABoolean verifyEsp, NABoolean badEsp);
@@ -564,7 +566,9 @@ class ExEspManager
Lng32 assignTimeWindow,
Int32 nowaitDepth,
NABoolean &espServerError,
- NABoolean soloFragment);
+ NABoolean soloFragment,
+ Int16 esp_multi_fragment,
+ Int16 esp_num_fragments);
IpcCpuNum getRoundRobinCPU();
// ESP state tracing >>
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ex_hashj.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_hashj.cpp b/core/sql/executor/ex_hashj.cpp
index b029975..bc032c4 100644
--- a/core/sql/executor/ex_hashj.cpp
+++ b/core/sql/executor/ex_hashj.cpp
@@ -1403,7 +1403,7 @@ NABoolean ex_hashj_tcb::allocateClusters() {
ULng32 minB4Chk = hashJoinTdb().getBmoMinMemBeforePressureCheck() * ONE_MEG;
// estimate memory needed in phase 1 (not incl. hash tables)
- Float32 memEstInMbPerCpu = (Float32)(innerTableSize / ONE_MEG) ;
+ Float32 memEstInKBPerNode = (Float32)(innerTableSize / 1024) ;
// Only set cross product optimizations on when there is no
// right search expression
@@ -1450,7 +1450,7 @@ NABoolean ex_hashj_tcb::allocateClusters() {
hashJoinTdb().getMemoryContingencyMB(),
// to estimate the error penalty
hashJoinTdb().hjGrowthPercent(),
- memEstInMbPerCpu, // estimate mem needed
+ memEstInKBPerNode, // estimate mem needed
0, // Hash-Table not resizable
getStatsEntry()
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ex_mj.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_mj.cpp b/core/sql/executor/ex_mj.cpp
index d22ebcc..55a589b 100644
--- a/core/sql/executor/ex_mj.cpp
+++ b/core/sql/executor/ex_mj.cpp
@@ -206,7 +206,7 @@ ex_mj_tcb::ex_mj_tcb(const ex_mj_tdb & mj_tdb,
if (assumedMaxMB < quotaMB)
{
- GetCliGlobals()->yieldMemoryQuota(quotaMB - assumedMaxMB);
+ stmtGlobals->yieldMemoryQuota(quotaMB - assumedMaxMB);
quotaMB = assumedMaxMB;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ex_sort.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_sort.cpp b/core/sql/executor/ex_sort.cpp
index d54a2a3..a70b9a2 100644
--- a/core/sql/executor/ex_sort.cpp
+++ b/core/sql/executor/ex_sort.cpp
@@ -178,7 +178,8 @@ void ExSortTcb::setupPoolBuffers(ex_queue_entry *pentry_down)
//sortPool_.
if((pentry_down->downState.request == ex_queue::GET_N) &&
(pentry_down->downState.requestValue > 0) &&
- (sortTdb().topNSortEnabled()))
+ (sortTdb().topNSortEnabled()) &&
+ (pentry_down->downState.requestValue <= sortTdb().getTopNThreshold()))
{
topNSortPool_ = new(sortSpace_)
ExSimpleSQLBuffer(pentry_down->downState.requestValue + 1,
@@ -392,7 +393,7 @@ ExSortTcb::ExSortTcb(const ExSortTdb & sort_tdb,
sortCfg_->setScratchIOVectorSize(st->sortOptions_->scratchIOVectorSize());
sortCfg_->setBmoCitizenshipFactor(st->getBmoCitizenshipFactor());
sortCfg_->setMemoryContingencyMB(st->getMemoryContingencyMB());
- sortCfg_->setSortMemEstInMbPerCpu(st->getSortMemEstInMbPerCpu());
+ sortCfg_->setSortMemEstInKBPerNode(st->getSortMemEstInKBPerNode());
sortCfg_->setEstimateErrorPenalty(st->sortGrowthPercent());
sortCfg_->setBmoMaxMemThresholdMB(st->sortOptions_->bmoMaxMemThresholdMB());
sortCfg_->setIntermediateScratchCleanup(st->sortOptions_->intermediateScratchCleanup());
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/executor/ex_split_bottom.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ex_split_bottom.cpp b/core/sql/executor/ex_split_bottom.cpp
index 5d7faf8..c1a2360 100644
--- a/core/sql/executor/ex_split_bottom.cpp
+++ b/core/sql/executor/ex_split_bottom.cpp
@@ -735,7 +735,7 @@ ExWorkProcRetcode ex_split_bottom_tcb::work()
setWorkState(WORK_ON_REQUEST);
glob_->clearAllActivatedSendTopTcbs();
- GetCliGlobals()->resetMemoryQuota();
+ glob_->resetMemoryQuota();
glob_->incExecutionCount();
} // if (okToPush)
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/GenExplain.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenExplain.cpp b/core/sql/generator/GenExplain.cpp
index b26a123..25635d4 100644
--- a/core/sql/generator/GenExplain.cpp
+++ b/core/sql/generator/GenExplain.cpp
@@ -334,9 +334,9 @@ RelExpr::addExplainInfo(ComTdb * tdb,
break;
double BMOsMemory =
- generator->getTotalBMOsMemoryPerCPU().value() / (1024 * 1024);
+ generator->getTotalBMOsMemoryPerNode().value() / (1024 * 1024);
double nBMOsTotalMemory =
- (generator->getTotalNBMOsMemoryPerCPU()).value() / (1024 * 1024);
+ (generator->getTotalNBMOsMemoryPerNode()).value() / (1024 * 1024);
snprintf(buf, 120, "est_memory_per_node: %.2f(Limit), %.2f(BMOs), %.2f(nBMOs) MB ",
mlimit, BMOsMemory, nBMOsTotalMemory);
fragdescr += buf;
@@ -470,14 +470,8 @@ RelExpr::addExplainInfo(ComTdb * tdb,
explainTuple->setDescription(buf);
}
}
- }
- } else {
- if ( generator->getOperEstimatedMemory() > 0 ) {
- sprintf(buf, "est_memory_per_cpu: %d KB ",
- generator->getOperEstimatedMemory());
- explainTuple->setDescription(buf);
- }
- }
+ }
+ }
//calls virtual subclass-specific function
addSpecificExplainInfo(explainTuple, tdb, generator);
@@ -1426,7 +1420,7 @@ RelRoot::addSpecificExplainInfo(ExplainTupleMaster *explainTuple,
ComTdbRoot *rootTdb = (ComTdbRoot *)tdb;
NADefaults &defs = ActiveSchemaDB()->getDefaults();
- Lng32 mlimit = defs.getAsLong(BMO_MEMORY_LIMIT_PER_NODE);
+ ULng32 mlimit = defs.getAsLong(BMO_MEMORY_LIMIT_PER_NODE);
if (mlimit == 0 && rootTdb->getQueryCostInfo())
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index 5d59a3b..eed8d9d 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -2157,7 +2157,7 @@ RelExpr * RelRoot::preCodeGen(Generator * generator,
// total per node
double m = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) * (1024*1024);
- generator->setBMOsMemoryLimitPerCPU(m);
+ generator->setBMOsMemoryLimitPerNode(m);
}
@@ -6660,6 +6660,7 @@ RelExpr * Sort::preCodeGen(Generator * generator,
numUnblockedHalloweenScansBefore);
}
}
+ topNRows_ = generator->getTopNRows();
return this;
} // Sort::preCodeGen()
@@ -6729,7 +6730,7 @@ RelExpr *ProbeCache::preCodeGen(Generator * generator,
*/
if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
- generator->incrNBMOsMemoryPerCPU(getEstimatedRunTimeMemoryUsage(TRUE));
+ generator->incrNBMOsMemoryPerNode(getEstimatedRunTimeMemoryUsage(TRUE));
markAsPreCodeGenned();
return this;
@@ -7234,7 +7235,7 @@ RelExpr * Exchange::preCodeGen(Generator * generator,
} // isEspExchange() && !eliminateThisExchange
if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
- generator->incrNBMOsMemoryPerCPU(getEstimatedRunTimeMemoryUsage(TRUE));
+ generator->incrNBMOsMemoryPerNode(getEstimatedRunTimeMemoryUsage(TRUE));
return result;
@@ -10818,6 +10819,12 @@ RelExpr * FirstN::preCodeGen(Generator * generator,
if (nodeIsPreCodeGenned())
return this;
+
+ if (getFirstNRows() > 0)
+ generator->setTopNRows(getFirstNRows());
+ else
+ generator->setTopNRows(ActiveSchemaDB()->getDefaults().getAsULong(GEN_SORT_TOPN_THRESHOLD));
+
if (! RelExpr::preCodeGen(generator,externalInputs,pulledNewInputs))
return NULL;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/GenProbeCache.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenProbeCache.cpp b/core/sql/generator/GenProbeCache.cpp
index 63035e9..7e0b150 100644
--- a/core/sql/generator/GenProbeCache.cpp
+++ b/core/sql/generator/GenProbeCache.cpp
@@ -364,14 +364,14 @@ short ProbeCache::codeGen(Generator *generator)
// that there is room enough for one row.
}
- double memoryLimitPerCpu =
+ double memoryLimitPerInstance =
ActiveSchemaDB()->getDefaults().getAsLong(EXE_MEMORY_FOR_PROBE_CACHE_IN_MB) * 1024 * 1024;
double estimatedMemory;
if (numInnerTuples_ > 0) {
estimatedMemory = numInnerTuples_ * innerRecLength;
- if (estimatedMemory > memoryLimitPerCpu) {
- numInnerTuples_ = memoryLimitPerCpu / innerRecLength;
+ if (estimatedMemory > memoryLimitPerInstance) {
+ numInnerTuples_ = memoryLimitPerInstance / innerRecLength;
queue_index pUpSize_calc;
pUpSize_calc = numInnerTuples_ ;
@@ -430,17 +430,10 @@ short ProbeCache::codeGen(Generator *generator)
double probeCacheMemEst = getEstimatedRunTimeMemoryUsage(probeCacheTdb);
generator->addToTotalEstimatedMemory(probeCacheMemEst);
-
+ Lng32 pcMemEstInKBPerNode = getEstimatedRunTimeMemoryUsage(TRUE).value() / 1024;
if(!generator->explainDisabled()) {
- Lng32 pcMemEstInKBPerCPU = (Lng32) (probeCacheMemEst / 1024) ;
- pcMemEstInKBPerCPU = pcMemEstInKBPerCPU/
- (MAXOF(generator->compilerStatsInfo().dop(),1));
- generator->setOperEstimatedMemory(pcMemEstInKBPerCPU );
-
generator->setExplainTuple(
addExplainInfo(probeCacheTdb, childExplainTuple, 0, generator));
-
- generator->setOperEstimatedMemory(0);
}
generator->setCriDesc(returned_desc, Generator::UP);
@@ -472,7 +465,6 @@ CostScalar ProbeCache::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *
// totalMemory is perNode at this point of time.
double totalMemory = cacheSize + outputBufferSize;
-
Lng32 numOfStreams = 1;
const PhysicalProperty* const phyProp = getPhysicalProperty();
if (phyProp)
@@ -481,6 +473,10 @@ CostScalar ProbeCache::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *
numOfStreams = partFunc->getCountOfPartitions();
if (numOfStreams <= 0)
numOfStreams = 1;
+ double memoryLimitPerInstance =
+ ActiveSchemaDB()->getDefaults().getAsLong(EXE_MEMORY_FOR_PROBE_CACHE_IN_MB) * 1024 * 1024;
+ if (totalMemory > memoryLimitPerInstance)
+ totalMemory = memoryLimitPerInstance;
totalMemory *= numOfStreams;
}
if (numStreams != NULL)
@@ -489,11 +485,6 @@ CostScalar ProbeCache::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *
totalMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
else
totalMemory /= numOfStreams;
-
- double memoryLimitPerCpu =
- ActiveSchemaDB()->getDefaults().getAsLong(EXE_MEMORY_FOR_PROBE_CACHE_IN_MB) * 1024 * 1024;
- if (totalMemory > memoryLimitPerCpu)
- totalMemory = memoryLimitPerCpu;
return totalMemory;
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/GenRelEnforcer.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelEnforcer.cpp b/core/sql/generator/GenRelEnforcer.cpp
index 52ff9ed..d6b746d 100644
--- a/core/sql/generator/GenRelEnforcer.cpp
+++ b/core/sql/generator/GenRelEnforcer.cpp
@@ -1036,16 +1036,14 @@ short Exchange::codeGenForESP(Generator * generator)
if(!generator->explainDisabled())
{
- Lng32 sbMemEstInKBPerCPU = (Lng32) ((totalMemoryST + totalMemorySB) / 1024) ;
- sbMemEstInKBPerCPU = sbMemEstInKBPerCPU/
+ Lng32 sbMemEstInKBPerNode = (Lng32) ((totalMemoryST + totalMemorySB) / 1024) ;
+ sbMemEstInKBPerNode = sbMemEstInKBPerNode/
(MAXOF(generator->compilerStatsInfo().dop(),1));
- generator->setOperEstimatedMemory(sbMemEstInKBPerCPU);
generator->setExplainTuple(
addExplainInfo(splitBottom, childExplainTuple, 0, generator));
sendBottom->setExplainNodeId(generator->getExplainNodeId());
- generator->setOperEstimatedMemory(0);
}
// ExplainTuple *sendBotExplain =
@@ -1393,11 +1391,6 @@ CostScalar Exchange::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *nu
// split top.
}
-
- const PhysicalProperty* const phyProp = getPhysicalProperty();
- if (phyProp != NULL) {
- memoryRequired = numTopEsps * memoryRequired;
- }
if (numStreams != NULL)
*numStreams = numTopEsps;
if ( perNode == TRUE )
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/GenRelGrby.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelGrby.cpp b/core/sql/generator/GenRelGrby.cpp
index 9f750b0..1af3079 100644
--- a/core/sql/generator/GenRelGrby.cpp
+++ b/core/sql/generator/GenRelGrby.cpp
@@ -1477,6 +1477,8 @@ short HashGroupBy::codeGen(Generator * generator) {
double memQuota = 0;
Lng32 numStreams;
+ double memQuotaRatio;
+ double bmoMemoryUsagePerNode = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
if(isPartialGroupBy) {
// The Quota system does not apply to Partial GroupBy
@@ -1507,38 +1509,35 @@ short HashGroupBy::codeGen(Generator * generator) {
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
- if ( mlimitPerCPU || numBMOsInFrag > 1 ||
+ if ( mlimitPerNode || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
- double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
memQuota =
computeMemoryQuota(generator->getEspLevel() == 0,
- mlimitPerCPU,
- generator->getBMOsMemoryLimitPerCPU().value(),
- //generator->getTotalNumBMOsPerCPU(),
+ mlimitPerNode,
+ generator->getBMOsMemoryLimitPerNode().value(),
generator->getTotalNumBMOs(),
- generator->getTotalBMOsMemoryPerCPU().value(),
+ generator->getTotalBMOsMemoryPerNode().value(),
numBMOsInFrag,
- bmoMemoryUsage,
- numStreams
+ bmoMemoryUsagePerNode,
+ numStreams,
+ memQuotaRatio
);
-
- Lng32 hjGyMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY);
- Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
-
- if ( memQuota < hjGyMemoryLowbound )
- memQuota = hjGyMemoryLowbound;
- else if (memQuota > memoryUpperbound)
- memQuota = memoryUpperbound;
-
- hashGrbyTdb->setMemoryQuotaMB( UInt16(memQuota) );
}
+ Lng32 hjGyMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
+ if ( memQuota < hjGyMemoryLowbound ) {
+ memQuota = hjGyMemoryLowbound;
+ memQuotaRatio = BMOQuotaRatio::MIN_QUOTA;
+ }
+ else if (memQuota > memoryUpperbound)
+ memQuota = memoryUpperbound;
+
+ hashGrbyTdb->setMemoryQuotaMB( UInt16(memQuota) );
+ hashGrbyTdb->setBmoQuotaRatio(memQuotaRatio);
}
- generator->addToTotalOverflowMemory(
- getEstimatedRunTimeOverflowSize(memQuota)
- );
}
generator->addToTotalOverflowMemory(
@@ -1551,17 +1550,12 @@ short HashGroupBy::codeGen(Generator * generator) {
getAsULong(EXE_TEST_HASH_FORCE_OVERFLOW_EVERY));
double hashGBMemEst = getEstimatedRunTimeMemoryUsage(hashGrbyTdb);
+ hashGrbyTdb->setEstimatedMemoryUsage(hashGBMemEst / 1024);
generator->addToTotalEstimatedMemory(hashGBMemEst);
if ( generator->getRightSideOfFlow() )
hashGrbyTdb->setPossibleMultipleCalls(TRUE);
- Lng32 hgbMemEstInKBPerCPU = (Lng32)(hashGBMemEst / 1024) ;
- hgbMemEstInKBPerCPU = hgbMemEstInKBPerCPU/
- (MAXOF(generator->compilerStatsInfo().dop(),1));
- hashGrbyTdb->setHgbMemEstInMbPerCpu
- ( Float32(MAXOF(hgbMemEstInKBPerCPU/1024,1)) );
-
// For now use variable size records whenever Aligned format is
// used.
if (resizeCifRecord) {//tupleFormat == ExpTupleDesc::SQLMX_ALIGNED_FORMAT) {
@@ -1573,17 +1567,13 @@ short HashGroupBy::codeGen(Generator * generator) {
}
hashGrbyTdb->setCIFON((tupleFormat == ExpTupleDesc::SQLMX_ALIGNED_FORMAT));
- if(!generator->explainDisabled()) {
- generator->setOperEstimatedMemory(hgbMemEstInKBPerCPU);
-
+ hashGrbyTdb->setHgbMemEstInKBPerNode(bmoMemoryUsagePerNode / 1024 );
+ if (!generator->explainDisabled()) {
generator->setExplainTuple(
addExplainInfo(hashGrbyTdb, childExplainTuple, 0, generator));
- generator->setOperEstimatedMemory(0);
}
-
-
// set the new up cri desc.
generator->setCriDesc(returnedDesc, Generator::UP);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/GenRelJoin.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelJoin.cpp b/core/sql/generator/GenRelJoin.cpp
index 5c3617b..b8cde84 100644
--- a/core/sql/generator/GenRelJoin.cpp
+++ b/core/sql/generator/GenRelJoin.cpp
@@ -1784,7 +1784,9 @@ short HashJoin::codeGen(Generator * generator) {
UInt16 numBMOsInFrag = (UInt16)generator->getFragmentDir()->getNumBMOs();
double memQuota = 0;
+ double memQuotaRatio;
Lng32 numStreams;
+ double bmoMemoryUsagePerNode = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
if (mmu != 0) {
memQuota = mmu;
hashj_tdb->setMemoryQuotaMB(mmu);
@@ -1792,32 +1794,34 @@ short HashJoin::codeGen(Generator * generator) {
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
- if ( mlimitPerCPU || numBMOsInFrag > 1 ||
+ if ( mlimitPerNode || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
- double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
memQuota =
computeMemoryQuota(generator->getEspLevel() == 0,
- mlimitPerCPU,
- generator->getBMOsMemoryLimitPerCPU().value(),
+ mlimitPerNode,
+ generator->getBMOsMemoryLimitPerNode().value(),
generator->getTotalNumBMOs(),
- generator->getTotalBMOsMemoryPerCPU().value(),
+ generator->getTotalBMOsMemoryPerNode().value(),
numBMOsInFrag,
- bmoMemoryUsage,
- numStreams
+ bmoMemoryUsagePerNode,
+ numStreams,
+ memQuotaRatio
);
-
- Lng32 hjMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN);
- Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
-
- if ( memQuota < hjMemoryLowbound )
- memQuota = hjMemoryLowbound;
- else if (memQuota > memoryUpperbound)
- memQuota = memoryUpperbound;
-
- hashj_tdb->setMemoryQuotaMB( UInt16(memQuota) );
+ }
+ Lng32 hjMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
+
+ if ( memQuota < hjMemoryLowbound ) {
+ memQuota = hjMemoryLowbound;
+ memQuotaRatio = BMOQuotaRatio::MIN_QUOTA;
}
+ else if (memQuota > memoryUpperbound)
+ memQuota = memoryUpperbound;
+ memQuotaRatio = BMOQuotaRatio::MIN_QUOTA;
+ hashj_tdb->setMemoryQuotaMB( UInt16(memQuota) );
+ hashj_tdb->setBmoQuotaRatio(memQuotaRatio);
}
if (beforeJoinPredOnOuterOnly())
@@ -1828,6 +1832,7 @@ short HashJoin::codeGen(Generator * generator) {
);
double hjMemEst = getEstimatedRunTimeMemoryUsage(hashj_tdb);
+ hashj_tdb->setEstimatedMemoryUsage(hjMemEst / 1024);
generator->addToTotalEstimatedMemory(hjMemEst);
if ( generator->getRightSideOfFlow() )
@@ -1845,12 +1850,6 @@ short HashJoin::codeGen(Generator * generator) {
defs.getFloat(BMO_CITIZENSHIP_FACTOR, bmoCtzFactor);
hashj_tdb->setBmoCitizenshipFactor((Float32)bmoCtzFactor);
- Lng32 hjMemEstInKBPerCPU = (Lng32)(hjMemEst / 1024) ;
- hjMemEstInKBPerCPU = hjMemEstInKBPerCPU/
- (MAXOF(generator->compilerStatsInfo().dop(),1));
- hashj_tdb->setHjMemEstInMbPerCpu
- ( Float32(MAXOF(hjMemEstInKBPerCPU/1024,1)) );
-
// For now, use variable for all CIF rows based on resizeCifRecord
if(resizeCifRecord){ //tupleFormat == ExpTupleDesc::SQLMX_ALIGNED_FORMAT) {
@@ -1861,14 +1860,12 @@ short HashJoin::codeGen(Generator * generator) {
}
}
-
- if(!generator->explainDisabled()) {
- generator->setOperEstimatedMemory(hjMemEstInKBPerCPU);
+ hashj_tdb->setHjMemEstInKBPerNode(bmoMemoryUsagePerNode / 1024);
+ if (!generator->explainDisabled()) {
generator->setExplainTuple(
addExplainInfo(hashj_tdb, leftExplainTuple, rightExplainTuple, generator));
- generator->setOperEstimatedMemory(0);
}
hashj_tdb->setReturnRightOrdered( returnRightOrdered() );
@@ -3076,42 +3073,43 @@ short MergeJoin::codeGen(Generator * generator)
double BMOsMemoryLimit = 0;
UInt16 quotaMB = 0;
Lng32 numStreams;
+ double memQuotaRatio;
+ double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
+ NADefaults &defs = ActiveSchemaDB()->getDefaults();
if ( CmpCommon::getDefaultLong(MJ_BMO_QUOTA_PERCENT) != 0)
{
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NADefaults &defs = ActiveSchemaDB()->getDefaults();
- NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
- if ( mlimitPerCPU || numBMOsInFrag > 1 ||
+ if ( mlimitPerNode || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
- double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
quotaMB = (UInt16)
computeMemoryQuota(generator->getEspLevel() == 0,
- mlimitPerCPU,
- generator->getBMOsMemoryLimitPerCPU().value(),
- // generator->getTotalNumBMOsPerCPU(),
+ mlimitPerNode,
+ generator->getBMOsMemoryLimitPerNode().value(),
generator->getTotalNumBMOs(),
- generator->getTotalBMOsMemoryPerCPU().value(),
+ generator->getTotalBMOsMemoryPerNode().value(),
numBMOsInFrag,
bmoMemoryUsage,
- numStreams
+ numStreams,
+ memQuotaRatio
);
+ }
+ Lng32 mjMemoryLowbound = defs.getAsLong(EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
- Lng32 mjMemoryLowbound = defs.getAsLong(EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN);
- Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
-
- if ( quotaMB < mjMemoryLowbound )
- quotaMB = (UInt16)mjMemoryLowbound;
- else if (quotaMB > memoryUpperbound)
- quotaMB = memoryUpperbound;
+ if ( quotaMB < mjMemoryLowbound ) {
+ quotaMB = (UInt16)mjMemoryLowbound;
+ memQuotaRatio = BMOQuotaRatio::MIN_QUOTA;
}
+ else if (quotaMB > memoryUpperbound)
+ quotaMB = memoryUpperbound;
} else {
- Lng32 memoryMB = getExeMemoryAvailable(generator->getEspLevel() == 0);
- quotaMB = (UInt16)( (numBMOsInFrag > 1) ? (memoryMB/numBMOsInFrag) : 0 ) ;
+ Lng32 quotaMB = defs.getAsLong(EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN);
}
@@ -3166,7 +3164,7 @@ short MergeJoin::codeGen(Generator * generator)
}
mj_tdb->setOverflowMode(generator->getOverflowMode());
- if(!generator->explainDisabled()) {
+ if (!generator->explainDisabled()) {
generator->setExplainTuple(
addExplainInfo(mj_tdb, leftExplainTuple, rightExplainTuple, generator));
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/GenRelMisc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelMisc.cpp b/core/sql/generator/GenRelMisc.cpp
index 8a47d39..799d64b 100644
--- a/core/sql/generator/GenRelMisc.cpp
+++ b/core/sql/generator/GenRelMisc.cpp
@@ -1908,15 +1908,13 @@ short RelRoot::codeGen(Generator * generator)
// fragments of the plan that are executed locally or are downloaded
// to DP2 or to ESPs) from the generator's copy <compFragDir> and attach
// it to the root_tdb
- NABoolean fragmentQuotas = CmpCommon::getDefault(ESP_MULTI_FRAGMENT_QUOTAS) == DF_ON;
+ NABoolean fragmentQuotas = CmpCommon::getDefault(ESP_MULTI_FRAGMENTS) == DF_ON;
ExFragDir *exFragDir =
#pragma nowarn(1506) // warning elimination
new(space) ExFragDir(compFragDir->entries(),space,
CmpCommon::getDefault(ESP_MULTI_FRAGMENTS) == DF_ON,
fragmentQuotas,
(UInt16)CmpCommon::getDefaultLong(ESP_MULTI_FRAGMENT_QUOTA_VM),
- fragmentQuotas ?
- (UInt8)CmpCommon::getDefaultLong(ESP_NUM_FRAGMENTS_WITH_QUOTAS) :
(UInt8)CmpCommon::getDefaultLong(ESP_NUM_FRAGMENTS));
#pragma warn(1506) // warning elimination
@@ -2794,7 +2792,7 @@ short RelRoot::codeGen(Generator * generator)
root_tdb->setHiveAccess(TRUE);
root_tdb->setBmoMemoryLimitPerNode(ActiveSchemaDB()->getDefaults().getAsDouble(BMO_MEMORY_LIMIT_PER_NODE));
- root_tdb->setEstBmoMemoryPerNode(generator->getTotalBMOsMemoryPerCPU().value());
+ root_tdb->setEstBmoMemoryPerNode(generator->getTotalBMOsMemoryPerNode().value());
Int32 numSikEntries = securityKeySet_.entries();
if (numSikEntries > 0)
@@ -2913,9 +2911,9 @@ short RelRoot::codeGen(Generator * generator)
// now set the values of the previously allocated directory entry
- NABoolean mlimitPerCPU = CmpCommon::getDefaultLong(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = CmpCommon::getDefaultLong(BMO_MEMORY_LIMIT_PER_NODE) > 0;
UInt16 BMOsMemoryUsage = 0;
- if (mlimitPerCPU == TRUE)
+ if (mlimitPerNode == TRUE)
BMOsMemoryUsage = (UInt16)compFragDir->getBMOsMemoryUsage(i);
else if (compFragDir->getNumBMOs(i) > 1 ||
(compFragDir->getNumBMOs(i) == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON))
@@ -2956,6 +2954,8 @@ short RelRoot::codeGen(Generator * generator)
compilerStatsInfo->bmo() = generator->getTotalNumBMOs();
compilerStatsInfo->queryType() = (Int16)root_tdb->getQueryType();
compilerStatsInfo->subqueryType() = (Int16)root_tdb->getSubqueryType();
+ compilerStatsInfo->bmoMemLimitPerNode() = root_tdb->getBmoMemoryLimitPerNode();
+ compilerStatsInfo->estBmoMemPerNode() = root_tdb->getEstBmoMemoryPerNode();
NADELETEBASIC(partInputDataDescs, generator->wHeap());
NADELETEBASIC(nodeMap, generator->wHeap());
@@ -3102,13 +3102,14 @@ short Sort::generateTdb(Generator * generator,
sort_options->setConsiderBufferDefrag(considerBufferDefrag);
short memoryQuotaMB = 0;
+ double memoryQuotaRatio;
+ Lng32 numStreams;
+ double bmoMemoryUsagePerNode = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
- if(CmpCommon::getDefault(SORT_MEMORY_QUOTA_SYSTEM) != DF_OFF)
+ if (CmpCommon::getDefault(SORT_MEMORY_QUOTA_SYSTEM) != DF_OFF)
{
-
// The CQD EXE_MEM_LIMIT_PER_BMO_IN_MB has precedence over the mem quota sys
memoryQuotaMB = (UInt16)defs.getAsDouble(EXE_MEM_LIMIT_PER_BMO_IN_MB);
- Lng32 numStreams;
if (memoryQuotaMB > 0) {
sort_options->memoryQuotaMB() = memoryQuotaMB;
@@ -3120,34 +3121,35 @@ short Sort::generateTdb(Generator * generator,
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
- if ( mlimitPerCPU || numBMOsInFrag > 1 ) {
+ if ( mlimitPerNode || numBMOsInFrag > 1 ||
+ (numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
- double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
memoryQuotaMB = (short)
computeMemoryQuota(generator->getEspLevel() == 0,
- mlimitPerCPU,
- generator->getBMOsMemoryLimitPerCPU().value(),
- //generator->getTotalNumBMOsPerCPU(),
+ mlimitPerNode,
+ generator->getBMOsMemoryLimitPerNode().value(),
generator->getTotalNumBMOs(),
- generator->getTotalBMOsMemoryPerCPU().value(),
+ generator->getTotalBMOsMemoryPerNode().value(),
numBMOsInFrag,
- bmoMemoryUsage,
- numStreams
+ bmoMemoryUsagePerNode,
+ numStreams,
+ memoryQuotaRatio
);
-
- Lng32 sortMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_SORT);
- Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
+ }
+ Lng32 sortMemoryLowbound = defs.getAsLong(BMO_MEMORY_LIMIT_LOWER_BOUND_SORT);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
- if ( memoryQuotaMB < sortMemoryLowbound )
- memoryQuotaMB = (short)sortMemoryLowbound;
- else if (memoryQuotaMB > memoryUpperbound)
- memoryQuotaMB = memoryUpperbound;
+ if ( memoryQuotaMB < sortMemoryLowbound ) {
+ memoryQuotaMB = (short)sortMemoryLowbound;
+ memoryQuotaRatio = BMOQuotaRatio::MIN_QUOTA;
}
+ else if (memoryQuotaMB > memoryUpperbound)
+ memoryQuotaMB = memoryUpperbound;
}
- }
+ }
//BMO settings. By Default set this value to max available
//irrespective of quota is enabled or disabled. Sort at run time
@@ -3203,6 +3205,7 @@ short Sort::generateTdb(Generator * generator,
sort_tdb->setSortFromTop(sortFromTop());
sort_tdb->setOverflowMode(generator->getOverflowMode());
sort_tdb->setTopNSortEnabled(CmpCommon::getDefault(GEN_SORT_TOPN) == DF_ON);
+ sort_tdb->setBmoQuotaRatio(memoryQuotaRatio);
if (generator->getUserSidetreeInsert())
sort_tdb->setUserSidetreeInsert(TRUE);
@@ -3215,6 +3218,7 @@ short Sort::generateTdb(Generator * generator,
generator->initTdbFields(sort_tdb);
double sortMemEst = getEstimatedRunTimeMemoryUsage(sort_tdb);
+ sort_tdb->setEstimatedMemoryUsage(sortMemEst / 1024);
generator->addToTotalEstimatedMemory(sortMemEst);
generator->addToTotalOverflowMemory(
@@ -3230,21 +3234,12 @@ short Sort::generateTdb(Generator * generator,
float bmoCtzFactor;
defs.getFloat(BMO_CITIZENSHIP_FACTOR, bmoCtzFactor);
sort_tdb->setBmoCitizenshipFactor((Float32)bmoCtzFactor);
-
- //if(!generator->explainDisabled()) {
- Lng32 sortMemEstInKBPerCPU = (Lng32)(sortMemEst / 1024) ;
- sortMemEstInKBPerCPU = sortMemEstInKBPerCPU/
- (MAXOF(generator->compilerStatsInfo().dop(),1));
- sort_tdb->setSortMemEstInMbPerCpu
- ( Float32(MAXOF(sortMemEstInKBPerCPU/1024,1)) );
-
- if(!generator->explainDisabled()) {
- generator->setOperEstimatedMemory(sortMemEstInKBPerCPU );
-
+ sort_tdb->setSortMemEstInKBPerNode(bmoMemoryUsagePerNode /1024);
+ if (sortNRows())
+ sort_tdb->setTopNThreshold(defs.getAsLong(GEN_SORT_TOPN_THRESHOLD));
+ if (!generator->explainDisabled()) {
generator->setExplainTuple(
addExplainInfo(sort_tdb, childExplainTuple, 0, generator));
-
- generator->setOperEstimatedMemory(0);
}
// set the new up cri desc.
@@ -3936,7 +3931,13 @@ CostScalar Sort::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStr
GroupAttributes * childGroupAttr = child(0).getGroupAttr();
Lng32 childRecordSize =
childGroupAttr->getCharacteristicOutputs().getRowLength();
- CostScalar totalMemory = getEstRowsUsed() * childRecordSize;
+ CostScalar rowsUsed;
+ if (sortNRows() && (topNRows_ > 0)
+ && (topNRows_ <= getDefault(GEN_SORT_TOPN_THRESHOLD)))
+ rowsUsed = topNRows_;
+ else
+ rowsUsed = getEstRowsUsed();
+ CostScalar totalMemory = rowsUsed * childRecordSize;
Lng32 numOfStreams = 1;
const PhysicalProperty* const phyProp = getPhysicalProperty();
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/GenRelSequence.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelSequence.cpp b/core/sql/generator/GenRelSequence.cpp
index 4522344..b00aa95 100644
--- a/core/sql/generator/GenRelSequence.cpp
+++ b/core/sql/generator/GenRelSequence.cpp
@@ -781,7 +781,7 @@ RelExpr * PhysSequence::preCodeGen(Generator * generator,
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
}
else
- generator->incrNBMOsMemoryPerCPU(getEstimatedRunTimeMemoryUsage(TRUE));
+ generator->incrNBMOsMemoryPerNode(getEstimatedRunTimeMemoryUsage(TRUE));
markAsPreCodeGenned();
@@ -1088,18 +1088,11 @@ PhysSequence::codeGen(Generator *generator)
generator->addToTotalEstimatedMemory(sequenceMemEst);
if(!generator->explainDisabled()) {
- Lng32 seqMemEstInKBPerCPU = (Lng32)(sequenceMemEst / 1024) ;
- seqMemEstInKBPerCPU = seqMemEstInKBPerCPU/
- (MAXOF(generator->compilerStatsInfo().dop(),1));
- generator->setOperEstimatedMemory(seqMemEstInKBPerCPU);
-
generator->
setExplainTuple(addExplainInfo(sequenceTdb,
childExplainTuple,
0,
generator));
-
- generator->setOperEstimatedMemory(0);
}
sequenceTdb->setScratchIOVectorSize((Int16)getDefault(SCRATCH_IO_VECTOR_SIZE_HASH));
@@ -1121,31 +1114,41 @@ PhysSequence::codeGen(Generator *generator)
UInt16 mmu = (UInt16)(defs.getAsDouble(EXE_MEM_LIMIT_PER_BMO_IN_MB));
UInt16 numBMOsInFrag = (UInt16)generator->getFragmentDir()->getNumBMOs();
Lng32 numStreams;
+ double bmoMemoryUsagePerNode = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
+ double memQuota = 0;
+ double memQuotaRatio;
if (mmu != 0)
sequenceTdb->setMemoryQuotaMB(mmu);
else {
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerCPU = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
-
- if ( mlimitPerCPU || numBMOsInFrag > 1 ) {
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
- double bmoMemoryUsage = getEstimatedRunTimeMemoryUsage(TRUE, &numStreams).value();
+ if ( mlimitPerNode || numBMOsInFrag > 1 ) {
double memQuota =
computeMemoryQuota(generator->getEspLevel() == 0,
- mlimitPerCPU,
- generator->getBMOsMemoryLimitPerCPU().value(),
- //generator->getTotalNumBMOsPerCPU(),
+ mlimitPerNode,
+ generator->getBMOsMemoryLimitPerNode().value(),
generator->getTotalNumBMOs(),
- generator->getTotalBMOsMemoryPerCPU().value(),
+ generator->getTotalBMOsMemoryPerNode().value(),
numBMOsInFrag,
- bmoMemoryUsage,
- numStreams
+ bmoMemoryUsagePerNode,
+ numStreams,
+ memQuotaRatio
);
-
- sequenceTdb->setMemoryQuotaMB( UInt16(memQuota) );
}
+ Lng32 seqMemoryLowbound = defs.getAsLong(EXE_MEMORY_LIMIT_LOWER_BOUND_SEQUENCE);
+ Lng32 memoryUpperbound = defs.getAsLong(BMO_MEMORY_LIMIT_UPPER_BOUND);
+
+ if ( memQuota < seqMemoryLowbound ) {
+ memQuota = seqMemoryLowbound;
+ memQuotaRatio = BMOQuotaRatio::MIN_QUOTA;
+ }
+ else if (memQuota > memoryUpperbound)
+ memQuota = memoryUpperbound;
+
+ sequenceTdb->setMemoryQuotaMB( UInt16(memQuota) );
}
generator->setCriDesc(givenCriDesc, Generator::DOWN);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/Generator.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/Generator.cpp b/core/sql/generator/Generator.cpp
index 8e72b60..3f061b8 100644
--- a/core/sql/generator/Generator.cpp
+++ b/core/sql/generator/Generator.cpp
@@ -163,23 +163,23 @@ Generator::Generator(CmpContext* currentCmpContext) :
tempSpace_ = NULL;
numBMOs_ = 0;
- totalNumBMOsPerCPU_ = 0;
+ totalNumBMOsPerNode_ = 0;
BMOsMemoryPerFrag_ = 0;
- totalBMOsMemoryPerCPU_ = 0;
+ totalBMOsMemoryPerNode_ = 0;
- nBMOsMemoryPerCPU_ = 0;
+ nBMOsMemoryPerNode_ = 0;
- BMOsMemoryLimitPerCPU_ = 0;
+ BMOsMemoryLimitPerNode_ = 0;
- totalNumBMOsPerCPU_ = 0;
+ totalNumBMOsPerNode_ = 0;
BMOsMemoryPerFrag_ = 0;
- totalBMOsMemoryPerCPU_ = 0;
+ totalBMOsMemoryPerNode_ = 0;
- nBMOsMemoryPerCPU_ = 0;
+ nBMOsMemoryPerNode_ = 0;
- BMOsMemoryLimitPerCPU_ = 0;
+ BMOsMemoryLimitPerNode_ = 0;
totalNumBMOs_ = 0;
@@ -288,6 +288,7 @@ Generator::Generator(CmpContext* currentCmpContext) :
//
computeStats_ = FALSE;
explainInRms_ = TRUE;
+ topNRows_ = 0;
}
void Generator::initTdbFields(ComTdb *tdb)
@@ -1041,16 +1042,6 @@ Generator::remapESPAllocationAS()
NABoolean cycleSegs = (layersInCycle > 0);
- // Use CQD ESP_NUM_FRAGMENTS_WITH_QUOTAS when the multi-ESP is on. That is
- // we will shift the layers within a SQ node subset <n> times before we
- // advance to next SQ node subset. Here <n> is the value of the cqd
- // ESP_NUM_FRAGMENTS_WITH_QUOTAS. When the layer (or fragment) contains BMOs, then,
- // the layer is counted twice.
- //
- if ( CmpCommon::getDefault(ESP_MULTI_FRAGMENT_QUOTAS) == DF_ON )
- layersInCycle =
- (ActiveSchemaDB()->getDefaults()).getAsLong(ESP_NUM_FRAGMENTS_WITH_QUOTAS);
-
// if shiftESPs TRUE, then shift node map within each segment.
//
NABoolean shiftESPs =
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/generator/Generator.h
----------------------------------------------------------------------
diff --git a/core/sql/generator/Generator.h b/core/sql/generator/Generator.h
index 6764ac5..737feac 100644
--- a/core/sql/generator/Generator.h
+++ b/core/sql/generator/Generator.h
@@ -426,15 +426,15 @@ class Generator : public NABasicObject
// temporary value holder (during pre code gen) for #BMOs in this fragment
unsigned short numBMOs_;
- unsigned short totalNumBMOsPerCPU_; // accumulated # of BMO, per CPU
+ unsigned short totalNumBMOsPerNode_; // accumulated # of BMO, per Node
CostScalar BMOsMemoryPerFrag_; // accumulated BMO memory, per fragment
- CostScalar totalBMOsMemoryPerCPU_; // accumulated BMO memory, per CPU
+ CostScalar totalBMOsMemoryPerNode_; // accumulated BMO memory, per Node
- CostScalar nBMOsMemoryPerCPU_; // accumulated nBMO memory, per CPU
+ CostScalar nBMOsMemoryPerNode_; // accumulated nBMO memory, per Node
- // BMO memory limit per CPU
- CostScalar BMOsMemoryLimitPerCPU_;
+ // BMO memory limit per Node
+ CostScalar BMOsMemoryLimitPerNode_;
// Total number of BMOs in the query
unsigned short totalNumBMOs_;
@@ -561,7 +561,7 @@ private:
// estimated memory for an individual operator. Used by Explain
// set to 0 after Explain has been called so that next operator
- // can used this field. In KB and on a per CPU basis.
+ // can used this field. In KB and on a per Node basis.
Lng32 operEstimatedMemory_ ;
Int16 maxCpuUsage_ ;
@@ -604,6 +604,8 @@ private:
char NExLogPathNam_[1024] ; // Only 1 needed, so we put it in Generator object
LIST(CifAvgVarCharSizeCache) avgVarCharSizeList_;
+
+ UInt32 topNRows_;
//LIST(double) avgVarCharSizeValList_;
void addCifAvgVarCharSizeToCache( ValueId vid, double size)
{
@@ -1462,7 +1464,7 @@ public:
inline CostScalar getBMOsMemory() { return BMOsMemoryPerFrag_; }
inline void incrBMOsMemory(CostScalar x)
- { incrBMOsMemoryPerFrag(x); totalBMOsMemoryPerCPU_ += x; }
+ { incrBMOsMemoryPerFrag(x); totalBMOsMemoryPerNode_ += x; }
inline void incrBMOsMemoryPerFrag(CostScalar x)
{ BMOsMemoryPerFrag_ += x; }
@@ -1473,11 +1475,11 @@ public:
BMOsMemoryPerFrag_ = newVal;
return retVal;
}
- inline CostScalar getTotalBMOsMemoryPerCPU()
- { return totalBMOsMemoryPerCPU_; }
+ inline CostScalar getTotalBMOsMemoryPerNode()
+ { return totalBMOsMemoryPerNode_; }
inline void incrNumBMOs()
- { incrNumBMOsPerFrag(1); totalNumBMOsPerCPU_++; totalNumBMOs_++;}
+ { incrNumBMOsPerFrag(1); totalNumBMOsPerNode_++; totalNumBMOs_++;}
inline void incrNumBMOsPerFrag(UInt32 x) { numBMOs_ += x; }
@@ -1487,15 +1489,15 @@ public:
numBMOs_ = newVal;
return retVal;
}
- inline unsigned short getTotalNumBMOsPerCPU() { return totalNumBMOsPerCPU_; }
+ inline unsigned short getTotalNumBMOsPerNode() { return totalNumBMOsPerNode_; }
- inline CostScalar getTotalNBMOsMemoryPerCPU() { return nBMOsMemoryPerCPU_; }
- inline void incrNBMOsMemoryPerCPU(CostScalar x) { nBMOsMemoryPerCPU_ += x; }
+ inline CostScalar getTotalNBMOsMemoryPerNode() { return nBMOsMemoryPerNode_; }
+ inline void incrNBMOsMemoryPerNode(CostScalar x) { nBMOsMemoryPerNode_ += x; }
- inline void setBMOsMemoryLimitPerCPU(CostScalar x)
- { BMOsMemoryLimitPerCPU_ = x; }
+ inline void setBMOsMemoryLimitPerNode(CostScalar x)
+ { BMOsMemoryLimitPerNode_ = x; }
- inline CostScalar getBMOsMemoryLimitPerCPU() { return BMOsMemoryLimitPerCPU_; }
+ inline CostScalar getBMOsMemoryLimitPerNode() { return BMOsMemoryLimitPerNode_; }
inline unsigned short getTotalNumBMOs() { return totalNumBMOs_; }
@@ -1608,9 +1610,6 @@ public:
inline void addToTotalOverflowMemory(double val)
{totalOverflowMemory_ += val;}
- inline Lng32 getOperEstimatedMemory(){return operEstimatedMemory_;}
- inline void setOperEstimatedMemory(Lng32 val){operEstimatedMemory_ = val;}
-
inline ComTdb::OverflowModeType getOverflowMode() {return overflowMode_; }
// Each of these two mutators return the old value
@@ -1691,6 +1690,10 @@ public:
}
return snapshotScanTmpLocation_;
}
+ inline void setTopNRows(ULng32 topNRows)
+ { topNRows_ = topNRows; }
+ inline ULng32 getTopNRows() { return topNRows_; }
+
}; // class Generator
#pragma warn(1506) // warning elimination
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/optimizer/RelEnforcer.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelEnforcer.h b/core/sql/optimizer/RelEnforcer.h
index 8fc705c..e6ebc12 100644
--- a/core/sql/optimizer/RelEnforcer.h
+++ b/core/sql/optimizer/RelEnforcer.h
@@ -107,6 +107,7 @@ public:
CollHeap *oHeap = CmpCommon::statementHeap()) :
RelExpr(REL_SORT,child,NULL,oHeap),
sortNRows_(FALSE),
+ topNRows_(0),
collectNFErrors_(FALSE),
forcedHalloweenProtection_(FALSE),
checkAccessToSelfRefTable_(FALSE)
@@ -117,6 +118,7 @@ public:
RelExpr(REL_SORT,child, NULL, oHeap),
sortKey_(sortKey),
sortNRows_(FALSE),
+ topNRows_(0),
collectNFErrors_(FALSE),
forcedHalloweenProtection_(FALSE),
checkAccessToSelfRefTable_(FALSE)
@@ -126,6 +128,7 @@ public:
RelExpr(REL_SORT,child),
arrangedCols_(arrangedCols),
sortNRows_(FALSE),
+ topNRows_(0),
forcedHalloweenProtection_(FALSE),
checkAccessToSelfRefTable_(FALSE),
collectNFErrors_(FALSE)
@@ -234,6 +237,8 @@ protected:
NABoolean collectNFErrors_;
+ ULng32 topNRows_;
+
short generateTdb(Generator * generator,
ComTdb * child_tdb,
ex_expr * sortKeyExpr,
[13/15] incubator-trafodion git commit: [TRAFODION-2733] Provide an
improved memory quota assignment for big memory operators (BMO)
Posted by se...@apache.org.
[TRAFODION-2733] Provide an improved memory quota assignment for big memory operators (BMO)
Changes as per review
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/14d66a94
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/14d66a94
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/14d66a94
Branch: refs/heads/master
Commit: 14d66a941462293b6dbb7a9fccb7205691c56226
Parents: fd3275c
Author: selvaganesang <se...@esgyn.com>
Authored: Wed Sep 13 18:34:24 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Wed Sep 13 18:34:24 2017 +0000
----------------------------------------------------------------------
core/sql/cli/Globals.cpp | 4 ++--
core/sql/comexe/ComTdbSort.h | 4 ++--
core/sql/generator/GenExplain.cpp | 4 ++--
core/sql/generator/GenPreCode.cpp | 12 ++++++------
core/sql/generator/GenProbeCache.cpp | 2 +-
core/sql/generator/GenRelEnforcer.cpp | 2 +-
core/sql/generator/GenRelGrby.cpp | 4 ++--
core/sql/generator/GenRelJoin.cpp | 6 +++---
core/sql/generator/GenRelMisc.cpp | 8 ++++----
core/sql/generator/GenRelSequence.cpp | 6 +++---
core/sql/optimizer/RelExpr.cpp | 6 +-----
core/sql/sqlcomp/DefaultConstants.h | 4 ++--
core/sql/sqlcomp/nadefaults.cpp | 2 +-
13 files changed, 30 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/cli/Globals.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Globals.cpp b/core/sql/cli/Globals.cpp
index ed4cbeb..b65d306 100644
--- a/core/sql/cli/Globals.cpp
+++ b/core/sql/cli/Globals.cpp
@@ -1103,8 +1103,8 @@ void CliGlobals::deleteContexts()
// The unused BMO memory quota can now be utilized by the other
// BMO instances from the same or different fragment
// In case of ESP process, the unused memory quota is maintained
-// at the defaultContext. In case of master process, the ununsed
-// memory quota is maintained in the context of the connection
+// at the default context. In case of master process, the ununsed
+// memory quota is maintained in statement globals
NABoolean CliGlobals::grabMemoryQuotaIfAvailable(ULng32 size)
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/comexe/ComTdbSort.h
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbSort.h b/core/sql/comexe/ComTdbSort.h
index 28e772e..1e43ce0 100644
--- a/core/sql/comexe/ComTdbSort.h
+++ b/core/sql/comexe/ComTdbSort.h
@@ -208,8 +208,8 @@ protected:
char filler_1[2]; // 78-79
Int32 topNThreshold_; // 80-83
Float32 estMemoryUsage_; // 84-87
- Float32 bmoQuotaRatio_; // 88-92
- char fillersComTdbSort_[4]; // 93-96
+ Float32 bmoQuotaRatio_; // 88-91
+ char fillersComTdbSort_[4]; // 92-95
public:
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/generator/GenExplain.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenExplain.cpp b/core/sql/generator/GenExplain.cpp
index 25635d4..4cc0a0d 100644
--- a/core/sql/generator/GenExplain.cpp
+++ b/core/sql/generator/GenExplain.cpp
@@ -320,7 +320,7 @@ RelExpr::addExplainInfo(ComTdb * tdb,
NAString fragdescr;
NADefaults &defs = ActiveSchemaDB()->getDefaults();
- double mlimit = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE);
+ double mlimit = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB);
double quotaPerBMO = defs.getAsDouble(EXE_MEM_LIMIT_PER_BMO_IN_MB);
const char * memory_quota_str = "memory_quota_per_instance: %d MB " ;
@@ -1420,7 +1420,7 @@ RelRoot::addSpecificExplainInfo(ExplainTupleMaster *explainTuple,
ComTdbRoot *rootTdb = (ComTdbRoot *)tdb;
NADefaults &defs = ActiveSchemaDB()->getDefaults();
- ULng32 mlimit = defs.getAsLong(BMO_MEMORY_LIMIT_PER_NODE);
+ ULng32 mlimit = defs.getAsLong(BMO_MEMORY_LIMIT_PER_NODE_IN_MB);
if (mlimit == 0 && rootTdb->getQueryCostInfo())
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index eed8d9d..84edc29 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -2155,7 +2155,7 @@ RelExpr * RelRoot::preCodeGen(Generator * generator,
NADefaults &defs = ActiveSchemaDB()->getDefaults();
// total per node
- double m = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) * (1024*1024);
+ double m = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) * (1024*1024);
generator->setBMOsMemoryLimitPerNode(m);
@@ -3733,7 +3733,7 @@ RelExpr * HashJoin::preCodeGen(Generator * generator,
// Count this BMO and add its needed memory to the total needed
generator->incrNumBMOs();
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0)
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
@@ -5983,7 +5983,7 @@ RelExpr * GroupByAgg::preCodeGen(Generator * generator,
// Count this BMO and add its needed memory to the total needed
generator->incrNumBMOs();
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0)
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
}
@@ -6626,7 +6626,7 @@ RelExpr * Sort::preCodeGen(Generator * generator,
if (CmpCommon::getDefault(SORT_MEMORY_QUOTA_SYSTEM) != DF_OFF) {
generator->incrNumBMOs();
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0)
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
}
}
@@ -6729,7 +6729,7 @@ RelExpr *ProbeCache::preCodeGen(Generator * generator,
generator->incrNumBMOs();
*/
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0)
generator->incrNBMOsMemoryPerNode(getEstimatedRunTimeMemoryUsage(TRUE));
markAsPreCodeGenned();
@@ -7234,7 +7234,7 @@ RelExpr * Exchange::preCodeGen(Generator * generator,
} // isEspExchange() && !eliminateThisExchange
- if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
+ if ((ActiveSchemaDB()->getDefaults()).getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0)
generator->incrNBMOsMemoryPerNode(getEstimatedRunTimeMemoryUsage(TRUE));
return result;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/generator/GenProbeCache.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenProbeCache.cpp b/core/sql/generator/GenProbeCache.cpp
index 7e0b150..e6c6d41 100644
--- a/core/sql/generator/GenProbeCache.cpp
+++ b/core/sql/generator/GenProbeCache.cpp
@@ -481,7 +481,7 @@ CostScalar ProbeCache::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *
}
if (numStreams != NULL)
*numStreams = numOfStreams;
- if ( perNode == TRUE )
+ if (perNode)
totalMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
else
totalMemory /= numOfStreams;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/generator/GenRelEnforcer.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelEnforcer.cpp b/core/sql/generator/GenRelEnforcer.cpp
index d6b746d..cd28ed0 100644
--- a/core/sql/generator/GenRelEnforcer.cpp
+++ b/core/sql/generator/GenRelEnforcer.cpp
@@ -1393,7 +1393,7 @@ CostScalar Exchange::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *nu
if (numStreams != NULL)
*numStreams = numTopEsps;
- if ( perNode == TRUE )
+ if (perNode)
memoryRequired /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numTopEsps);
else
memoryRequired /= numTopEsps;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/generator/GenRelGrby.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelGrby.cpp b/core/sql/generator/GenRelGrby.cpp
index 1af3079..6af554e 100644
--- a/core/sql/generator/GenRelGrby.cpp
+++ b/core/sql/generator/GenRelGrby.cpp
@@ -1509,7 +1509,7 @@ short HashGroupBy::codeGen(Generator * generator) {
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0;
if ( mlimitPerNode || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
@@ -1651,7 +1651,7 @@ CostScalar HashGroupBy::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32
}
if (numStreams != NULL)
*numStreams = numOfStreams;
- if ( perNode == TRUE )
+ if (perNode)
totalHashTableMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
else
totalHashTableMemory /= numOfStreams;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/generator/GenRelJoin.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelJoin.cpp b/core/sql/generator/GenRelJoin.cpp
index b8cde84..0bf75b2 100644
--- a/core/sql/generator/GenRelJoin.cpp
+++ b/core/sql/generator/GenRelJoin.cpp
@@ -1794,7 +1794,7 @@ short HashJoin::codeGen(Generator * generator) {
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0;
if ( mlimitPerNode || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
@@ -2091,7 +2091,7 @@ CostScalar HashJoin::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *nu
}
if (numStreams != NULL)
*numStreams = numOfStreams;
- if ( perNode == TRUE )
+ if (perNode)
totalHashTableMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
else
totalHashTableMemory /= numOfStreams;
@@ -3082,7 +3082,7 @@ short MergeJoin::codeGen(Generator * generator)
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0;
if ( mlimitPerNode || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/generator/GenRelMisc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelMisc.cpp b/core/sql/generator/GenRelMisc.cpp
index 799d64b..c429ebe 100644
--- a/core/sql/generator/GenRelMisc.cpp
+++ b/core/sql/generator/GenRelMisc.cpp
@@ -2791,7 +2791,7 @@ short RelRoot::codeGen(Generator * generator)
if(generator->hiveAccess())
root_tdb->setHiveAccess(TRUE);
- root_tdb->setBmoMemoryLimitPerNode(ActiveSchemaDB()->getDefaults().getAsDouble(BMO_MEMORY_LIMIT_PER_NODE));
+ root_tdb->setBmoMemoryLimitPerNode(ActiveSchemaDB()->getDefaults().getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB));
root_tdb->setEstBmoMemoryPerNode(generator->getTotalBMOsMemoryPerNode().value());
Int32 numSikEntries = securityKeySet_.entries();
@@ -2911,7 +2911,7 @@ short RelRoot::codeGen(Generator * generator)
// now set the values of the previously allocated directory entry
- NABoolean mlimitPerNode = CmpCommon::getDefaultLong(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = CmpCommon::getDefaultLong(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0;
UInt16 BMOsMemoryUsage = 0;
if (mlimitPerNode == TRUE)
BMOsMemoryUsage = (UInt16)compFragDir->getBMOsMemoryUsage(i);
@@ -3121,7 +3121,7 @@ short Sort::generateTdb(Generator * generator,
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0;
if ( mlimitPerNode || numBMOsInFrag > 1 ||
(numBMOsInFrag == 1 && CmpCommon::getDefault(EXE_SINGLE_BMO_QUOTA) == DF_ON)) {
@@ -3950,7 +3950,7 @@ CostScalar Sort::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32 *numStr
}
if (numStreams != NULL)
*numStreams = numOfStreams;
- if ( perNode == TRUE )
+ if (perNode)
totalMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
else
totalMemory /= numOfStreams;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/generator/GenRelSequence.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelSequence.cpp b/core/sql/generator/GenRelSequence.cpp
index b00aa95..8b7086d 100644
--- a/core/sql/generator/GenRelSequence.cpp
+++ b/core/sql/generator/GenRelSequence.cpp
@@ -777,7 +777,7 @@ RelExpr * PhysSequence::preCodeGen(Generator * generator,
generator->incrNumBMOs();
if ((ActiveSchemaDB()->getDefaults()).
- getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0)
+ getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0)
generator->incrBMOsMemory(getEstimatedRunTimeMemoryUsage(TRUE));
}
else
@@ -1123,7 +1123,7 @@ PhysSequence::codeGen(Generator *generator)
// Apply quota system if either one the following two is true:
// 1. the memory limit feature is turned off and more than one BMOs
// 2. the memory limit feature is turned on
- NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE) > 0;
+ NABoolean mlimitPerNode = defs.getAsDouble(BMO_MEMORY_LIMIT_PER_NODE_IN_MB) > 0;
if ( mlimitPerNode || numBMOsInFrag > 1 ) {
double memQuota =
@@ -1322,7 +1322,7 @@ CostScalar PhysSequence::getEstimatedRunTimeMemoryUsage(NABoolean perNode, Lng32
}
if (numStreams != NULL)
*numStreams = numOfStreams;
- if ( perNode == TRUE )
+ if (perNode)
totalMemory /= MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numOfStreams);
else
totalMemory /= numOfStreams;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/optimizer/RelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExpr.cpp b/core/sql/optimizer/RelExpr.cpp
index fa785a3..6087a96 100644
--- a/core/sql/optimizer/RelExpr.cpp
+++ b/core/sql/optimizer/RelExpr.cpp
@@ -2009,11 +2009,6 @@ double RelExpr::computeMemoryQuota(NABoolean inMaster,
// The ratio can be capped by the CQD
double equalQuotaShareRatio = 0;
equalQuotaShareRatio = ActiveSchemaDB()->getDefaults().getAsDouble(BMO_MEMORY_EQUAL_QUOTA_SHARE_RATIO);
-/*
- char *equalQuotaShareRatioStr = getenv("BMO_MEMORY_EQUAL_QUOTA_SHARE_RATIO");
- if (equalQuotaShareRatioStr != NULL)
- equalQuotaShareRatio = atof(equalQuotaShareRatioStr);
-*/
double constMemQuota = 0;
double variableMemLimit = exeMem;
if (equalQuotaShareRatio > 0 && totalNumBMOs > 1) {
@@ -2027,6 +2022,7 @@ double RelExpr::computeMemoryQuota(NABoolean inMaster,
if (capMemoryRatio > 0 && capMemoryRatio <=1 && bmoMemoryRatio > capMemoryRatio)
bmoMemoryRatio = capMemoryRatio;
}
+ bmoQuotaRatio = bmoMemoryRatio;
double bmoMemoryQuotaPerNode = constMemQuota + (variableMemLimit * bmoMemoryRatio);
double numInstancesPerNode = numStreams / MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numStreams);
double bmoMemoryQuotaPerInstance = bmoMemoryQuotaPerNode / numInstancesPerNode;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h
index 49e048a..ac4eb33 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -2889,7 +2889,7 @@ enum DefaultConstants
// Total mem size (MB) for a query
- BMO_MEMORY_LIMIT_PER_NODE,
+ BMO_MEMORY_LIMIT_PER_NODE_IN_MB,
// lower-bound memory limit for BMOs
BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN,
@@ -3883,7 +3883,7 @@ enum DefaultConstants
// Threshold when TOPN sort becomes a regular sort
GEN_SORT_TOPN_THRESHOLD,
- // Ratio of BMO_MEMORY_LIMIT_PER_NODE that will be divided
+ // Ratio of BMO_MEMORY_LIMIT_PER_NODE_IN_MB that will be divided
// equally across all BMO operators
BMO_MEMORY_EQUAL_QUOTA_SHARE_RATIO,
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/14d66a94/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index e921931..42548bf 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -466,7 +466,7 @@ SDDkwd__(ALLOW_DP2_ROW_SAMPLING, "SYSTEM"),
DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY , "25"),
DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN, "25"),
DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_SORT , "200"),
- XDDui___(BMO_MEMORY_LIMIT_PER_NODE, "10240"),
+ XDDui___(BMO_MEMORY_LIMIT_PER_NODE_IN_MB, "10240"),
DDui___(BMO_MEMORY_LIMIT_UPPER_BOUND, "1200"),
DDui1__(BMO_MEMORY_SIZE, "204800"),
[04/15] incubator-trafodion git commit: Following changes are done in
BMO memory quota
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/00e3b874/core/sql/regress/hive/EXPECTED030
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/EXPECTED030 b/core/sql/regress/hive/EXPECTED030
new file mode 100644
index 0000000..7539f28
--- /dev/null
+++ b/core/sql/regress/hive/EXPECTED030
@@ -0,0 +1,2636 @@
+>>obey TEST030(setup);
+>>--------------------------------------------------------------------------
+>>
+>>set schema hive.hive;
+
+--- SQL operation complete.
+>>cqd HIVE_MAX_STRING_LENGTH '20' ;
+
+--- SQL operation complete.
+>>cqd mode_seahive 'ON';
+
+--- SQL operation complete.
+>>cqd traf_enable_orc_format 'ON';
+
+--- SQL operation complete.
+>>cqd HIST_ROWCOUNT_REQUIRING_STATS '50000';
+
+--- SQL operation complete.
+>>cqd hive_use_ext_table_attrs 'ON';
+
+--- SQL operation complete.
+>>cqd hist_missing_stats_warning_level '0';
+
+--- SQL operation complete.
+>>cqd ORC_NJS_PROBES_THRESHOLD '1000000';
+
+--- SQL operation complete.
+>>cqd HIVE_MIN_NUM_ESPS_PER_DATANODE '0';
+
+--- SQL operation complete.
+>>
+>>prepare explainIt from
++> select substring(cast(SEQ_NUM+100 as char(3)),2,2) s,
++> substring(operator,1,16) operator,
++> cast(LEFT_CHILD_SEQ_NUM as char(2)) lc,
++> cast(RIGHT_CHILD_SEQ_NUM as char(2)) rc,
++> substring
++> (substring(substring(tname from (1+locate('.',tname))),1,case locate(')',tname) when 0 then 0 else locate(')',substring(tname from (1+locate('.',tname))))-1 end),
++> (locate('.',substring(tname from (1+locate('.',tname)))))+1,
++> 10
++> ) tab_name
++> from table (explain(NULL,'XX'))
++> order by 1 desc;
+
+--- SQL command prepared.
+>>
+>>obey TEST030(tests);
+>>--------------------------------------------------------------------------
+>>-- ORC file metadata info
+>>invoke hive.hive.store_orc;
+
+-- Definition of hive table STORE_ORC
+-- Definition current Thu Mar 16 02:23:43 2017
+
+ (
+ S_STORE_SK INT
+ , S_STORE_ID VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_REC_START_DATE DATE
+ , S_REC_END_DATE DATE
+ , S_CLOSED_DATE_SK INT
+ , S_STORE_NAME VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_NUMBER_EMPLOYEES INT
+ , S_FLOOR_SPACE INT
+ , S_HOURS VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_MANAGER VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_MARKET_ID INT
+ , S_GEOGRAPHY_CLASS VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_MARKET_DESC VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_MARKET_MANAGER VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_DIVISION_ID INT
+ , S_DIVISION_NAME VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_COMPANY_ID INT
+ , S_COMPANY_NAME VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_STREET_NUMBER VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_STREET_NAME VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_STREET_TYPE VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_SUITE_NUMBER VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_CITY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_COUNTY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_STATE VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_ZIP VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_COUNTRY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , S_GMT_OFFSET REAL
+ , S_TAX_PRECENTAGE REAL
+ )
+ /* stored as orc */
+
+--- SQL operation complete.
+>>
+>>-- select one row from ORC table
+>>select [first 1] * from hive.hive.store_orc;
+
+S_STORE_SK S_STORE_ID S_REC_START_DATE S_REC_END_DATE S_CLOSED_DATE_SK S_STORE_NAME S_NUMBER_EMPLOYEES S_FLOOR_SPACE S_HOURS S_MANAGER S_MARKET_ID S_GEOGRAPHY_CLASS S_MARKET_DESC S_MARKET_MANAGER S_DIVISION_ID S_DIVISION_NAME S_COMPANY_ID S_COMPANY_NAME S_STREET_NUMBER S_STREET_NAME S_STREET_TYPE S_SUITE_NUMBER S_CITY S_COUNTY S_STATE S_ZIP S_COUNTRY S_GMT_OFFSET S_TAX_PRECENTAGE
+----------- -------------------- ---------------- -------------- ---------------- -------------------- ------------------ ------------- -------------------- -------------------- ----------- -------------------- -------------------- -------------------- ------------- -------------------- ------------ -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------- ----------------
+
+ 1 AAAAAAAABAAAAAAA 1997-03-13 ? 2451189 ought 245 5250760 8AM-4PM William Ward 2 Unknown Enough high areas st Charles Bartley 1 Unknown 1 Unknown 767 Spring Wy Suite 250 Midway Williamson County TN 31904 United States -5.0000000E+000 2.9999999E-002
+
+--- 1 row(s) selected.
+>>
+>>-- select all rows from ORC table
+>>select * from hive.hive.store_orc order by s_store_sk;
+
+S_STORE_SK S_STORE_ID S_REC_START_DATE S_REC_END_DATE S_CLOSED_DATE_SK S_STORE_NAME S_NUMBER_EMPLOYEES S_FLOOR_SPACE S_HOURS S_MANAGER S_MARKET_ID S_GEOGRAPHY_CLASS S_MARKET_DESC S_MARKET_MANAGER S_DIVISION_ID S_DIVISION_NAME S_COMPANY_ID S_COMPANY_NAME S_STREET_NUMBER S_STREET_NAME S_STREET_TYPE S_SUITE_NUMBER S_CITY S_COUNTY S_STATE S_ZIP S_COUNTRY S_GMT_OFFSET S_TAX_PRECENTAGE
+----------- -------------------- ---------------- -------------- ---------------- -------------------- ------------------ ------------- -------------------- -------------------- ----------- -------------------- -------------------- -------------------- ------------- -------------------- ------------ -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------- ----------------
+
+ 1 AAAAAAAABAAAAAAA 1997-03-13 ? 2451189 ought 245 5250760 8AM-4PM William Ward 2 Unknown Enough high areas st Charles Bartley 1 Unknown 1 Unknown 767 Spring Wy Suite 250 Midway Williamson County TN 31904 United States -5.0000000E+000 2.9999999E-002
+ 2 AAAAAAAACAAAAAAA 1997-03-13 2000-03-12 ? able 236 5285950 8AM-4PM Scott Smith 8 Unknown Parliamentary candid David Lamontagne 1 Unknown 1 Unknown 255 Sycamore Dr. Suite 410 Midway Williamson County TN 31904 United States -5.0000000E+000 2.9999999E-002
+ 3 AAAAAAAACAAAAAAA 2000-03-13 ? ? able 236 7557959 8AM-4PM Scott Smith 7 Unknown Impossible, true arm David Lamontagne 1 Unknown 1 Unknown 877 Park Laurel Road Suite T Midway Williamson County TN 31904 United States -5.0000000E+000 2.9999999E-002
+ 4 AAAAAAAAEAAAAAAA 1997-03-13 1999-03-13 2451044 ese 218 9341467 8AM-4PM Edwin Adams 4 Unknown Events would achieve Thomas Pollack 1 Unknown 1 Unknown 27 Lake Ln Suite 260 Midway Williamson County TN 31904 United States -5.0000000E+000 2.9999999E-002
+ 5 AAAAAAAAEAAAAAAA 1999-03-14 2001-03-12 2450910 anti 288 9078805 8AM-4PM Edwin Adams 8 Unknown Events would achieve Thomas Pollack 1 Unknown 1 Unknown 27 Lee 6th Court Suite 80 Fairview Williamson County TN 35709 United States -5.0000000E+000 2.9999999E-002
+ 6 AAAAAAAAEAAAAAAA 2001-03-13 ? ? cally 229 9026222 8AM-4PM Edwin Adams 10 Unknown Events would achieve Thomas Pollack 1 Unknown 1 Unknown 220 6th Lane Suite 140 Midway Williamson County TN 31904 United States -5.0000000E+000 2.9999999E-002
+ 7 AAAAAAAAHAAAAAAA 1997-03-13 ? ? ation 297 8954883 8AM-4PM David Thomas 9 Unknown Architects coul Thomas Benton 1 Unknown 1 Unknown 811 Lee Circle Suite T Midway Williamson County TN 31904 United States -5.0000000E+000 9.9999997E-003
+ 8 AAAAAAAAIAAAAAAA 1997-03-13 2000-03-12 ? eing 278 6995995 8AM-4PM Brett Yates 2 Unknown Various bars make mo Dean Morrison 1 Unknown 1 Unknown 226 12th Lane Suite D Fairview Williamson County TN 35709 United States -5.0000000E+000 7.9999998E-002
+ 9 AAAAAAAAIAAAAAAA 2000-03-13 ? ? eing 271 6995995 8AM-4PM Brett Yates 2 Unknown Formal, psychologica Dean Morrison 1 Unknown 1 Unknown 226 Hill Boulevard Suite 190 Midway Williamson County TN 31904 United States -5.0000000E+000 7.9999998E-002
+ 10 AAAAAAAAKAAAAAAA 1997-03-13 1999-03-13 ? bar 294 9294113 8AM-4PM Raymond Jacobs 8 Unknown Little expectations Michael Wilson 1 Unknown 1 Unknown 175 4th Court Suite C Midway Williamson County TN 31904 United States -5.0000000E+000 5.9999998E-002
+ 11 AAAAAAAAKAAAAAAA 1999-03-14 2001-03-12 ? ought 294 9294113 8AM-4PM Raymond Jacobs 6 Unknown Mysterious employe Michael Wilson 1 Unknown 1 Unknown 175 Park Green Court Suite 160 Midway Williamson County TN 31904 United States -5.0000000E+000 1.0999999E-001
+ 12 AAAAAAAAKAAAAAAA 2001-03-13 ? ? ought 294 5219562 8AM-12AM Robert Thompson 6 Unknown Events develop i Dustin Kelly 1 Unknown 1 Unknown 337 College Boulevard Suite 100 Fairview Williamson County TN 31904 United States -5.0000000E+000 9.9999997E-003
+
+--- 12 row(s) selected.
+>>
+>>-- select of few columns with WHERE predicate
+>>select s_store_sk, left(s_store_id, 20) from hive.hive.store_orc where s_store_sk < 7;
+
+S_STORE_SK (EXPR)
+----------- --------------------
+
+ 1 AAAAAAAABAAAAAAA
+ 2 AAAAAAAACAAAAAAA
+ 3 AAAAAAAACAAAAAAA
+ 4 AAAAAAAAEAAAAAAA
+ 5 AAAAAAAAEAAAAAAA
+ 6 AAAAAAAAEAAAAAAA
+
+--- 6 row(s) selected.
+>>
+>>-- select count of rows
+>>select count(*) from hive.hive.store_orc;
+
+(EXPR)
+--------------------
+
+ 12
+
+--- 1 row(s) selected.
+>>
+>>-- explain of join between 2 ORC tables
+>>prepare XX from select x.s_suite_number, y.s_street_name
++> from hive.hive.store_orc x, hive.hive.store_orc y
++> where x.s_store_sk = y.s_store_sk;
+
+--- SQL command prepared.
+>>execute explainIt;
+
+S OPERATOR LC RC TAB_NAME
+-- ---------------- -- -- ----------
+
+04 ROOT 3 ?
+03 HYBRID_HASH_JOIN 2 1
+02 ORC_SCAN ? ? STORE_ORC
+01 ORC_SCAN ? ? STORE_ORC
+
+--- 4 row(s) selected.
+>>
+>>-- execute of join between 2 ORC tables
+>>execute XX;
+
+S_SUITE_NUMBER S_STREET_NAME
+-------------------- --------------------
+
+Suite 250 Spring
+Suite 410 Sycamore
+Suite T Park Laurel
+Suite 260 Lake
+Suite 80 Lee 6th
+Suite 140 6th
+Suite T Lee
+Suite D 12th
+Suite 190 Hill
+Suite C 4th
+Suite 160 Park Green
+Suite 100 College
+
+--- 12 row(s) selected.
+>>
+>>-- explain of join between hive(hdfs) and ORC tables
+>>prepare XX from select x.s_suite_number, y.s_street_name
++> from hive.hive.store x, hive.hive.store_orc y
++> where x.s_store_sk = y.s_store_sk;
+
+--- SQL command prepared.
+>>execute explainIt;
+
+S OPERATOR LC RC TAB_NAME
+-- ---------------- -- -- ----------
+
+04 ROOT 3 ?
+03 HYBRID_HASH_JOIN 2 1
+02 HIVE_SCAN ? ? STORE
+01 ORC_SCAN ? ? STORE_ORC
+
+--- 4 row(s) selected.
+>>
+>>-- execute of join between hive(hdfs) and ORC tables
+>>execute XX;
+
+S_SUITE_NUMBER S_STREET_NAME
+-------------------- --------------------
+
+Suite 250 Spring
+Suite 410 Sycamore
+Suite T Park Laurel
+Suite 260 Lake
+Suite 80 Lee 6th
+Suite 140 6th
+Suite T Lee
+Suite D 12th
+Suite 190 Hill
+Suite C 4th
+Suite 160 Park Green
+Suite 100 College
+
+--- 12 row(s) selected.
+>>
+>>-- column list pushdown test
+>>cqd orc_columns_pushdown 'OFF';
+
+--- SQL operation complete.
+>>showplan option 'tr' select s_store_sk from store_orc;
+MASTER Executor fragment
+========================
+
+Fragment ID: 0, Length: 12664
+
+Contents of EX_ROOT [2]:
+------------------------
+
+For ComTdb :
+Class Version = 1, Class Size = 568
+InitialQueueSizeDown = 4, InitialQueueSizeUp = 4
+queueResizeLimit = 9, queueResizeFactor = 4
+queueSizeDown = 0, queueSizeUp = 0, numBuffers = 0, bufferSize = 0
+estimatedRowUsed = 0, estimatedRowsAccessed = 0, expressionMode = 0
+Flag = 0000000100101001
+
+For ComTdbRoot :
+FirstNRows = -1, baseTablenamePosition = -1
+queryType_ = 2, planVersion_ = 2600
+rtFlags1_ = 00100000001100000000101000000000
+rtFlags2_ = 00000000000000000000000000000000
+rtFlags3_ = 0000000000000000
+rtFlags4_ = 00000000000000000010000000000000
+rtFlags5_ = 00000000000000000000000000000000
+queryType_ = 2
+inputVarsSize_ = 0
+querySimilarityInfo()->siList()->numEntries() = 1
+explain_plan_size = 2992
+
+# of Expressions = 4
+
+Expression: inputExpr_ is NULL
+Expression: outputExpr_ is not NULL
+Expression: pkeyExpr_ is NULL
+Expression: predExpr_ is NULL
+Contents of EX_ORC_SCAN [1]:
+----------------------------
+
+For ComTdb :
+Class Version = 1, Class Size = 448
+InitialQueueSizeDown = 4, InitialQueueSizeUp = 4
+queueResizeLimit = 9, queueResizeFactor = 4
+queueSizeDown = 2048, queueSizeUp = 2048, numBuffers = 4, bufferSize = 41032
+estimatedRowUsed = 100, estimatedRowsAccessed = 100, expressionMode = 0
+Flag = 0000000000001001
+
+For ComTdbOrcScan :
+tableName_ = HIVE.HIVE.STORE_ORC
+hostName_ = localhost, port_ = 27000
+recordDelimiter_ = 10, columnDelimiter_ = 1
+hdfsBufSize_ = 115, rangeTailIOSize_ = 20970, hdfsSqlMaxRecLen_ = 8
+tuppIndex_ = 2, workAtpIndex_ = 3
+asciiTuppIndex_ = 4, asciiRowLen_ = 8
+moveExprColsTuppIndex_ = 2, moveExprColsRowLength_ = 16
+convertSkipListSize_ = 33, convertSkipList_ = 3
+outputRowLength_ = 16
+Flag = 0000000000001100
+
+Number of ranges to scan: 1
+Number of esps to scan: 1
+
+ Esp# Range# StripeOffset Length FileName
+====== ====== ============ ============ ==============================
+
+ 0 0 3 2853 store_orc/000000_0
+
+Summary of bytes read per ESP (2853 = 100 percent):
+
+ESP 0 reads 2853 bytes ( 100 percent of avg)
+
+Number of columns to retrieve: 29
+ColNumber: 1, ColName: S_STORE_SK
+ColNumber: 2, ColName: S_STORE_ID
+ColNumber: 3, ColName: S_REC_START_DATE
+ColNumber: 4, ColName: S_REC_END_DATE
+ColNumber: 5, ColName: S_CLOSED_DATE_SK
+ColNumber: 6, ColName: S_STORE_NAME
+ColNumber: 7, ColName: S_NUMBER_EMPLOYEES
+ColNumber: 8, ColName: S_FLOOR_SPACE
+ColNumber: 9, ColName: S_HOURS
+ColNumber: 10, ColName: S_MANAGER
+ColNumber: 11, ColName: S_MARKET_ID
+ColNumber: 12, ColName: S_GEOGRAPHY_CLASS
+ColNumber: 13, ColName: S_MARKET_DESC
+ColNumber: 14, ColName: S_MARKET_MANAGER
+ColNumber: 15, ColName: S_DIVISION_ID
+ColNumber: 16, ColName: S_DIVISION_NAME
+ColNumber: 17, ColName: S_COMPANY_ID
+ColNumber: 18, ColName: S_COMPANY_NAME
+ColNumber: 19, ColName: S_STREET_NUMBER
+ColNumber: 20, ColName: S_STREET_NAME
+ColNumber: 21, ColName: S_STREET_TYPE
+ColNumber: 22, ColName: S_SUITE_NUMBER
+ColNumber: 23, ColName: S_CITY
+ColNumber: 24, ColName: S_COUNTY
+ColNumber: 25, ColName: S_STATE
+ColNumber: 26, ColName: S_ZIP
+ColNumber: 27, ColName: S_COUNTRY
+ColNumber: 28, ColName: S_GMT_OFFSET
+ColNumber: 29, ColName: S_TAX_PRECENTAGE
+hdfsRootDir: hdfs://localhost:27000/user/hive/warehouse/store_orc
+modTSforDir_ = 1473728428, numOfPartCols_ = 0
+
+# of Expressions = 6
+
+Expression: selectExpr_ is NULL
+Expression: moveExpr_ is not NULL
+Expression: convertExpr_ is NULL
+Expression: moveColsConvertExpr_ is not NULL
+Expression: partElimExpr_ is NULL
+Expression: orcOperExpr_ is NULL
+
+--- SQL operation complete.
+>>select s_store_sk from store_orc;
+
+S_STORE_SK
+-----------
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+
+--- 12 row(s) selected.
+>>cqd orc_columns_pushdown 'ON';
+
+--- SQL operation complete.
+>>showplan option 'tr' select s_store_sk from store_orc;
+MASTER Executor fragment
+========================
+
+Fragment ID: 0, Length: 10184
+
+Contents of EX_ROOT [2]:
+------------------------
+
+For ComTdb :
+Class Version = 1, Class Size = 568
+InitialQueueSizeDown = 4, InitialQueueSizeUp = 4
+queueResizeLimit = 9, queueResizeFactor = 4
+queueSizeDown = 0, queueSizeUp = 0, numBuffers = 0, bufferSize = 0
+estimatedRowUsed = 0, estimatedRowsAccessed = 0, expressionMode = 0
+Flag = 0000000100101001
+
+For ComTdbRoot :
+FirstNRows = -1, baseTablenamePosition = -1
+queryType_ = 2, planVersion_ = 2600
+rtFlags1_ = 00100000001100000000101000000000
+rtFlags2_ = 00000000000000000000000000000000
+rtFlags3_ = 0000000000000000
+rtFlags4_ = 00000000000000000010000000000000
+rtFlags5_ = 00000000000000000000000000000000
+queryType_ = 2
+inputVarsSize_ = 0
+querySimilarityInfo()->siList()->numEntries() = 1
+explain_plan_size = 2984
+
+# of Expressions = 4
+
+Expression: inputExpr_ is NULL
+Expression: outputExpr_ is not NULL
+Expression: pkeyExpr_ is NULL
+Expression: predExpr_ is NULL
+Contents of EX_ORC_SCAN [1]:
+----------------------------
+
+For ComTdb :
+Class Version = 1, Class Size = 448
+InitialQueueSizeDown = 4, InitialQueueSizeUp = 4
+queueResizeLimit = 9, queueResizeFactor = 4
+queueSizeDown = 2048, queueSizeUp = 2048, numBuffers = 4, bufferSize = 41032
+estimatedRowUsed = 100, estimatedRowsAccessed = 100, expressionMode = 0
+Flag = 0000000000001001
+
+For ComTdbOrcScan :
+tableName_ = HIVE.HIVE.STORE_ORC
+hostName_ = localhost, port_ = 27000
+recordDelimiter_ = 10, columnDelimiter_ = 1
+hdfsBufSize_ = 115, rangeTailIOSize_ = 20970, hdfsSqlMaxRecLen_ = 8
+tuppIndex_ = 2, workAtpIndex_ = 3
+asciiTuppIndex_ = 4, asciiRowLen_ = 8
+moveExprColsTuppIndex_ = 2, moveExprColsRowLength_ = 16
+convertSkipListSize_ = 33, convertSkipList_ = 3
+outputRowLength_ = 16
+Flag = 0000000000001100
+
+Number of ranges to scan: 1
+Number of esps to scan: 1
+
+ Esp# Range# StripeOffset Length FileName
+====== ====== ============ ============ ==============================
+
+ 0 0 3 2853 store_orc/000000_0
+
+Summary of bytes read per ESP (2853 = 100 percent):
+
+ESP 0 reads 2853 bytes ( 100 percent of avg)
+
+Number of columns to retrieve: 1
+ColNumber: 1, ColName: S_STORE_SK
+hdfsRootDir: hdfs://localhost:27000/user/hive/warehouse/store_orc
+modTSforDir_ = 1473728428, numOfPartCols_ = 0
+
+# of Expressions = 6
+
+Expression: selectExpr_ is NULL
+Expression: moveExpr_ is not NULL
+Expression: convertExpr_ is NULL
+Expression: moveColsConvertExpr_ is not NULL
+Expression: partElimExpr_ is NULL
+Expression: orcOperExpr_ is NULL
+
+--- SQL operation complete.
+>>select s_store_sk from store_orc;
+
+S_STORE_SK
+-----------
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+
+--- 12 row(s) selected.
+>>
+>>-- predicate pushdown to ORC layer
+>>cqd orc_pred_pushdown 'OFF';
+
+--- SQL operation complete.
+>>select s_store_sk from store_orc where s_store_sk = 3;
+
+S_STORE_SK
+-----------
+
+ 3
+
+--- 1 row(s) selected.
+>>select s_store_sk from store_orc where s_store_sk < 2;
+
+S_STORE_SK
+-----------
+
+ 1
+
+--- 1 row(s) selected.
+>>select s_store_sk from store_orc where s_store_sk >= 11;
+
+S_STORE_SK
+-----------
+
+ 11
+ 12
+
+--- 2 row(s) selected.
+>>select s_store_sk from store_orc where s_store_sk >= 4 and s_store_sk < 6;
+
+S_STORE_SK
+-----------
+
+ 4
+ 5
+
+--- 2 row(s) selected.
+>>select s_store_sk from store_orc where s_store_sk in (7,8,9);
+
+S_STORE_SK
+-----------
+
+ 7
+ 8
+ 9
+
+--- 3 row(s) selected.
+>>showplan option 'tr' select s_store_sk from store_orc where s_store_sk = 3;
+MASTER Executor fragment
+========================
+
+Fragment ID: 0, Length: 10504
+
+Contents of EX_ROOT [2]:
+------------------------
+
+For ComTdb :
+Class Version = 1, Class Size = 568
+InitialQueueSizeDown = 4, InitialQueueSizeUp = 4
+queueResizeLimit = 9, queueResizeFactor = 4
+queueSizeDown = 0, queueSizeUp = 0, numBuffers = 0, bufferSize = 0
+estimatedRowUsed = 0, estimatedRowsAccessed = 0, expressionMode = 0
+Flag = 0000000100101001
+
+For ComTdbRoot :
+FirstNRows = -1, baseTablenamePosition = -1
+queryType_ = 2, planVersion_ = 2600
+rtFlags1_ = 00100000001100000000101000000000
+rtFlags2_ = 00000000000000000000000000000000
+rtFlags3_ = 0000000000000000
+rtFlags4_ = 00000000000000000010000000000000
+rtFlags5_ = 00000000000000000000000000000000
+queryType_ = 2
+inputVarsSize_ = 0
+querySimilarityInfo()->siList()->numEntries() = 1
+explain_plan_size = 3088
+
+# of Expressions = 4
+
+Expression: inputExpr_ is NULL
+Expression: outputExpr_ is not NULL
+Expression: pkeyExpr_ is NULL
+Expression: predExpr_ is NULL
+Contents of EX_ORC_SCAN [1]:
+----------------------------
+
+For ComTdb :
+Class Version = 1, Class Size = 448
+InitialQueueSizeDown = 4, InitialQueueSizeUp = 4
+queueResizeLimit = 9, queueResizeFactor = 4
+queueSizeDown = 2048, queueSizeUp = 2048, numBuffers = 4, bufferSize = 32840
+estimatedRowUsed = 100, estimatedRowsAccessed = 100, expressionMode = 0
+Flag = 0000000000001001
+
+For ComTdbOrcScan :
+tableName_ = HIVE.HIVE.STORE_ORC
+hostName_ = localhost, port_ = 27000
+recordDelimiter_ = 10, columnDelimiter_ = 1
+hdfsBufSize_ = 115, rangeTailIOSize_ = 20970, hdfsSqlMaxRecLen_ = 16
+tuppIndex_ = 3, workAtpIndex_ = 3
+asciiTuppIndex_ = 4, asciiRowLen_ = 8
+moveExprColsTuppIndex_ = 2, moveExprColsRowLength_ = 8
+convertSkipListSize_ = 33, convertSkipList_ = 2
+outputRowLength_ = 8
+Flag = 0000000000001100
+
+Number of ranges to scan: 1
+Number of esps to scan: 1
+
+ Esp# Range# StripeOffset Length FileName
+====== ====== ============ ============ ==============================
+
+ 0 0 3 2853 store_orc/000000_0
+
+Summary of bytes read per ESP (2853 = 100 percent):
+
+ESP 0 reads 2853 bytes ( 100 percent of avg)
+
+Number of columns to retrieve: 1
+ColNumber: 1, ColName: S_STORE_SK
+hdfsRootDir: hdfs://localhost:27000/user/hive/warehouse/store_orc
+modTSforDir_ = 1473728428, numOfPartCols_ = 0
+
+# of Expressions = 6
+
+Expression: selectExpr_ is not NULL
+Expression: moveExpr_ is NULL
+Expression: convertExpr_ is not NULL
+Expression: moveColsConvertExpr_ is NULL
+Expression: partElimExpr_ is NULL
+Expression: orcOperExpr_ is NULL
+
+--- SQL operation complete.
+>>
+>>cqd orc_pred_pushdown 'ON';
+
+--- SQL operation complete.
+>>select s_store_sk from store_orc where s_store_sk = 3;
+
+S_STORE_SK
+-----------
+
+ 3
+
+--- 1 row(s) selected.
+>>select s_store_sk from store_orc where s_store_sk < 2;
+
+S_STORE_SK
+-----------
+
+ 1
+
+--- 1 row(s) selected.
+>>select s_store_sk from store_orc where s_store_sk >= 11;
+
+S_STORE_SK
+-----------
+
+ 11
+ 12
+
+--- 2 row(s) selected.
+>>select s_store_sk from store_orc where s_store_sk >= 4 and s_store_sk < 6;
+
+S_STORE_SK
+-----------
+
+ 4
+ 5
+
+--- 2 row(s) selected.
+>>select s_store_sk from store_orc where s_store_sk in (7,8,9);
+
+S_STORE_SK
+-----------
+
+ 7
+ 8
+ 9
+
+--- 3 row(s) selected.
+>>showplan option 'tr' select s_store_sk from store_orc where s_store_sk = 3;
+MASTER Executor fragment
+========================
+
+Fragment ID: 0, Length: 15648
+
+Contents of EX_ROOT [2]:
+------------------------
+
+For ComTdb :
+Class Version = 1, Class Size = 568
+InitialQueueSizeDown = 4, InitialQueueSizeUp = 4
+queueResizeLimit = 9, queueResizeFactor = 4
+queueSizeDown = 0, queueSizeUp = 0, numBuffers = 0, bufferSize = 0
+estimatedRowUsed = 0, estimatedRowsAccessed = 0, expressionMode = 0
+Flag = 0000000100101001
+
+For ComTdbRoot :
+FirstNRows = -1, baseTablenamePosition = -1
+queryType_ = 2, planVersion_ = 2600
+rtFlags1_ = 00100000001100000000101000000000
+rtFlags2_ = 00000000000000000000000000000000
+rtFlags3_ = 0000000000000000
+rtFlags4_ = 00000000000000000010000000000000
+rtFlags5_ = 00000000000000000000000000000000
+queryType_ = 2
+inputVarsSize_ = 0
+querySimilarityInfo()->siList()->numEntries() = 1
+explain_plan_size = 3184
+
+# of Expressions = 4
+
+Expression: inputExpr_ is NULL
+Expression: outputExpr_ is not NULL
+Expression: pkeyExpr_ is NULL
+Expression: predExpr_ is NULL
+Contents of EX_ORC_SCAN [1]:
+----------------------------
+
+For ComTdb :
+Class Version = 1, Class Size = 448
+InitialQueueSizeDown = 4, InitialQueueSizeUp = 4
+queueResizeLimit = 9, queueResizeFactor = 4
+queueSizeDown = 2048, queueSizeUp = 2048, numBuffers = 4, bufferSize = 32840
+estimatedRowUsed = 100, estimatedRowsAccessed = 100, expressionMode = 0
+Flag = 0000000000001001
+
+For ComTdbOrcScan :
+tableName_ = HIVE.HIVE.STORE_ORC
+hostName_ = localhost, port_ = 27000
+recordDelimiter_ = 10, columnDelimiter_ = 1
+hdfsBufSize_ = 115, rangeTailIOSize_ = 20970, hdfsSqlMaxRecLen_ = 16
+tuppIndex_ = 3, workAtpIndex_ = 3
+asciiTuppIndex_ = 4, asciiRowLen_ = 8
+moveExprColsTuppIndex_ = 2, moveExprColsRowLength_ = 8
+convertSkipListSize_ = 33, convertSkipList_ = 2
+outputRowLength_ = 8
+Flag = 0000000000001100
+
+Number of ranges to scan: 1
+Number of esps to scan: 1
+
+ Esp# Range# StripeOffset Length FileName
+====== ====== ============ ============ ==============================
+
+ 0 0 3 2853 store_orc/000000_0
+
+Summary of bytes read per ESP (2853 = 100 percent):
+
+ESP 0 reads 2853 bytes ( 100 percent of avg)
+
+Number of columns to retrieve: 1
+ColNumber: 1, ColName: S_STORE_SK
+hdfsRootDir: hdfs://localhost:27000/user/hive/warehouse/store_orc
+modTSforDir_ = 1473728428, numOfPartCols_ = 0
+
+Number of PPI entries: 3
+PPI: #1
+ type: STARTAND(1)
+PPI: #2
+ type: EQUALS(5)
+ operAttrIndex: 0
+ colName_: S_STORE_SK
+PPI: #3
+ type: END(4)
+Num Of orcAllColInfoList entries: 33
+
+# of Expressions = 6
+
+Expression: selectExpr_ is not NULL
+Expression: moveExpr_ is NULL
+Expression: convertExpr_ is not NULL
+Expression: moveColsConvertExpr_ is NULL
+Expression: partElimExpr_ is NULL
+Expression: orcOperExpr_ is not NULL
+
+--- SQL operation complete.
+>>
+>>-- local join predicate is not pushed down
+>>explain select * from store_sales_orc where ss_sold_date_sk = ss_item_sk ;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356391057229402
+ROWS_OUT ......... 1,440,202
+EST_TOTAL_COST ......... 176.18
+STATEMENT ................ select *
+ from store_sales_orc
+ where ss_sold_date_sk = ss_item_sk;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ====================================== SEQ_NO 3 ONLY CHILD 2
+REQUESTS_IN .............. 1
+ROWS_OUT ......... 1,440,202
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ......... 176.18
+DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ max_card_est ........... 2.8804e+06
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 132
+ statement_index ........ 0
+ affinity_value ......... 0
+ max_max_cardinal 1,440,202
+ total_overflow_size .... 0.00 KB
+ esp_2_node_map ......... (\NSK:-1:-1:-1:-1)
+ 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 .......... NOT AVAILABLE
+ SCHEMA ................. HIVE.HIVE
+ HIVE_MAX_STRING_LENGTH 20
+ MODE_SEAHIVE ........... ON
+ TRAF_ENABLE_ORC_FORMAT ON
+ HIST_ROWCOUNT_REQU 50,000
+ HIVE_USE_EXT_TABLE_ATTR ON
+ HIST_MISSING_STATS_WARN 0
+ ORC_NJS_PROBES_T 1,000,000
+ HIVE_MIN_NUM_ESPS_PER_D 0
+ ORC_COLUMNS_PUSHDOWN ... ON
+ ORC_PRED_PUSHDOWN ...... ON
+ GENERATE_EXPLAIN ....... ON
+ select_list ............ HIVE.STORE_SALES_ORC.SS_SOLD_DATE_SK,
+ HIVE.STORE_SALES_ORC.SS_SOLD_TIME_SK,
+ HIVE.STORE_SALES_ORC.SS_SOLD_DATE_SK,
+ HIVE.STORE_SALES_ORC.SS_CUSTOMER_SK,
+ HIVE.STORE_SALES_ORC.SS_CDEMO_SK,
+ HIVE.STORE_SALES_ORC.SS_HDEMO_SK,
+ HIVE.STORE_SALES_ORC.SS_ADDR_SK,
+ HIVE.STORE_SALES_ORC.SS_STORE_SK,
+ HIVE.STORE_SALES_ORC.SS_PROMO_SK,
+ HIVE.STORE_SALES_ORC.SS_TICKET_NUMBER,
+ HIVE.STORE_SALES_ORC.SS_QUANTITY,
+ HIVE.STORE_SALES_ORC.SS_WHOLESALE_COST,
+ HIVE.STORE_SALES_ORC.SS_LIST_PRICE,
+ HIVE.STORE_SALES_ORC.SS_SALES_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_DISCOUNT_AMT,
+ HIVE.STORE_SALES_ORC.SS_EXT_SALES_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_WHOLESALE_COST,
+ HIVE.STORE_SALES_ORC.SS_EXT_LIST_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_TAX,
+ HIVE.STORE_SALES_ORC.SS_COUPON_AMT,
+ HIVE.STORE_SALES_ORC.SS_NET_PAID,
+ HIVE.STORE_SALES_ORC.SS_NET_PAID_INC_TAX,
+ HIVE.STORE_SALES_ORC.SS_NET_PROFIT
+
+
+ESP_EXCHANGE ============================== SEQ_NO 2 ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ......... 1,440,202
+EST_OPER_COST ............ 0.01
+EST_TOTAL_COST ......... 176.18
+DESCRIPTION
+ max_card_est ........... 2.8804e+06
+ fragment_id ............ 2
+ parent_frag ............ 0
+ fragment_type .......... esp
+ est_memory_per_node .... 153.262 KB
+ record_length ........ 132
+ buffer_size ....... 30,388
+ parent_processes ....... 1
+ child_processes ........ 4
+ child_partitioning_func hash2 partitioned 4 ways on (randomNum)
+
+
+ORC_SCAN ================================== SEQ_NO 1 NO CHILDREN
+TABLE_NAME ............... HIVE.HIVE.STORE_SALES_ORC
+REQUESTS_IN .............. 1
+ROWS_OUT ......... 1,440,202
+EST_OPER_COST .......... 176.18
+EST_TOTAL_COST ......... 176.18
+DESCRIPTION
+ max_card_est ........... 2.8804e+06
+ fragment_id ............ 2
+ parent_frag ............ 0
+ fragment_type .......... esp
+ record_length ........ 132
+ scan_type .............. full scan of table HIVE.HIVE.STORE_SALES_ORC
+ object_type ............ Hive_Orc
+ scan_direction ......... forward
+ lock_mode .............. not specified, defaulted to lock cursor
+ access_mode ............ not specified, defaulted to read committed
+ columns_retrieved ..... 23
+ probes ................. 1
+ rows_accessed .......... 2.8804e+06
+ executor_predicates .... (HIVE.STORE_SALES_ORC.SS_ITEM_SK =
+ HIVE.STORE_SALES_ORC.SS_SOLD_DATE_SK)
+
+--- SQL operation complete.
+>>
+>>-- Boolean constant predicate is not pushed down
+>>explain select * from store_sales_orc where 1=2;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... NOT NAMED
+PLAN_ID .................. 212356391057807027
+ROWS_OUT ................. 1
+EST_TOTAL_COST ........... 0.01
+STATEMENT ................ select * from store_sales_orc where 1=2;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ................. 1
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.01
+DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ max_card_est ........... 0
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 138
+ statement_index ........ 0
+ affinity_value ......... 0
+ max_max_cardinality .... 1
+ 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 .......... NOT AVAILABLE
+ SCHEMA ................. HIVE.HIVE
+ HIVE_MAX_STRING_LENGTH 20
+ MODE_SEAHIVE ........... ON
+ TRAF_ENABLE_ORC_FORMAT ON
+ HIST_ROWCOUNT_REQU 50,000
+ HIVE_USE_EXT_TABLE_ATTR ON
+ HIST_MISSING_STATS_WARN 0
+ ORC_NJS_PROBES_T 1,000,000
+ HIVE_MIN_NUM_ESPS_PER_D 0
+ ORC_COLUMNS_PUSHDOWN ... ON
+ ORC_PRED_PUSHDOWN ...... ON
+ GENERATE_EXPLAIN ....... ON
+ select_list ............ HIVE.STORE_SALES_ORC.SS_SOLD_DATE_SK,
+ HIVE.STORE_SALES_ORC.SS_SOLD_TIME_SK,
+ HIVE.STORE_SALES_ORC.SS_ITEM_SK,
+ HIVE.STORE_SALES_ORC.SS_CUSTOMER_SK,
+ HIVE.STORE_SALES_ORC.SS_CDEMO_SK,
+ HIVE.STORE_SALES_ORC.SS_HDEMO_SK,
+ HIVE.STORE_SALES_ORC.SS_ADDR_SK,
+ HIVE.STORE_SALES_ORC.SS_STORE_SK,
+ HIVE.STORE_SALES_ORC.SS_PROMO_SK,
+ HIVE.STORE_SALES_ORC.SS_TICKET_NUMBER,
+ HIVE.STORE_SALES_ORC.SS_QUANTITY,
+ HIVE.STORE_SALES_ORC.SS_WHOLESALE_COST,
+ HIVE.STORE_SALES_ORC.SS_LIST_PRICE,
+ HIVE.STORE_SALES_ORC.SS_SALES_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_DISCOUNT_AMT,
+ HIVE.STORE_SALES_ORC.SS_EXT_SALES_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_WHOLESALE_COST,
+ HIVE.STORE_SALES_ORC.SS_EXT_LIST_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_TAX,
+ HIVE.STORE_SALES_ORC.SS_COUPON_AMT,
+ HIVE.STORE_SALES_ORC.SS_NET_PAID,
+ HIVE.STORE_SALES_ORC.SS_NET_PAID_INC_TAX,
+ HIVE.STORE_SALES_ORC.SS_NET_PROFIT
+
+
+ORC_SCAN ================================== SEQ_NO 1 NO CHILDREN
+TABLE_NAME ............... HIVE.HIVE.STORE_SALES_ORC
+REQUESTS_IN .............. 1
+ROWS_OUT ................. 1
+EST_OPER_COST ............ 0.01
+EST_TOTAL_COST ........... 0.01
+DESCRIPTION
+ max_card_est ........... 0
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 138
+ scan_type .............. full scan of table HIVE.HIVE.STORE_SALES_ORC
+ object_type ............ Hive_Orc
+ scan_direction ......... forward
+ lock_mode .............. not specified, defaulted to lock cursor
+ access_mode ............ not specified, defaulted to read committed
+ columns_retrieved ..... 23
+ probes ................. 1
+ rows_accessed .......... 1
+ part_elim_compiled ..... 0.
+
+--- SQL operation complete.
+>>
+>>-- aggregate pushdown to ORC layer
+>>cqd orc_aggr_pushdown 'ON';
+
+--- SQL operation complete.
+>>explain options 'f' select count(*) from store_orc;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+1 . 2 root 1.00E+000
+. . 1 orc_aggr 1.00E+000
+
+--- SQL operation complete.
+>>select count(*) from store_orc;
+
+(EXPR)
+--------------------
+
+ 12
+
+--- 1 row(s) selected.
+>>select count(*), count(*) from store_orc;
+
+(EXPR) (EXPR)
+-------------------- --------------------
+
+ 12 12
+
+--- 1 row(s) selected.
+>>select min(s_store_sk) from store_orc;
+
+(EXPR)
+-----------
+
+ 1
+
+--- 1 row(s) selected.
+>>select max(s_store_sk) from store_orc;
+
+(EXPR)
+-----------
+
+ 12
+
+--- 1 row(s) selected.
+>>select sum(s_store_sk) from store_orc;
+
+(EXPR)
+--------------------
+
+ 78
+
+--- 1 row(s) selected.
+>>select count(*), min(s_store_sk), max(s_store_sk), sum(s_store_sk)
++> from store_orc;
+
+(EXPR) (EXPR) (EXPR) (EXPR)
+-------------------- ----------- ----------- --------------------
+
+ 12 1 12 78
+
+--- 1 row(s) selected.
+>>explain options 'f' select count(*), min(s_store_sk), max(s_store_sk),
++> sum(s_store_sk) from store_orc;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+1 . 2 root 1.00E+000
+. . 1 orc_aggr 1.00E+000
+
+--- SQL operation complete.
+>>
+>>explain options 'f'
++> select count(*) from hive.hive.store_orc union all
++> select count(*) from hive.hive.store_orc;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+3 . 4 root 2.00E+000
+1 2 3 merge_union 2.00E+000
+. . 2 orc_aggr 1.00E+000
+. . 1 orc_aggr 1.00E+000
+
+--- SQL operation complete.
+>>select count(*) from hive.hive.store_orc union all
++> select count(*) from hive.hive.store_orc;
+
+(EXPR)
+--------------------
+
+ 12
+ 12
+
+--- 2 row(s) selected.
+>>
+>>explain options 'f'
++> select min(s_store_sk) from hive.hive.store_orc union all
++> select min(s_store_sk) from hive.hive.store_orc;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+3 . 4 root 2.00E+000
+1 2 3 merge_union 2.00E+000
+. . 2 orc_aggr 1.00E+000
+. . 1 orc_aggr 1.00E+000
+
+--- SQL operation complete.
+>>select min(s_store_sk) from hive.hive.store_orc union all
++> select min(s_store_sk) from hive.hive.store_orc;
+
+(EXPR)
+-----------
+
+ 1
+ 1
+
+--- 2 row(s) selected.
+>>
+>>explain options 'f' select count(s_store_sk) from store_orc;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+2 . 3 root 1.00E+000
+1 . 2 sort_scalar_aggr 1.00E+000
+. . 1 orc_scan STORE_ORC 1.00E+002
+
+--- SQL operation complete.
+>>select count(s_store_sk) from store_orc;
+
+(EXPR)
+--------------------
+
+ 12
+
+--- 1 row(s) selected.
+>>
+>>explain options 'f' select count(*) from store_orc
++> having sum(s_store_sk) = 78;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+1 . 2 root 1.00E+000
+. . 1 orc_aggr 1.00E+000
+
+--- SQL operation complete.
+>>select count(*) from store_orc having sum(s_store_sk) = 78;
+
+(EXPR)
+--------------------
+
+ 12
+
+--- 1 row(s) selected.
+>>
+>>select count(*) from store_orc having sum(s_store_sk) = 77;
+
+--- 0 row(s) selected.
+>>
+>>cqd orc_aggr_pushdown 'OFF';
+
+--- SQL operation complete.
+>>explain options 'f' select count(*), min(s_store_sk), max(s_store_sk),
++> sum(s_store_sk) from store_orc;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+2 . 3 root 1.00E+000
+1 . 2 sort_scalar_aggr 1.00E+000
+. . 1 orc_scan STORE_ORC 1.00E+002
+
+--- SQL operation complete.
+>>select count(*), min(s_store_sk), max(s_store_sk), sum(s_store_sk)
++> from store_orc;
+
+(EXPR) (EXPR) (EXPR) (EXPR)
+-------------------- ----------- ----------- --------------------
+
+ 12 1 12 78
+
+--- 1 row(s) selected.
+>>
+>>-- test query cache
+>>prepare xx from select cd_gender from customer_demographics_orc where cd_gender = 'male' ;
+
+--- SQL command prepared.
+>>select num_hits, num_params from table(querycacheentries('user', 'local'))
++>where substring(text, 1, 16) = 'select cd_gender' order by 1,2;
+
+NUM_HITS NUM_PARAMS
+---------- ----------
+
+ 0 1
+
+--- 1 row(s) selected.
+>>
+>>prepare xx from select cd_gender from customer_demographics_orc where cd_gender = 'female' ;
+
+--- SQL command prepared.
+>>select num_hits, num_params from table(querycacheentries('user', 'local'))
++>where substring(text, 1, 16) = 'select cd_gender' order by 1,2;
+
+NUM_HITS NUM_PARAMS
+---------- ----------
+
+ 1 1
+
+--- 1 row(s) selected.
+>>
+>>
+>>-- test external table attributes
+>>set schema trafodion.sch;
+
+--- SQL operation complete.
+>>drop external table if exists store_sales_orc for hive.hive.store_sales_orc;
+
+--- SQL operation complete.
+>>create external table store_sales_orc
++> for hive.hive.store_sales_orc;
+
+--- SQL operation complete.
+>>invoke hive.hive.store_sales_orc;
+
+-- Definition of hive table STORE_SALES_ORC
+-- Definition current Thu Mar 16 02:24:38 2017
+
+ (
+ SS_SOLD_DATE_SK INT
+ , SS_SOLD_TIME_SK INT
+ , SS_ITEM_SK INT
+ , SS_CUSTOMER_SK INT
+ , SS_CDEMO_SK INT
+ , SS_HDEMO_SK INT
+ , SS_ADDR_SK INT
+ , SS_STORE_SK INT
+ , SS_PROMO_SK INT
+ , SS_TICKET_NUMBER INT
+ , SS_QUANTITY INT
+ , SS_WHOLESALE_COST REAL
+ , SS_LIST_PRICE REAL
+ , SS_SALES_PRICE REAL
+ , SS_EXT_DISCOUNT_AMT REAL
+ , SS_EXT_SALES_PRICE REAL
+ , SS_EXT_WHOLESALE_COST REAL
+ , SS_EXT_LIST_PRICE REAL
+ , SS_EXT_TAX REAL
+ , SS_COUPON_AMT REAL
+ , SS_NET_PAID REAL
+ , SS_NET_PAID_INC_TAX REAL
+ , SS_NET_PROFIT REAL
+ )
+ /* stored as orc */
+
+--- SQL operation complete.
+>>
+>>set schema hive.hive;
+
+--- SQL operation complete.
+>>prepare s from select * from store_sales_orc where ss_item_sk = 1;
+
+--- SQL command prepared.
+>>explain s;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... S
+PLAN_ID .................. 212356391078690910
+ROWS_OUT ............. 1,698
+EST_TOTAL_COST ......... 176.17
+STATEMENT ................ select * from store_sales_orc where ss_item_sk = 1;
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ====================================== SEQ_NO 3 ONLY CHILD 2
+REQUESTS_IN .............. 1
+ROWS_OUT ............. 1,698
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ......... 176.17
+DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ max_card_est ........... 2.73638e+06
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 138
+ statement_index ........ 0
+ affinity_value ......... 0
+ max_max_cardinality 1,698
+ total_overflow_size .... 0.00 KB
+ esp_2_node_map ......... (\NSK:-1:-1:-1:-1)
+ 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 .......... NOT AVAILABLE
+ HIVE_MAX_STRING_LENGTH 20
+ MODE_SEAHIVE ........... ON
+ TRAF_ENABLE_ORC_FORMAT ON
+ HIST_ROWCOUNT_REQU 50,000
+ HIVE_USE_EXT_TABLE_ATTR ON
+ HIST_MISSING_STATS_WARN 0
+ ORC_NJS_PROBES_T 1,000,000
+ HIVE_MIN_NUM_ESPS_PER_D 0
+ ORC_COLUMNS_PUSHDOWN ... ON
+ ORC_PRED_PUSHDOWN ...... ON
+ ORC_AGGR_PUSHDOWN ...... OFF
+ SCHEMA ................. HIVE.HIVE
+ select_list ............ HIVE.STORE_SALES_ORC.SS_SOLD_DATE_SK,
+ HIVE.STORE_SALES_ORC.SS_SOLD_TIME_SK, %(1),
+ HIVE.STORE_SALES_ORC.SS_CUSTOMER_SK,
+ HIVE.STORE_SALES_ORC.SS_CDEMO_SK,
+ HIVE.STORE_SALES_ORC.SS_HDEMO_SK,
+ HIVE.STORE_SALES_ORC.SS_ADDR_SK,
+ HIVE.STORE_SALES_ORC.SS_STORE_SK,
+ HIVE.STORE_SALES_ORC.SS_PROMO_SK,
+ HIVE.STORE_SALES_ORC.SS_TICKET_NUMBER,
+ HIVE.STORE_SALES_ORC.SS_QUANTITY,
+ HIVE.STORE_SALES_ORC.SS_WHOLESALE_COST,
+ HIVE.STORE_SALES_ORC.SS_LIST_PRICE,
+ HIVE.STORE_SALES_ORC.SS_SALES_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_DISCOUNT_AMT,
+ HIVE.STORE_SALES_ORC.SS_EXT_SALES_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_WHOLESALE_COST,
+ HIVE.STORE_SALES_ORC.SS_EXT_LIST_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_TAX,
+ HIVE.STORE_SALES_ORC.SS_COUPON_AMT,
+ HIVE.STORE_SALES_ORC.SS_NET_PAID,
+ HIVE.STORE_SALES_ORC.SS_NET_PAID_INC_TAX,
+ HIVE.STORE_SALES_ORC.SS_NET_PROFIT
+ input_variables ........ %(1)
+
+
+ESP_EXCHANGE ============================== SEQ_NO 2 ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ............. 1,698
+EST_OPER_COST ............ 0.01
+EST_TOTAL_COST ......... 176.17
+DESCRIPTION
+ max_card_est ........... 2.73638e+06
+ fragment_id ............ 2
+ parent_frag ............ 0
+ fragment_type .......... esp
+ est_memory_per_node .... 29.297 KB
+ record_length ........ 132
+ buffer_size ........ 5,000
+ parent_processes ....... 1
+ child_processes ........ 4
+ child_partitioning_func hash2 partitioned 4 ways on (randomNum)
+
+
+ORC_SCAN ================================== SEQ_NO 1 NO CHILDREN
+TABLE_NAME ............... HIVE.HIVE.STORE_SALES_ORC
+REQUESTS_IN .............. 1
+ROWS_OUT ............. 1,698
+EST_OPER_COST .......... 176.17
+EST_TOTAL_COST ......... 176.17
+DESCRIPTION
+ max_card_est ........... 2.73638e+06
+ fragment_id ............ 2
+ parent_frag ............ 0
+ fragment_type .......... esp
+ record_length ........ 132
+ scan_type .............. full scan of table HIVE.HIVE.STORE_SALES_ORC
+ object_type ............ Hive_Orc
+ scan_direction ......... forward
+ lock_mode .............. not specified, defaulted to lock cursor
+ access_mode ............ not specified, defaulted to read committed
+ columns_retrieved ..... 23
+ probes ................. 1
+ rows_accessed .......... 2.8804e+06
+ orc_pred_pushdown ...... yes
+ orc_search_arguments ... and( HIVE.STORE_SALES_ORC.SS_ITEM_SK = cast(%(1)) )
+ executor_predicates .... (HIVE.STORE_SALES_ORC.SS_ITEM_SK = %(1))
+
+--- SQL operation complete.
+>>
+>>-- join with nested join
+>>cqd orc_njs 'on';
+
+--- SQL operation complete.
+>>control query shape nested_join(scan(path 'CUSTOMER_ORC'),
++> scan(path 'STORE_SALES_ORC'));
+
+--- SQL operation complete.
+>>prepare s from select * from customer_orc, store_sales_orc
++> where store_sales_orc.ss_item_sk = customer_orc.c_customer_sk;
+
+--- SQL command prepared.
+>>explain options 'f' s;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+3 . 4 root 2.88E+006
+1 2 3 nested_join 2.88E+006
+. . 2 orc_scan STORE_SALES_ORC 2.88E+001
+. . 1 orc_scan CUSTOMER_ORC 1.00E+005
+
+--- SQL operation complete.
+>>explain s;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... S
+PLAN_ID .................. 212356391080900762
+ROWS_OUT ......... 2,880,404
+EST_TOTAL_COST ... 9,688,410
+STATEMENT ................ select *
+ from customer_orc, store_sales_orc
+ where store_sales_orc.ss_item_sk =
+ customer_orc.c_customer_sk;
+MUST_MATCH ............... forced nested join(forced scan, forced scan)
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ====================================== SEQ_NO 4 ONLY CHILD 3
+REQUESTS_IN .............. 1
+ROWS_OUT ......... 2,880,404
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ... 9,688,410
+DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ max_card_est ........... 2.8804e+06
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 402
+ statement_index ........ 0
+ affinity_value ......... 0
+ max_max_cardinal 2,880,404
+ 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 .......... NOT AVAILABLE
+ HIVE_MAX_STRING_LENGTH 20
+ MODE_SEAHIVE ........... ON
+ TRAF_ENABLE_ORC_FORMAT ON
+ HIST_ROWCOUNT_REQU 50,000
+ HIVE_USE_EXT_TABLE_ATTR ON
+ HIST_MISSING_STATS_WARN 0
+ ORC_NJS_PROBES_T 1,000,000
+ HIVE_MIN_NUM_ESPS_PER_D 0
+ ORC_COLUMNS_PUSHDOWN ... ON
+ ORC_PRED_PUSHDOWN ...... ON
+ ORC_AGGR_PUSHDOWN ...... OFF
+ SCHEMA ................. HIVE.HIVE
+ ORC_NJS ................ ON
+ select_list ............ HIVE.CUSTOMER_ORC.C_CUSTOMER_SK,
+ HIVE.CUSTOMER_ORC.C_CUSTOMER_ID,
+ HIVE.CUSTOMER_ORC.C_CURRENT_CDEMO_SK,
+ HIVE.CUSTOMER_ORC.C_CURRENT_HDEMO_SK,
+ HIVE.CUSTOMER_ORC.C_CURRENT_ADDR_SK,
+ HIVE.CUSTOMER_ORC.C_FIRST_SHIPTO_DATE_SK,
+ HIVE.CUSTOMER_ORC.C_FIRST_SALES_DATE_SK,
+ HIVE.CUSTOMER_ORC.C_SALUTATION,
+ HIVE.CUSTOMER_ORC.C_FIRST_NAME,
+ HIVE.CUSTOMER_ORC.C_LAST_NAME,
+ HIVE.CUSTOMER_ORC.C_PREFERRED_CUST_FLAG,
+ HIVE.CUSTOMER_ORC.C_BIRTH_DAY,
+ HIVE.CUSTOMER_ORC.C_BIRTH_MONTH,
+ HIVE.CUSTOMER_ORC.C_BIRTH_YEAR,
+ HIVE.CUSTOMER_ORC.C_BIRTH_COUNTRY,
+ HIVE.CUSTOMER_ORC.C_LOGIN,
+ HIVE.CUSTOMER_ORC.C_EMAIL_ADDRESS,
+ HIVE.CUSTOMER_ORC.C_LAST_REVIEW_DATE,
+ HIVE.STORE_SALES_ORC.SS_SOLD_DATE_SK,
+ HIVE.STORE_SALES_ORC.SS_SOLD_TIME_SK,
+ HIVE.CUSTOMER_ORC.C_CUSTOMER_SK,
+ HIVE.STORE_SALES_ORC.SS_CUSTOMER_SK,
+ HIVE.STORE_SALES_ORC.SS_CDEMO_SK,
+ HIVE.STORE_SALES_ORC.SS_HDEMO_SK,
+ HIVE.STORE_SALES_ORC.SS_ADDR_SK,
+ HIVE.STORE_SALES_ORC.SS_STORE_SK,
+ HIVE.STORE_SALES_ORC.SS_PROMO_SK,
+ HIVE.STORE_SALES_ORC.SS_TICKET_NUMBER,
+ HIVE.STORE_SALES_ORC.SS_QUANTITY,
+ HIVE.STORE_SALES_ORC.SS_WHOLESALE_COST,
+ HIVE.STORE_SALES_ORC.SS_LIST_PRICE,
+ HIVE.STORE_SALES_ORC.SS_SALES_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_DISCOUNT_AMT,
+ HIVE.STORE_SALES_ORC.SS_EXT_SALES_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_WHOLESALE_COST,
+ HIVE.STORE_SALES_ORC.SS_EXT_LIST_PRICE,
+ HIVE.STORE_SALES_ORC.SS_EXT_TAX,
+ HIVE.STORE_SALES_ORC.SS_COUPON_AMT,
+ HIVE.STORE_SALES_ORC.SS_NET_PAID,
+ HIVE.STORE_SALES_ORC.SS_NET_PAID_INC_TAX,
+ HIVE.STORE_SALES_ORC.SS_NET_PROFIT
+
+
+NESTED_JOIN =============================== SEQ_NO 3 CHILDREN 1, 2
+REQUESTS_IN .............. 1
+ROWS_OUT ......... 2,880,404
+EST_OPER_COST ............ 0.2
+EST_TOTAL_COST ... 9,688,410
+DESCRIPTION
+ max_card_est ........... 2.8804e+06
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 402
+ join_type .............. inner
+ join_method ............ nested
+
+
+ORC_SCAN ================================== SEQ_NO 2 NO CHILDREN
+TABLE_NAME ............... HIVE.HIVE.STORE_SALES_ORC
+REQUESTS_IN ........ 100,000
+ROWS/REQUEST ............ 28.8
+EST_OPER_COST .... 9,688,403
+EST_TOTAL_COST ... 9,688,403
+DESCRIPTION
+ max_card_est ........... 2.8804e+06
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 132
+ scan_type .............. full scan of table HIVE.HIVE.STORE_SALES_ORC
+ object_type ............ Hive_Orc
+ scan_direction ......... forward
+ lock_mode .............. not specified, defaulted to lock cursor
+ access_mode ............ not specified, defaulted to read committed
+ columns_retrieved ..... 23
+ probes ........... 100,000
+ successful_probes 100,000
+ unique_probes ...... 5,000
+ duplicated_succ_pr 95,000
+ rows_accessed .......... 2.8804e+06
+ orc_pred_pushdown ...... yes
+ orc_search_arguments ... and( HIVE.STORE_SALES_ORC.SS_ITEM_SK =
+ cast(HIVE.CUSTOMER_ORC.C_CUSTOMER_SK) )
+ executor_predicates .... (HIVE.STORE_SALES_ORC.SS_ITEM_SK =
+ HIVE.CUSTOMER_ORC.C_CUSTOMER_SK)
+
+
+ORC_SCAN ================================== SEQ_NO 1 NO CHILDREN
+TABLE_NAME ............... HIVE.HIVE.CUSTOMER_ORC
+REQUESTS_IN .............. 1
+ROWS_OUT ........... 100,000
+EST_OPER_COST ............ 6.3
+EST_TOTAL_COST ........... 6.3
+DESCRIPTION
+ max_card_est ..... 100,000
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 270
+ scan_type .............. full scan of table HIVE.HIVE.CUSTOMER_ORC
+ object_type ............ Hive_Orc
+ scan_direction ......... forward
+ lock_mode .............. not specified, defaulted to lock cursor
+ access_mode ............ not specified, defaulted to read committed
+ columns_retrieved ..... 18
+ probes ................. 1
+ rows_accessed .... 100,000
+ orc_pred_pushdown ...... yes
+ orc_search_arguments ... and( not( HIVE.CUSTOMER_ORC.C_CUSTOMER_SK is null )
+ )
+ executor_predicates .... HIVE.CUSTOMER_ORC.C_CUSTOMER_SK is not null
+
+--- SQL operation complete.
+>>cqd orc_njs reset;
+
+--- SQL operation complete.
+>>
+>>-- join with parallel nested join
+>>
+>>control query shape off;
+
+--- SQL operation complete.
+>>cqd HIVE_USE_EXT_TABLE_ATTRS 'off';
+
+--- SQL operation complete.
+>>cqd ncm_orc_costing 'on';
+
+--- SQL operation complete.
+>>cqd orc_njs 'on';
+
+--- SQL operation complete.
+>>cqd parallel_num_esps '4';
+
+--- SQL operation complete.
+>>
+>>prepare s from
++>select [last 0] ss_net_profit from
++>date_dim_orc dim, store_sales_sorted_orc ss
++>where
++>dim.d_date_sk = ss.ss_sold_date_sk
++>and d_year in (2001) and d_dom = 30 -- produce 12 rows
++>;
+
+--- SQL command prepared.
+>>
+>>explain options 'f' s;
+
+LC RC OP OPERATOR OPT DESCRIPTION CARD
+---- ---- ---- -------------------- -------- -------------------- ---------
+
+6 . 7 root 1.00E+000
+5 . 6 firstn 1.00E+000
+4 . 5 esp_exchange 1:4(hash2) 2.88E+006
+3 2 4 hybrid_hash_join 2.88E+006
+. . 3 orc_scan STORE_SALES_SORTED_O 2.88E+006
+1 . 2 esp_exchange 4(rep-b):2(hash2) 2.00E+000
+. . 1 orc_scan DATE_DIM_ORC 2.00E+000
+
+--- SQL operation complete.
+>>
+>>cqd HIVE_USE_EXT_TABLE_ATTRS reset;
+
+--- SQL operation complete.
+>>cqd ncm_orc_costing reset;
+
+--- SQL operation complete.
+>>cqd orc_njs reset;
+
+--- SQL operation complete.
+>>cqd parallel_num_esps reset;
+
+--- SQL operation complete.
+>>
+>>
+>>-- more external table tests
+>>
+>>control query shape cut;
+
+--- SQL operation complete.
+>>set schema trafodion.sch;
+
+--- SQL operation complete.
+>>drop external table if exists date_dim_orc for hive.hive.date_dim_orc;
+
+--- SQL operation complete.
+>>cqd volatile_table_find_suitable_key 'SYSTEM';
+
+--- SQL operation complete.
+>>create external table date_dim_orc
++> (d_date_sk int, d_date_id varchar(100 bytes) character set utf8, d_date date,
++> d_month_seq int, d_week_seq int, d_quarter_seq int, d_year int, d_dow int,
++> d_moy int, d_dom int, d_qoy int, d_fy_year int, d_fy_quarter_seq int,
++> d_fy_week_seq int,
++> d_day_name varchar(120 bytes) character set utf8, d_quarter_name varchar(200 bytes) character set utf8, d_holiday varchar(100 bytes) character set utf8,
++> d_weekend varchar(100 bytes) character set utf8, d_following_holiday varchar(100 bytes) character set utf8,
++> d_first_dom int, d_last_dom int, d_same_day_ly int, d_same_day_lq int,
++> d_current_day varchar(100 bytes) character set utf8, d_current_week varchar(111 bytes) character set utf8,
++> d_current_month varchar(200 bytes) character set utf8, d_current_quarter varchar(100 bytes) character set utf8,
++> d_current_year varchar(100 bytes) character set utf8)
++> for hive.hive.date_dim_orc;
+
+--- SQL operation complete.
+>>invoke hive.hive.date_dim_orc;
+
+-- Definition of hive table DATE_DIM_ORC
+-- Definition current Thu Mar 16 02:24:50 2017
+
+ (
+ D_DATE_SK INT
+ , D_DATE_ID VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_DATE DATE
+ , D_MONTH_SEQ INT
+ , D_WEEK_SEQ INT
+ , D_QUARTER_SEQ INT
+ , D_YEAR INT
+ , D_DOW INT
+ , D_MOY INT
+ , D_DOM INT
+ , D_QOY INT
+ , D_FY_YEAR INT
+ , D_FY_QUARTER_SEQ INT
+ , D_FY_WEEK_SEQ INT
+ , D_DAY_NAME VARCHAR(120 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_QUARTER_NAME VARCHAR(200 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_HOLIDAY VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_WEEKEND VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_FOLLOWING_HOLIDAY VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_FIRST_DOM INT
+ , D_LAST_DOM INT
+ , D_SAME_DAY_LY INT
+ , D_SAME_DAY_LQ INT
+ , D_CURRENT_DAY VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_CURRENT_WEEK VARCHAR(111 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_CURRENT_MONTH VARCHAR(200 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_CURRENT_QUARTER VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_CURRENT_YEAR VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ )
+ /* stored as orc */
+
+--- SQL operation complete.
+>>showddl hive.hive.date_dim_orc;
+
+/* Hive DDL */
+CREATE TABLE DEFAULT.DATE_DIM_ORC
+ (
+ D_DATE_SK int
+ , D_DATE_ID string
+ , D_DATE date
+ , D_MONTH_SEQ int
+ , D_WEEK_SEQ int
+ , D_QUARTER_SEQ int
+ , D_YEAR int
+ , D_DOW int
+ , D_MOY int
+ , D_DOM int
+ , D_QOY int
+ , D_FY_YEAR int
+ , D_FY_QUARTER_SEQ int
+ , D_FY_WEEK_SEQ int
+ , D_DAY_NAME string
+ , D_QUARTER_NAME string
+ , D_HOLIDAY string
+ , D_WEEKEND string
+ , D_FOLLOWING_HOLIDAY string
+ , D_FIRST_DOM int
+ , D_LAST_DOM int
+ , D_SAME_DAY_LY int
+ , D_SAME_DAY_LQ int
+ , D_CURRENT_DAY string
+ , D_CURRENT_WEEK string
+ , D_CURRENT_MONTH string
+ , D_CURRENT_QUARTER string
+ , D_CURRENT_YEAR string
+ )
+ stored as orc
+;
+
+/* Trafodion DDL */
+
+CREATE EXTERNAL TABLE DATE_DIM_ORC
+ (
+ D_DATE_SK INT DEFAULT NULL
+ , D_DATE_ID VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_DATE DATE DEFAULT NULL
+ , D_MONTH_SEQ INT DEFAULT NULL
+ , D_WEEK_SEQ INT DEFAULT NULL
+ , D_QUARTER_SEQ INT DEFAULT NULL
+ , D_YEAR INT DEFAULT NULL
+ , D_DOW INT DEFAULT NULL
+ , D_MOY INT DEFAULT NULL
+ , D_DOM INT DEFAULT NULL
+ , D_QOY INT DEFAULT NULL
+ , D_FY_YEAR INT DEFAULT NULL
+ , D_FY_QUARTER_SEQ INT DEFAULT NULL
+ , D_FY_WEEK_SEQ INT DEFAULT NULL
+ , D_DAY_NAME VARCHAR(120 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_QUARTER_NAME VARCHAR(200 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_HOLIDAY VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_WEEKEND VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_FOLLOWING_HOLIDAY VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_FIRST_DOM INT DEFAULT NULL
+ , D_LAST_DOM INT DEFAULT NULL
+ , D_SAME_DAY_LY INT DEFAULT NULL
+ , D_SAME_DAY_LQ INT DEFAULT NULL
+ , D_CURRENT_DAY VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_CURRENT_WEEK VARCHAR(111 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_CURRENT_MONTH VARCHAR(200 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_CURRENT_QUARTER VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_CURRENT_YEAR VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ )
+ FOR HIVE.HIVE.DATE_DIM_ORC
+;
+
+--- SQL operation complete.
+>>prepare s from select * from hive.hive.date_dim_orc where d_date = date '2016-01-27';
+
+--- SQL command prepared.
+>>explain s;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... S
+PLAN_ID .................. 212356391094205166
+ROWS_OUT ............... 271
+EST_TOTAL_COST ........... 0.59
+STATEMENT ................ select *
+ from hive.hive.date_dim_orc
+ where d_date = date '2016-01-27';
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ............... 271
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.59
+DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ max_card_est ...... 69,397.5
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ...... 1,477
+ statement_index ........ 0
+ affinity_value ......... 0
+ max_max_cardinality 271
+ 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 .......... NOT AVAILABLE
+ HIVE_MAX_STRING_LENGTH 20
+ MODE_SEAHIVE ........... ON
+ TRAF_ENABLE_ORC_FORMAT ON
+ HIST_ROWCOUNT_REQU 50,000
+ HIST_MISSING_STATS_WARN 0
+ ORC_NJS_PROBES_T 1,000,000
+ HIVE_MIN_NUM_ESPS_PER_D 0
+ ORC_COLUMNS_PUSHDOWN ... ON
+ ORC_PRED_PUSHDOWN ...... ON
+ ORC_AGGR_PUSHDOWN ...... OFF
+ SCHEMA ................. TRAFODION.SCH
+ VOLATILE_TABLE_FIND_SUI SYSTEM
+ select_list ............ HIVE.DATE_DIM_ORC.D_DATE_SK,
+ HIVE.DATE_DIM_ORC.D_DATE_ID, %(2016-01-27),
+ HIVE.DATE_DIM_ORC.D_MONTH_SEQ,
+ HIVE.DATE_DIM_ORC.D_WEEK_SEQ,
+ HIVE.DATE_DIM_ORC.D_QUARTER_SEQ,
+ HIVE.DATE_DIM_ORC.D_YEAR, HIVE.DATE_DIM_ORC.D_DOW,
+ HIVE.DATE_DIM_ORC.D_MOY, HIVE.DATE_DIM_ORC.D_DOM,
+ HIVE.DATE_DIM_ORC.D_QOY,
+ HIVE.DATE_DIM_ORC.D_FY_YEAR,
+ HIVE.DATE_DIM_ORC.D_FY_QUARTER_SEQ,
+ HIVE.DATE_DIM_ORC.D_FY_WEEK_SEQ,
+ HIVE.DATE_DIM_ORC.D_DAY_NAME,
+ HIVE.DATE_DIM_ORC.D_QUARTER_NAME,
+ HIVE.DATE_DIM_ORC.D_HOLIDAY,
+ HIVE.DATE_DIM_ORC.D_WEEKEND,
+ HIVE.DATE_DIM_ORC.D_FOLLOWING_HOLIDAY,
+ HIVE.DATE_DIM_ORC.D_FIRST_DOM,
+ HIVE.DATE_DIM_ORC.D_LAST_DOM,
+ HIVE.DATE_DIM_ORC.D_SAME_DAY_LY,
+ HIVE.DATE_DIM_ORC.D_SAME_DAY_LQ,
+ HIVE.DATE_DIM_ORC.D_CURRENT_DAY,
+ HIVE.DATE_DIM_ORC.D_CURRENT_WEEK,
+ HIVE.DATE_DIM_ORC.D_CURRENT_MONTH,
+ HIVE.DATE_DIM_ORC.D_CURRENT_QUARTER,
+ HIVE.DATE_DIM_ORC.D_CURRENT_YEAR
+ input_variables ........ %(2016-01-27)
+
+
+ORC_SCAN ================================== SEQ_NO 1 NO CHILDREN
+TABLE_NAME ............... HIVE.HIVE.DATE_DIM_ORC
+REQUESTS_IN .............. 1
+ROWS_OUT ............... 271
+EST_OPER_COST ............ 0.59
+EST_TOTAL_COST ........... 0.59
+DESCRIPTION
+ max_card_est ...... 69,397.5
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ...... 1,471
+ scan_type .............. full scan of table HIVE.HIVE.DATE_DIM_ORC
+ object_type ............ Hive_Orc
+ scan_direction ......... forward
+ lock_mode .............. not specified, defaulted to lock cursor
+ access_mode ............ not specified, defaulted to read committed
+ columns_retrieved ..... 28
+ probes ................. 1
+ rows_accessed ..... 73,049
+ orc_pred_pushdown ...... yes
+ orc_search_arguments ... and( HIVE.DATE_DIM_ORC.D_DATE = cast(%(2016-01-27))
+ )
+ executor_predicates .... (HIVE.DATE_DIM_ORC.D_DATE = %(2016-01-27))
+
+--- SQL operation complete.
+>>
+>>drop external table if exists date_dim_orc for hive.hive.date_dim_orc;
+
+--- SQL operation complete.
+>>create external table date_dim_orc
++> (d_date_sk int, d_date_id varchar(100 bytes) character set utf8, d_date date)
++> for hive.hive.date_dim_orc;
+
+--- SQL operation complete.
+>>invoke hive.hive.date_dim_orc;
+
+-- Definition of hive table DATE_DIM_ORC
+-- Definition current Thu Mar 16 02:25:05 2017
+
+ (
+ D_DATE_SK INT
+ , D_DATE_ID VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_DATE DATE
+ , D_MONTH_SEQ INT
+ , D_WEEK_SEQ INT
+ , D_QUARTER_SEQ INT
+ , D_YEAR INT
+ , D_DOW INT
+ , D_MOY INT
+ , D_DOM INT
+ , D_QOY INT
+ , D_FY_YEAR INT
+ , D_FY_QUARTER_SEQ INT
+ , D_FY_WEEK_SEQ INT
+ , D_DAY_NAME VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_QUARTER_NAME VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_HOLIDAY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_WEEKEND VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_FOLLOWING_HOLIDAY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_FIRST_DOM INT
+ , D_LAST_DOM INT
+ , D_SAME_DAY_LY INT
+ , D_SAME_DAY_LQ INT
+ , D_CURRENT_DAY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_CURRENT_WEEK VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_CURRENT_MONTH VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_CURRENT_QUARTER VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ , D_CURRENT_YEAR VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT
+ )
+ /* stored as orc */
+
+--- SQL operation complete.
+>>showddl hive.hive.date_dim_orc;
+
+/* Hive DDL */
+CREATE TABLE DEFAULT.DATE_DIM_ORC
+ (
+ D_DATE_SK int
+ , D_DATE_ID string
+ , D_DATE date
+ , D_MONTH_SEQ int
+ , D_WEEK_SEQ int
+ , D_QUARTER_SEQ int
+ , D_YEAR int
+ , D_DOW int
+ , D_MOY int
+ , D_DOM int
+ , D_QOY int
+ , D_FY_YEAR int
+ , D_FY_QUARTER_SEQ int
+ , D_FY_WEEK_SEQ int
+ , D_DAY_NAME string
+ , D_QUARTER_NAME string
+ , D_HOLIDAY string
+ , D_WEEKEND string
+ , D_FOLLOWING_HOLIDAY string
+ , D_FIRST_DOM int
+ , D_LAST_DOM int
+ , D_SAME_DAY_LY int
+ , D_SAME_DAY_LQ int
+ , D_CURRENT_DAY string
+ , D_CURRENT_WEEK string
+ , D_CURRENT_MONTH string
+ , D_CURRENT_QUARTER string
+ , D_CURRENT_YEAR string
+ )
+ stored as orc
+;
+
+/* Trafodion DDL */
+
+CREATE EXTERNAL TABLE DATE_DIM_ORC
+ (
+ D_DATE_SK INT DEFAULT NULL
+ , D_DATE_ID VARCHAR(100 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_DATE DATE DEFAULT NULL
+ , D_MONTH_SEQ INT DEFAULT NULL
+ , D_WEEK_SEQ INT DEFAULT NULL
+ , D_QUARTER_SEQ INT DEFAULT NULL
+ , D_YEAR INT DEFAULT NULL
+ , D_DOW INT DEFAULT NULL
+ , D_MOY INT DEFAULT NULL
+ , D_DOM INT DEFAULT NULL
+ , D_QOY INT DEFAULT NULL
+ , D_FY_YEAR INT DEFAULT NULL
+ , D_FY_QUARTER_SEQ INT DEFAULT NULL
+ , D_FY_WEEK_SEQ INT DEFAULT NULL
+ , D_DAY_NAME VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_QUARTER_NAME VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_HOLIDAY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_WEEKEND VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_FOLLOWING_HOLIDAY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_FIRST_DOM INT DEFAULT NULL
+ , D_LAST_DOM INT DEFAULT NULL
+ , D_SAME_DAY_LY INT DEFAULT NULL
+ , D_SAME_DAY_LQ INT DEFAULT NULL
+ , D_CURRENT_DAY VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_CURRENT_WEEK VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_CURRENT_MONTH VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_CURRENT_QUARTER VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ , D_CURRENT_YEAR VARCHAR(20 BYTES) CHARACTER SET UTF8
+ COLLATE DEFAULT DEFAULT NULL
+ )
+ FOR HIVE.HIVE.DATE_DIM_ORC
+;
+
+--- SQL operation complete.
+>>prepare s from select * from hive.hive.date_dim_orc where d_date = date '2016-01-27';
+
+--- SQL command prepared.
+>>explain s;
+
+------------------------------------------------------------------ PLAN SUMMARY
+MODULE_NAME .............. DYNAMICALLY COMPILED
+STATEMENT_NAME ........... S
+PLAN_ID .................. 212356391108806821
+ROWS_OUT ............... 271
+EST_TOTAL_COST ........... 0.59
+STATEMENT ................ select *
+ from hive.hive.date_dim_orc
+ where d_date = date '2016-01-27';
+
+
+------------------------------------------------------------------ NODE LISTING
+ROOT ====================================== SEQ_NO 2 ONLY CHILD 1
+REQUESTS_IN .............. 1
+ROWS_OUT ............... 271
+EST_OPER_COST ............ 0
+EST_TOTAL_COST ........... 0.59
+DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
+ max_card_est ...... 69,397.5
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 446
+ statement_index ........ 0
+ affinity_value ......... 0
+ max_max_cardinality 271
+ 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 .......... NOT AVAILABLE
+ HIVE_MAX_STRING_LENGTH 20
+ MODE_SEAHIVE ........... ON
+ TRAF_ENABLE_ORC_FORMAT ON
+ HIST_ROWCOUNT_REQU 50,000
+ HIST_MISSING_STATS_WARN 0
+ ORC_NJS_PROBES_T 1,000,000
+ HIVE_MIN_NUM_ESPS_PER_D 0
+ ORC_COLUMNS_PUSHDOWN ... ON
+ ORC_PRED_PUSHDOWN ...... ON
+ ORC_AGGR_PUSHDOWN ...... OFF
+ SCHEMA ................. TRAFODION.SCH
+ VOLATILE_TABLE_FIND_SUI SYSTEM
+ select_list ............ HIVE.DATE_DIM_ORC.D_DATE_SK,
+ HIVE.DATE_DIM_ORC.D_DATE_ID, %(2016-01-27),
+ HIVE.DATE_DIM_ORC.D_MONTH_SEQ,
+ HIVE.DATE_DIM_ORC.D_WEEK_SEQ,
+ HIVE.DATE_DIM_ORC.D_QUARTER_SEQ,
+ HIVE.DATE_DIM_ORC.D_YEAR, HIVE.DATE_DIM_ORC.D_DOW,
+ HIVE.DATE_DIM_ORC.D_MOY, HIVE.DATE_DIM_ORC.D_DOM,
+ HIVE.DATE_DIM_ORC.D_QOY,
+ HIVE.DATE_DIM_ORC.D_FY_YEAR,
+ HIVE.DATE_DIM_ORC.D_FY_QUARTER_SEQ,
+ HIVE.DATE_DIM_ORC.D_FY_WEEK_SEQ,
+ HIVE.DATE_DIM_ORC.D_DAY_NAME,
+ HIVE.DATE_DIM_ORC.D_QUARTER_NAME,
+ HIVE.DATE_DIM_ORC.D_HOLIDAY,
+ HIVE.DATE_DIM_ORC.D_WEEKEND,
+ HIVE.DATE_DIM_ORC.D_FOLLOWING_HOLIDAY,
+ HIVE.DATE_DIM_ORC.D_FIRST_DOM,
+ HIVE.DATE_DIM_ORC.D_LAST_DOM,
+ HIVE.DATE_DIM_ORC.D_SAME_DAY_LY,
+ HIVE.DATE_DIM_ORC.D_SAME_DAY_LQ,
+ HIVE.DATE_DIM_ORC.D_CURRENT_DAY,
+ HIVE.DATE_DIM_ORC.D_CURRENT_WEEK,
+ HIVE.DATE_DIM_ORC.D_CURRENT_MONTH,
+ HIVE.DATE_DIM_ORC.D_CURRENT_QUARTER,
+ HIVE.DATE_DIM_ORC.D_CURRENT_YEAR
+ input_variables ........ %(2016-01-27)
+
+
+ORC_SCAN ================================== SEQ_NO 1 NO CHILDREN
+TABLE_NAME ............... HIVE.HIVE.DATE_DIM_ORC
+REQUESTS_IN .............. 1
+ROWS_OUT ............... 271
+EST_OPER_COST ............ 0.59
+EST_TOTAL_COST ........... 0.59
+DESCRIPTION
+ max_card_est ...... 69,397.5
+ fragment_id ............ 0
+ parent_frag ............ (none)
+ fragment_type .......... master
+ record_length ........ 440
+ scan_type .............. full scan of table HIVE.HIVE.DATE_DIM_ORC
+ object_type ............ Hive_Orc
+ scan_direction ......... forward
+ lock_mode .............. not specified, defaulted to lock cursor
+ access_mode ............ not specified, defaulted to read committed
+ columns_retrieved ..... 28
+ probes ................. 1
+ rows_accessed ..... 73,049
+ orc_pred_pushdown ...... yes
+ orc_search_arguments ... and( HIVE.DATE_DIM_ORC.D_DATE = cast(%(2016-01-27))
+ )
+ executor_predicates .... (HIVE.DATE_DIM_ORC.D_DATE = %(2016-01-27))
+
+--- SQL operation complete.
+>>
+>>
+>>-- error cases
+>>drop external table if exists date_dim_orc for hive.hive.date_dim_orc;
+
+--- SQL operation complete.
+>>
+>>-- column d_date_skk doesn't exist in native hive table
+>>create external table date_dim_orc
++> (d_date_skk int)
++> for hive.hive.date_dim_orc;
+
+*** ERROR[1009] Column D_DATE_SKK does not exist in the specified table.
+
+--- SQL operation failed with errors.
+>>
+>>-- del/update not supported on orc or hive
+>>prepare s from delete from hive.hive.store2_sales_orc;
+
+*** ERROR[4223] Update/Delete on ORC table is not supported in this software version.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from update hive.hive.store2_sales_orc set ss_ext_tax = 1;
+
+*** ERROR[4223] Update/Delete on ORC table is not supported in this software version.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from delete from hive.hive.store_sales;
+
+*** ERROR[4223] Update/Delete on Hive table is not supported in this software version.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from update hive.hive.store_sales set ss_ext_tax = 1;
+
+*** ERROR[4223] Update/Delete on Hive table is not supported in this software version.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>
+>>-- upsert/insert cannot specify column list and must provide all column values.
+>>prepare s from upsert into hive.hive.store2_sales_orc values (1);
+
+*** ERROR[4023] The degree of each row value constructor (1) must equal the degree of the target table column list (23).
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from upsert using load into hive.hive.store2_sales_orc values (1);
+
+*** ERROR[4023] The degree of each row value constructor (1) must equal the degree of the target table column list (23).
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from insert into hive.hive.store2_sales_orc values (1);
+
+*** ERROR[4023] The degree of each row value constructor (1) must equal the degree of the target table column list (23).
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from update hive.hive.store2_sales_orc set ss_net_paid = 1;
+
+*** ERROR[4223] Update/Delete on ORC table is not supported in this software version.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from upsert into hive.hive.store2_sales_orc(ss_sold_date_sk) values (1);
+
+*** ERROR[4223] Target column list specification for insert/upsert into a Hive table is not supported in this software version.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from insert into hive.hive.store2_sales_orc(ss_sold_date_sk) values (1);
+
+*** ERROR[4223] Target column list specification for insert/upsert into a Hive table is not supported in this software version.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from upsert into hive.hive.store_sales(ss_sold_date_sk) values (1);
+
+*** ERROR[4223] Target column list specification for insert/upsert into a Hive table is not supported in this software version.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>prepare s from insert into hive.hive.store_sales(ss_sold_date_sk) values (1);
+
+*** ERROR[4223] Target column list specification for insert/upsert into a Hive table is not supported in
<TRUNCATED>
[08/15] incubator-trafodion git commit: Ensured that CQD
NUM_ESP_FRAGMENTS can take value upto 8. Removed the environment variable
concept to set the number of esp fragments. Removed the CQDs
ESP_NUM_FRAGMENTS_WITH_QUOTAS and ESP_MULTI_FRAGMENT_QUOTAS. U
Posted by se...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/optimizer/RelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExpr.cpp b/core/sql/optimizer/RelExpr.cpp
index 8aece47..81c48b0 100644
--- a/core/sql/optimizer/RelExpr.cpp
+++ b/core/sql/optimizer/RelExpr.cpp
@@ -1994,7 +1994,8 @@ double RelExpr::computeMemoryQuota(NABoolean inMaster,
double totalBMOsMemoryUsage, // for all BMOs per node in bytes
UInt16 numBMOsPerFragment, // per fragment
double bmoMemoryUsage, // for the current BMO/Operator per node in bytes
- Lng32 numStreams
+ Lng32 numStreams,
+ double &bmoQuotaRatio
)
{
if ( perNode == TRUE ) {
@@ -2010,6 +2011,7 @@ double RelExpr::computeMemoryQuota(NABoolean inMaster,
if (capMemoryRatio > 0 && capMemoryRatio <=1 && bmoMemoryRatio > capMemoryRatio)
bmoMemoryRatio = capMemoryRatio;
}
+ bmoQuotaRatio = bmoMemoryRatio;
double bmoMemoryQuotaPerNode = exeMem * bmoMemoryRatio;
double numInstancesPerNode = numStreams / MINOF(MAXOF(((NAClusterInfoLinux*)gpClusterInfo)->getTotalNumberOfCPUs(), 1), numStreams);
double bmoMemoryQuotaPerInstance = bmoMemoryQuotaPerNode / numInstancesPerNode;
@@ -2017,6 +2019,7 @@ double RelExpr::computeMemoryQuota(NABoolean inMaster,
} else {
// the old way to compute quota
Lng32 exeMem = getExeMemoryAvailable(inMaster);
+ bmoQuotaRatio = BMOQuotaRatio::NO_RATIO;
return exeMem / numBMOsPerFragment;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/optimizer/RelExpr.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExpr.h b/core/sql/optimizer/RelExpr.h
index da265a4..e8ffb5d 100644
--- a/core/sql/optimizer/RelExpr.h
+++ b/core/sql/optimizer/RelExpr.h
@@ -305,7 +305,8 @@ public:
double totalBMOsMemoryUsage,
UInt16 numBMOsPerFragment,
double BMOMemoryUsage,
- Lng32 numStreams
+ Lng32 numStreams,
+ double &memQuotaRatio
);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/sort/SortUtil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sort/SortUtil.cpp b/core/sql/sort/SortUtil.cpp
index e5f6f7d..722c60b 100644
--- a/core/sql/sort/SortUtil.cpp
+++ b/core/sql/sort/SortUtil.cpp
@@ -924,7 +924,7 @@ NABoolean SortUtil::consumeMemoryQuota(UInt32 bufferSizeBytes)
config_->callingTcb_->getGlobals()->castToExExeStmtGlobals();
//Check if memory quota is available.
- if(GetCliGlobals()->unusedMemoryQuota() < memNeededMB)
+ if(exe_glob->unusedMemoryQuota() < memNeededMB)
{
return FALSE;
}
@@ -934,7 +934,7 @@ NABoolean SortUtil::consumeMemoryQuota(UInt32 bufferSizeBytes)
config_->memoryQuotaMB_ += (short)memNeededMB;
if(this->withinMemoryLimitsAndPressure(bufferSizeBytes))
{
- if(GetCliGlobals()->grabMemoryQuotaIfAvailable(memNeededMB))
+ if(exe_glob->grabMemoryQuotaIfAvailable(memNeededMB))
{
config_->memoryQuotaUsedBytes_ += bufferSizeBytes;
return TRUE;
@@ -1013,7 +1013,7 @@ void SortUtil::returnExcessMemoryQuota(UInt32 overheadPerRecord)
ExExeStmtGlobals* exe_glob =
config_->callingTcb_->getGlobals()->castToExExeStmtGlobals();
- GetCliGlobals()->yieldMemoryQuota((UInt32) excessMemoryQuotaMB);
+ exe_glob->yieldMemoryQuota((UInt32) excessMemoryQuotaMB);
config_->memoryQuotaMB_ -= (short)excessMemoryQuotaMB;
}
}
@@ -1030,7 +1030,7 @@ UInt32 SortUtil::getMaxAvailableQuotaMB(void)
UInt32 maxAvailableQuotaMB =
config_->memoryQuotaMB_ -
(config_->memoryQuotaUsedBytes_/ONE_MB) +
- GetCliGlobals()->unusedMemoryQuota();
+ exe_glob->unusedMemoryQuota();
return (maxAvailableQuotaMB);
}
@@ -1042,7 +1042,7 @@ NABoolean SortUtil::withinMemoryLimitsAndPressure(Int64 reqMembytes)
//BMO only enabled if greater than zero.
if(config_ == NULL || config_->initialMemoryQuotaMB_ <= 0)
return FALSE;
-
+/*
//config_.heapAddr_->getUsage will return false as long as there exists a
//possibility of allocating additional executor segments when there
//is demand for memory allocation. Once we reach a limit of allocating
@@ -1064,7 +1064,7 @@ NABoolean SortUtil::withinMemoryLimitsAndPressure(Int64 reqMembytes)
return FALSE;
// LCOV_EXCL_STOP
}
-
+*/
if(!memMonitor_)
{
// LCOV_EXCL_START
@@ -1143,7 +1143,7 @@ if(!config_->getDisableCmpHintsOverflow())
//do the following check if sort has not overflowed.
if(state_ < SORT_SEND_END)
{
- Float32 E = config_->getSortMemEstInMbPerCpu(); //expected memory consumption by sort
+ Float32 E = config_->getSortMemEstInKBPerNode() / 1024; //expected memory consumption by sort
#ifdef FUTURE_WORK
//check extreme case first. Expected cannot be more than
@@ -1164,7 +1164,7 @@ if(!config_->getDisableCmpHintsOverflow())
{
// LCOV_EXCL_START
E = MAXOF( E, C *( 1 + estimateErrorPenalty));
- config_->setSortMemEstInMbPerCpu(E);
+ config_->setSortMemEstInKBPerNode(E * 1024);
// LCOV_EXCL_STOP
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/sort/SortUtilCfg.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sort/SortUtilCfg.cpp b/core/sql/sort/SortUtilCfg.cpp
index 591b645..ba818f5 100644
--- a/core/sql/sort/SortUtilCfg.cpp
+++ b/core/sql/sort/SortUtilCfg.cpp
@@ -86,7 +86,7 @@ SortUtilConfig::SortUtilConfig(CollHeap* heap)
estimateErrorPenalty_ = 0;
pMemoryContingencyMB_ = 0;
bmoCitizenshipFactor_ = 0;
- sortMemEstInMbPerCpu_ = 0;
+ sortMemEstInKBPerNode_ = 0;
bmoMaxMemThresholdMB_ = 0;
intermediateScratchCleanup_ = TRUE;
topNSort_ = FALSE;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/sort/SortUtilCfg.h
----------------------------------------------------------------------
diff --git a/core/sql/sort/SortUtilCfg.h b/core/sql/sort/SortUtilCfg.h
index 1bc8716..3c38943 100644
--- a/core/sql/sort/SortUtilCfg.h
+++ b/core/sql/sort/SortUtilCfg.h
@@ -263,8 +263,8 @@ public:
void setMemoryContingencyMB(Int32 mCMB) { pMemoryContingencyMB_ = mCMB;}
Int32 getMemoryContingencyMB(void) { return pMemoryContingencyMB_; }
- void setSortMemEstInMbPerCpu(Float32 s) {sortMemEstInMbPerCpu_=s;}
- Float32 getSortMemEstInMbPerCpu() {return sortMemEstInMbPerCpu_;}
+ void setSortMemEstInKBPerNode(Float32 s) {sortMemEstInKBPerNode_=s;}
+ Float32 getSortMemEstInKBPerNode() {return sortMemEstInKBPerNode_;}
void setEstimateErrorPenalty(Float32 e) {estimateErrorPenalty_ = e;}
Float32 getEstimateErrorPenalty() {return estimateErrorPenalty_;}
@@ -388,7 +388,7 @@ private:
Float32 estimateErrorPenalty_;
- Float32 sortMemEstInMbPerCpu_;
+ Float32 sortMemEstInKBPerNode_;
UInt16 bmoMaxMemThresholdMB_;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h
index 032ed6e..99b4af3 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -2833,8 +2833,6 @@ enum DefaultConstants
// These CQDs are for Multi-Fragment ESPs
ESP_MULTI_FRAGMENTS,
ESP_NUM_FRAGMENTS,
- ESP_NUM_FRAGMENTS_WITH_QUOTAS,
- ESP_MULTI_FRAGMENT_QUOTAS,
ESP_MULTI_FRAGMENT_QUOTA_VM,
EXE_SINGLE_BMO_QUOTA, // Quota system applys to fragments with single BMO
@@ -2900,8 +2898,6 @@ enum DefaultConstants
BMO_MEMORY_LIMIT_LOWER_BOUND_SORT ,
// lower-bound memory limit for nBMOs
- BMO_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE ,
- EXE_MEMORY_LIMIT_LOWER_BOUND_PA ,
EXE_MEMORY_LIMIT_LOWER_BOUND_SEQUENCE ,
EXE_MEMORY_LIMIT_LOWER_BOUND_EXCHANGE ,
@@ -3884,6 +3880,9 @@ enum DefaultConstants
// Used during dev regressions to cleanse explain output.
EXPLAIN_OPTION_C,
+ // Threshold when TOPN sort becomes a regular sort
+ GEN_SORT_TOPN_THRESHOLD,
+
// This enum constant must be the LAST one in the list; it's a count,
// not an Attribute (it's not IN DefaultDefaults; it's the SIZE of it)!
__NUM_DEFAULT_ATTRIBUTES
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/sqlcomp/DefaultValidator.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultValidator.h b/core/sql/sqlcomp/DefaultValidator.h
index 8081ef7..1e70cac 100644
--- a/core/sql/sqlcomp/DefaultValidator.h
+++ b/core/sql/sqlcomp/DefaultValidator.h
@@ -336,6 +336,14 @@ public:
};
+class ValidateUIntFrom1To8 : public ValidateNumericRange
+{
+public:
+ ValidateUIntFrom1To8()
+ : ValidateNumericRange(VALID_UINT, (float)1, (float)8) {}
+
+};
+
class ValidateUIntFrom1To10 : public ValidateNumericRange
{
public:
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/f538c2f9/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index 7ac33d6..2de3a2a 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -232,6 +232,7 @@ struct DefaultDefault
#define DDui0_5(name,value) DD(name,value,&validateUIntFrom0To5)
#define XDDui0_5(name,value) XDD(name,value,&validateUIntFrom0To5)
#define DDui1_6(name,value) DD(name,value,&validateUIntFrom1To6)
+#define DDui1_8(name,value) DD(name,value,&validateUIntFrom1To8)
#define DDui1_10(name,value) DD(name,value,&validateUIntFrom1To10)
#define DDui2_10(name,value) DD(name,value,&validateUIntFrom2To10)
#define DDui1500_4000(name,value) DD(name,value,&validateUIntFrom1500To4000)
@@ -301,6 +302,7 @@ const ValidateUInt2 validateUI512(512); // pos multiples of 512 only
const ValidateUIntFrom0To5 validateUIntFrom0To5; // integer from 0 to 5
const ValidateUIntFrom1500To4000 validateUIntFrom1500To4000; // integer from 1 to 6
const ValidateUIntFrom1To6 validateUIntFrom1To6; // integer from 1 to 6
+const ValidateUIntFrom1To8 validateUIntFrom1To8; // integer from 1 to 8
const ValidateUIntFrom1To10 validateUIntFrom1To10; // integer from 1 to 10
const ValidateUIntFrom2To10 validateUIntFrom2To10; // integer from 2 to 10
const ValidateIPCBuf validateIPCBuf; // for IPC message buffers (DP2 msgs)
@@ -462,7 +464,6 @@ SDDkwd__(ALLOW_DP2_ROW_SAMPLING, "SYSTEM"),
DDflte_(BMO_MEMORY_ESTIMATE_RATIO_CAP, "0.7"),
DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY , "25"),
DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_HASHJOIN, "25"),
- DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE , "25"),
DDui___(BMO_MEMORY_LIMIT_LOWER_BOUND_SORT , "200"),
XDDui___(BMO_MEMORY_LIMIT_PER_NODE, "10240"),
DDui___(BMO_MEMORY_LIMIT_UPPER_BOUND, "1200"),
@@ -1307,10 +1308,8 @@ SDDui___(CYCLIC_ESP_PLACEMENT, "1"),
DDSint__(ESP_FIXUP_PRIORITY_DELTA, "0"),
DDint__(ESP_IDLE_TIMEOUT, "1800"), // To match with set session defaults value
DDkwd__(ESP_MULTI_FRAGMENTS, "ON"),
- DDkwd__(ESP_MULTI_FRAGMENT_QUOTAS, "ON"),
DDui1500_4000(ESP_MULTI_FRAGMENT_QUOTA_VM, "4000"),
- DDui1_6(ESP_NUM_FRAGMENTS, "3"),
- DDui1_6(ESP_NUM_FRAGMENTS_WITH_QUOTAS, "6"),
+ DDui1_8(ESP_NUM_FRAGMENTS, "3"),
DDSint__(ESP_PRIORITY, "0"),
DDSint__(ESP_PRIORITY_DELTA, "0"),
@@ -1339,7 +1338,6 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"),
// lower-bound memory limit for BMOs/nbmos (in MB)
DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_EXCHANGE, "10"),
DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN, "10"),
- DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_PA , "10"),
DDui___(EXE_MEMORY_LIMIT_LOWER_BOUND_SEQUENCE , "10"),
// Override the memory quota system; set limit per each and every BMO
@@ -1630,6 +1628,7 @@ SDDkwd__(EXE_DIAGNOSTIC_EVENTS, "OFF"),
DDui1__(GEN_SORT_SIZE_DOWN, "2"),
DDui1__(GEN_SORT_SIZE_UP, "1024"),
DDkwd__(GEN_SORT_TOPN, "ON"),
+ DDui1__(GEN_SORT_TOPN_THRESHOLD, "10000"),
DDui1__(GEN_SPLB_BUFFER_SIZE, "2"),
DDui1__(GEN_SPLB_NUM_BUFFERS, "1"),
DDui1__(GEN_SPLB_SIZE_DOWN, "2"),
@@ -5160,8 +5159,6 @@ NABoolean NADefaults::isReadonlyAttribute(const char* attrName) const
( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_MERGEJOIN") == 0 ) ||
( stricmp(attrName, "BMO_MEMORY_LIMIT_LOWER_BOUND_HASHGROUPBY") == 0 ) ||
( stricmp(attrName, "BMO_MEMORY_LIMIT_LOWER_BOUND_SORT") == 0 ) ||
- ( stricmp(attrName, "BMO_MEMORY_LIMIT_LOWER_BOUND_PROBE_CACHE") == 0 ) ||
- ( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_PA") == 0 ) ||
( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_SEQUENCE") == 0 ) ||
( stricmp(attrName, "EXE_MEMORY_LIMIT_LOWER_BOUND_EXCHANGE") == 0 ) ||
( stricmp(attrName, "SORT_ALGO") == 0 ) ||
[07/15] incubator-trafodion git commit: Merge branch 'master' of
git://git.apache.org/incubator-trafodion into bmo_memory_quota
Posted by se...@apache.org.
Merge branch 'master' of git://git.apache.org/incubator-trafodion into bmo_memory_quota
Conflicts:
core/sql/cli/Globals.cpp
core/sql/executor/cluster.cpp
core/sql/regress/hive/EXPECTED009
core/sql/regress/seabase/EXPECTED010
core/sql/regress/seabase/EXPECTED011
core/sql/regress/seabase/EXPECTED016
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/175402bf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/175402bf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/175402bf
Branch: refs/heads/master
Commit: 175402bfcec383049f85d11bc237c3d1d6b80e03
Parents: 00e3b87 b62e577
Author: selvaganesang <se...@esgyn.com>
Authored: Thu Sep 7 04:35:59 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Thu Sep 7 04:35:59 2017 +0000
----------------------------------------------------------------------
core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp | 6 +
.../odbc/src/odbc/nsksrvrcore/SQLWrapper.cpp | 5 +-
core/sql/SqlCompilerDebugger/QueryData.cpp | 4 -
core/sql/arkcmp/CmpConnection.cpp | 18 +-
core/sql/arkcmp/CmpContext.cpp | 15 +-
core/sql/arkcmp/CmpContext.h | 8 -
core/sql/arkcmp/CmpSqlSession.cpp | 4 +-
core/sql/arkcmp/CmpStatement.cpp | 121 +-
core/sql/arkcmp/CmpStatement.h | 12 -
core/sql/arkcmp/CmpStoredProc.cpp | 5 -
core/sql/arkcmp/ProcessEnv.cpp | 2 -
core/sql/arkcmp/ProcessEnv.h | 5 -
core/sql/bin/SqlciErrors.txt | 1 -
core/sql/bin/SqlciMain.cpp | 14 +-
core/sql/bin/arkcmp.cpp | 9 +-
core/sql/bin/ex_esp_main.cpp | 24 +-
core/sql/bin/vproceid.cpp | 2 +-
core/sql/cli/Cli.cpp | 940 +---------
core/sql/cli/Cli.h | 20 +-
core/sql/cli/CliDefs.h | 3 -
core/sql/cli/CliDll.cpp | 44 -
core/sql/cli/CliExpExchange.cpp | 15 +-
core/sql/cli/CliExtern.cpp | 962 +---------
core/sql/cli/CliStubsStaticBuild.cpp | 41 -
core/sql/cli/Context.cpp | 1278 +-------------
core/sql/cli/Context.h | 31 +-
core/sql/cli/Descriptor.cpp | 30 -
core/sql/cli/Descriptor.h | 4 +-
core/sql/cli/ExSqlComp.cpp | 274 +--
core/sql/cli/ExSqlComp.h | 1 -
core/sql/cli/Globals.cpp | 50 +-
core/sql/cli/Globals.h | 28 -
core/sql/cli/GlobalsDef.cpp | 2 +-
core/sql/cli/Module.cpp | 48 +-
core/sql/cli/Module.h | 5 -
core/sql/cli/NoWaitOp.cpp | 13 +-
core/sql/cli/SQLCLIdev.h | 673 +------
core/sql/cli/SessionDefaults.cpp | 4 -
core/sql/cli/Statement.cpp | 270 +--
core/sql/cli/Statement.h | 31 +-
core/sql/cli/StoredProcInterface.cpp | 9 -
core/sql/cli/StoredProcInterface.h | 9 -
core/sql/cli/VicKeyValuePair.h | 14 -
core/sql/cli/cli_stdh.h | 1 -
core/sql/cli/globalsrlversion.cpp | 2 +-
core/sql/cli/globalstubs.cpp | 17 -
core/sql/cli/memorymonitor.cpp | 2 -
core/sql/cli/memorymonitor.h | 3 -
core/sql/cli/muse.cpp | 6 -
core/sql/cli/privsrlversion.cpp | 2 +-
core/sql/cli/rtdu.cpp | 61 -
core/sql/cli/rtdu.h | 897 +---------
core/sql/cli/rtdu2.cpp | 254 ---
core/sql/cli/rtdu2.h | 118 +-
core/sql/cli/sql_id.cpp | 12 -
core/sql/cli/sql_id.h | 18 -
core/sql/cli/sqlciSRLStubs.cpp | 2 +
core/sql/cli/sqlcli.h | 318 ++--
core/sql/cli/test.cpp | 99 --
core/sql/clitest/blobtest.cpp | 12 +-
core/sql/comexe/CmpMessage.cpp | 34 +-
core/sql/comexe/CmpMessage.h | 26 +-
core/sql/comexe/ComKeyMDAM.h | 116 +-
core/sql/comexe/ComKeyRange.cpp | 2 +-
core/sql/comexe/ComKeyRange.h | 38 +-
core/sql/comexe/ComKeySingleSubset.h | 30 +-
core/sql/comexe/ComQueue.cpp | 4 -
core/sql/comexe/ComQueue.h | 60 +-
core/sql/comexe/ComTdb.cpp | 51 +-
core/sql/comexe/ComTdb.h | 179 +-
core/sql/comexe/ComTdbAll.h | 8 -
core/sql/comexe/ComTdbBlockingHdfsScan.cpp | 10 -
core/sql/comexe/ComTdbBlockingHdfsScan.h | 8 -
core/sql/comexe/ComTdbCompoundStmt.h | 18 -
core/sql/comexe/ComTdbExeUtil.h | 59 +-
core/sql/comexe/ComTdbExplain.h | 2 +-
core/sql/comexe/ComTdbFastTransport.h | 35 +-
core/sql/comexe/ComTdbFirstN.h | 6 +-
core/sql/comexe/ComTdbHashGrby.h | 48 +-
core/sql/comexe/ComTdbHashj.h | 2 +-
core/sql/comexe/ComTdbHbaseAccess.h | 2 +-
core/sql/comexe/ComTdbMj.h | 2 +-
core/sql/comexe/ComTdbOnlj.h | 2 +-
core/sql/comexe/ComTdbPackRows.h | 13 -
core/sql/comexe/ComTdbRoot.h | 2 +-
core/sql/comexe/ComTdbSample.h | 18 -
core/sql/comexe/ComTdbSequence.h | 20 +-
core/sql/comexe/ComTdbSort.h | 4 +-
core/sql/comexe/ComTdbSortGrby.cpp | 2 +-
core/sql/comexe/ComTdbSortGrby.h | 18 -
core/sql/comexe/ComTdbSplitTop.h | 2 +-
core/sql/comexe/ComTdbTranspose.h | 20 +-
core/sql/comexe/ComTdbTuple.h | 32 +-
core/sql/comexe/ComTdbTupleFlow.cpp | 2 +-
core/sql/comexe/ComTdbTupleFlow.h | 2 +-
core/sql/comexe/ComTdbUdr.h | 2 +-
core/sql/comexe/ComTdbUnPackRows.h | 24 +-
core/sql/comexe/ComTdbUnion.cpp | 2 +-
core/sql/comexe/ComTdbUnion.h | 6 +-
core/sql/comexe/HashBufferHeader.h | 8 -
core/sql/comexe/HashRow.h | 14 -
core/sql/comexe/LateBindInfo.cpp | 244 +--
core/sql/comexe/LateBindInfo.h | 57 +-
core/sql/comexe/PartInputDataDesc.cpp | 3 +-
core/sql/comexe/QueueIndex.h | 5 -
core/sql/comexe/SqlTableOpenInfo.h | 15 -
core/sql/common/BaseTypes.cpp | 4 -
core/sql/common/BaseTypes.h | 8 +-
core/sql/common/BigNumHelper.h | 19 -
core/sql/common/Collections.cpp | 15 -
core/sql/common/Collections.h | 80 +-
core/sql/common/ComASSERT.h | 4 +-
core/sql/common/ComAnsiNamePart.h | 3 +-
core/sql/common/ComCextMisc.cpp | 10 -
core/sql/common/ComDistribution.h | 14 +-
core/sql/common/ComMPLoc.h | 8 +-
core/sql/common/ComObjectName.cpp | 30 -
core/sql/common/ComRtUtils.cpp | 7 +-
core/sql/common/ComRtUtils.h | 7 +-
core/sql/common/ComSafePrinter.cpp | 2 +-
core/sql/common/ComSchemaName.cpp | 23 -
core/sql/common/ComSmallDefs.cpp | 9 -
core/sql/common/ComSpace.cpp | 77 +-
core/sql/common/ComSpace.h | 52 +-
core/sql/common/ComSqlId.h | 19 +-
core/sql/common/ComSysUtils.cpp | 1 -
core/sql/common/ComSysUtils.h | 17 +-
core/sql/common/ComVersionDefs.h | 2 +-
core/sql/common/DgBaseType.h | 169 +-
core/sql/common/DllExportDefines.h | 21 -
core/sql/common/Int64.h | 28 +-
core/sql/common/IntervalType.cpp | 10 -
core/sql/common/IntervalType.h | 10 +-
core/sql/common/Ipc.cpp | 39 +-
core/sql/common/Ipc.h | 84 +-
core/sql/common/IpcGuardian.cpp | 280 +--
core/sql/common/IpcMessageType.h | 44 -
core/sql/common/IpcSockets.cpp | 20 -
core/sql/common/NAAssert.h | 10 +-
core/sql/common/NAError.h | 58 +-
core/sql/common/NAHeap.h | 10 +-
core/sql/common/NAIpc.cpp | 2 +-
core/sql/common/NAIpc.h | 2 +-
core/sql/common/NAMemory.cpp | 305 +---
core/sql/common/NAMemory.h | 399 ++---
core/sql/common/NAStdlib.h | 9 -
core/sql/common/NAString.cpp | 2 +-
core/sql/common/NAString2.cpp | 16 +-
core/sql/common/NAStringDefGlobals.h | 5 +-
core/sql/common/NAWinNT.h | 54 +-
core/sql/common/NLSConversion.h | 20 -
core/sql/common/NumericType.cpp | 17 -
core/sql/common/OperTypeEnum.h | 4 -
core/sql/common/Platform.h | 27 +-
core/sql/common/SMConnection.cpp | 13 -
core/sql/common/SqlEventsDllDefines.h | 8 +-
core/sql/common/SqlExpDllDefines.h | 27 -
core/sql/common/SqlExportDllDefines.h | 24 -
core/sql/common/SqlLmDllDefines.h | 20 +-
core/sql/common/arkcmp_proc.cpp | 2 -
core/sql/common/charinfo.cpp | 10 +-
core/sql/common/conversionLocale.cpp | 3 +-
core/sql/common/conversionSJIS.cpp | 7 +-
core/sql/common/csconvert.h | 15 -
core/sql/common/dfs2rec.h | 36 +-
core/sql/common/from_GB18030.c | 8 -
core/sql/common/from_GBK.c | 3 -
core/sql/common/from_SJIS.c | 2 -
core/sql/common/from_ksc5601.c | 2 -
core/sql/common/iconv_gen.c | 15 -
core/sql/common/ipcmsg.cpp | 2 +-
core/sql/common/mb_lconv.c | 38 +-
core/sql/common/memtest.cpp | 1 -
core/sql/common/multi-byte.h | 5 -
core/sql/common/nawstring.cpp | 4 -
core/sql/common/nawstring.h | 18 +-
core/sql/common/nchar_mp.h | 33 +-
core/sql/common/str.cpp | 18 -
core/sql/common/str.h | 46 +-
core/sql/common/stringBuf.h | 31 +-
core/sql/common/swscanf.cpp | 5 -
core/sql/common/swsprintf.cpp | 2 -
core/sql/common/unicode_char_set.cpp | 6 -
core/sql/common/unicode_char_set.h | 18 -
core/sql/common/wc_scanf_sprintf.h | 20 +-
core/sql/common/wstr.h | 5 +-
core/sql/executor/ExBitMapTable.cpp | 6 -
core/sql/executor/ExBitMapTable.h | 16 -
core/sql/executor/ExCancel.h | 6 +-
core/sql/executor/ExComTdb.cpp | 26 +-
core/sql/executor/ExCompoundStmt.h | 38 +-
core/sql/executor/ExExeUtil.h | 222 +--
core/sql/executor/ExExeUtilCommon.cpp | 10 +-
core/sql/executor/ExExeUtilGetStats.cpp | 7 +-
core/sql/executor/ExExeUtilLoad.cpp | 255 +--
core/sql/executor/ExExplain.cpp | 9 -
core/sql/executor/ExExplain.h | 6 +-
core/sql/executor/ExFastTransport.cpp | 7 -
core/sql/executor/ExFastTransport.h | 11 +-
core/sql/executor/ExFirstN.h | 34 +-
core/sql/executor/ExHbaseAccess.h | 12 +-
core/sql/executor/ExHdfsScan.h | 12 +-
core/sql/executor/ExMeas.cpp | 141 --
core/sql/executor/ExMeas.h | 267 ---
core/sql/executor/ExPack.h | 31 +-
core/sql/executor/ExPackedRows.h | 27 +-
core/sql/executor/ExProbeCache.h | 8 +-
core/sql/executor/ExRLE.h | 10 -
core/sql/executor/ExRsInfo.cpp | 24 +-
core/sql/executor/ExRsInfo.h | 2 +-
core/sql/executor/ExSample.h | 50 +-
core/sql/executor/ExScheduler.cpp | 97 +-
core/sql/executor/ExScheduler.h | 26 +-
core/sql/executor/ExSequence.cpp | 2 -
core/sql/executor/ExSimpleSample.h | 20 +-
core/sql/executor/ExSimpleSqlBuffer.h | 12 -
core/sql/executor/ExStats.cpp | 64 +-
core/sql/executor/ExStats.h | 812 +--------
core/sql/executor/ExTranspose.h | 29 +-
core/sql/executor/ExUdr.h | 6 +-
core/sql/executor/ExUdrServer.cpp | 29 +-
core/sql/executor/ExVPJoin.cpp | 16 -
core/sql/executor/ExVPJoin.h | 33 +-
core/sql/executor/Ex_esp_msg.h | 6 -
core/sql/executor/FixedSizeHeapElement.h | 18 +-
core/sql/executor/FixedSizeHeapManager.h | 30 +-
core/sql/executor/MdamEndPoint.h | 32 +-
core/sql/executor/MdamInterval.h | 44 +-
core/sql/executor/MdamIntervalIterator.h | 6 +-
core/sql/executor/MdamIntervalList.h | 30 +-
core/sql/executor/MdamIntervalListIterator.h | 8 +-
core/sql/executor/MdamIntervalListMerger.h | 10 +-
core/sql/executor/MdamPoint.h | 24 +-
core/sql/executor/MdamRefList.h | 32 +-
core/sql/executor/MdamRefListEntry.h | 18 +-
core/sql/executor/MdamRefListIterator.h | 6 +-
core/sql/executor/UdrExeIpc.h | 6 +-
core/sql/executor/cluster.cpp | 76 +-
core/sql/executor/cluster.h | 157 +-
core/sql/executor/dfs2fe.h | 1 -
core/sql/executor/dmeasql.h | 67 -
core/sql/executor/ex_control.cpp | 338 ++--
core/sql/executor/ex_control.h | 6 +-
core/sql/executor/ex_ddl.cpp | 265 ++-
core/sql/executor/ex_ddl.h | 30 +-
core/sql/executor/ex_error.h | 4 -
core/sql/executor/ex_esp_frag_dir.cpp | 2 -
core/sql/executor/ex_ex.cpp | 52 -
core/sql/executor/ex_ex.h | 18 +-
core/sql/executor/ex_exe_stmt_globals.cpp | 21 +-
core/sql/executor/ex_exe_stmt_globals.h | 38 +-
core/sql/executor/ex_frag_rt.cpp | 11 +-
core/sql/executor/ex_globals.cpp | 4 -
core/sql/executor/ex_globals.h | 70 +-
core/sql/executor/ex_god.h | 2 -
core/sql/executor/ex_hash_grby.cpp | 64 +-
core/sql/executor/ex_hash_grby.h | 37 +-
core/sql/executor/ex_hashj.cpp | 30 +-
core/sql/executor/ex_hashj.h | 10 +-
core/sql/executor/ex_io_control.h | 22 +-
core/sql/executor/ex_key_object.h | 1 -
core/sql/executor/ex_mdam.h | 70 +-
core/sql/executor/ex_mj.h | 8 +-
core/sql/executor/ex_onlj.cpp | 27 +-
core/sql/executor/ex_onlj.h | 6 +-
core/sql/executor/ex_queue.cpp | 10 -
core/sql/executor/ex_queue.h | 111 +-
core/sql/executor/ex_root.cpp | 17 +-
core/sql/executor/ex_root.h | 8 +-
core/sql/executor/ex_send_bottom.cpp | 4 +-
core/sql/executor/ex_send_bottom.h | 8 +-
core/sql/executor/ex_send_top.cpp | 2 -
core/sql/executor/ex_send_top.h | 8 +-
core/sql/executor/ex_sort.cpp | 13 +-
core/sql/executor/ex_sort.h | 10 +-
core/sql/executor/ex_sort_grby.h | 13 +-
core/sql/executor/ex_split_bottom.cpp | 7 +-
core/sql/executor/ex_split_bottom.h | 8 +-
core/sql/executor/ex_split_top.h | 8 +-
core/sql/executor/ex_stored_proc.h | 6 +-
core/sql/executor/ex_tcb.h | 95 +-
core/sql/executor/ex_tcb_private.h | 5 -
core/sql/executor/ex_timeout.h | 6 +-
core/sql/executor/ex_transaction.cpp | 8 -
core/sql/executor/ex_transaction.h | 6 +-
core/sql/executor/ex_tuple.cpp | 4 +-
core/sql/executor/ex_tuple.h | 36 +-
core/sql/executor/ex_tuple_flow.cpp | 3 -
core/sql/executor/ex_tuple_flow.h | 6 +-
core/sql/executor/ex_union.h | 59 +-
core/sql/executor/hash_table.cpp | 12 -
core/sql/executor/hash_table.h | 34 -
core/sql/executor/key_range.h | 26 +-
core/sql/executor/key_single_subset.h | 28 +-
core/sql/executor/rcb.h | 50 -
core/sql/executor/sql_buffer.cpp | 116 +-
core/sql/executor/sql_buffer.h | 17 +-
core/sql/executor/sql_buffer_size.h | 3 -
core/sql/executor/stubs.cpp | 384 ----
core/sql/executor/stubs2.cpp | 81 -
core/sql/executor/tempfile.cpp | 71 +-
core/sql/executor/tempfile.h | 67 -
core/sql/exp/ExpAtp.cpp | 6 -
core/sql/exp/ExpAtp.h | 29 +-
core/sql/exp/ExpBitMuxFunction.h | 22 +-
core/sql/exp/ExpCriDesc.cpp | 6 +-
core/sql/exp/ExpCriDesc.h | 21 +-
core/sql/exp/ExpDll.cpp | 3 +-
core/sql/exp/ExpError.cpp | 19 -
core/sql/exp/ExpError.h | 18 -
core/sql/exp/ExpErrorEnums.h | 11 -
core/sql/exp/ExpLOB.cpp | 42 -
core/sql/exp/ExpLOB.h | 70 +-
core/sql/exp/ExpLOBaccess.cpp | 135 +-
core/sql/exp/ExpLOBaccess.h | 4 +-
core/sql/exp/ExpLOBenums.h | 4 +-
core/sql/exp/ExpLOBinterface.cpp | 57 +-
core/sql/exp/ExpLOBinterface.h | 13 +
core/sql/exp/ExpPCode.cpp | 53 +-
core/sql/exp/ExpPCode.h | 27 +-
core/sql/exp/ExpPCodeClauseGen.cpp | 156 +-
core/sql/exp/ExpPCodeExpGen.cpp | 37 +-
core/sql/exp/ExpPCodeInstruction.h | 138 +-
core/sql/exp/ExpPCodeList.h | 30 +-
core/sql/exp/ExpPCodeOptimizations.cpp | 191 +-
core/sql/exp/ExpPCodeOptimizations.h | 24 +-
core/sql/exp/ExpPCodeOptsNativeExpr.cpp | 7 -
core/sql/exp/ExpPCodeOptsPeeling.cpp | 15 +-
core/sql/exp/ExpPCodeOptsRuntime.cpp | 16 +-
core/sql/exp/ExpPackDefs.cpp | 221 ++-
core/sql/exp/ExpSequenceFunction.cpp | 13 -
core/sql/exp/ExpSequenceFunction.h | 48 +-
core/sql/exp/ExpSqlTupp.h | 66 +-
core/sql/exp/exp_arith.cpp | 12 -
core/sql/exp/exp_attrs.cpp | 45 +-
core/sql/exp/exp_attrs.h | 8 +-
core/sql/exp/exp_bignum.cpp | 12 -
core/sql/exp/exp_bignum.h | 47 +-
core/sql/exp/exp_clause.cpp | 77 +-
core/sql/exp/exp_clause.h | 141 +-
core/sql/exp/exp_clause_derived.h | 660 ++++---
core/sql/exp/exp_conv.cpp | 82 +-
core/sql/exp/exp_datetime.cpp | 15 -
core/sql/exp/exp_datetime.h | 33 +-
core/sql/exp/exp_dp2_expr.cpp | 1 +
core/sql/exp/exp_dp2_expr.h | 33 +-
core/sql/exp/exp_eval.cpp | 23 +-
core/sql/exp/exp_expr.cpp | 36 +-
core/sql/exp/exp_expr.h | 361 ++--
core/sql/exp/exp_fixup.cpp | 43 -
core/sql/exp/exp_function.cpp | 158 +-
core/sql/exp/exp_function.h | 1663 ++++++++----------
core/sql/exp/exp_interval.h | 6 +-
core/sql/exp/exp_like.h | 59 +-
core/sql/exp/exp_math_func.cpp | 2 -
core/sql/exp/exp_math_func.h | 42 +-
core/sql/exp/exp_space.cpp | 49 -
core/sql/exp/exp_stdh.h | 4 +-
core/sql/exp/exp_tuple_desc.cpp | 3 +-
core/sql/exp/exp_tuple_desc.h | 4 +-
core/sql/export/ComDiags.cpp | 53 +-
core/sql/export/ComDiags.h | 343 +---
core/sql/export/ComMemoryDiags.h | 4 +-
core/sql/export/ExportDll.cpp | 3 +-
core/sql/export/HeapID.h | 18 +-
core/sql/export/HeapLog.h | 3 +-
core/sql/export/IpcMessageObj.cpp | 18 -
core/sql/export/IpcMessageObj.h | 85 +-
core/sql/export/NAAbort.cpp | 13 +-
core/sql/export/NABasicObject.cpp | 27 +-
core/sql/export/NABasicObject.h | 52 +-
core/sql/export/NAInternalError.h | 4 +-
core/sql/export/NAStringDef.cpp | 11 -
core/sql/export/NAStringDef.h | 83 +-
core/sql/export/NAVersionedObject.cpp | 22 +-
core/sql/export/NAVersionedObject.h | 815 ++++-----
core/sql/generator/GenAll.cpp | 1 -
core/sql/generator/GenExpGenerator.cpp | 150 +-
core/sql/generator/GenExpGenerator.h | 17 +-
core/sql/generator/GenExplain.cpp | 6 -
core/sql/generator/GenItemFunc.cpp | 219 ---
core/sql/generator/GenPreCode.cpp | 1 -
core/sql/generator/GenRelDCL.cpp | 6 -
core/sql/generator/GenRelExeUtil.cpp | 2 +-
core/sql/generator/GenRelGrby.cpp | 2 +
core/sql/generator/GenRelMisc.cpp | 35 +-
core/sql/generator/Generator.cpp | 8 +-
core/sql/langman/LmComQueue.h | 3 -
core/sql/langman/LmCommon.h | 26 +-
core/sql/langman/LmDebug.h | 2 +-
core/sql/nskgmake/arkcmplib/Makefile | 2 -
core/sql/nskgmake/tdm_sqlcli/Makefile | 1 -
core/sql/optimizer/BindItemExpr.cpp | 37 -
core/sql/optimizer/BindRelExpr.cpp | 41 +-
core/sql/optimizer/ColStatDesc.cpp | 5 -
core/sql/optimizer/ControlDB.cpp | 7 +-
core/sql/optimizer/EncodedKeyValue.cpp | 2 +-
core/sql/optimizer/ItemConstr.h | 2 +-
core/sql/optimizer/ItemExpr.cpp | 112 --
core/sql/optimizer/ItemFunc.h | 92 +-
core/sql/optimizer/NATable.cpp | 14 +-
core/sql/optimizer/NATable.h | 4 +-
core/sql/optimizer/ObjectNames.cpp | 15 +-
core/sql/optimizer/ObjectNames.h | 19 -
core/sql/optimizer/RelCache.cpp | 10 +-
core/sql/optimizer/SchemaDB.cpp | 13 +-
core/sql/optimizer/SchemaDB.h | 13 +-
core/sql/optimizer/SynthType.cpp | 71 -
core/sql/optimizer/TableDesc.h | 5 -
core/sql/optimizer/VEGTable.h | 2 +-
core/sql/optimizer/costmethod.cpp | 2 +-
core/sql/optimizer/opt.cpp | 4 +-
core/sql/parser/HvRoles.h | 3 +-
core/sql/parser/ParKeyWords.cpp | 2 -
core/sql/parser/SqlParserAux.cpp | 5 +-
core/sql/parser/sqlparser.y | 146 --
core/sql/qms/QmmMain.cpp | 19 -
core/sql/qms/QmmQmm.cpp | 486 -----
core/sql/qms/QmmQmm.h | 38 -
core/sql/qms/QmsMain.cpp | 17 -
core/sql/qms/QmsRequest.cpp | 26 -
core/sql/qmscommon/QRDescriptor.cpp | 4 -
core/sql/qmscommon/QRQueries.cpp | 290 ++-
core/sql/regress/charsets/TEST014 | 5 +
core/sql/regress/compGeneral/EXPECTED006.SB | 10 -
core/sql/regress/compGeneral/TEST006 | 4 -
core/sql/regress/executor/EXPECTED020 | 4 -
core/sql/regress/executor/EXPECTED130 | 78 +-
core/sql/regress/hive/EXPECTED009 | 24 +-
core/sql/regress/hive/EXPECTED018 | 585 +++---
core/sql/regress/seabase/EXPECTED010 | 460 ++---
core/sql/regress/seabase/EXPECTED011 | 13 +-
core/sql/regress/seabase/EXPECTED016 | 119 +-
core/sql/runtimestats/SqlStats.cpp | 99 +-
core/sql/runtimestats/SqlStats.h | 14 -
core/sql/runtimestats/rts_msg.h | 2 -
core/sql/runtimestats/sscpipc.cpp | 2 -
core/sql/runtimestats/ssmpipc.cpp | 9 -
core/sql/runtimestats/ssmpipc.h | 7 -
core/sql/sort/CommonStructs.h | 3 -
core/sql/sort/Statistics.h | 3 -
core/sql/sqlcat/ReadTableDef.cpp | 56 -
core/sql/sqlcat/ReadTableDef.h | 54 -
core/sql/sqlcat/TrafDDLdesc.cpp | 65 +
core/sql/sqlcat/enum.h | 42 -
core/sql/sqlcat/readRealArk.cpp | 89 -
core/sql/sqlcat/readRealArk.h | 8 -
core/sql/sqlcat/vers_libsqlcat.cpp | 3 -
core/sql/sqlci/SqlCmd.cpp | 8 +-
core/sql/sqlci/SqlciDefs.h | 4 -
core/sql/sqlci/SqlciEnv.h | 2 +-
core/sql/sqlcomp/CmpDDLCatErrorCodes.h | 1 -
core/sql/sqlcomp/CmpDescribe.cpp | 3 +-
core/sql/sqlcomp/CmpMain.cpp | 35 +-
core/sql/sqlcomp/DefaultConstants.h | 27 -
core/sql/sqlcomp/QCache.cpp | 24 +-
core/sql/sqlcomp/QCache.h | 11 -
core/sql/sqlcomp/nadefaults.cpp | 26 +-
core/sql/sqlmsg/ErrorMessage.h | 1 -
core/sql/sqlmsg/GetErrorMessage.cpp | 2 -
core/sql/sqlmsg/GetErrorMessage.h | 22 +-
core/sql/udrserv/UdrStreams.cpp | 2 +-
core/sql/udrserv/spinfo.cpp | 6 +-
core/sql/udrserv/udrglobals.cpp | 7 +-
core/sql/udrserv/udrload.cpp | 4 +-
core/sql/udrserv/udrserv.cpp | 16 +-
core/sql/udrserv/udrunload.cpp | 4 +-
core/sql/udrserv/udrutil.cpp | 4 +-
core/sql/udrserv/udrutil.h | 4 +-
core/sql/ustat/hs_cli.cpp | 19 +-
core/sql/ustat/hs_globals.cpp | 2 -
core/sql/ustat/hs_read.cpp | 2 -
core/sql/ustat/hs_update.cpp | 1 -
473 files changed, 5536 insertions(+), 21199 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/cli/Context.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/cli/Context.h
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/cli/Globals.cpp
----------------------------------------------------------------------
diff --cc core/sql/cli/Globals.cpp
index 6f97513,cb9c836..ed4cbeb
--- a/core/sql/cli/Globals.cpp
+++ b/core/sql/cli/Globals.cpp
@@@ -118,10 -112,7 +112,8 @@@ CliGlobals::CliGlobals(NABoolean espPro
defaultContext_(NULL),
langManC_(NULL),
langManJava_(NULL)
- #ifdef SQ_PHANDLE_VERIFIER
, myVerifier_(-1)
- #endif
+ , espProcess_(espProcess)
{
globalsAreInitialized_ = FALSE;
executorMemory_.setThreadSafe();
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/cli/Globals.h
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/cli/Statement.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/comexe/ComTdbRoot.h
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/executor/ExStats.h
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/executor/cluster.cpp
----------------------------------------------------------------------
diff --cc core/sql/executor/cluster.cpp
index 00492bb,a17d014..327c59c
--- a/core/sql/executor/cluster.cpp
+++ b/core/sql/executor/cluster.cpp
@@@ -637,9 -610,9 +610,9 @@@ void ClusterDB::yieldUnusedMemoryQuota(
sprintf(msg, "%s YIELDED %d MB (%u). %s needed %u MB, unused pool %u",
extraBuffers == 1 ? "HJ" : "HGB", memToYieldMB,
- 0, // NA_64BIT, use instance id later
+ 0,
msg1, memNeededMB,
- stmtGlobals_->unusedMemoryQuota());
+ GetCliGlobals()->unusedMemoryQuota());
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
@@@ -721,9 -691,9 +691,9 @@@ NABoolean ClusterDB::enoughMemory(ULng3
if ( doLog_ && memNeededMB > 1 ) { // LOG -- only for more than a buffer
sprintf(msg,
"GRABBED %u MB (%u). Memory used %u, now allowed %u MB, request size %u, unused pool %u",
- memNeededMB, 0, // NA_64BIT, use instance id later
+ memNeededMB, 0,
memoryUsed_,
- memoryQuotaMB_, reqSize,stmtGlobals_->unusedMemoryQuota() );
+ memoryQuotaMB_, reqSize,GetCliGlobals()->unusedMemoryQuota() );
// log an EMS event and continue
SQLMXLoggingArea::logExecRtInfo(NULL, 0, msg, explainNodeId_);
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/executor/ex_frag_rt.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/executor/ex_sort.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/executor/ex_split_bottom.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/generator/GenExplain.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/generator/GenRelGrby.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/generator/GenRelMisc.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/regress/hive/EXPECTED009
----------------------------------------------------------------------
diff --cc core/sql/regress/hive/EXPECTED009
index 79eaf00,90250a7..60607af
--- a/core/sql/regress/hive/EXPECTED009
+++ b/core/sql/regress/hive/EXPECTED009
@@@ -635,9 -633,9 +635,8 @@@ DESCRIPTIO
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
- statement_index ...... ###
affinity_value ....... ###
max_max_cardinality ###
- total_overflow_size ###
xn_access_mode ......... read_only
xn_autoabort_interval ###
auto_query_retry ....... enabled
@@@ -1089,9 -1079,9 +1088,8 @@@ DESCRIPTIO
fragment_id ............ 0
parent_frag ............ (none)
fragment_type .......... master
- statement_index ...... ###
affinity_value ....... ###
max_max_cardinality ###
- total_overflow_size ###
xn_access_mode ......... read_only
xn_autoabort_interval ###
auto_query_retry ....... enabled
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/regress/seabase/EXPECTED010
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/regress/seabase/EXPECTED011
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/regress/seabase/EXPECTED016
----------------------------------------------------------------------
diff --cc core/sql/regress/seabase/EXPECTED016
index 1919aa7,440832a..4be8bfc
--- a/core/sql/regress/seabase/EXPECTED016
+++ b/core/sql/regress/seabase/EXPECTED016
@@@ -192,9 -192,8 +192,9 @@@ ROOT ==================================
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
- EST_TOTAL_COST ......... 479.46
+ EST_TOTAL_COST ......... 553.72
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@@ -341,9 -337,8 +340,9 @@@ ROOT ==================================
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
- EST_TOTAL_COST ......... 493.55
+ EST_TOTAL_COST ......... 568.72
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@@ -490,9 -482,8 +488,9 @@@ ROOT ==================================
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
- EST_TOTAL_COST ......... 479.46
+ EST_TOTAL_COST ......... 553.66
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@@ -639,9 -627,8 +636,9 @@@ ROOT ==================================
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
- EST_TOTAL_COST ......... 451.99
+ EST_TOTAL_COST ......... 524.1
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@@ -788,9 -772,8 +784,9 @@@ ROOT ==================================
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
- EST_TOTAL_COST ......... 451.99
+ EST_TOTAL_COST ......... 524.16
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@@ -937,9 -917,8 +932,9 @@@ ROOT ==================================
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
- EST_TOTAL_COST ......... 465.32
+ EST_TOTAL_COST ......... 538.55
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
@@@ -1086,9 -1062,8 +1080,9 @@@ ROOT ==================================
REQUESTS_IN .............. 1
ROWS_OUT ................. 1
EST_OPER_COST ............ 0
- EST_TOTAL_COST ......... 479.46
+ EST_TOTAL_COST ......... 553.72
DESCRIPTION
+ est_memory_per_node .... 10240.00(Limit), 0.00(BMOs), 0.00(nBMOs) MB
max_card_est ........... 1
fragment_id ............ 0
parent_frag ............ (none)
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/175402bf/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------