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