You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by an...@apache.org on 2016/07/12 22:55:41 UTC
[1/6] incubator-trafodion git commit: JIRA TRAFODION-2099 Add support
for boolean datatype
Repository: incubator-trafodion
Updated Branches:
refs/heads/master 6b3b9486d -> a8eef2d77
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/seabase/EXPECTED010
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED010 b/core/sql/regress/seabase/EXPECTED010
index d567fae..aedd298 100644
--- a/core/sql/regress/seabase/EXPECTED010
+++ b/core/sql/regress/seabase/EXPECTED010
@@ -55,7 +55,7 @@
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Sat Apr 23 04:03:53 2016
+-- Definition current Fri Jul 8 19:34:10 2016
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -68,7 +68,7 @@
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:03:53 2016
+-- Definition current Fri Jul 8 19:34:11 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -87,7 +87,7 @@
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:03:53 2016
+-- Definition current Fri Jul 8 19:34:11 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -218,7 +218,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144236102671
+PLAN_ID .................. 212334766453842648
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -260,7 +260,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698537
+ ObjectUIDs ............. 572622736601715642
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -300,7 +300,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144236172868
+PLAN_ID .................. 212334766453912871
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -343,7 +343,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698537
+ ObjectUIDs ............. 572622736601715642
select_list ............ %(1), %('1')
input_variables ........ %(1), %('1')
@@ -382,7 +382,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144236246122
+PLAN_ID .................. 212334766453987406
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -424,7 +424,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698537
+ ObjectUIDs ............. 572622736601715642
select_list ............ TRAFODION.SCH.T010T1.A, %('1')
input_variables ........ %('1')
@@ -464,7 +464,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144234883898
+PLAN_ID .................. 212334766452338098
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a = 2;
@@ -507,7 +507,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698537
+ ObjectUIDs ............. 572622736601715642
select_list ............ %(2), TRAFODION.SCH.T010T1.B
input_variables ........ %(2)
@@ -770,7 +770,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212328144237774804
+PLAN_ID .................. 212334766455687220
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -814,7 +814,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -848,7 +848,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212328144237838319
+PLAN_ID .................. 212334766455748750
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -893,7 +893,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -928,7 +928,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212328144237933701
+PLAN_ID .................. 212334766455827825
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -972,7 +972,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -1007,7 +1007,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212328144238040780
+PLAN_ID .................. 212334766455915351
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -1051,7 +1051,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
input_variables ........ %('a')
@@ -1115,7 +1115,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212328144238219552
+PLAN_ID .................. 212334766456111765
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -1161,7 +1161,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
input_variables ........ %('upd'), %(4)
@@ -1188,7 +1188,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212328144238293051
+PLAN_ID .................. 212334766456203087
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -1233,7 +1233,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -1267,7 +1267,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212328144238342233
+PLAN_ID .................. 212334766456263024
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -1313,7 +1313,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -1348,7 +1348,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212328144238413387
+PLAN_ID .................. 212334766456342810
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -1393,7 +1393,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -1428,7 +1428,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212328144238472839
+PLAN_ID .................. 212334766456419643
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -1473,7 +1473,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
input_variables ........ %('a')
@@ -1537,7 +1537,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212328144238597986
+PLAN_ID .................. 212334766456613771
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -1584,7 +1584,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266698665
+ ObjectUIDs ............. 572622736601715741
input_variables ........ %('uuu'), %(4)
@@ -1761,7 +1761,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Sat Apr 23 04:04:22 2016
+-- Definition current Fri Jul 8 19:34:45 2016
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1774,7 +1774,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:04:22 2016
+-- Definition current Fri Jul 8 19:34:45 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -1793,7 +1793,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:04:22 2016
+-- Definition current Fri Jul 8 19:34:45 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -1924,7 +1924,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144264792830
+PLAN_ID .................. 212334766487105587
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -1966,7 +1966,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701767
+ ObjectUIDs ............. 572622736601719148
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -2006,7 +2006,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144264858194
+PLAN_ID .................. 212334766487178159
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -2049,7 +2049,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701767
+ ObjectUIDs ............. 572622736601719148
select_list ............ 1, '1'
@@ -2087,7 +2087,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144264920731
+PLAN_ID .................. 212334766487242937
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -2129,7 +2129,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701767
+ ObjectUIDs ............. 572622736601719148
select_list ............ TRAFODION.SCH.T010T1.A, '1'
@@ -2168,7 +2168,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144264982346
+PLAN_ID .................. 212334766487305807
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1;
@@ -2211,7 +2211,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701767
+ ObjectUIDs ............. 572622736601719148
select_list ............ 1, TRAFODION.SCH.T010T1.B
@@ -2473,7 +2473,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212328144266615337
+PLAN_ID .................. 212334766489177010
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -2517,7 +2517,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -2551,7 +2551,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212328144266661893
+PLAN_ID .................. 212334766489218800
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -2596,7 +2596,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -2643,7 +2643,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212328144266702743
+PLAN_ID .................. 212334766489255690
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -2687,7 +2687,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -2725,7 +2725,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212328144266745552
+PLAN_ID .................. 212334766489299424
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -2769,7 +2769,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -2836,7 +2836,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212328144266819972
+PLAN_ID .................. 212334766489439489
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -2882,7 +2882,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -2912,7 +2912,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212328144266913570
+PLAN_ID .................. 212334766489537632
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -2957,7 +2957,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -2984,7 +2984,7 @@ DESCRIPTION
rows_accessed ........ 100
column_retrieved ....... #1:1,#1:2,#1:3,#1:4
key_columns ............ A, B, C
- executor_predicates .... (B = 'a') and (C = 1) and ((A = 1) or (A = 4))
+ executor_predicates .... (B = 'a') and (C = cast(1)) and ((A = 1) or (A = 4))
--- SQL operation complete.
>>explain y2;
@@ -2992,7 +2992,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212328144266974806
+PLAN_ID .................. 212334766489588595
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -3038,7 +3038,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -3074,7 +3074,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212328144267036984
+PLAN_ID .................. 212334766489632527
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -3119,7 +3119,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -3155,7 +3155,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212328144267100023
+PLAN_ID .................. 212334766489691355
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -3200,7 +3200,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -3264,7 +3264,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212328144267191615
+PLAN_ID .................. 212334766489790654
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -3311,7 +3311,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266701834
+ ObjectUIDs ............. 572622736601719272
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -3488,7 +3488,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Sat Apr 23 04:04:48 2016
+-- Definition current Fri Jul 8 19:35:15 2016
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -3501,7 +3501,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:04:48 2016
+-- Definition current Fri Jul 8 19:35:15 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -3520,7 +3520,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:04:48 2016
+-- Definition current Fri Jul 8 19:35:15 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -3651,7 +3651,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144290107608
+PLAN_ID .................. 212334766517843423
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -3693,7 +3693,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704365
+ ObjectUIDs ............. 572622736601722186
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -3733,7 +3733,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144290179279
+PLAN_ID .................. 212334766517939902
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -3776,7 +3776,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704365
+ ObjectUIDs ............. 572622736601722186
select_list ............ %(1), %('1')
input_variables ........ %(1), %('1')
@@ -3815,7 +3815,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144290246591
+PLAN_ID .................. 212334766518006514
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -3857,7 +3857,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704365
+ ObjectUIDs ............. 572622736601722186
select_list ............ TRAFODION.SCH.T010T1.A, %('1')
input_variables ........ %('1')
@@ -3897,7 +3897,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144288935078
+PLAN_ID .................. 212334766516176126
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a = 2;
@@ -3940,7 +3940,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704365
+ ObjectUIDs ............. 572622736601722186
select_list ............ %(2), TRAFODION.SCH.T010T1.B
input_variables ........ %(2)
@@ -4203,7 +4203,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212328144292121052
+PLAN_ID .................. 212334766520083636
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4247,7 +4247,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -4282,7 +4282,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212328144292161638
+PLAN_ID .................. 212334766520134179
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4327,7 +4327,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -4363,7 +4363,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212328144292198590
+PLAN_ID .................. 212334766520176925
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4407,7 +4407,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -4443,7 +4443,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212328144292239365
+PLAN_ID .................. 212334766520224174
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -4487,7 +4487,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
input_variables ........ %('a')
@@ -4551,7 +4551,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212328144292320041
+PLAN_ID .................. 212334766520354242
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -4597,7 +4597,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
input_variables ........ %('upd'), %(4)
@@ -4624,7 +4624,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212328144292393136
+PLAN_ID .................. 212334766520476194
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4669,7 +4669,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -4704,7 +4704,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212328144292431753
+PLAN_ID .................. 212334766520537929
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4750,7 +4750,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -4786,7 +4786,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212328144292474349
+PLAN_ID .................. 212334766520597462
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select *
@@ -4831,7 +4831,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -4867,7 +4867,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212328144292514451
+PLAN_ID .................. 212334766520669759
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -4912,7 +4912,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
input_variables ........ %('a')
@@ -4976,7 +4976,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212328144292590301
+PLAN_ID .................. 212334766520777435
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -5023,7 +5023,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... OFF
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266704430
+ ObjectUIDs ............. 572622736601722266
input_variables ........ %('uuu'), %(4)
@@ -5200,7 +5200,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Sat Apr 23 04:05:13 2016
+-- Definition current Fri Jul 8 19:35:50 2016
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -5213,7 +5213,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:05:13 2016
+-- Definition current Fri Jul 8 19:35:50 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -5232,7 +5232,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:05:13 2016
+-- Definition current Fri Jul 8 19:35:50 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -5363,7 +5363,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144315059805
+PLAN_ID .................. 212334766552410284
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -5405,7 +5405,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706876
+ ObjectUIDs ............. 572622736601725676
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -5445,7 +5445,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144315122372
+PLAN_ID .................. 212334766552482603
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -5488,7 +5488,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706876
+ ObjectUIDs ............. 572622736601725676
select_list ............ 1, '1'
@@ -5526,7 +5526,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144315180866
+PLAN_ID .................. 212334766552567708
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -5568,7 +5568,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706876
+ ObjectUIDs ............. 572622736601725676
select_list ............ TRAFODION.SCH.T010T1.A, '1'
@@ -5607,7 +5607,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144315245579
+PLAN_ID .................. 212334766552637439
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1;
@@ -5650,7 +5650,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706876
+ ObjectUIDs ............. 572622736601725676
select_list ............ 1, TRAFODION.SCH.T010T1.B
@@ -5912,7 +5912,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212328144316926240
+PLAN_ID .................. 212334766555003288
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -5956,7 +5956,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -5989,7 +5989,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212328144317000051
+PLAN_ID .................. 212334766555091298
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6034,7 +6034,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -6068,7 +6068,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212328144317075938
+PLAN_ID .................. 212334766555167856
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6112,7 +6112,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -6146,7 +6146,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212328144317135494
+PLAN_ID .................. 212334766555244821
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -6190,7 +6190,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -6253,7 +6253,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212328144317248537
+PLAN_ID .................. 212334766555436259
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -6299,7 +6299,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... OFF
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -6329,7 +6329,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212328144317303309
+PLAN_ID .................. 212334766555539743
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6374,7 +6374,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -6407,7 +6407,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212328144317349912
+PLAN_ID .................. 212334766555631751
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6453,7 +6453,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -6487,7 +6487,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212328144317409876
+PLAN_ID .................. 212334766555728370
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -6532,7 +6532,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -6566,7 +6566,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212328144317469296
+PLAN_ID .................. 212334766555808295
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -6611,7 +6611,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -6674,7 +6674,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212328144317572749
+PLAN_ID .................. 212334766555985230
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -6721,7 +6721,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266706932
+ ObjectUIDs ............. 572622736601725746
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -6918,7 +6918,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Sat Apr 23 04:05:38 2016
+-- Definition current Fri Jul 8 19:36:27 2016
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -6931,7 +6931,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:05:38 2016
+-- Definition current Fri Jul 8 19:36:27 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -6950,7 +6950,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:05:38 2016
+-- Definition current Fri Jul 8 19:36:27 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -7081,7 +7081,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144340252394
+PLAN_ID .................. 212334766589212272
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -7123,7 +7123,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709376
+ ObjectUIDs ............. 572622736601729331
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -7163,7 +7163,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144340312113
+PLAN_ID .................. 212334766589284052
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -7206,7 +7206,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709376
+ ObjectUIDs ............. 572622736601729331
select_list ............ %(1), %('1')
input_variables ........ %(1), %('1')
@@ -7245,7 +7245,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144340368341
+PLAN_ID .................. 212334766589363594
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -7287,7 +7287,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709376
+ ObjectUIDs ............. 572622736601729331
select_list ............ TRAFODION.SCH.T010T1.A, %('1')
input_variables ........ %('1')
@@ -7328,7 +7328,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144339112888
+PLAN_ID .................. 212334766587812069
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a = 2;
@@ -7371,7 +7371,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709376
+ ObjectUIDs ............. 572622736601729331
select_list ............ %(2), TRAFODION.SCH.T010T1.B
input_variables ........ %(2)
@@ -7634,7 +7634,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212328144342277216
+PLAN_ID .................. 212334766591435696
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -7678,7 +7678,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -7712,7 +7712,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212328144342325330
+PLAN_ID .................. 212334766591502962
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -7757,7 +7757,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -7792,7 +7792,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212328144342385845
+PLAN_ID .................. 212334766591597985
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -7836,7 +7836,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -7871,7 +7871,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212328144342447114
+PLAN_ID .................. 212334766591667392
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -7915,7 +7915,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
input_variables ........ %('a')
@@ -7979,7 +7979,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212328144342571114
+PLAN_ID .................. 212334766591821559
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -8025,7 +8025,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
input_variables ........ %('upd'), %(4)
@@ -8052,7 +8052,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212328144342639729
+PLAN_ID .................. 212334766591896726
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -8097,7 +8097,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
select_list ............ TRAFODION.SCH.T010T2.A, %('a'), %(1),
TRAFODION.SCH.T010T2.D
input_variables ........ %('a'), %(1)
@@ -8131,7 +8131,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212328144342687157
+PLAN_ID .................. 212334766591946271
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -8177,7 +8177,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -8212,7 +8212,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212328144342740627
+PLAN_ID .................. 212334766592020522
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -8257,7 +8257,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
select_list ............ TRAFODION.SCH.T010T2.A, %('a'),
TRAFODION.SCH.T010T2.C, TRAFODION.SCH.T010T2.D
input_variables ........ %('a')
@@ -8292,7 +8292,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212328144342829114
+PLAN_ID .................. 212334766592094795
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -8337,7 +8337,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
input_variables ........ %('a')
@@ -8401,7 +8401,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212328144342988889
+PLAN_ID .................. 212334766592243933
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -8448,7 +8448,7 @@ DESCRIPTION
QUERY_CACHE ........ 1,024
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266709434
+ ObjectUIDs ............. 572622736601729430
input_variables ........ %('uuu'), %(4)
@@ -8625,7 +8625,7 @@ _SALT_ A B C D
>>invoke t010t1;
-- Definition of Trafodion table TRAFODION.SCH.T010T1
--- Definition current Sat Apr 23 04:06:04 2016
+-- Definition current Fri Jul 8 19:36:57 2016
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -8638,7 +8638,7 @@ _SALT_ A B C D
>>invoke hbase."_CELL_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_CELL_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:06:04 2016
+-- Definition current Fri Jul 8 19:36:57 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -8657,7 +8657,7 @@ _SALT_ A B C D
>>invoke hbase."_ROW_"."TRAFODION.SCH.T010T1";
-- Definition of Trafodion table HBASE."_ROW_"."TRAFODION.SCH.T010T1"
--- Definition current Sat Apr 23 04:06:04 2016
+-- Definition current Fri Jul 8 19:36:57 2016
(
ROW_ID VARCHAR(10) CHARACTER SET ISO88591 COLLATE
@@ -8788,7 +8788,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144365540549
+PLAN_ID .................. 212334766618952598
ROWS_OUT ................ 11
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 or b='1';
@@ -8830,7 +8830,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711846
+ ObjectUIDs ............. 572622736601732377
select_list ............ TRAFODION.SCH.T010T1.A, TRAFODION.SCH.T010T1.B
@@ -8870,7 +8870,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144365595968
+PLAN_ID .................. 212334766619021126
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1 and b='1';
@@ -8913,7 +8913,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711846
+ ObjectUIDs ............. 572622736601732377
select_list ............ 1, '1'
@@ -8951,7 +8951,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144365647254
+PLAN_ID .................. 212334766619113688
ROWS_OUT ................ 10
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where b='1';
@@ -8993,7 +8993,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711846
+ ObjectUIDs ............. 572622736601732377
select_list ............ TRAFODION.SCH.T010T1.A, '1'
@@ -9033,7 +9033,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... XX
-PLAN_ID .................. 212328144365700486
+PLAN_ID .................. 212334766619196629
ROWS_OUT ................. 1
EST_TOTAL_COST ........... 0.01
STATEMENT ................ select * from t010t1 where a=1;
@@ -9076,7 +9076,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711846
+ ObjectUIDs ............. 572622736601732377
select_list ............ 1, TRAFODION.SCH.T010T1.B
@@ -9338,7 +9338,7 @@ A B C D
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X1
-PLAN_ID .................. 212328144367286744
+PLAN_ID .................. 212334766621230951
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9382,7 +9382,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -9415,7 +9415,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X2
-PLAN_ID .................. 212328144367337278
+PLAN_ID .................. 212334766621294981
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9460,7 +9460,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -9494,7 +9494,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X3
-PLAN_ID .................. 212328144367394943
+PLAN_ID .................. 212334766621378363
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9538,7 +9538,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -9572,7 +9572,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X4
-PLAN_ID .................. 212328144367453475
+PLAN_ID .................. 212334766621459813
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -9616,7 +9616,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -9679,7 +9679,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... X5
-PLAN_ID .................. 212328144367556161
+PLAN_ID .................. 212334766621622351
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -9725,7 +9725,7 @@ DESCRIPTION
HBASE_FILTER_PREDS ..... ON
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -9755,7 +9755,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y1
-PLAN_ID .................. 212328144367612269
+PLAN_ID .................. 212334766621717723
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9800,7 +9800,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
select_list ............ TRAFODION.SCH.T010T2.A, 'a', 1,
TRAFODION.SCH.T010T2.D
@@ -9833,7 +9833,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y2
-PLAN_ID .................. 212328144367662094
+PLAN_ID .................. 212334766621795654
ROWS_OUT ................. 5
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9879,7 +9879,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -9913,7 +9913,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y3
-PLAN_ID .................. 212328144367715857
+PLAN_ID .................. 212334766621885855
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0
STATEMENT ................ select *
@@ -9958,7 +9958,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
select_list ............ TRAFODION.SCH.T010T2.A, 'a', TRAFODION.SCH.T010T2.C,
TRAFODION.SCH.T010T2.D
@@ -9992,7 +9992,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y4
-PLAN_ID .................. 212328144367769413
+PLAN_ID .................. 212334766621979533
ROWS_OUT ................. 4
EST_TOTAL_COST ........... 0.01
STATEMENT ................ delete from t010t2
@@ -10037,7 +10037,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
TUPLE_FLOW ================================ SEQ_NO 3 CHILDREN 1, 2
@@ -10100,7 +10100,7 @@ DESCRIPTION
------------------------------------------------------------------ PLAN SUMMARY
MODULE_NAME .............. DYNAMICALLY COMPILED
STATEMENT_NAME ........... Y5
-PLAN_ID .................. 212328144367903054
+PLAN_ID .................. 212334766622139179
ROWS_OUT ................. 2
EST_TOTAL_COST ........... 0
STATEMENT ................ update t010t2
@@ -10147,7 +10147,7 @@ DESCRIPTION
QUERY_CACHE ............ 0
MDAM_SCAN_METHOD ....... ON
HBASE_MAX_NUM_SEARCH_KE 1
- ObjectUIDs ............. 8974081219266711903
+ ObjectUIDs ............. 572622736601732451
TRAFODION_UPDATE ========================== SEQ_NO 1 NO CHILDREN
@@ -10655,12 +10655,12 @@ CREATE TABLE TRAFODION.SCH."delim_tab"
--- SQL operation complete.
>>get all volatile schemas;
-Schema(Active ): VOLATILE_SCHEMA_MXID110000323252123281442173510010000000002
+Schema(Active ): VOLATILE_SCHEMA_MXID110000174012123347664118698220000000002
--- SQL operation complete.
>>get all volatile tables;
-Schema(Active ): VOLATILE_SCHEMA_MXID110000323252123281442173510010000000002
+Schema(Active ): VOLATILE_SCHEMA_MXID110000174012123347664118698220000000002
Table: VTAB1
Table: VTAB2
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/seabase/TEST003
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/TEST003 b/core/sql/regress/seabase/TEST003
index b2068a5..574662b 100644
--- a/core/sql/regress/seabase/TEST003
+++ b/core/sql/regress/seabase/TEST003
@@ -52,10 +52,24 @@ obey TEST003(setup_lu);
obey TEST003(dml_lu);
obey TEST003(errors_lu);
+cqd traf_boolean_io 'ON';
+obey TEST003(setup_bool);
+obey TEST003(dml_bool);
+obey TEST003(errors_bool);
+obey TEST003(hive_bool);
+
+cqd traf_boolean_io 'OFF';
+obey TEST003(setup_bool);
+obey TEST003(dml_bool_short);
+
log;
exit;
?section setup_tiny
+-----------------------------------------------------------
+-------------- TINYINT datatype ---------------------------
+-----------------------------------------------------------
+
create table t003t1(a tinyint not null primary key, b tinyint,
c tinyint unsigned default 10 not null, d tinyint unsigned);
invoke t003t1;
@@ -222,16 +236,134 @@ prepare s from insert into t003t2 values (?, ?);
execute s using 18446744073709551616, 2;
+?section setup_bool
+-----------------------------------------------------------
+-------------- BOOLEAN datatype ---------------------------
+-----------------------------------------------------------
+
+create table if not exists t003t3(a boolean not null primary key, b boolean)
+ attribute aligned format;
+invoke t003t3;
+
+create table if not exists t003t3_like like t003t3;
+invoke t003t3_like;
+
+create table if not exists t003t3_as primary key (a) as select * from t003t3;
+invoke t003t3_as;
+
+create table if not exists t003t3_salt(a boolean not null primary key)
+ salt using 2 partitions;
+invoke t003t3_salt;
+
+?section dml_bool
+insert into t003t3 values (true, true);
+insert into t003t3 values (false, false);
+
+select * from t003t3;
+
+insert into t003t3_as select * from t003t3;
+select * from t003t3_as;
+
+select * from t003t3 where a = true;
+select * from t003t3 where a = false;
+select * from t003t3 where b = true;
+select * from t003t3 where b = false;
+select * from t003t3 where a != true;
+select * from t003t3 where a != false;
+select * from t003t3 where b != true;
+select * from t003t3 where b != false;
+select * from t003t3 where a is null;
+select * from t003t3 where b is not null;
+
+select * from t003t3 where a = true or a = false;
+select * from t003t3 where b = true or b = false;
+
+select cast('true' as boolean) from (values(1)) x(a);
+select cast(' faLse ' as boolean) from (values(1)) x(a);
+
+select cast(true as boolean not null) from (values(1)) x(a);
+select cast(false as boolean) from (values(1)) x(a);
+
+select cast(a as char(10)), cast (b as varchar(11)) from t003t3;
+
+delete from t003t3;
+prepare s from insert into t003t3 values (?, ?);
+execute s using true, true;
+execute s using 'false', ' falSE ';
+select * from t003t3;
+
+select !a, !b from t003t3;
+select * from t003t3 where !a = false;
+update t003t3 set b = !b;
+select * from t003t3;
+
+begin work;
+delete from t003t3 where b = false;
+select * from t003t3;
+rollback work;
+select * from t003t3;
+
+begin work;
+update t003t3 set b = false where b != false;
+select * from t003t3;
+rollback work;
+select * from t003t3;
+
+?section hive_bool
+sh echo "drop table tbool;" > TEST003_junk;
+sh regrhive.ksh -f TEST003_junk;
+
+sh echo "create table tbool(a boolean);" > TEST003_junk;
+sh regrhive.ksh -f TEST003_junk;
+
+sh echo "insert into tbool values (true), (false), (NULL);" > TEST003_junk;
+sh regrhive.ksh -f TEST003_junk;
+
+invoke hive.hive.tbool;
+select * from hive.hive.tbool;
+insert into hive.hive.tbool values (false), (true), (null);
+select * from hive.hive.tbool;
+insert overwrite table hive.hive.tbool select a from t003t3;
+select * from hive.hive.tbool;
+
+?section errors_bool
+update t003t3 set b = b + 1;
+
+delete from t003t3;
+
+insert into t003t3 values ('true', false);
+insert into t003t3 values (1, true);
+
+select cast(' truee' as boolean) from (values(1)) x(a);
+
+prepare s from insert into t003t3 values (?, ?);
+execute s using 1, 2;
+
+?section dml_bool_short
+insert into t003t3 values (true, true);
+insert into t003t3 values (false, false);
+
+select * from t003t3;
+
+delete from t003t3;
+prepare s from insert into t003t3 values (cast(? as boolean), cast(? as boolean));
+execute s using true, true;
+execute s using 'false', 'falSE';
+select * from t003t3;
+
?section clean_up
drop table t003t1;
drop table t003t1_like;
drop table t003t1_as;
-
drop table t003t2;
drop table t003t2_like;
drop table t003t2_as;
+drop table t003t3;
+drop table t003t3_like;
+drop table t003t3_as;
+drop table t003t3_salt;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/udr/EXPECTED001
----------------------------------------------------------------------
diff --git a/core/sql/regress/udr/EXPECTED001 b/core/sql/regress/udr/EXPECTED001
index 25043d4..1c0a4f4 100644
--- a/core/sql/regress/udr/EXPECTED001
+++ b/core/sql/regress/udr/EXPECTED001
@@ -188,7 +188,7 @@
*** ERROR[11246] An error occurred locating function or class 'SESSIONIZE_NON_EXISTENT' in library 'TEST001.dll'.
*** ERROR[11248] A call to dlsym returned errors 0 and 0. Details:
-/mnt/ssubbiah/incubator-trafodion/core/sqf/rundir/udr/TEST001.dll: undefined symbol: SESSIONIZE_NON_EXISTENT.
+/mnt2/ansharma/ansharma_bool/incubator-trafodion/core/sqf/rundir/udr/TEST001.dll: undefined symbol: SESSIONIZE_NON_EXISTENT.
--- SQL operation failed with errors.
>>-- For now this will succeed, since we don't load the library during
@@ -305,10 +305,10 @@ CREATE TABLE_MAPPING FUNCTION TRAFODION.SCH.SESSIONIZE_JAVA
SESSION_ID SEQUENCE_NO USERID TS IPADDR
-------------------- -------------------- -------------------------------- -------------------- ---------------
- 1 1 super-user 212332183199500000 12.345.567.345
- 2 1 super-user 212332190399500000 12.345.567.345
- 2 2 super-services 212332190399500000 12.345.567.345
- 2 3 super-services 212332190399550000 12.345.567.345
+ 1 1 super-user 212334861599500000 12.345.567.345
+ 2 1 super-user 212334868799500000 12.345.567.345
+ 2 2 super-services 212334868799500000 12.345.567.345
+ 2 3 super-services 212334868799550000 12.345.567.345
--- 4 row(s) selected.
>>
@@ -366,7 +366,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
SESSION_ID SEQUENCE_NO USERID TS IPADDR
-------------------- -------------------- -------------------------------- -------------------- ---------------
- 1 1 super-user 212332183199500000 12.345.567.345
+ 1 1 super-user 212334861599500000 12.345.567.345
--- 1 row(s) selected.
>>
@@ -459,10 +459,26 @@ IPADDR SESSION_ID SEQUENCE_NO
SESSION_ID SEQUENCE_NO USERID TS IPADDR
-------------------- -------------------- -------------------------------- -------------------- ---------------
- 1 1 super-user 212332183199500000 12.345.567.345
+ 1 1 super-user 212334861599500000 12.345.567.345
--- 1 row(s) selected.
>>
+>>-- will fail until tinyint support is added for spj/procedures
+>>cqd traf_tinyint_spj_support 'ON';
+
+--- SQL operation complete.
+>>select *
++>from UDF(fibonacci(1,10)) XO
++>order by 1;
+
+*** ERROR[11151] Unable to use 'type' 'NUMERIC(1) SIGNED NO NULLS' in a user-defined routine. Details: Tinyint datatype not yet supported.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>cqd traf_tinyint_spj_support reset;
+
+--- SQL operation complete.
+>>
>>select *
+>from UDF(fibonacci(1,10)) XO
+>order by 1;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/udr/TEST001
----------------------------------------------------------------------
diff --git a/core/sql/regress/udr/TEST001 b/core/sql/regress/udr/TEST001
index e7089ca..026a794 100644
--- a/core/sql/regress/udr/TEST001
+++ b/core/sql/regress/udr/TEST001
@@ -331,6 +331,13 @@ where operator = 'TMUDF'
and description like '% preds_evaluated_by_udf: (SESSION_ID < 2) %';
execute s;
+-- will fail until tinyint support is added for spj/procedures
+cqd traf_tinyint_spj_support 'ON';
+select *
+from UDF(fibonacci(1,10)) XO
+order by 1;
+cqd traf_tinyint_spj_support reset;
+
select *
from UDF(fibonacci(1,10)) XO
order by 1;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/sqlci/Formatter.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlci/Formatter.cpp b/core/sql/sqlci/Formatter.cpp
index 7ffbee8..6564a17 100644
--- a/core/sql/sqlci/Formatter.cpp
+++ b/core/sql/sqlci/Formatter.cpp
@@ -227,6 +227,10 @@ Lng32 Formatter::display_length(Lng32 datatype,
}
break;
+ case REC_BOOLEAN:
+ d_len = d_buflen = SQL_BOOLEAN_DISPLAY_SIZE;
+ break;
+
default:
d_len = d_buflen = length;
break;
@@ -341,6 +345,7 @@ Int32 Formatter::buffer_it(SqlciEnv * sqlci_env, char *data,
case REC_FLOAT32:
case REC_FLOAT64:
case REC_DATETIME:
+ case REC_BOOLEAN:
{
short retcode = convDoIt(data,
length,
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/sqlci/Param.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlci/Param.cpp b/core/sql/sqlci/Param.cpp
index 869d6fa..3f81a83 100644
--- a/core/sql/sqlci/Param.cpp
+++ b/core/sql/sqlci/Param.cpp
@@ -327,6 +327,7 @@ short Param::convertValue(SqlciEnv * sqlci_env, short targetType,
switch(targetType) {
+ case REC_BOOLEAN:
case REC_BIN8_SIGNED:
case REC_BIN8_UNSIGNED:
case REC_BIN16_SIGNED:
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/sqlci/SqlciEnv.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlci/SqlciEnv.cpp b/core/sql/sqlci/SqlciEnv.cpp
index a8d9bab..a071f27 100644
--- a/core/sql/sqlci/SqlciEnv.cpp
+++ b/core/sql/sqlci/SqlciEnv.cpp
@@ -491,6 +491,10 @@ void SqlciEnv::datatypeSupport()
// can handle largeint unsigned datatype
SqlCmd::executeQuery("CONTROL QUERY DEFAULT TRAF_LARGEINT_UNSIGNED_IO 'ON';", this);
+
+ // can handle boolean datatype
+ SqlCmd::executeQuery("CONTROL QUERY DEFAULT TRAF_BOOLEAN_IO 'ON';", this);
+
if (!specialError_)
{
exit(EXIT_FAILURE);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp b/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
index 5c7c259..cef4da1 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
@@ -2814,8 +2814,7 @@ short CmpSeabaseDDL::getTypeInfo(const NAType * naType,
}
break;
-
- case NA_LOB_TYPE:
+ case NA_LOB_TYPE:
{
if (datatype == REC_BLOB)
{
@@ -2832,6 +2831,12 @@ short CmpSeabaseDDL::getTypeInfo(const NAType * naType,
}
break;
+
+ case NA_BOOLEAN_TYPE:
+ {
+ precision = 0;
+ }
+ break;
default:
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/sqlcomp/CmpSeabaseDDLutil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLutil.cpp b/core/sql/sqlcomp/CmpSeabaseDDLutil.cpp
index d127fdd..39ceae4 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLutil.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLutil.cpp
@@ -259,6 +259,7 @@ const literalAndEnumStruct ODBCDataTypeXlateArray [] =
{COM_DECIMAL_UNSIGNED_ODT, COM_DECIMAL_UNSIGNED_ODT_LIT},
{COM_BLOB_SDT, COM_BLOB_ODT_LIT},
{COM_CLOB_SDT, COM_CLOB_ODT_LIT},
+ {COM_BOOLEAN_SDT, COM_BOOLEAN_ODT_LIT},
{COM_DATETIME_ODT, COM_DATETIME_ODT_LIT},
{COM_TIMESTAMP_ODT, COM_TIMESTAMP_ODT_LIT},
{COM_DATE_ODT, COM_DATE_ODT_LIT},
@@ -293,6 +294,7 @@ const literalAndEnumStruct SQLDataTypeXlateArray [] =
{COM_LARGE_DECIMAL_SIGNED_SDT, COM_DECIMAL_SIGNED_SDT_LIT}, // one-way conversion enum->literal
{COM_BLOB_SDT, COM_BLOB_SDT_LIT},
{COM_CLOB_SDT, COM_CLOB_SDT_LIT},
+ {COM_BOOLEAN_SDT, COM_BOOLEAN_SDT_LIT},
{COM_DATETIME_SDT, COM_DATETIME_SDT_LIT},
{COM_TIMESTAMP_SDT, COM_TIMESTAMP_SDT_LIT},
{COM_DATE_SDT, COM_DATE_SDT_LIT},
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h
index 3aaebbc..b274b94 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -3847,10 +3847,18 @@ enum DefaultConstants
// Otherwise typed as bignum
TRAF_LARGEINT_UNSIGNED_IO,
+ // If ON, boolean is supported as returned datatype for a select
+ // stmt, and for input params.
+ // Otherwise typed as char
+ TRAF_BOOLEAN_IO,
+
// if TRUE, create signed numeric literal for both +ve and -ve numbers.
// if FALSE, create unsigned literal for +ve and signed literal for -ve nums.
TRAF_CREATE_SIGNED_NUMERIC_LITERAL,
+ // if TRUE, create tinyint literal insteadl of smallint.
+ TRAF_CREATE_TINYINT_LITERAL,
+
// 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/d48a0c94/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index 3856a76..14e274e 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -3323,6 +3323,8 @@ XDDkwd__(SUBQUERY_UNNESTING, "ON"),
DDkwd__(TRAF_BLOB_AS_VARCHAR, "ON"), //set to OFF to enable Lobs support
+ DDkwd__(TRAF_BOOLEAN_IO, "OFF"),
+
DDkwd__(TRAF_BOOTSTRAP_MD_MODE, "OFF"),
DDkwd__(TRAF_CLOB_AS_VARCHAR, "ON"), //set to OFF to enable Lobs support
@@ -3333,6 +3335,8 @@ XDDkwd__(SUBQUERY_UNNESTING, "ON"),
DDansi_(TRAF_CREATE_TABLE_WITH_UID, ""),
+ DDkwd__(TRAF_CREATE_TINYINT_LITERAL, "ON"),
+
DDkwd__(TRAF_DEFAULT_COL_CHARSET, (char *)SQLCHARSETSTRING_ISO88591),
DDkwd__(TRAF_ENABLE_ORC_FORMAT, "OFF"),
[4/6] incubator-trafodion git commit: JIRA TRAFODION-2099 Add support
for boolean datatype
Posted by an...@apache.org.
JIRA TRAFODION-2099 Add support for boolean datatype
-- boolean datatype support in create, cast and params
Ex:
create table t (a boolean);
insert into t values (true), (false);
select * from t where a = true;
-- boolean datatype support for hive columns
-- unarith op support. Currently used for '!' operator that
negates a boolean value.
Ex: select * from t where !a = false;
-- support for more tinyint and largeint unsigned conversion/comparison
operations in expressions and pcode
-- some code cleanup: removed reference to downrev compiler code genration
-- create table if not exists as select... syntax support
-- regress/seabase/TEST003 updated with additional tests
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/d48a0c94
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/d48a0c94
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/d48a0c94
Branch: refs/heads/master
Commit: d48a0c94353caf83a2036fd7c2727152814255e9
Parents: 8b1df54
Author: Anoop Sharma <an...@esgyn.com>
Authored: Sun Jul 10 23:02:05 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Sun Jul 10 23:02:05 2016 +0000
----------------------------------------------------------------------
.../trafodion/jdbc/t4/InterfaceResultSet.java | 9 +
.../odbc/src/odbc/nsksrvrcore/sqlinterface.cpp | 10 +
core/sql/bin/SqlciErrors.txt | 2 +-
core/sql/cli/sqlcli.h | 4 +
core/sql/common/BaseTypes.cpp | 12 +
core/sql/common/ComSmallDefs.h | 6 +
core/sql/common/MiscType.cpp | 154 ++++-
core/sql/common/MiscType.h | 112 +++-
core/sql/common/NAType.cpp | 8 +
core/sql/common/NumericType.cpp | 18 -
core/sql/common/NumericType.h | 33 +-
core/sql/common/SQLTypeDefs.h | 2 +
core/sql/common/dfs2rec.h | 13 +-
core/sql/common/str.cpp | 37 +-
core/sql/common/str.h | 12 +-
core/sql/exp/ExpErrorEnums.h | 1 +
core/sql/exp/ExpPCode.cpp | 68 ++-
core/sql/exp/ExpPCodeClauseGen.cpp | 398 +++++++-----
core/sql/exp/ExpPCodeExpGen.cpp | 5 +-
core/sql/exp/ExpPCodeInstruction.h | 41 +-
core/sql/exp/ExpPCodeOptimizations.cpp | 103 +++-
core/sql/exp/ExpPCodeOptsConstProp.cpp | 6 +
core/sql/exp/exp_arith.cpp | 6 +-
core/sql/exp/exp_attrs.cpp | 2 +
core/sql/exp/exp_clause.cpp | 3 +-
core/sql/exp/exp_clause_derived.h | 77 ++-
core/sql/exp/exp_comp.cpp | 61 ++
core/sql/exp/exp_conv.cpp | 109 +++-
core/sql/exp/exp_eval.cpp | 222 ++++++-
core/sql/exp/exp_expr.cpp | 2 -
core/sql/exp/exp_expr.h | 23 +-
core/sql/exp/exp_fixup.cpp | 93 ++-
core/sql/exp/exp_function.cpp | 30 +
core/sql/exp/exp_math_func.cpp | 18 +-
core/sql/generator/GenExpGenerator.cpp | 97 ++-
core/sql/generator/GenExpGenerator.h | 3 +
core/sql/generator/GenItemExpr.cpp | 19 +
core/sql/generator/GenPreCode.cpp | 85 +--
core/sql/generator/GenRelJoin.cpp | 7 +-
core/sql/generator/GenRelMisc.cpp | 3 -
core/sql/generator/Generator.cpp | 17 +-
core/sql/generator/Generator.h | 21 -
core/sql/optimizer/BindItemExpr.cpp | 25 +
core/sql/optimizer/BindRelExpr.cpp | 20 +
core/sql/optimizer/ControlDB.cpp | 10 +-
core/sql/optimizer/EncodedValue.cpp | 1 +
core/sql/optimizer/ItemArith.h | 32 +
core/sql/optimizer/ItemExpr.cpp | 27 +
core/sql/optimizer/NAColumn.cpp | 4 +
core/sql/optimizer/NATable.cpp | 9 +
core/sql/optimizer/NormItemExpr.cpp | 2 +-
core/sql/optimizer/OptRange.cpp | 24 +-
core/sql/optimizer/RelExeUtil.cpp | 6 +
core/sql/optimizer/SynthType.cpp | 70 ++-
core/sql/optimizer/UdfDllInteraction.cpp | 23 +
core/sql/optimizer/ValueDesc.cpp | 9 +-
core/sql/parser/ParKeyWords.cpp | 2 +-
core/sql/parser/SqlParserAux.cpp | 8 +-
core/sql/parser/sqlparser.y | 41 +-
core/sql/parser/ulexer.cpp | 3 +-
core/sql/regress/compGeneral/EXPECTED071 | 4 +-
core/sql/regress/core/EXPECTED037.SB | 4 +-
core/sql/regress/core/EXPECTED038.LINUX | 22 +-
core/sql/regress/core/TEST037 | 2 +-
core/sql/regress/executor/EXPECTED002.SB | 68 +--
core/sql/regress/executor/EXPECTED012 | 36 +-
core/sql/regress/executor/EXPECTED022.SB | 18 +-
core/sql/regress/executor/TEST012 | 15 +-
core/sql/regress/hive/EXPECTED005 | 4 +-
core/sql/regress/hive/EXPECTED015 | 60 +-
core/sql/regress/seabase/EXPECTED003 | 608 ++++++++++++++++++-
core/sql/regress/seabase/EXPECTED010 | 378 ++++++------
core/sql/regress/seabase/TEST003 | 134 +++-
core/sql/regress/udr/EXPECTED001 | 30 +-
core/sql/regress/udr/TEST001 | 7 +
core/sql/sqlci/Formatter.cpp | 5 +
core/sql/sqlci/Param.cpp | 1 +
core/sql/sqlci/SqlciEnv.cpp | 4 +
core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp | 9 +-
core/sql/sqlcomp/CmpSeabaseDDLutil.cpp | 2 +
core/sql/sqlcomp/DefaultConstants.h | 8 +
core/sql/sqlcomp/nadefaults.cpp | 4 +
82 files changed, 2853 insertions(+), 838 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/InterfaceResultSet.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/InterfaceResultSet.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/InterfaceResultSet.java
index c5c5814..7273338 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/InterfaceResultSet.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/InterfaceResultSet.java
@@ -115,6 +115,9 @@ class InterfaceResultSet {
/* NCHAR VARYING -- VARCHAR(n) CHARACTER SET s -- s uses 2 bytes per char */
static final int SQLTYPECODE_VARCHAR_DBLBYTE = 17;
+ /* BOOLEAN TYPE */
+ static final int SQLTYPECODE_BOOLEAN = -701;
+
/* Date/Time/TimeStamp related constants */
static final int SQLDTCODE_DATE = 1;
static final int SQLDTCODE_TIME = 2;
@@ -271,6 +274,9 @@ class InterfaceResultSet {
case SQLTYPECODE_TINYINT:
retObj = new Byte(ibuffer[byteIndex]);
break;
+ case SQLTYPECODE_BOOLEAN:
+ retObj = new Byte(ibuffer[byteIndex]);
+ break;
case SQLTYPECODE_TINYINT_UNSIGNED:
short sValue1 = Bytes.extractUTiny(ibuffer, byteIndex, this.ic_.getByteSwap());
retObj = new Short(sValue1);
@@ -517,6 +523,9 @@ class InterfaceResultSet {
break;
}
break;
+ case SQLTYPECODE_BOOLEAN:
+ retObj = new Byte(values[noNullValue]);
+ break;
case SQLTYPECODE_TINYINT_UNSIGNED:
short sValue1 = Bytes.extractUTiny(values, noNullValue, swap);
retObj = new Short(sValue1);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/conn/odbc/src/odbc/nsksrvrcore/sqlinterface.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvrcore/sqlinterface.cpp b/core/conn/odbc/src/odbc/nsksrvrcore/sqlinterface.cpp
index 0629e7a..783c953 100644
--- a/core/conn/odbc/src/odbc/nsksrvrcore/sqlinterface.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvrcore/sqlinterface.cpp
@@ -90,6 +90,12 @@ SQLRETURN SRVR::GetODBCValues(Int32 DataType, Int32 DateTimeCode, Int32 &Length,
switch (DataType)
{
+ case SQLTYPECODE_BOOLEAN:
+ ODBCPrecision = 1;
+ ODBCDataType = SQL_CHAR;
+ SignType = FALSE;
+ totalMemLen += Length;
+ break;
case SQLTYPECODE_CHAR:
ODBCPrecision = Length;
ODBCDataType = SQL_CHAR;
@@ -708,6 +714,7 @@ SQLRETURN SRVR::SetDataPtr(SQLDESC_ID *pDesc, SQLItemDescList_def *SQLDesc, Int3
VarPtr = memPtr + memOffSet;
memOffSet += SQLItemDesc->maxLen + 3;
break;
+ case SQLTYPECODE_BOOLEAN:
case SQLTYPECODE_TINYINT:
case SQLTYPECODE_TINYINT_UNSIGNED:
VarPtr = memPtr + memOffSet;
@@ -1042,6 +1049,7 @@ SQLRETURN SRVR::AllocAssignValueBuffer(
memOffSet += SQLItemDesc->maxLen + 3;
AllocLength = SQLItemDesc->maxLen + 3;
break;
+ case SQLTYPECODE_BOOLEAN:
case SQLTYPECODE_TINYINT:
case SQLTYPECODE_TINYINT_UNSIGNED:
VarPtr = memPtr + memOffSet;
@@ -2519,6 +2527,7 @@ SQLRETURN SRVR::BuildSQLDesc2withRowsets( SQLDESC_ID *pDesc
else
inputQuadList[i+1].var_layout = SqlDescInfo[i].Length + 1;
break;
+ case SQLTYPECODE_BOOLEAN:
case SQLTYPECODE_TINYINT:
case SQLTYPECODE_TINYINT_UNSIGNED:
VarPtr = memPtr + memOffSet;
@@ -7078,6 +7087,7 @@ SQLRETURN SRVR::SetIndandVarPtr(SQLDESC_ID *pDesc,
if (!bRWRS)
memOffSet += 1;
break;
+ case SQLTYPECODE_BOOLEAN:
case SQLTYPECODE_TINYINT:
case SQLTYPECODE_TINYINT_UNSIGNED:
VarPtr = memPtr + memOffSet;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/bin/SqlciErrors.txt
----------------------------------------------------------------------
diff --git a/core/sql/bin/SqlciErrors.txt b/core/sql/bin/SqlciErrors.txt
index 6635d00..c32b394 100644
--- a/core/sql/bin/SqlciErrors.txt
+++ b/core/sql/bin/SqlciErrors.txt
@@ -1544,7 +1544,7 @@ $1~String1 --------------------------------
8423 ZZZZZ 99999 BEGINNER MINOR LOGONLY The provided field number is not valid.
8424 0A000 99999 BEGINNER MINOR LOGONLY Function $0~string0 is not yet supported.
8425 ZZZZZ 99999 BEGINNER MINOR LOGONLY NULL cannot be assigned to a DEFAULT NULL NOT NULL column.
-8426 ZZZZZ 99999 UUUUUUUU UUUUU UUUUUUU --- unused as of 03/30/04 ---
+8426 22007 99999 BEGINNER MINOR LOGONLY The provided value, $0~string0, is an invalid BOOLEAN value.
8427 ZZZZZ 99999 BEGINNER INFRM LOGONLY $0~string0
8428 ZZZZZ 99999 BEGINNER MINOR LOGONLY The argument to function $0~string0 is not valid.
8429 ZZZZZ 99999 BEGINNER INFRM LOGONLY The preceding error actually occurred in function $0~string0.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/cli/sqlcli.h
----------------------------------------------------------------------
diff --git a/core/sql/cli/sqlcli.h b/core/sql/cli/sqlcli.h
index 04ec0e8..5ab95d9 100644
--- a/core/sql/cli/sqlcli.h
+++ b/core/sql/cli/sqlcli.h
@@ -417,6 +417,10 @@ enum SQLTYPE_CODE {
/* BLOB TYPE */
SQLTYPECODE_BLOB = -602,
SQLTYPECODE_CLOB = -603,
+
+ /* BOOLEAN TYPE */
+ SQLTYPECODE_BOOLEAN = -701,
+
/* no ANSI value 13 */
/* BIT */
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/BaseTypes.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/BaseTypes.cpp b/core/sql/common/BaseTypes.cpp
index fa154d9..ae03ca8 100644
--- a/core/sql/common/BaseTypes.cpp
+++ b/core/sql/common/BaseTypes.cpp
@@ -640,6 +640,10 @@ short convertTypeToText_basic(char * text, // OUTPUT
str_sprintf(text, "CLOB");
break;
+ case REC_BOOLEAN:
+ str_sprintf(text, "BOOLEAN");
+ break;
+
default:
str_sprintf(text, "**ERROR (unknown type %d)", fs_datatype);
return -1; // error case
@@ -769,6 +773,10 @@ Lng32 getAnsiTypeFromFSType(Lng32 datatype)
numeric_value = SQLTYPECODE_CLOB;
break;
+ case REC_BOOLEAN:
+ numeric_value = SQLTYPECODE_BOOLEAN;
+ break;
+
case REC_INT_YEAR:
case REC_INT_MONTH:
case REC_INT_YEAR_MONTH:
@@ -886,6 +894,10 @@ const char * getAnsiTypeStrFromFSType(Lng32 datatype)
return COM_CLOB_SDT_LIT;
break;
+ case REC_BOOLEAN:
+ return COM_BOOLEAN_SDT_LIT;
+ break;
+
case REC_INT_YEAR:
case REC_INT_MONTH:
case REC_INT_YEAR_MONTH:
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/ComSmallDefs.h
----------------------------------------------------------------------
diff --git a/core/sql/common/ComSmallDefs.h b/core/sql/common/ComSmallDefs.h
index 5b0442e..4b4e96d 100644
--- a/core/sql/common/ComSmallDefs.h
+++ b/core/sql/common/ComSmallDefs.h
@@ -812,6 +812,8 @@ enum ComFSDataType { COM_UNKNOWN_FSDT = -1
, COM_BLOB = REC_BLOB
, COM_CLOB = REC_CLOB
+ , COM_BOOLEAN = REC_BOOLEAN
+
, COM_DATETIME_FSDT = REC_DATETIME
, COM_INTERVAL_MIN_FSDT = REC_MIN_INTERVAL
, COM_INTERVAL_YEAR_YEAR_FSDT = REC_INT_YEAR
@@ -1011,6 +1013,7 @@ enum ComODBCDataType { COM_UNKNOWN_ODT
, COM_LARGE_DECIMAL_UNSIGNED_ODT
, COM_BLOB_ODT
, COM_CLOB_ODT
+ , COM_BOOLEAN_ODT
, COM_DATETIME_ODT
, COM_TIMESTAMP_ODT
, COM_DATE_ODT
@@ -1045,6 +1048,7 @@ enum ComODBCDataType { COM_UNKNOWN_ODT
#define COM_INTERVAL_ODT_LIT "INTERVAL "
#define COM_BLOB_ODT_LIT "BLOB "
#define COM_CLOB_ODT_LIT "CLOB "
+#define COM_BOOLEAN_ODT_LIT "BOOLEAN "
enum ComAccessPathType { COM_UNKNOWN_ACCESS_PATH_TYPE
, COM_BASE_TABLE_TYPE
@@ -1571,6 +1575,7 @@ enum ComSQLDataType { COM_UNKNOWN_SDT
, COM_LARGE_DECIMAL_UNSIGNED_SDT
, COM_BLOB_SDT
, COM_CLOB_SDT
+ , COM_BOOLEAN_SDT
, COM_DATETIME_SDT
, COM_TIMESTAMP_SDT
, COM_DATE_SDT
@@ -1605,6 +1610,7 @@ enum ComSQLDataType { COM_UNKNOWN_SDT
#define COM_INTERVAL_SDT_LIT "INTERVAL "
#define COM_BLOB_SDT_LIT "BLOB "
#define COM_CLOB_SDT_LIT "CLOB "
+#define COM_BOOLEAN_SDT_LIT "BOOLEAN "
enum ComViewCheckOption { COM_UNKNOWN_CHECK_OPTION
, COM_CASCADE_CHECK_OPTION
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/MiscType.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/MiscType.cpp b/core/sql/common/MiscType.cpp
index 3941429..77b780d 100644
--- a/core/sql/common/MiscType.cpp
+++ b/core/sql/common/MiscType.cpp
@@ -40,41 +40,107 @@
// ***********************************************************************
//
-// SQLBoolean : The boolean data type
+// SQLBooleanBase : The boolean data type
//
// ***********************************************************************
-NAType * SQLBoolean::newCopy(CollHeap* h) const
-{
- return new(h) SQLBoolean(unknownFlag_,h);
+SQLBooleanBase::SQLBooleanBase(NABoolean allowSQLnull,
+ NABoolean isRelat,
+ NAMemory * heap) :
+ NAType(LiteralBoolean,
+ NA_BOOLEAN_TYPE,
+ (isRelat ? 4 : 1), // dataStorageSize
+ allowSQLnull,
+ (allowSQLnull ? SQL_NULL_HDR_SIZE : 0),
+ FALSE, // variableLength
+ 0, // lengthHeaderSize
+ (isRelat ? 4 : 1), // dataAlignment
+ heap
+ )
+{
}
-short SQLBoolean::getFSDatatype() const
+// ---------------------------------------------------------------------
+// A method which tells if a conversion error can occur when converting
+// a value of this type to the target type.
+// This method is a stub and so just returns true for now.
+// ---------------------------------------------------------------------
+NABoolean SQLBooleanBase::errorsCanOccur(const NAType& target, NABoolean lax) const
{
- return REC_BIN32_SIGNED;
+ return NAType::errorsCanOccur(target);
}
-NABoolean SQLBoolean::canBeSQLUnknown() const
-{
- return unknownFlag_;
+// ***********************************************************************
+//
+// Type synthesis for binary operators
+//
+// ***********************************************************************
+
+// ***********************************************************************
+//
+// SQLBooleanRelat : The boolean data type
+//
+// ***********************************************************************
+SQLBooleanRelat::SQLBooleanRelat(NABoolean sqlUnknownFlag,
+ NAMemory * heap) :
+ SQLBooleanBase(FALSE, TRUE, heap),
+ sqlUnknownFlag_(sqlUnknownFlag)
+{
}
-void SQLBoolean::setSQLUnknownFlag(NABoolean flag)
+NAType * SQLBooleanRelat::newCopy(CollHeap* h) const
{
- unknownFlag_ = flag;
+ return new(h) SQLBooleanRelat(sqlUnknownFlag_, h);
}
-NAString SQLBoolean::getSimpleTypeName() const
+// ***********************************************************************
+//
+// Type synthesis for binary operators
+//
+// ***********************************************************************
+
+const NAType* SQLBooleanRelat::synthesizeType(enum NATypeSynthRuleEnum synthRule,
+ const NAType& operand1,
+ const NAType& operand2,
+ CollHeap* h,
+ UInt32 *flags) const
{
- return "SQLBoolean";
-}
+ //
+ // If the second operand's type synthesis rules have higher precedence than
+ // this operand's rules, use the second operand's rules.
+ //
+ if (operand2.getSynthesisPrecedence() > getSynthesisPrecedence())
+ return operand2.synthesizeType(synthRule, operand1, operand2, h, flags);
+ //
+ // If either operand is not boolean, the expression is invalid.
+ //
+ if ((operand1.getTypeQualifier() != NA_BOOLEAN_TYPE) ||
+ (operand2.getTypeQualifier() != NA_BOOLEAN_TYPE))
+ return NULL;
+ //
+ // The generator can create CASE expressions that have boolean result
+ // expressions.
+ //
+ if (synthRule == SYNTH_RULE_UNION)
+ return new(h) SQLBooleanRelat();
-// -- The external name for the type (text representation)
+ return NULL;
+} // synthesizeType()
-NAString SQLBoolean::getTypeSQLname(NABoolean) const
+
+// ***********************************************************************
+//
+// SQLBooleanNative : The boolean data type
+//
+// ***********************************************************************
+SQLBooleanNative::SQLBooleanNative(NABoolean allowSQLnull,
+ NAMemory * heap) :
+ SQLBooleanBase(allowSQLnull, FALSE, heap)
+{
+}
+
+NAType * SQLBooleanNative::newCopy(CollHeap* h) const
{
- if (unknownFlag_)
- return "BOOLEAN ALLOWS UNKNOWN";
- return "BOOLEAN NO UNKNOWNS";
+ return new(h) SQLBooleanNative(supportsSQLnull(), h);
}
// ***********************************************************************
@@ -83,7 +149,7 @@ NAString SQLBoolean::getTypeSQLname(NABoolean) const
//
// ***********************************************************************
-const NAType* SQLBoolean::synthesizeType(enum NATypeSynthRuleEnum synthRule,
+const NAType* SQLBooleanNative::synthesizeType(enum NATypeSynthRuleEnum synthRule,
const NAType& operand1,
const NAType& operand2,
CollHeap* h,
@@ -106,21 +172,51 @@ const NAType* SQLBoolean::synthesizeType(enum NATypeSynthRuleEnum synthRule,
// expressions.
//
if (synthRule == SYNTH_RULE_UNION)
- return new(h) SQLBoolean();
+ return new(h) SQLBooleanNative
+ (operand1.supportsSQLnull() || operand2.supportsSQLnull());
+
return NULL;
} // synthesizeType()
+void SQLBooleanNative::minRepresentableValue(void* bufPtr, Lng32* bufLen,
+ NAString ** stringLiteral,
+ CollHeap* h) const
+{
+ assert(*bufLen >= sizeof(Int8));
+ Lng32 valueBuf;
+ *bufLen = sizeof(Int8);
+ *((Int8*)bufPtr) = 0;
+ valueBuf = 0;
-// ---------------------------------------------------------------------
-// A method which tells if a conversion error can occur when converting
-// a value of this type to the target type.
-// This method is a stub and so just returns true for now.
-// ---------------------------------------------------------------------
-NABoolean SQLBoolean::errorsCanOccur(const NAType& target, NABoolean lax) const
+ if (stringLiteral != NULL)
+ {
+ // Generate a printable string for the minimum value
+ char nameBuf[10];
+ strcpy(nameBuf, "false");
+ *stringLiteral = new (h) NAString(nameBuf, h);
+ }
+
+} // SQLBooleanNative::minRepresentableValue()
+
+void SQLBooleanNative::maxRepresentableValue(void* bufPtr, Lng32* bufLen,
+ NAString ** stringLiteral,
+ CollHeap* h) const
{
- return TRUE;
-}
+ assert(*bufLen >= sizeof(Int8));
+ Lng32 valueBuf;
+ *bufLen = sizeof(Int8);
+ *((Int8*)bufPtr) = 1;
+ valueBuf = 0;
+
+ if (stringLiteral != NULL)
+ {
+ // Generate a printable string for the minimum value
+ char nameBuf[10];
+ strcpy(nameBuf, "true");
+ *stringLiteral = new (h) NAString(nameBuf, h);
+ }
+} // SQLBooleanNative::maxRepresentableValue()
// ***********************************************************************
//
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/MiscType.h
----------------------------------------------------------------------
diff --git a/core/sql/common/MiscType.h b/core/sql/common/MiscType.h
index 84aa904..e06d8f8 100644
--- a/core/sql/common/MiscType.h
+++ b/core/sql/common/MiscType.h
@@ -58,44 +58,56 @@ static NAString LiteralRowset("ROWSET");
// ***********************************************************************
//
-// SQLBoolean : The boolean data type
+// SQLBooleanBase : The boolean data type
//
// ***********************************************************************
-class SQLBoolean : public NAType
+class SQLBooleanBase : public NAType
{
public:
// ---------------------------------------------------------------------
// Constructor functions
// ---------------------------------------------------------------------
- SQLBoolean(NABoolean SQLUnknownFlag = TRUE,NAMemory * heap=0) :
- NAType(LiteralBoolean,
- NA_BOOLEAN_TYPE,
- 4, // dataStorageSize
- FALSE, // supportsSQLnull
- 0, // SQLnullHdrSize
- FALSE, // variableLength
- 0, // lengthHeaderSize
- 4, // dataAlignment
- heap
- ) { unknownFlag_ = SQLUnknownFlag; }
-
+ SQLBooleanBase(NABoolean allowSQLnull,
+ NABoolean isRelat,
+ NAMemory * heap=0);
+
// ---------------------------------------------------------------------
- // A virtual function to return a copy of the type.
+ // A method which tells if a conversion error can occur when converting
+ // a value of this type to the target type.
// ---------------------------------------------------------------------
- virtual NAType *newCopy(NAMemory* h=0) const;
+ NABoolean errorsCanOccur (const NAType& target, NABoolean lax=TRUE) const;
+
+private:
+}; // class SQLBooleanBase
- short getFSDatatype() const;
+// ***********************************************************************
+//
+// SQLBooleanRelat : The boolean data type used in relational operators
+//
+// ***********************************************************************
+class SQLBooleanRelat : public SQLBooleanBase
+{
+public:
// ---------------------------------------------------------------------
- // Get a simpler textual description of the type.
+ // Constructor functions
// ---------------------------------------------------------------------
- virtual NAString getSimpleTypeName() const;
+ SQLBooleanRelat(NABoolean sqlUnknownFlag = TRUE,
+ NAMemory * heap=0);
+
+ // ---------------------------------------------------------------------
+ // A virtual function to return a copy of the type.
+ // ---------------------------------------------------------------------
+ virtual NAType *newCopy(NAMemory* h=0) const;
+
+ virtual short getFSDatatype() const { return REC_BIN32_SIGNED; }
// ---------------------------------------------------------------------
// Get the external/SQL name of the Type.
// ---------------------------------------------------------------------
- virtual NAString getTypeSQLname(NABoolean terse = FALSE) const;
+ virtual NAString getTypeSQLname(NABoolean terse = FALSE) const
+ {return "BOOLEAN_RELAT";}
// ---------------------------------------------------------------------
// A virtual function for synthesizing the type of a binary operator.
@@ -106,25 +118,63 @@ public:
CollHeap* h,
UInt32 *flags = NULL) const;
+ // ---------------- Methods not inherited from NAType ----------------
+
+ NABoolean canBeSQLUnknown() const { return sqlUnknownFlag_;}
+
+ private:
+ NABoolean sqlUnknownFlag_;
+}; // class SQLBooleanRelat
+
+// ***********************************************************************
+//
+// SQLBooleanNative : The boolean data type used as a column datatype
+//
+// ***********************************************************************
+class SQLBooleanNative : public SQLBooleanBase
+{
+public:
+
// ---------------------------------------------------------------------
- // A method which tells if a conversion error can occur when converting
- // a value of this type to the target type.
+ // Constructor functions
// ---------------------------------------------------------------------
- NABoolean errorsCanOccur (const NAType& target, NABoolean lax=TRUE) const;
+ SQLBooleanNative(NABoolean allowSQLnull,
+ NAMemory * heap=0);
+
+ // ---------------------------------------------------------------------
+ // A virtual function to return a copy of the type.
+ // ---------------------------------------------------------------------
+ virtual NAType *newCopy(NAMemory* h=0) const;
- // ---------------- Methods not inherited from NAType ----------------
+ virtual short getFSDatatype() const { return REC_BOOLEAN; }
// ---------------------------------------------------------------------
- // A method which tells if this SQLBoolean can evualuate to
- // unknown or only to (true,flase)
+ // Get the external/SQL name of the Type.
// ---------------------------------------------------------------------
- NABoolean canBeSQLUnknown() const;
- void setSQLUnknownFlag(NABoolean flag);
+ virtual NAString getTypeSQLname(NABoolean terse = FALSE) const
+ {return "BOOLEAN";}
- private:
- NABoolean unknownFlag_;
+ // ---------------------------------------------------------------------
+ // A virtual function for synthesizing the type of a binary operator.
+ // ---------------------------------------------------------------------
+ virtual const NAType* synthesizeType(enum NATypeSynthRuleEnum synthRule,
+ const NAType& operand1,
+ const NAType& operand2,
+ CollHeap* h,
+ UInt32 *flags = NULL) const;
+
+ virtual void minRepresentableValue(void* bufPtr, Lng32* bufLen,
+ NAString ** stringLiteral,
+ CollHeap* h) const;
+
+ virtual void maxRepresentableValue(void* bufPtr, Lng32* bufLen,
+ NAString ** stringLiteral,
+ CollHeap* h) const;
-}; // class SQLBoolean
+ // ---------------- Methods not inherited from NAType ----------------
+
+ private:
+}; // class SQLBooleanNative
// ***********************************************************************
//
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/NAType.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/NAType.cpp b/core/sql/common/NAType.cpp
index 78b00bd..1bbe1b5 100644
--- a/core/sql/common/NAType.cpp
+++ b/core/sql/common/NAType.cpp
@@ -626,6 +626,10 @@ Lng32 NAType::getDisplayLength(Lng32 datatype,
d_len = length;
break;
+ case REC_BOOLEAN:
+ d_len = SQL_BOOLEAN_DISPLAY_SIZE;
+ break;
+
default:
d_len = length;
break;
@@ -729,6 +733,10 @@ short NAType::getMyTypeAsHiveText(NAString * outputStr) // output
*outputStr = "double";
break;
+ case REC_BOOLEAN:
+ *outputStr = "boolean";
+ break;
+
case REC_DATETIME:
{
DatetimeIntervalCommonType & dtiCommonType =
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/NumericType.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/NumericType.cpp b/core/sql/common/NumericType.cpp
index b401522..1a3b445 100644
--- a/core/sql/common/NumericType.cpp
+++ b/core/sql/common/NumericType.cpp
@@ -834,24 +834,6 @@ NABoolean NumericType::isEncodingNeeded() const
#endif
}
-NABoolean NumericType::expConvSupported
-(const NAType &otherNAType) const
-{
- if (getFSDatatype() != REC_BIN64_UNSIGNED)
- return TRUE;
-
- if ((otherNAType.getFSDatatype() == REC_BIN64_SIGNED) ||
- (otherNAType.getFSDatatype() == REC_BIN64_UNSIGNED) ||
- (otherNAType.getFSDatatype() == REC_FLOAT32) ||
- (otherNAType.getFSDatatype() == REC_FLOAT64) ||
- (otherNAType.getFSDatatype() == REC_NUM_BIG_SIGNED) ||
- (otherNAType.getFSDatatype() == REC_NUM_BIG_UNSIGNED) ||
- (DFS2REC::isAnyCharacter(otherNAType.getFSDatatype())))
- return TRUE;
-
- return FALSE;
-}
-
// -----------------------------------------------------------------------
// Methods for SQLTiny
// -----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/NumericType.h
----------------------------------------------------------------------
diff --git a/core/sql/common/NumericType.h b/core/sql/common/NumericType.h
index 3ed2039..7c40019 100644
--- a/core/sql/common/NumericType.h
+++ b/core/sql/common/NumericType.h
@@ -247,9 +247,6 @@ public:
virtual NAType *newCopy(CollHeap* h=0) const
{ return new(h) NumericType(*this,h); }
- virtual NABoolean expConvSupported
- (const NAType &otherNAType) const;
-
protected:
// ---------------------------------------------------------------------
@@ -912,23 +909,29 @@ public:
{
if (isUnsigned())
{
- if (getNominalSize() == sizeof(short))
- return REC_BIN16_UNSIGNED;
+ if (getNominalSize() == sizeof(UInt8))
+ return REC_BIN8_UNSIGNED;
else
- if (getNominalSize() == sizeof(Lng32))
- return REC_BIN32_UNSIGNED;
- else
- return REC_BIN64_UNSIGNED;
+ if (getNominalSize() == sizeof(short))
+ return REC_BIN16_UNSIGNED;
+ else
+ if (getNominalSize() == sizeof(Lng32))
+ return REC_BIN32_UNSIGNED;
+ else
+ return REC_BIN64_UNSIGNED;
}
else
{
- if (getNominalSize() == sizeof(short))
- return REC_BIN16_SIGNED;
+ if (getNominalSize() == sizeof(Int8))
+ return REC_BIN8_SIGNED;
else
- if (getNominalSize() == sizeof(Lng32))
- return REC_BIN32_SIGNED;
- else
- return REC_BIN64_SIGNED;
+ if (getNominalSize() == sizeof(short))
+ return REC_BIN16_SIGNED;
+ else
+ if (getNominalSize() == sizeof(Lng32))
+ return REC_BIN32_SIGNED;
+ else
+ return REC_BIN64_SIGNED;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/SQLTypeDefs.h
----------------------------------------------------------------------
diff --git a/core/sql/common/SQLTypeDefs.h b/core/sql/common/SQLTypeDefs.h
index e1a73a0..27b29d8 100644
--- a/core/sql/common/SQLTypeDefs.h
+++ b/core/sql/common/SQLTypeDefs.h
@@ -70,6 +70,7 @@
#define SQL_DOUBLE_PRECISION_SIZE 8
#define SQL_CHAR_SIZE 1
#define SQL_DBCHAR_SIZE 2
+#define SQL_BOOLEAN_SIZE 1
#define SQL_NULL_HDR_SIZE 2
#define SQL_VARCHAR_HDR_SIZE 2
@@ -88,6 +89,7 @@
#define SQL_ULARGE_DISPLAY_SIZE 20
#define SQL_REAL_DISPLAY_SIZE 15
#define SQL_REAL_MIN_DISPLAY_SIZE 9
+#define SQL_BOOLEAN_DISPLAY_SIZE 5
#define SQL_REAL_FRAG_DIGITS 7
#define SQL_FLOAT_DISPLAY_SIZE 25
#define SQL_FLOAT_FRAG_DIGITS 17
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/dfs2rec.h
----------------------------------------------------------------------
diff --git a/core/sql/common/dfs2rec.h b/core/sql/common/dfs2rec.h
index 7036eba..c87defb 100644
--- a/core/sql/common/dfs2rec.h
+++ b/core/sql/common/dfs2rec.h
@@ -132,12 +132,7 @@
#define REC_BYTE_F_DOUBLE 2 // MP same name
#define REC_NCHAR_F_UNICODE 2 // [MXsynonym]
-//#define REC_BYTE_F_DOUBLE_UP 3 // MP same name
-//#define REC_BYTE_F_MIXED 4 // MP same name
-//#define REC_BYTE_F_MIXED_UP 5 // MP same name
-
#define REC_MAX_F_CHAR_H 47 // MP same name
- // MP dfs2rec defines REC_BYTE_F_COLL_MIN..MAX, values 48..63, here
#define REC_MIN_V_CHAR_H 64 // MP same name
@@ -148,10 +143,6 @@
#define REC_BYTE_V_DOUBLE 66 // MP same name
#define REC_NCHAR_V_UNICODE 66 // [MXsynonym]
-//#define REC_BYTE_V_DOUBLE_UP 67 // MP same name
-//#define REC_BYTE_V_MIXED 68 // MP same name
-//#define REC_BYTE_V_MIXED_UP 69 // MP same name
-
#define REC_BYTE_V_ASCII_LONG 70 // MX only: ODBC LONG VARCHAR
// These types do not exist in MP, *and* they do not exist as persistent
@@ -186,9 +177,9 @@
#define REC_BLOB 160 // SQ only: blob datatype
#define REC_CLOB 161 // SQ only: clob datatype
+ #define REC_BOOLEAN 170
-
-#define REC_DATETIME 192
+ #define REC_DATETIME 192
// The ANSI defines are also in cli/SqlCLI.h (since they are externalized)
// and must be the same as those defined there. We don't source that file
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/str.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/str.cpp b/core/sql/common/str.cpp
index e51c125..a2a6c8c 100644
--- a/core/sql/common/str.cpp
+++ b/core/sql/common/str.cpp
@@ -997,19 +997,40 @@ Lng32 str_decode(void *tgt, Lng32 tgtMaxLen, const char *src, Lng32 srcLen)
return length;
}
-// Strips leading and trailing blanks. src will contain a NULL after the
+// Strips leading and/or trailing blanks. src will contain a NULL after the
// end of the first non-blank character.The length of the "stripped" string
-// is returned in len
-
-void str_strip_blanks(char *src , Lng32 &len)
+// is returned in len.
+// Returns pointer to the start of string after leading blanks.
+char * str_strip_blanks(char *src , Lng32 &len,
+ NABoolean stripLeading,
+ NABoolean stripTrailing
+ )
{
+ if (! src)
+ return NULL;
+
len = str_len(src)-1;
- while ((len >= 0) && (src[len] == ' '))
- len--;
+ if (len <= 0)
+ return src;
- len++;
+ if (stripTrailing)
+ {
+ while ((len >= 0) && (src[len] == ' '))
+ len--;
+
+ len++;
+ src[len] = 0;
+ }
+
+ Lng32 i = 0;
+ if (stripLeading)
+ {
+ while ((i < len) && (src[i] == ' '))
+ i++;
+ len = len - i;
+ }
- src[len] = 0;
+ return &src[i];
}
#if !defined(__EID) && !defined(ARKFS_OPEN)
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/common/str.h
----------------------------------------------------------------------
diff --git a/core/sql/common/str.h b/core/sql/common/str.h
index 327e459..f0741e3 100644
--- a/core/sql/common/str.h
+++ b/core/sql/common/str.h
@@ -357,13 +357,17 @@ NA_EIDPROC
Lng32 str_decoded_len(Lng32 srcLen);
NA_EIDPROC
Lng32 str_decode(void *tgt, Lng32 tgtMaxLen, const char *src, Lng32 srcLen);
+
//------------------------------------------------------------------------
-// Strips trailing blanks. src will contain a NULL after the
+// Strips leading and/or trailing blanks. src will contain a NULL after the
// end of the first non-blank character.The length of the "stripped" string
-// is returned in len
+// is returned in len.
+// Returns pointer to the start of string after leading blanks.
//------------------------------------------------------------------------
-NA_EIDPROC
-void str_strip_blanks(char *src , Lng32 &len);
+char * str_strip_blanks(char *src , Lng32 &len,
+ NABoolean stripLeading = FALSE,
+ NABoolean stripTrailing = TRUE
+ );
//------------------------------------------------------------------------
// This funtion transforms src into the form of an SQL identifier
// Input : src,allowedChar
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/ExpErrorEnums.h
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpErrorEnums.h b/core/sql/exp/ExpErrorEnums.h
index 6215598..2336ea0 100644
--- a/core/sql/exp/ExpErrorEnums.h
+++ b/core/sql/exp/ExpErrorEnums.h
@@ -148,6 +148,7 @@ enum ExeErrorCode
EXE_FIELD_NUM_OVERFLOW = 8423,
EXE_MATH_FUNC_NOT_SUPPORTED = 8424,
EXE_DEFAULT_VALUE_ERROR = 8425,
+ EXE_INVALID_BOOLEAN_VALUE = 8426,
EXE_SORT_ERROR = 8427,
EXE_BAD_ARG_TO_MATH_FUNC = 8428,
EXE_MAPPED_FUNCTION_ERROR = 8429,
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/ExpPCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpPCode.cpp b/core/sql/exp/ExpPCode.cpp
index e40116f..9f0948e 100644
--- a/core/sql/exp/ExpPCode.cpp
+++ b/core/sql/exp/ExpPCode.cpp
@@ -546,10 +546,13 @@ Int32 PCode::size() {
|| a == PCIT::MATTR3) ? 3 : \
( a == PCIT::IATTR2 \
|| a == PCIT::MBIN8 \
+ || a == PCIT::MBIN8S \
+ || a == PCIT::MBIN8U \
|| a == PCIT::MBIN16U \
|| a == PCIT::MBIN16S \
|| a == PCIT::MBIN32U \
|| a == PCIT::MBIN32S \
+ || a == PCIT::MBIN64U \
|| a == PCIT::MBIN64S \
|| a == PCIT::MPTR32 \
|| a == PCIT::MASCII \
@@ -1089,8 +1092,42 @@ Int32 PCode::size() {
I3(Op_DECODE,MASCII,MBIN32S,IBIN32S,DECODE_MASCII_MBIN32S_IBIN32S), // Instruction 333
I3(Op_DECODE,MASCII,MBIN32U,IBIN32S,DECODE_MASCII_MBIN32U_IBIN32S), // Instruction 334
I3(Op_DECODE,MASCII,MBIN64S,IBIN32S,DECODE_MASCII_MBIN64S_IBIN32S), // Instruction 335
- I4(Op_DECODE,MASCII,MASCII,IBIN32S,IBIN32S,DECODE_NXX), // Instruction 336
- I4(Op_DECODE,MASCII,MDECS,IBIN32S,IBIN32S,DECODE_DECS), // Instruction 337
+ I4(Op_DECODE,MASCII,MASCII,IBIN32S,IBIN32S,DECODE_DATETIME), // Instruction 336
+ I4(Op_DECODE,MASCII,MASCII,IBIN32S,IBIN32S,DECODE_NXX), // Instruction 337
+ I4(Op_DECODE,MASCII,MDECS,IBIN32S,IBIN32S,DECODE_DECS), // Instruction 338
+
+ I2(Op_NEG,MASCII,MASCII,NEGATE_MASCII_MASCII), // Instruction 339
+
+ I3(Op_ENCODE,MASCII,MBIN8S,IBIN32S,ENCODE_MASCII_MBIN8S_IBIN32S), // Instruction 340
+ I3(Op_ENCODE,MASCII,MBIN8U,IBIN32S,ENCODE_MASCII_MBIN8U_IBIN32S), // Instruction 341
+
+ I3(Op_DECODE,MASCII,MBIN8S,IBIN32S,DECODE_MASCII_MBIN8S_IBIN32S), // Instruction 342
+ I3(Op_DECODE,MASCII,MBIN8U,IBIN32S,DECODE_MASCII_MBIN8U_IBIN32S), // Instruction 343
+
+ I2(Op_MOVE,MBIN16S,MBIN8S,MOVE_MBIN16S_MBIN8S), // Instruction 344
+ I2(Op_MOVE,MBIN16U,MBIN8U,MOVE_MBIN16U_MBIN8U), // Instruction 345
+ I2(Op_MOVE,MBIN32S,MBIN8S,MOVE_MBIN32S_MBIN8S), // Instruction 346
+ I2(Op_MOVE,MBIN32U,MBIN8U,MOVE_MBIN32U_MBIN8U), // Instruction 347
+ I2(Op_MOVE,MBIN64S,MBIN8S,MOVE_MBIN64S_MBIN8S), // Instruction 348
+ I2(Op_MOVE,MBIN64U,MBIN8U,MOVE_MBIN64U_MBIN8U), // Instruction 349
+
+ I3(Op_EQ,MBIN32S,MBIN8S,MBIN8S,EQ_MBIN32S_MBIN8S_MBIN8S), // Instruction 350
+ I3(Op_NE,MBIN32S,MBIN8S,MBIN8S,NE_MBIN32S_MBIN8S_MBIN8S), // Instruction 351
+ I3(Op_LT,MBIN32S,MBIN8S,MBIN8S,LT_MBIN32S_MBIN8S_MBIN8S), // Instruction 352
+ I3(Op_GT,MBIN32S,MBIN8S,MBIN8S,GT_MBIN32S_MBIN8S_MBIN8S), // Instruction 353
+ I3(Op_LE,MBIN32S,MBIN8S,MBIN8S,LE_MBIN32S_MBIN8S_MBIN8S), // Instruction 354
+ I3(Op_GE,MBIN32S,MBIN8S,MBIN8S,GE_MBIN32S_MBIN8S_MBIN8S), // Instruction 355
+
+ I3(Op_EQ,MBIN32S,MBIN8U,MBIN8U,EQ_MBIN32S_MBIN8U_MBIN8U), // Instruction 356
+ I3(Op_NE,MBIN32S,MBIN8U,MBIN8U,NE_MBIN32S_MBIN8U_MBIN8U), // Instruction 357
+ I3(Op_LT,MBIN32S,MBIN8U,MBIN8U,LT_MBIN32S_MBIN8U_MBIN8U), // Instruction 358
+ I3(Op_GT,MBIN32S,MBIN8U,MBIN8U,GT_MBIN32S_MBIN8U_MBIN8U), // Instruction 359
+ I3(Op_LE,MBIN32S,MBIN8U,MBIN8U,LE_MBIN32S_MBIN8U_MBIN8U), // Instruction 360
+ I3(Op_GE,MBIN32S,MBIN8U,MBIN8U,GE_MBIN32S_MBIN8U_MBIN8U), // Instruction 361
+
+ I2(Op_MOVE,MBIN64S,MBIN64U,MOVE_MBIN64S_MBIN64U), // Instruction 362
+ I2(Op_MOVE,MBIN64U,MBIN64S,MOVE_MBIN64U_MBIN64S), // Instruction 363
+ I2(Op_MOVE,MBIN64U,MBIN64U,MOVE_MBIN64U_MBIN64U), // Instruction 364
};
@@ -1568,18 +1605,25 @@ PCIT::AddressingMode PCIT::getMemoryAddressingMode(Int32 datatype)
{
switch(datatype)
{
+ case REC_BIN8_UNSIGNED: return PCIT::MBIN8U; break;
+ case REC_BIN8_SIGNED: return PCIT::MBIN8S; break;
+
case REC_BIN16_UNSIGNED:
case REC_BPINT_UNSIGNED: return PCIT::MBIN16U; break;
case REC_BIN16_SIGNED: return PCIT::MBIN16S; break;
case REC_BIN32_UNSIGNED: return PCIT::MBIN32U; break;
case REC_BIN32_SIGNED: return PCIT::MBIN32S; break;
+ case REC_BIN64_UNSIGNED: return PCIT::MBIN64U; break;
case REC_BIN64_SIGNED: return PCIT::MBIN64S; break;
case REC_IEEE_FLOAT32: return PCIT::MFLT32; break;
case REC_IEEE_FLOAT64: return PCIT::MFLT64; break;
case REC_DECIMAL_LSE: return PCIT::MDECS; break;
case REC_DECIMAL_UNSIGNED: return PCIT::MDECU; break;
+
+ case REC_BOOLEAN: return PCIT::MASCII; break;
case REC_BYTE_F_ASCII: return PCIT::MASCII; break;
+
case REC_BYTE_V_ASCII: return PCIT::MATTR5; break;
case REC_NCHAR_F_UNICODE: return PCIT::MUNI; break;
case REC_NCHAR_V_UNICODE: return PCIT::MUNIV; break;
@@ -1593,6 +1637,8 @@ Int16 PCIT::getDataTypeForMemoryAddressingMode(PCIT::AddressingMode am)
{
switch(am)
{
+ case PCIT::MBIN8S: return REC_BIN8_SIGNED; break;
+ case PCIT::MBIN8U: return REC_BIN8_UNSIGNED; break;
case PCIT::IBIN16U:
case PCIT::MBIN16U: return REC_BIN16_UNSIGNED; break;
case PCIT::MBIN16S: return REC_BIN16_SIGNED; break;
@@ -1601,6 +1647,7 @@ Int16 PCIT::getDataTypeForMemoryAddressingMode(PCIT::AddressingMode am)
case PCIT::MBIN32S: return REC_BIN32_SIGNED; break;
case PCIT::IBIN64S:
case PCIT::MBIN64S: return REC_BIN64_SIGNED; break;
+ case PCIT::MBIN64U: return REC_BIN64_UNSIGNED; break;
case PCIT::MFLT32: return REC_IEEE_FLOAT32; break;
case PCIT::MFLT64: return REC_IEEE_FLOAT64; break;
case PCIT::MDECS: return REC_DECIMAL_LSE; break;
@@ -1635,10 +1682,13 @@ Int32 PCIT::getNumberOperandsForAddressingMode(PCIT::AddressingMode am)
return 2;
case PCIT::MBIN8:
+ case PCIT::MBIN8S:
+ case PCIT::MBIN8U:
case PCIT::MBIN16U:
case PCIT::MBIN16S:
case PCIT::MBIN32U:
case PCIT::MBIN32S:
+ case PCIT::MBIN64U:
case PCIT::MBIN64S:
case PCIT::MFLT32:
case PCIT::MFLT64:
@@ -1681,6 +1731,8 @@ Int32 PCIT::getOperandLengthForAddressingMode(PCIT::AddressingMode am)
case PCIT::MASCII:
case PCIT::MDECS:
case PCIT::MDECU:
+ case PCIT::MBIN8S:
+ case PCIT::MBIN8U:
case PCIT::IBIN8U:
case PCIT::IATTR4:
case PCIT::IATTR3:
@@ -1695,6 +1747,7 @@ Int32 PCIT::getOperandLengthForAddressingMode(PCIT::AddressingMode am)
case PCIT::MFLT32:
case PCIT::IBIN32S:
return 4;
+ case PCIT::MBIN64U:
case PCIT::MBIN64S:
case PCIT::MFLT64:
case PCIT::IBIN64S:
@@ -1713,10 +1766,13 @@ Int32 PCIT::isMemoryAddressingMode(PCIT::AddressingMode am)
switch(am)
{
case PCIT::MBIN8:
+ case PCIT::MBIN8U:
+ case PCIT::MBIN8S:
case PCIT::MBIN16U:
case PCIT::MBIN16S:
case PCIT::MBIN32U:
case PCIT::MBIN32S:
+ case PCIT::MBIN64U:
case PCIT::MBIN64S:
case PCIT::MFLT32:
case PCIT::MFLT64:
@@ -1832,10 +1888,13 @@ const char *PCIT::operationString(PCIT::Operation op) {
const char *PCIT::addressingModeString(PCIT::AddressingMode am) {
switch(am) {
case PCIT::MBIN8: return("MBIN8");
+ case PCIT::MBIN8S: return("MBIN8S");
+ case PCIT::MBIN8U: return("MBIN8U");
case PCIT::MBIN16U: return("MBIN16U");
case PCIT::MBIN16S: return("MBIN16S");
case PCIT::MBIN32U: return("MBIN32U");
case PCIT::MBIN32S: return("MBIN32S");
+ case PCIT::MBIN64U: return("MBIN64U");
case PCIT::MBIN64S: return("MBIN64S");
case PCIT::MFLT32: return("MFLT32");
case PCIT::MFLT64: return("MFLT64");
@@ -1897,6 +1956,11 @@ Int32 PCI::getMemoryOperandLength(PCIT::AddressingMode am, Int32 op)
if (am == PCIT::MPTR32)
return getOperand(7);
return 0;
+ case PCIT::ENCODE_MASCII_MBIN8S_IBIN32S:
+ case PCIT::ENCODE_MASCII_MBIN8U_IBIN32S:
+ case PCIT::DECODE_MASCII_MBIN8S_IBIN32S:
+ case PCIT::DECODE_MASCII_MBIN8U_IBIN32S:
+ return 1;
case PCIT::ENCODE_MASCII_MBIN16S_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN16U_IBIN32S:
case PCIT::DECODE_MASCII_MBIN16S_IBIN32S:
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/ExpPCodeClauseGen.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpPCodeClauseGen.cpp b/core/sql/exp/ExpPCodeClauseGen.cpp
index 83063c1..81c56fe 100644
--- a/core/sql/exp/ExpPCodeClauseGen.cpp
+++ b/core/sql/exp/ExpPCodeClauseGen.cpp
@@ -417,18 +417,22 @@ ex_expr::exp_return_type ex_function_encode::pCodeGenerate(Space *space, UInt32
(isAnyOperandNullable()))
return ex_clause::pCodeGenerate(space, f);
+ AttributesPtr *attrs = getOperand();
+ Attributes *src = attrs[1];
+ Lng32 fsDataType = src->getDatatype();
+ Lng32 length = src->getLength();
+
if (isDecode())
{
if (! getenv("PCODE_DECODE"))
return ex_clause::pCodeGenerate(space, f);
}
- AttributesPtr *attrs = getOperand();
- Attributes *src = attrs[1];
- Lng32 fsDataType = src->getDatatype();
- Lng32 length = src->getLength();
-
switch(fsDataType) {
+ case REC_BIN8_SIGNED:
+ case REC_BIN8_UNSIGNED:
+ break;
+
case REC_BIN16_SIGNED:
case REC_BIN16_UNSIGNED:
case REC_BIN32_SIGNED:
@@ -441,17 +445,11 @@ ex_expr::exp_return_type ex_function_encode::pCodeGenerate(Space *space, UInt32
{
// not enabled for NEO CA
return ex_clause::pCodeGenerate(space, f);
-
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
}
break;
case REC_BYTE_F_ASCII:
// case REC_NCHAR_F_UNICODE:
- // ascii pcode encode is not done on pre R2.1 nodes.
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
// for now, do non-pcode encoding for caseInsensitive datatypes.
// Later, add this to PCODE.
@@ -467,10 +465,6 @@ ex_expr::exp_return_type ex_function_encode::pCodeGenerate(Space *space, UInt32
break;
case REC_DATETIME:
- // datetime pcode encode is not done on pre R2.1 nodes.
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
-
// Do not generate PCODE to encode the non-standard SQL/MP
// datetime types (for now).
// Do not generate PCODE on windows(Little Endian) platform.
@@ -744,9 +738,6 @@ ex_expr::exp_return_type bool_result_clause::pCodeGenerate(Space *space, UInt32
//
ex_expr::exp_return_type ex_branch_clause::pCodeGenerate(Space *space, UInt32 f) {
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
-
if ((getOperType() != ITM_AND) &&
(getOperType() != ITM_OR))
return ex_clause::pCodeGenerate(space, f);
@@ -823,9 +814,6 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case LE_ASCII_F_F:
case GT_ASCII_F_F:
case GE_ASCII_F_F:
- // ascii pcode comparison is not done on pre R2.1 nodes.
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
break;
case NE_UNICODE_F_F:
@@ -856,16 +844,14 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case LE_ASCII_COMP:
case GT_ASCII_COMP:
case GE_ASCII_COMP:
- // ascii pcode comparison is not done on pre R2.1 nodes.
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
-
// PCIT::getMemoryAddressingMode(), used below, cannot currently handle these.
if ((attrs[1]->getDatatype() == REC_BYTE_V_ASCII_LONG ) ||
(attrs[2]->getDatatype() == REC_BYTE_V_ASCII_LONG ))
return ex_clause::pCodeGenerate(space, f);
break;
+ case EQ_BIN8S_BIN8S:
+ case EQ_BIN8U_BIN8U:
case EQ_BIN16S_BIN16S:
case EQ_BIN16S_BIN32S:
case EQ_BIN32S_BIN16S:
@@ -877,6 +863,8 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case EQ_BIN16S_BIN32U:
case EQ_BIN32U_BIN16S:
+ case LT_BIN8S_BIN8S:
+ case LT_BIN8U_BIN8U:
case LT_BIN16S_BIN16S:
case LT_BIN16S_BIN32S:
case LT_BIN32S_BIN16S:
@@ -888,6 +876,8 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case LT_BIN16S_BIN32U:
case LT_BIN32U_BIN16S:
+ case GT_BIN8S_BIN8S:
+ case GT_BIN8U_BIN8U:
case GT_BIN16S_BIN16S:
case GT_BIN16S_BIN32S:
case GT_BIN32S_BIN16S:
@@ -900,6 +890,8 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case GT_BIN32U_BIN16S:
break;
+ case LE_BIN8S_BIN8S:
+ case LE_BIN8U_BIN8U:
case LE_BIN16S_BIN16S:
case LE_BIN16S_BIN32S:
case LE_BIN32S_BIN16S:
@@ -911,6 +903,8 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case LE_BIN16S_BIN32U:
case LE_BIN32U_BIN16S:
+ case GE_BIN8S_BIN8S:
+ case GE_BIN8U_BIN8U:
case GE_BIN16S_BIN16S:
case GE_BIN16S_BIN32S:
case GE_BIN32S_BIN16S:
@@ -921,8 +915,6 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case GE_BIN32U_BIN32U:
case GE_BIN16S_BIN32U:
case GE_BIN32U_BIN16S:
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
break;
case EQ_BIN16U_BIN16S:
@@ -930,8 +922,6 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case LT_BIN16U_BIN16S:
case GE_BIN16U_BIN16S:
case GT_BIN16U_BIN16S:
- if (ex_expr::downrevCompileRR(f))
- return ex_clause::pCodeGenerate(space, f);
break;
case EQ_BIN64S_BIN64S:
@@ -940,13 +930,11 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case GE_BIN64S_BIN64S:
case GT_BIN64S_BIN64S:
case NE_BIN64S_BIN64S:
- if (ex_expr::downrevCompileRR(f))
- return ex_clause::pCodeGenerate(space, f);
break;
+ case NE_BIN8S_BIN8S:
+ case NE_BIN8U_BIN8U:
case NE_BIN16S_BIN16S:
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
break;
case NE_FLOAT32_FLOAT32:
@@ -962,8 +950,6 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case LE_FLOAT64_FLOAT64:
case GT_FLOAT64_FLOAT64:
case GE_FLOAT64_FLOAT64:
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
break;
@@ -974,10 +960,6 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
case LE_DATETIME_DATETIME:
case GE_DATETIME_DATETIME:
#endif
- // datetime pcode comparison is not done on pre R2.1 nodes.
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
-
// Do not generate PCODE to encode the non-standard SQL/MP
// datetime types (for now).
if ((attrs[1]->getPrecision() > REC_DTCODE_TIMESTAMP) ||
@@ -986,6 +968,10 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
return ex_clause::pCodeGenerate(space, f);
break;
+ case EQ_BOOL_BOOL:
+ case NE_BOOL_BOOL:
+ break;
+
default:
return ex_clause::pCodeGenerate(space, f);
}
@@ -995,14 +981,16 @@ ex_expr::exp_return_type ex_comp_clause::pCodeGenerate(Space *space, UInt32 f) {
PCIT::Operation op = PCIT::Op_OPDATA; // prevent init warning
switch(get_case_index()) {
-case EQ_BIN32S_BIN16S:
+ case EQ_BIN32S_BIN16S:
case EQ_BIN32U_BIN16U:
case EQ_BIN32U_BIN16S:
// Normalize instructions so smaller operand comes first
flipOperands = TRUE;
op = PCIT::Op_EQ;
break;
-
+
+ case EQ_BIN8S_BIN8S:
+ case EQ_BIN8U_BIN8U:
case EQ_BIN16U_BIN16S:
case EQ_BIN16S_BIN16S:
case EQ_BIN16S_BIN32S:
@@ -1020,6 +1008,10 @@ case EQ_BIN32S_BIN16S:
op = PCIT::Op_EQ;
break;
+ case EQ_BOOL_BOOL:
+ op = PCIT::Op_EQ;
+ break;
+
case LT_BIN32S_BIN16S:
case LT_BIN32U_BIN16U:
case LT_BIN32U_BIN16S:
@@ -1028,6 +1020,8 @@ case EQ_BIN32S_BIN16S:
op = PCIT::Op_GT;
break;
+ case LT_BIN8S_BIN8S:
+ case LT_BIN8U_BIN8U:
case LT_BIN16U_BIN16S:
case LT_BIN16S_BIN16S:
case LT_BIN16S_BIN32S:
@@ -1053,6 +1047,8 @@ case EQ_BIN32S_BIN16S:
op = PCIT::Op_LT;
break;
+ case GT_BIN8S_BIN8S:
+ case GT_BIN8U_BIN8U:
case GT_BIN16U_BIN16S:
case GT_BIN16S_BIN16S:
case GT_BIN16S_BIN32S:
@@ -1078,6 +1074,8 @@ case EQ_BIN32S_BIN16S:
op = PCIT::Op_GE;
break;
+ case LE_BIN8S_BIN8S:
+ case LE_BIN8U_BIN8U:
case LE_BIN16U_BIN16S:
case LE_BIN16S_BIN16S:
case LE_BIN16S_BIN32S:
@@ -1103,6 +1101,8 @@ case EQ_BIN32S_BIN16S:
op = PCIT::Op_LE;
break;
+ case GE_BIN8S_BIN8S:
+ case GE_BIN8U_BIN8U:
case GE_BIN16U_BIN16S:
case GE_BIN16S_BIN16S:
case GE_BIN16S_BIN32S:
@@ -1122,12 +1122,15 @@ case EQ_BIN32S_BIN16S:
op = PCIT::Op_GE;
break;
+ case NE_BIN8S_BIN8S:
+ case NE_BIN8U_BIN8U:
case NE_FLOAT32_FLOAT32:
case NE_FLOAT64_FLOAT64:
case NE_BIN64S_BIN64S:
case NE_BIN16S_BIN16S:
case NE_ASCII_COMP:
case NE_ASCII_F_F:
+ case NE_BOOL_BOOL:
op = PCIT::Op_NE;
break;
@@ -1149,9 +1152,6 @@ case EQ_BIN32S_BIN16S:
//
if (isAnyOperandNullable())
{
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
-
// if special nulls, only handle equality predicate.
if ( isSpecialNulls() && (getOperType() != ITM_EQUAL) )
return ex_clause::pCodeGenerate(space, f);
@@ -1207,11 +1207,13 @@ case EQ_BIN32S_BIN16S:
code.append(pci);
}
// both the operands are fixed chars/unicode or are of type DATETIME
+ // or of type boolean.
else if (((op1->getDatatype() == REC_BYTE_F_ASCII) &&
(op2->getDatatype() == REC_BYTE_F_ASCII)) ||
((op1->getDatatype() == REC_NCHAR_F_UNICODE) &&
(op2->getDatatype() == REC_NCHAR_F_UNICODE)) ||
- (op1->getDatatype() == REC_DATETIME))
+ (op1->getDatatype() == REC_DATETIME) ||
+ (op1->getDatatype() == REC_BOOLEAN))
{
// Operand 1: memory location of boolean result
// Operand 2: memory location of 1st argument
@@ -1354,14 +1356,14 @@ case EQ_BIN32S_BIN16S:
op2 = tempOp;
}
- AML aml(PCIT::getMemoryAddressingMode(attrs[0]->getDatatype()),
- PCIT::getMemoryAddressingMode(op1->getDatatype()),
- PCIT::getMemoryAddressingMode(op2->getDatatype()));
-
- OL ol(attrs[0]->getAtp(), attrs[0]->getAtpIndex(), attrs[0]->getOffset(),
- op1->getAtp(), op1->getAtpIndex(), op1->getOffset(),
- op2->getAtp(), op2->getAtpIndex(), op2->getOffset());
-
+ AML aml(PCIT::getMemoryAddressingMode(attrs[0]->getDatatype()),
+ PCIT::getMemoryAddressingMode(op1->getDatatype()),
+ PCIT::getMemoryAddressingMode(op2->getDatatype()));
+
+ OL ol(attrs[0]->getAtp(), attrs[0]->getAtpIndex(), attrs[0]->getOffset(),
+ op1->getAtp(), op1->getAtpIndex(), op1->getOffset(),
+ op2->getAtp(), op2->getAtpIndex(), op2->getOffset());
+
// Add the comparison instruction.
//
PCI pci(op, aml, ol);
@@ -1581,9 +1583,7 @@ ex_expr::exp_return_type ExHDPHash::pCodeGenerate(Space *space, UInt32 f)
// The third operand is the length of the data.
//
PCIType::AddressingMode oper;
- if (ex_expr::downrevCompile(f))
- oper = PCIT::MPTR32;
- else if (attrs[1]->getLength() == 8)
+ if (attrs[1]->getLength() == 8)
oper = PCIT::MBIN64S;
else if (attrs[1]->getLength() == 4)
oper = PCIT::MBIN32S;
@@ -1737,9 +1737,7 @@ ex_expr::exp_return_type ex_function_hash::pCodeGenerate(Space *space, UInt32 f)
// The third operand is the length of the data.
//
PCIType::AddressingMode oper;
- if (ex_expr::downrevCompile(f))
- oper = PCIT::MPTR32;
- else if (attrs[1]->getLength() == 8)
+ if (attrs[1]->getLength() == 8)
oper = PCIT::MBIN64S;
else if (attrs[1]->getLength() == 4)
oper = PCIT::MBIN32S;
@@ -1885,9 +1883,6 @@ ex_expr::exp_return_type ExHashComb::pCodeGenerate(Space *space, UInt32 f) {
if(getenv("PCODE_NO_HASHCOMB")) return ex_clause::pCodeGenerate(space, f);
#endif
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
-
// Get a handle on the operands
//
AttributesPtr *attrs = getOperand();
@@ -2030,6 +2025,91 @@ Int32 isTemporaryAttribute(Attributes *attr) { return attr->getAtpIndex() == 1;}
NA_EIDPROC
Int32 isAtpAttribute(Attributes *attr) { return attr->getAtpIndex() > 1; };
+ex_expr::exp_return_type ex_arith_clause::unaryArithPCodeGenerate
+(Space *space, UInt32 f)
+{
+ if (getNumOperands() != 2)
+ return ex_expr::EXPR_ERROR;
+
+ AttributesPtr *attrs = getOperand();
+
+ switch(get_case_index()) {
+
+ case NEGATE_BOOLEAN:
+ break;
+
+ default:
+ return ex_clause::pCodeGenerate(space, f);
+ }
+
+ // Allocate the code list and get a handle on the attributes
+ //
+ PCIList code(space);
+
+ // Don't get mixed up in interval conversions. The precision for
+ // interval conversions is not set up correctly.
+ //
+ Attributes *dst = attrs[0];
+ Attributes *op1 = attrs[1];
+
+ // Generate pre clause PCI's
+ //
+ PCode::preClausePCI(this, code);
+
+ // Construct the operands.
+ //
+ OL ol2(dst->getAtp(), dst->getAtpIndex(), dst->getOffset(),
+ op1->getAtp(), op1->getAtpIndex(), op1->getOffset());
+
+ AML aml2(PCIT::getMemoryAddressingMode(dst->getDatatype()),
+ PCIT::getMemoryAddressingMode(op1->getDatatype()));
+
+ // Construct the operation.
+ //
+ AML *aml = NULL;
+ OL *ol = NULL;
+ PCIT::Operation inst = PCIT::Op_OPDATA; // prevent uninitialized var warning
+
+ switch(get_case_index())
+ {
+ case NEGATE_BOOLEAN:
+ aml = &aml2;
+ ol = &ol2;
+ inst = PCIT::Op_NEG;
+ break;
+ }
+
+ // Add the null logic if necessary.
+ //
+ PCIID branchToEnd = PCode::nullBranch(this, code, attrs);
+
+ // Add the instruction.
+ //
+ PCI pci(inst, *aml, *ol);
+ code.append(pci);
+
+ // Add the branch target if necessary.
+ //
+ if(branchToEnd)
+ {
+ AML aml;
+#ifdef NA_64BIT
+ OL ol((Int64)branchToEnd);
+#else
+ OL ol((PCIType::Operand)branchToEnd);
+#endif
+ PCI pci(PCIT::Op_TARGET, aml, ol);
+ code.append(pci);
+ }
+
+ // Generate post clause PCI's
+ //
+ PCode::postClausePCI(this, code);
+
+ setPCIList(code.getList());
+ return ex_expr::EXPR_OK;
+}
+
// ex_arith_clause::pCodeGenerate
//
// Generate PCI's for the arithematic operations. The PCI's load the operands,
@@ -2046,6 +2126,12 @@ ex_expr::exp_return_type ex_arith_clause::pCodeGenerate(Space *space, UInt32 f)
if(getenv("PCODE_NO_ARITH")) return ex_clause::pCodeGenerate(space, f);
#endif
+ // if unary arith operator, generator unary pcode.
+ if (getNumOperands() == 2) // 1 result and 1 operand
+ {
+ return unaryArithPCodeGenerate(space, f);
+ }
+
// Generate the standard clause->eval PCode for cases that
// are not handled with more fundamental PCode operations.
//
@@ -2080,34 +2166,18 @@ ex_expr::exp_return_type ex_arith_clause::pCodeGenerate(Space *space, UInt32 f)
case MUL_BIN16S_BIN32S_BIN64S:
case MUL_BIN32S_BIN16S_BIN64S:
case MUL_BIN32S_BIN32S_BIN64S:
- {
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
- }
break;
case DIV_BIN64S_BIN64S_BIN64S:
- {
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
- }
break;
case DIV_BIN64S_BIN64S_BIN64S_ROUND:
- {
- if (ex_expr::downrevCompileR2FCS(f))
- return ex_clause::pCodeGenerate(space, f);
- }
break;
case ADD_FLOAT64_FLOAT64_FLOAT64:
case SUB_FLOAT64_FLOAT64_FLOAT64:
case MUL_FLOAT64_FLOAT64_FLOAT64:
case DIV_FLOAT64_FLOAT64_FLOAT64:
- {
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
- }
break;
case SUB_COMPLEX:
@@ -2121,7 +2191,7 @@ ex_expr::exp_return_type ex_arith_clause::pCodeGenerate(Space *space, UInt32 f)
return ex_clause::pCodeGenerate(space, f);
}
- // Allocate the code list and get <a handle on the attributes
+ // Allocate the code list and get a handle on the attributes
//
PCIList code(space);
@@ -2137,7 +2207,7 @@ ex_expr::exp_return_type ex_arith_clause::pCodeGenerate(Space *space, UInt32 f)
(op1->getDatatype() < REC_MIN_NUMERIC) ||
(op1->getDatatype() > REC_MAX_NUMERIC))
return ex_clause::pCodeGenerate(space, f);
-
+
// Generate pre clause PCI's
//
PCode::preClausePCI(this, code);
@@ -2319,6 +2389,7 @@ ex_expr::exp_return_type ex_arith_clause::pCodeGenerate(Space *space, UInt32 f)
ol = &olx;
inst = PCIT::Op_DIV;
break;
+
}
// Add the null logic if necessary.
@@ -2381,10 +2452,6 @@ ex_expr::exp_return_type ex_arith_sum_clause::pCodeGenerate(Space *space, UInt32
break;
case ADD_FLOAT64_FLOAT64_FLOAT64:
- {
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
- }
break;
case ADD_COMPLEX:
@@ -2514,9 +2581,9 @@ ex_expr::exp_return_type ex_arith_count_clause::pCodeGenerate(Space *space, UInt
};
NA_EIDPROC static void computeBounds(Attributes *attr, Int64 &lowBounds,
- Int64 &highBounds, Int32 &bigBounds, Int32 &isSigned)
+ UInt64 &highBounds, Int32 &bigBounds, Int32 &isSigned)
{
-const Int64 decimalPrecision[] = {
+const UInt64 decimalPrecision[] = {
0,
9,
99,
@@ -2527,7 +2594,6 @@ const Int64 decimalPrecision[] = {
9999999,
99999999,
999999999,
-//SQ_LINUX #ifndef NA_HSC
9999999999LL,
99999999999LL,
999999999999LL,
@@ -2537,7 +2603,8 @@ const Int64 decimalPrecision[] = {
9999999999999999LL,
99999999999999999LL,
999999999999999999LL,
- 4999999999999999999LL
+ 4999999999999999999LL,
+ 9999999999999999999ULL
};
const Int32 bpPrecision[] = { 0, 1, 3, 7, 15, 31, 63, 127, 255, 511,
@@ -2557,6 +2624,10 @@ const Int32 bpPrecision[] = { 0, 1, 3, 7, 15, 31, 63, 127, 255, 511,
isSigned = 1;
switch(attr->getDatatype())
{
+ case REC_BIN8_UNSIGNED:
+ isSigned = 0;
+ break;
+
case REC_BIN16_UNSIGNED:
isSigned = 0;
break;
@@ -2567,10 +2638,17 @@ const Int32 bpPrecision[] = { 0, 1, 3, 7, 15, 31, 63, 127, 255, 511,
case REC_BIN64_SIGNED:
bigBounds = 1;
+ break;
+
+ case REC_BIN64_UNSIGNED:
+ isSigned = 0;
+ bigBounds = 1;
+ break;
}
lowBounds = 0;
- if(isSigned) lowBounds = - decimalPrecision[attr->getPrecision()];
+ if (isSigned)
+ lowBounds = - decimalPrecision[attr->getPrecision()];
highBounds = decimalPrecision[attr->getPrecision()];
}
// Binarys have precision = 0
@@ -2584,6 +2662,12 @@ const Int32 bpPrecision[] = { 0, 1, 3, 7, 15, 31, 63, 127, 255, 511,
highBounds = bpPrecision[attr->getPrecision()];
break;
+ case REC_BIN8_SIGNED:
+ lowBounds = CHAR_MIN;
+ highBounds = CHAR_MAX;
+ isSigned = 1;
+ break;
+
case REC_BIN16_SIGNED:
lowBounds = SHRT_MIN;
highBounds = SHRT_MAX;
@@ -2614,6 +2698,13 @@ const Int32 bpPrecision[] = { 0, 1, 3, 7, 15, 31, 63, 127, 255, 511,
highBounds = (Int64)LLONG_MAX;
isSigned = 1;
break;
+
+ case REC_BIN64_UNSIGNED:
+ bigBounds = 1;
+ lowBounds = 0;
+ highBounds = ULLONG_MAX;
+ break;
+
}
}
}
@@ -2651,11 +2742,12 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
// CIF bulk move -- no pcode yet --there will be later
- if ( lastVOAoffset_>0)
+ if ( lastVOAoffset_>0)
{
if (getenv("NO_CIF_BULK_MOVE_PCODE"))
- return ex_clause::pCodeGenerate(space, f);
+ return ex_clause::pCodeGenerate(space, f);
}
+
// Get a handle on the operands.
//
AttributesPtr *attrs = getOperand();
@@ -2683,30 +2775,31 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
return ex_clause::pCodeGenerate(space, f);
}
}
- else
- // Don't get mixed up in interval conversions. The precision for
- // interval conversions is not set up correctly.
- //
- if (((dst->getDatatype() < REC_MIN_NUMERIC) ||
- (dst->getDatatype() > REC_MAX_NUMERIC) ||
- (src->getDatatype() < REC_MIN_NUMERIC) ||
- (src->getDatatype() > REC_MAX_NUMERIC)) &&
- (((dst->getDatatype() != REC_BYTE_F_ASCII) ||
- (src->getDatatype() != REC_BYTE_F_ASCII)) &&
- ((dst->getDatatype() != REC_BYTE_V_ASCII) ||
- (src->getDatatype() != REC_BYTE_V_ASCII)) &&
- ((dst->getDatatype() != REC_BYTE_F_ASCII) ||
- (src->getDatatype() != REC_BYTE_V_ASCII)) &&
- ((dst->getDatatype() != REC_BYTE_V_ASCII) ||
- (src->getDatatype() != REC_BYTE_F_ASCII)) &&
- ((dst->getDatatype() != REC_NCHAR_V_UNICODE) ||
- (src->getDatatype() != REC_NCHAR_V_UNICODE)) &&
- ((dst->getDatatype() != REC_NCHAR_F_UNICODE) ||
- (src->getDatatype() != REC_NCHAR_F_UNICODE)) &&
- ((dst->getDatatype() != REC_DATETIME) ||
- (src->getDatatype() != REC_DATETIME))))
+ else if ((dst->getDatatype() == REC_BOOLEAN) &&
+ (src->getDatatype() == REC_BOOLEAN))
+ {
+ // boolean conversions are pcode supported.
+ }
+ else if (((dst->getDatatype() < REC_MIN_NUMERIC) ||
+ (dst->getDatatype() > REC_MAX_NUMERIC) ||
+ (src->getDatatype() < REC_MIN_NUMERIC) ||
+ (src->getDatatype() > REC_MAX_NUMERIC)) &&
+ (((dst->getDatatype() != REC_BYTE_F_ASCII) ||
+ (src->getDatatype() != REC_BYTE_F_ASCII)) &&
+ ((dst->getDatatype() != REC_BYTE_V_ASCII) ||
+ (src->getDatatype() != REC_BYTE_V_ASCII)) &&
+ ((dst->getDatatype() != REC_BYTE_F_ASCII) ||
+ (src->getDatatype() != REC_BYTE_V_ASCII)) &&
+ ((dst->getDatatype() != REC_BYTE_V_ASCII) ||
+ (src->getDatatype() != REC_BYTE_F_ASCII)) &&
+ ((dst->getDatatype() != REC_NCHAR_V_UNICODE) ||
+ (src->getDatatype() != REC_NCHAR_V_UNICODE)) &&
+ ((dst->getDatatype() != REC_NCHAR_F_UNICODE) ||
+ (src->getDatatype() != REC_NCHAR_F_UNICODE)) &&
+ ((dst->getDatatype() != REC_DATETIME) ||
+ (src->getDatatype() != REC_DATETIME))))
return ex_clause::pCodeGenerate(space, f);
-
+
// Generate the standard clause->eval PCode for particular
// conversions that are not handled with more fundamental PCode
// operations.
@@ -2737,6 +2830,10 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
case CONV_BIN64S_BIN16S: /*case CONV_BIN64S_BIN16U:*/
case CONV_BIN64S_BIN32S: case CONV_BIN64S_BIN32U:
case CONV_BIN64S_BIN64S:
+ case CONV_BIN64U_BIN64U:
+
+ case CONV_BIN64S_BIN64U:
+ // case CONV_BIN64U_BIN64S: // not yet supported
break;
/*case CONV_BIN64S_FLOAT32: case CONV_BIN64S_FLOAT64:*/
@@ -2754,9 +2851,6 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
// not enabled for NEO CA
return ex_clause::pCodeGenerate(space, f);
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
-
if (attrs[0]->getScale() != attrs[1]->getScale())
return ex_clause::pCodeGenerate(space, f);
}
@@ -2787,20 +2881,12 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
case CONV_FLOAT32_FLOAT32:
case CONV_FLOAT64_FLOAT64:
- {
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
- }
break;
case CONV_BIN64S_FLOAT64:
case CONV_BIN32S_FLOAT64:
case CONV_BIN16S_FLOAT64:
case CONV_FLOAT32_FLOAT64:
- {
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
- }
break;
case CONV_ASCII_F_F:
@@ -2843,20 +2929,12 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
{
if (dst->getLength() < src->getLength())
return ex_clause::pCodeGenerate(space, f);
- else if (dst->getLength() > src->getLength())
- {
- if (ex_expr::downrevCompileRR(f))
- return ex_clause::pCodeGenerate(space, f);
- }
}
if ((get_case_index() == CONV_ASCII_V_V) ||
(get_case_index() == CONV_DATETIME_DATETIME) ||
(get_case_index() == CONV_DECS_DECS))
{
- // if (ex_expr::downrevCompileR2FCS(f))
- // return ex_clause::pCodeGenerate(space, f);
-
if ((get_case_index() == CONV_DATETIME_DATETIME) ||
(get_case_index() == CONV_DECS_DECS))
{
@@ -2957,20 +3035,19 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
}
break;
- /**
- case CONV_SIMPLE_TO_COMPLEX:
- if((attrs[0]->getDatatype() == REC_DECIMAL_LARGE_SIGNED) &&
- (attrs[1]->getDatatype() == REC_BIN64_SIGNED))
+ case CONV_BIN8S_BIN8S:
+ case CONV_BIN8U_BIN8U:
+ case CONV_BIN8S_BIN16S:
+ case CONV_BIN8U_BIN16U:
+ case CONV_BIN8S_BIN32S:
+ case CONV_BIN8U_BIN32U:
+ case CONV_BIN8S_BIN64S:
+ case CONV_BIN8U_BIN64U:
break;
- return ex_clause::pCodeGenerate(space, f);
-
- case CONV_COMPLEX_TO_COMPLEX:
- if((attrs[0]->getDatatype() == REC_DECIMAL_LARGE_SIGNED) &&
- (attrs[1]->getDatatype() == REC_DECIMAL_LARGE_SIGNED))
+
+ case CONV_BOOL_BOOL:
break;
- return ex_clause::pCodeGenerate(space, f);
- **/
-
+
default:
return ex_clause::pCodeGenerate(space, f);
}
@@ -3018,16 +3095,17 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
(get_case_index() != CONV_FLOAT32_FLOAT64) &&
(get_case_index() != CONV_BIN16S_FLOAT64) &&
(get_case_index() != CONV_BIN32S_FLOAT64) &&
- (get_case_index() != CONV_BIN64S_FLOAT64)) {
+ (get_case_index() != CONV_BIN64S_FLOAT64) &&
+ (get_case_index() != CONV_BOOL_BOOL)) {
// Compute the high and low bounds of the source and destination
// operands.
//
Int32 srcBig, dstBig, srcSigned, dstSigned;
- Int64 srcHighBounds = 0;
+ UInt64 srcHighBounds = 0;
Int64 srcLowBounds = 0;
- Int64 dstHighBounds = 0;
+ UInt64 dstHighBounds = 0;
Int64 dstLowBounds = 0;
computeBounds(src, srcLowBounds, srcHighBounds, srcBig, srcSigned);
@@ -3086,9 +3164,13 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
case CONV_BIN32U_BIN32U: case CONV_BIN32U_BIN32S:
case CONV_BIN32S_BIN32S: case CONV_BIN32S_BIN32U:
case CONV_BIN64S_BIN64S:
+ case CONV_BIN64U_BIN64U:
case CONV_BPINTU_BPINTU:
case CONV_FLOAT64_FLOAT64:
case CONV_FLOAT32_FLOAT32:
+ case CONV_BIN8S_BIN8S:
+ case CONV_BIN8U_BIN8U:
+ case CONV_BOOL_BOOL:
{
AML aml(PCIT::MBIN8, PCIT::MBIN8, PCIT::IBIN32S);
#pragma nowarn(1506) // warning elimination
@@ -3236,6 +3318,19 @@ ex_expr::exp_return_type ex_conv_clause::pCodeGenerate(Space *space, UInt32 f) {
break;
}
+ case CONV_BIN8S_BIN16S:
+ case CONV_BIN8U_BIN16U:
+ {
+ AML aml(PCIT::getMemoryAddressingMode(dst->getDatatype()),
+ PCIT::getMemoryAddressingMode(src->getDatatype()));
+ OL ol(dst->getAtp(), dst->getAtpIndex(), (Int32)dst->getOffset(),
+ src->getAtp(), src->getAtpIndex(), (Int32)src->getOffset());
+ PCI pci(PCIT::Op_MOVE, aml, ol);
+
+ code.append(pci);
+ }
+ break;
+
default:
{
AML aml(PCIT::getMemoryAddressingMode(dst->getDatatype()),
@@ -3763,9 +3858,6 @@ ex_expr::exp_return_type ExFunctionRandomNum::pCodeGenerate(Space *space, UInt32
if (NOT simpleRandom())
return ex_clause::pCodeGenerate(space, f);
- if (ex_expr::downrevCompile(f))
- return ex_clause::pCodeGenerate(space, f);
-
// Get a handle on the operands
//
AttributesPtr *attrs = getOperand();
@@ -3948,8 +4040,8 @@ ex_expr::exp_return_type ex_function_substring::pCodeGenerate(Space *space,
if(cs != CharInfo::ISO88591)
return ex_clause::pCodeGenerate(space, f);
- // If there are too many nullable fields, or downrev...
- if ((numOfNullableFields > 2) || ex_expr::downrevCompile(f))
+ // If there are too many nullable fields
+ if (numOfNullableFields > 2)
return ex_clause::pCodeGenerate(space, f);
//
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/ExpPCodeExpGen.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpPCodeExpGen.cpp b/core/sql/exp/ExpPCodeExpGen.cpp
index 5846715..a40e54a 100644
--- a/core/sql/exp/ExpPCodeExpGen.cpp
+++ b/core/sql/exp/ExpPCodeExpGen.cpp
@@ -692,8 +692,7 @@ ex_expr::exp_return_type ex_expr::pCodeGenerate(Space * space,
if (!getenv("PCODE_NO_STD_MOVE"))
#endif
{
- if ((NOT doPCodeMoveFastpathOpt) &&
- (!ex_expr_base::downrevCompile(f)))
+ if (NOT doPCodeMoveFastpathOpt)
{
Lng32 length = storePci->getOperand(6);
@@ -742,7 +741,7 @@ ex_expr::exp_return_type ex_expr::pCodeGenerate(Space * space,
// move.
storePci->replaceAddressingModesAndOperands(aml, ol);
}
- } // if !downrevCompile
+ } // if
}
} // if PCIT::MOVE_MBIN8_MBIN8_IBIN32S
else
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/ExpPCodeInstruction.h
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpPCodeInstruction.h b/core/sql/exp/ExpPCodeInstruction.h
index f0ab593..e903996 100644
--- a/core/sql/exp/ExpPCodeInstruction.h
+++ b/core/sql/exp/ExpPCodeInstruction.h
@@ -106,7 +106,7 @@ public:
// Logical operators
Op_AND, Op_OR,
// Arithematic operators
- Op_ADD, Op_SUB, Op_MUL, Op_DIV, Op_DIV_ROUND, Op_SUM, Op_MOD,
+ Op_ADD, Op_SUB, Op_MUL, Op_DIV, Op_DIV_ROUND, Op_SUM, Op_MOD, Op_NEG,
Op_MINMAX,
// Bitwise operator
Op_BITOR,
@@ -166,7 +166,8 @@ public:
// Memory accesses
//
- MBIN8, MBIN16U, MBIN16S, MBIN32U, MBIN32S, MBIN64S, MPTR32,
+ MBIN8, MBIN8U, MBIN8S, MBIN16U, MBIN16S, MBIN32U, MBIN32S,
+ MBIN64S, MBIN64U, MPTR32,
MASCII, MDECS, MDECU, MFLT32, MFLT64, MATTR3, MATTR4, MATTR5, MATTR6,
MBIGU, MBIGS, MUNI, MUNIV,
@@ -689,7 +690,41 @@ public:
DECODE_MASCII_MBIN64S_IBIN32S = 335,
DECODE_DATETIME = 336,
DECODE_NXX = 337,
- DECODE_DECS = 338,
+ DECODE_DECS = 338,
+
+ // unary operations
+ NEGATE_MASCII_MASCII = 339,
+
+ // tinyint operations
+ ENCODE_MASCII_MBIN8S_IBIN32S = 340,
+ ENCODE_MASCII_MBIN8U_IBIN32S = 341,
+ DECODE_MASCII_MBIN8S_IBIN32S = 342,
+ DECODE_MASCII_MBIN8U_IBIN32S = 343,
+ MOVE_MBIN16S_MBIN8S = 344,
+ MOVE_MBIN16U_MBIN8U = 345,
+ MOVE_MBIN32S_MBIN8S = 346,
+ MOVE_MBIN32U_MBIN8U = 347,
+ MOVE_MBIN64S_MBIN8S = 348,
+ MOVE_MBIN64U_MBIN8U = 349,
+
+ EQ_MBIN32S_MBIN8S_MBIN8S = 350,
+ NE_MBIN32S_MBIN8S_MBIN8S = 351,
+ LT_MBIN32S_MBIN8S_MBIN8S = 352,
+ GT_MBIN32S_MBIN8S_MBIN8S = 353,
+ LE_MBIN32S_MBIN8S_MBIN8S = 354,
+ GE_MBIN32S_MBIN8S_MBIN8S = 355,
+
+ EQ_MBIN32S_MBIN8U_MBIN8U = 356,
+ NE_MBIN32S_MBIN8U_MBIN8U = 357,
+ LT_MBIN32S_MBIN8U_MBIN8U = 358,
+ GT_MBIN32S_MBIN8U_MBIN8U = 359,
+ LE_MBIN32S_MBIN8U_MBIN8U = 360,
+ GE_MBIN32S_MBIN8U_MBIN8U = 361,
+
+ // largeint unsigned operations
+ MOVE_MBIN64S_MBIN64U = 362,
+ MOVE_MBIN64U_MBIN64S = 363,
+ MOVE_MBIN64U_MBIN64U = 364,
//***************************************************************
// Add new PCODE instructions immediately above this comment!!!!!
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/ExpPCodeOptimizations.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpPCodeOptimizations.cpp b/core/sql/exp/ExpPCodeOptimizations.cpp
index 4589454..3d781fb 100644
--- a/core/sql/exp/ExpPCodeOptimizations.cpp
+++ b/core/sql/exp/ExpPCodeOptimizations.cpp
@@ -303,6 +303,8 @@ Int32 PCodeOperand::getAlign()
switch (getType()) {
case PCIT::MBIN8:
+ case PCIT::MBIN8S:
+ case PCIT::MBIN8U:
case PCIT::MASCII:
return 1;
@@ -1192,6 +1194,8 @@ NABoolean PCodeInst::isIntEqComp()
Int32 opc = getOpcode();
switch (opc) {
+ case PCIT::EQ_MBIN32S_MBIN8S_MBIN8S:
+ case PCIT::EQ_MBIN32S_MBIN8U_MBIN8U:
case PCIT::EQ_MBIN32S_MBIN16S_MBIN16S:
case PCIT::EQ_MBIN32S_MBIN16S_MBIN32S:
case PCIT::EQ_MBIN32S_MBIN32S_MBIN32S:
@@ -1254,6 +1258,8 @@ NABoolean PCodeInst::isEncode()
Int32 opc = getOpcode();
switch (opc) {
+ case PCIT::ENCODE_MASCII_MBIN8S_IBIN32S:
+ case PCIT::ENCODE_MASCII_MBIN8U_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN16S_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN16U_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN32S_IBIN32S:
@@ -1271,6 +1277,8 @@ NABoolean PCodeInst::isDecode()
Int32 opc = getOpcode();
switch (opc) {
+ case PCIT::DECODE_MASCII_MBIN8S_IBIN32S:
+ case PCIT::DECODE_MASCII_MBIN8U_IBIN32S:
case PCIT::DECODE_MASCII_MBIN16S_IBIN32S:
case PCIT::DECODE_MASCII_MBIN16U_IBIN32S:
case PCIT::DECODE_MASCII_MBIN32S_IBIN32S:
@@ -3993,6 +4001,9 @@ void PCodeCfg::inlining()
return;
switch (inst->getOpcode()) {
+ case PCIT::EQ_MBIN32S_MBIN8S_MBIN8S:
+ case PCIT::EQ_MBIN32S_MBIN8U_MBIN8U:
+
case PCIT::EQ_MBIN32S_MBIN16S_MBIN16S:
case PCIT::EQ_MBIN32S_MBIN32S_MBIN32S:
case PCIT::EQ_MBIN32S_MBIN16U_MBIN16U:
@@ -4659,12 +4670,16 @@ NABoolean PCodeCfg::localCSE(INSTLIST** parent, PCodeBlock* tailBlock,
match = (head->code[1] == tail->code[1]);
break;
+ case PCIT::ENCODE_MASCII_MBIN8S_IBIN32S:
+ case PCIT::ENCODE_MASCII_MBIN8U_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN32S_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN32U_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN16S_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN16U_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN64S_IBIN32S:
case PCIT::ENCODE_NXX:
+ case PCIT::DECODE_MASCII_MBIN8S_IBIN32S:
+ case PCIT::DECODE_MASCII_MBIN8U_IBIN32S:
case PCIT::DECODE_MASCII_MBIN32S_IBIN32S:
case PCIT::DECODE_MASCII_MBIN32U_IBIN32S:
case PCIT::DECODE_MASCII_MBIN16S_IBIN32S:
@@ -7674,11 +7689,41 @@ void PCodeCfg::loadOperandsOfInst (PCodeInst* newInst)
addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MPTR32, pcode[4]);
break;
- case PCIT::MOVE_MBIN16U_MBIN8:
+ case PCIT::MOVE_MBIN16S_MBIN8S:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN16S, 2);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8S, 1);
+ break;
+
+ case PCIT::MOVE_MBIN16U_MBIN8U:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN16U, 2);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8U, 1);
+ break;
+
+ case PCIT::MOVE_MBIN16U_MBIN8:
addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN16U, 2);
addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8, 1);
break;
+ case PCIT::MOVE_MBIN32S_MBIN8S:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN32S, 4);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8S, 1);
+ break;
+
+ case PCIT::MOVE_MBIN32U_MBIN8U:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN32U, 4);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8U, 1);
+ break;
+
+ case PCIT::MOVE_MBIN64S_MBIN8S:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN64S, 8);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8S, 1);
+ break;
+
+ case PCIT::MOVE_MBIN64U_MBIN8U:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN64U, 8);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8U, 1);
+ break;
+
case PCIT::MOVE_MBIN32U_MBIN16U:
addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN32U, 4);
addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN16U, 2);
@@ -7719,7 +7764,22 @@ void PCodeCfg::loadOperandsOfInst (PCodeInst* newInst)
addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN32S, 4);
break;
- case PCIT::MOVE_MBIN64S_MDECS_IBIN32S:
+ case PCIT::MOVE_MBIN64S_MBIN64U:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN64S, 8);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN64U, 8);
+ break;
+
+ case PCIT::MOVE_MBIN64U_MBIN64S:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN64U, 8);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN64S, 8);
+ break;
+
+ case PCIT::MOVE_MBIN64U_MBIN64U:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN64U, 8);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN64U, 8);
+ break;
+
+ case PCIT::MOVE_MBIN64S_MDECS_IBIN32S:
addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN64S, 8);
addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MDECS, pcode[4]);
break;
@@ -7800,8 +7860,6 @@ void PCodeCfg::loadOperandsOfInst (PCodeInst* newInst)
}
-
-
case PCIT::ZERO_MBIN32S_MBIN32U:
case PCIT::NOTZERO_MBIN32S_MBIN32U:
addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN32S, 4);
@@ -7809,6 +7867,28 @@ void PCodeCfg::loadOperandsOfInst (PCodeInst* newInst)
break;
+ case PCIT::EQ_MBIN32S_MBIN8S_MBIN8S:
+ case PCIT::NE_MBIN32S_MBIN8S_MBIN8S:
+ case PCIT::LT_MBIN32S_MBIN8S_MBIN8S:
+ case PCIT::GT_MBIN32S_MBIN8S_MBIN8S:
+ case PCIT::LE_MBIN32S_MBIN8S_MBIN8S:
+ case PCIT::GE_MBIN32S_MBIN8S_MBIN8S:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN32S, 4);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8S, 1);
+ addOperand(pcode, newInst->getROps(), 4, 5, -1, PCIT::MBIN8S, 1);
+ break;
+
+ case PCIT::EQ_MBIN32S_MBIN8U_MBIN8U:
+ case PCIT::NE_MBIN32S_MBIN8U_MBIN8U:
+ case PCIT::LT_MBIN32S_MBIN8U_MBIN8U:
+ case PCIT::GT_MBIN32S_MBIN8U_MBIN8U:
+ case PCIT::LE_MBIN32S_MBIN8U_MBIN8U:
+ case PCIT::GE_MBIN32S_MBIN8U_MBIN8U:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN32S, 4);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8U, 1);
+ addOperand(pcode, newInst->getROps(), 4, 5, -1, PCIT::MBIN8U, 1);
+ break;
+
case PCIT::EQ_MBIN32S_MBIN16S_MBIN16S:
case PCIT::NE_MBIN32S_MBIN16S_MBIN16S:
@@ -8050,6 +8130,11 @@ void PCodeCfg::loadOperandsOfInst (PCodeInst* newInst)
break;
+ case PCIT::NEGATE_MASCII_MASCII:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MASCII, 2);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MASCII, 2);
+ break;
+
case PCIT::SUM_MBIN32S_MBIN32S:
addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN32S, 4);
@@ -8078,11 +8163,19 @@ void PCodeCfg::loadOperandsOfInst (PCodeInst* newInst)
+ case PCIT::ENCODE_MASCII_MBIN8S_IBIN32S:
+ case PCIT::ENCODE_MASCII_MBIN8U_IBIN32S:
+ case PCIT::DECODE_MASCII_MBIN8S_IBIN32S:
+ case PCIT::DECODE_MASCII_MBIN8U_IBIN32S:
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN8S, 1);
+ addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN8S, 1);
+ break;
+
case PCIT::ENCODE_MASCII_MBIN16S_IBIN32S:
case PCIT::ENCODE_MASCII_MBIN16U_IBIN32S:
case PCIT::DECODE_MASCII_MBIN16S_IBIN32S:
case PCIT::DECODE_MASCII_MBIN16U_IBIN32S:
- addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN16S, 2);
+ addOperand(pcode, newInst->getWOps(), 0, 1, -1, PCIT::MBIN16S, 2);
addOperand(pcode, newInst->getROps(), 2, 3, -1, PCIT::MBIN16S, 2);
break;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/ExpPCodeOptsConstProp.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpPCodeOptsConstProp.cpp b/core/sql/exp/ExpPCodeOptsConstProp.cpp
index 9f57619..18c5feb 100644
--- a/core/sql/exp/ExpPCodeOptsConstProp.cpp
+++ b/core/sql/exp/ExpPCodeOptsConstProp.cpp
@@ -1825,6 +1825,12 @@ Int64 PCodeCfg::getIntConstValue(PCodeOperand* op)
case PCIT::MBIN8:
value = (Int64)*((UInt8*)(constPtr->getData()));
break;
+ case PCIT::MBIN8S:
+ value = (Int64)*((Int8*)(constPtr->getData()));
+ break;
+ case PCIT::MBIN8U:
+ value = (Int64)*((UInt8*)(constPtr->getData()));
+ break;
case PCIT::MBIN16S:
value = (Int64)*((Int16*)(constPtr->getData()));
break;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_arith.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_arith.cpp b/core/sql/exp/exp_arith.cpp
index dcec35f..b7f2b6f 100644
--- a/core/sql/exp/exp_arith.cpp
+++ b/core/sql/exp/exp_arith.cpp
@@ -1337,7 +1337,11 @@ ex_expr::exp_return_type ex_arith_clause::eval(char *op_data[],
}
}
break;
-
+
+ case NEGATE_BOOLEAN:
+ *(Int8 *)op_data[0] = (*(Int8*)op_data[1] == 1 ? 0 : 1);
+ break;
+
// COMPLEX datatype operations
case ADD_COMPLEX:
((ComplexType *)getOperand(0))->add(getOperand(1), getOperand(2), op_data);
[2/6] incubator-trafodion git commit: JIRA TRAFODION-2099 Add support
for boolean datatype
Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/compGeneral/EXPECTED071
----------------------------------------------------------------------
diff --git a/core/sql/regress/compGeneral/EXPECTED071 b/core/sql/regress/compGeneral/EXPECTED071
index 8c1813c..0182828 100644
--- a/core/sql/regress/compGeneral/EXPECTED071
+++ b/core/sql/regress/compGeneral/EXPECTED071
@@ -1015,7 +1015,7 @@ TRAFODION_SCAN MTDN1
OPERATOR TNAME BKEY EKEY
------------------------------ ------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-TRAFODION_SCAN MTDN3 begin_key: (_SALT_ = <min>), (_DIVISION_1_ = DATE_PART('YEARQUARTER',%(2009-12-06 12:13:14))), (_DIVISION_2_ = 'ab '), (_DIVISION_3_ = cast((cast(((cast((cast(((cast(%(2099-01-06 12:13:14.555555)) - cast((cast(dayofweek(%(2099-01-06 12:13:14.555555))) - 1))) - (cast(1900-01-01) - cast((cast(dayofweek(1900-01-01)) - 1))))) * cast(10))) / cast(7)) / cast(10))) / cast(1)))), (_DIVISION_4_ = 'ab'), (_DIVISION_5_ = <min>), (PC1 = %(2009-12-06 12:13:14)), (PC2 = %(2099-01-06 12:13:14.555555)), (PC3 = 'ab'), (PC4 = <min>) end_key: (_SALT_ = <max>), (_DIVISION_1_ = DATE_PART('YEARQUARTER',%(2009-12-06 12:13:14))), (_DIVISION_2_ = 'abcf'), (_DIVISION_3_ = cast((cast(((cast((cast(((cast(%(2099-01-06 12:13:14.555555)) - cast((cast(dayofweek(%(2099-01-06 12:13:14.555555))) - 1))) - (cast(1900-01-01) - cast((cast(dayofweek(
1900-01-01)) - 1))))) * cast(10))) / cast(7)) / cast(10))) / cast(1)))), (_DIVISION_4_ = 'ab'), (_DIVISION_5_ = <max>), (PC1 = %(2009-12-06 12:13:14)), (PC2 = %(2099-01-06 12:13:14.555555)), (PC3 = 'abcf'), (PC4 = <max>)
+TRAFODION_SCAN MTDN3 begin_key: (_SALT_ = <min>), (_DIVISION_1_ = DATE_PART('YEARQUARTER',%(2009-12-06 12:13:14))), (_DIVISION_2_ = 'ab '), (_DIVISION_3_ = cast((cast(((cast((cast(((cast(%(2099-01-06 12:13:14.555555)) - cast((cast(dayofweek(%(2099-01-06 12:13:14.555555))) - cast(1)))) - (cast(1900-01-01) - cast((cast(dayofweek(1900-01-01)) - cast(1)))))) * cast(10))) / cast(7)) / cast(10))) / cast(1)))), (_DIVISION_4_ = 'ab'), (_DIVISION_5_ = <min>), (PC1 = %(2009-12-06 12:13:14)), (PC2 = %(2099-01-06 12:13:14.555555)), (PC3 = 'ab'), (PC4 = <min>) end_key: (_SALT_ = <max>), (_DIVISION_1_ = DATE_PART('YEARQUARTER',%(2009-12-06 12:13:14))), (_DIVISION_2_ = 'abcf'), (_DIVISION_3_ = cast((cast(((cast((cast(((cast(%(2099-01-06 12:13:14.555555)) - cast((cast(dayofweek(%(2099-01-06 12:13:14.555555))) - cast(1)))) - (cast(1900-01-01) - cast((cast(dayo
fweek(1900-01-01)) - cast(1)))))) * cast(10))) / cast(7)) / cast(10))) / cast(1)))), (_DIVISION_4_ = 'ab'), (_DIVISION_5_ = <max>), (PC1 = %(2009-12-06 12:13:14)), (PC2 = %(2099-01-06 12:13:14.555555)), (PC3 = 'abcf'), (PC4 = <max>)
--- 1 row(s) selected.
>>-- ("_DIVISION_1_", "_DIVISION_2_", "_DIVISION_3_", "_DIVISION_4_") has (=, between, = between, none) predicates
@@ -1033,7 +1033,7 @@ TRAFODION_SCAN MTDN3
OPERATOR TNAME BKEY EKEY
------------------------------ ------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-TRAFODION_SCAN MTDN3 begin_key: (_SALT_ = <min>), (_DIVISION_1_ = DATE_PART('YEARQUARTER',%(2009-12-06 12:13:14))), (_DIVISION_2_ = 'ab '), (_DIVISION_3_ = cast((cast(((cast((cast(((cast(%(2099-01-06 12:13:14.555555)) - cast((cast(dayofweek(%(2099-01-06 12:13:14.555555))) - 1))) - (cast(1900-01-01) - cast((cast(dayofweek(1900-01-01)) - 1))))) * cast(10))) / cast(7)) / cast(10))) / cast(1)))), (_DIVISION_4_ = 'ab'), (_DIVISION_5_ = <min>), (PC1 = %(2009-12-06 12:13:14)), (PC2 = %(2099-01-06 12:13:14.555555)), (PC3 = 'ab'), (PC4 = <min>) end_key: (_SALT_ = <max>), (_DIVISION_1_ = DATE_PART('YEARQUARTER',%(2009-12-06 12:13:14))), (_DIVISION_2_ = 'abcf'), (_DIVISION_3_ = cast((cast(((cast((cast(((cast(%(2099-01-06 12:13:14.555555)) - cast((cast(dayofweek(%(2099-01-06 12:13:14.555555))) - 1))) - (cast(1900-01-01) - cast((cast(dayofweek(
1900-01-01)) - 1))))) * cast(10))) / cast(7)) / cast(10))) / cast(1)))), (_DIVISION_4_ = 'ab'), (_DIVISION_5_ = <max>), (PC1 = %(2009-12-06 12:13:14)), (PC2 = %(2099-01-06 12:13:14.555555)), (PC3 = 'abcf'), (PC4 = <max>)
+TRAFODION_SCAN MTDN3 begin_key: (_SALT_ = <min>), (_DIVISION_1_ = DATE_PART('YEARQUARTER',%(2009-12-06 12:13:14))), (_DIVISION_2_ = 'ab '), (_DIVISION_3_ = cast((cast(((cast((cast(((cast(%(2099-01-06 12:13:14.555555)) - cast((cast(dayofweek(%(2099-01-06 12:13:14.555555))) - cast(1)))) - (cast(1900-01-01) - cast((cast(dayofweek(1900-01-01)) - cast(1)))))) * cast(10))) / cast(7)) / cast(10))) / cast(1)))), (_DIVISION_4_ = 'ab'), (_DIVISION_5_ = <min>), (PC1 = %(2009-12-06 12:13:14)), (PC2 = %(2099-01-06 12:13:14.555555)), (PC3 = 'ab'), (PC4 = <min>) end_key: (_SALT_ = <max>), (_DIVISION_1_ = DATE_PART('YEARQUARTER',%(2009-12-06 12:13:14))), (_DIVISION_2_ = 'abcf'), (_DIVISION_3_ = cast((cast(((cast((cast(((cast(%(2099-01-06 12:13:14.555555)) - cast((cast(dayofweek(%(2099-01-06 12:13:14.555555))) - cast(1)))) - (cast(1900-01-01) - cast((cast(dayo
fweek(1900-01-01)) - cast(1)))))) * cast(10))) / cast(7)) / cast(10))) / cast(1)))), (_DIVISION_4_ = 'ab'), (_DIVISION_5_ = <max>), (PC1 = %(2009-12-06 12:13:14)), (PC2 = %(2099-01-06 12:13:14.555555)), (PC3 = 'abcf'), (PC4 = <max>)
--- 1 row(s) selected.
>>
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/core/EXPECTED037.SB
----------------------------------------------------------------------
diff --git a/core/sql/regress/core/EXPECTED037.SB b/core/sql/regress/core/EXPECTED037.SB
index be117f4..5a5a317 100755
--- a/core/sql/regress/core/EXPECTED037.SB
+++ b/core/sql/regress/core/EXPECTED037.SB
@@ -465,11 +465,9 @@ SELECT BIT_LENGTH BIT_LENGTH from (values(0)) BIT_LENGTH(BIT_LENGTH);
*** ERROR[8822] The statement was not prepared.
>>
->>-- Expect error [3128]
+>>-- Expect error [15001]
>>prepare s1 from SELECT BOOLEAN BOOLEAN from (values(0)) BOOLEAN(BOOLEAN);
-*** ERROR[3128] BOOLEAN is a reserved word. It must be delimited by double-quotes to be used as an identifier.
-
*** ERROR[15001] A syntax error occurred at or before:
SELECT BOOLEAN BOOLEAN from (values(0)) BOOLEAN(BOOLEAN);
^ (22 characters from start of SQL statement)
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/core/EXPECTED038.LINUX
----------------------------------------------------------------------
diff --git a/core/sql/regress/core/EXPECTED038.LINUX b/core/sql/regress/core/EXPECTED038.LINUX
index 8bb083a..80b9c0e 100644
--- a/core/sql/regress/core/EXPECTED038.LINUX
+++ b/core/sql/regress/core/EXPECTED038.LINUX
@@ -243,10 +243,10 @@ ORDER_NUM ORDER_DATE ORDER_TIME ORDER_QTY
----------- ---------- ---------- -----------
100 1997-01-30 13:40:05 1000
- 200 2014-07-02 21:22:19 99
+ 200 2016-07-09 05:13:55 99
300 1996-08-10 10:20:10 6000
- 400 1997-05-12 21:22:19 99
- 500 2014-07-02 21:22:19 99
+ 400 1997-05-12 05:13:55 99
+ 500 2016-07-09 05:13:55 99
--- 5 row(s) selected.
>>
@@ -264,7 +264,7 @@ ORDER_NUM ORDER_DATE ORDER_TIME ORDER_QTY
T038PART_NUM ORDER_TIME
------------ --------------------------
- 600 2014-07-02 21:22:21.465352
+ 600 2016-07-09 05:13:57.638206
--- 1 row(s) selected.
>>
@@ -743,9 +743,9 @@ EMPNUM EMPNAME DEPTNUM DEPTNUM DEPTNAME
EMPNUM EMPNAME DEPTNUM DEPTNUM DEPTNAME MANAGER UNITNUM DEPTNUM REVENVUE
----------- -------------------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------
+ 100 GANESAN 6400 6400 DEV YOW 101 6400 10000.000
100 BHAVE 6400 6400 DEV YOW 101 6400 10000.000
100 RAO 6500 6500 QA DENNIS ? ? ?
- 100 GANESAN 6400 6400 DEV YOW 101 6400 10000.000
--- 3 row(s) selected.
>>
@@ -1920,7 +1920,7 @@ A1
>>select a1 from T038a
+>where 94/0 between -47 and a1 + 0;
-*** ERROR[8411] A numeric overflow occurred during an arithmetic computation or data conversion. Source Type:INTEGER SIGNED(MBIN32S) Source Value:9400 Target Type:LARGEINT(IBIN64S) Max Target Value:999. Instruction:RANGE_HIGH_S32S64 Operation:RANGE_HIGH.
+*** ERROR[8411] A numeric overflow occurred during an arithmetic computation or data conversion. Source Type:LARGEINT(MBIN64S) Source Value:9400 Target Type:LARGEINT(IBIN64S) Max Target Value:999. Instruction:RANGE_HIGH_S64S64 Operation:RANGE_HIGH.
--- 0 row(s) selected.
>>
@@ -1972,7 +1972,7 @@ A1
>>
>>execute s;
-*** ERROR[8419] An arithmetic expression attempted a division by zero.
+*** ERROR[8419] An arithmetic expression attempted a division by zero. Operand1 Type:LARGEINT(MBIN64S) Operand1 Value:-145000000000 Operand2 Type:LARGEINT(MBIN64S) Operand2 Value:0. Instruction:DIV_MBIN64S_MBIN64S_MBIN64S Operation:DIV.
--- 0 row(s) selected.
>>
@@ -1985,7 +1985,7 @@ A1
>>
>>execute s;
-*** ERROR[8411] A numeric overflow occurred during an arithmetic computation or data conversion. Source Type:INTEGER SIGNED(MBIN32S) Source Value:18800 Target Type:LARGEINT(IBIN64S) Max Target Value:9999. Instruction:RANGE_HIGH_S32S64 Operation:RANGE_HIGH.
+*** ERROR[8411] A numeric overflow occurred during an arithmetic computation or data conversion. Source Type:LARGEINT(MBIN64S) Source Value:18800 Target Type:LARGEINT(IBIN64S) Max Target Value:9999. Instruction:RANGE_HIGH_S64S64 Operation:RANGE_HIGH.
--- 0 row(s) selected.
>>
@@ -3164,17 +3164,17 @@ E1
--- 0 row(s) selected.
>>select * from T038g where g1 = 2 / (1 - 1);
-*** ERROR[8411] A numeric overflow occurred during an arithmetic computation or data conversion. Source Type:INTEGER SIGNED(MBIN32S) Source Value:20000 Target Type:LARGEINT(IBIN64S) Max Target Value:999. Instruction:RANGE_HIGH_S32S64 Operation:RANGE_HIGH.
+*** ERROR[8411] A numeric overflow occurred during an arithmetic computation or data conversion. Source Type:LARGEINT(MBIN64S) Source Value:20000 Target Type:LARGEINT(IBIN64S) Max Target Value:999. Instruction:RANGE_HIGH_S64S64 Operation:RANGE_HIGH.
--- 0 row(s) selected.
>>select * from T038g where g1 = 0 / ((1 - 1) * (2 + 3)) + g1;
-*** ERROR[8419] An arithmetic expression attempted a division by zero.
+*** ERROR[8419] An arithmetic expression attempted a division by zero. Operand1 Type:LARGEINT(MBIN64S) Operand1 Value:0 Operand2 Type:LARGEINT(MBIN64S) Operand2 Value:0. Instruction:DIV_MBIN64S_MBIN64S_MBIN64S Operation:DIV.
--- 0 row(s) selected.
>>select * from T038g where g1 = g1 + 0 / ((1 - 1) * (2 + 3));
-*** ERROR[8419] An arithmetic expression attempted a division by zero.
+*** ERROR[8419] An arithmetic expression attempted a division by zero. Operand1 Type:LARGEINT(MBIN64S) Operand1 Value:0 Operand2 Type:LARGEINT(MBIN64S) Operand2 Value:0. Instruction:DIV_MBIN64S_MBIN64S_MBIN64S Operation:DIV.
--- 0 row(s) selected.
>>delete from T038g;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/core/TEST037
----------------------------------------------------------------------
diff --git a/core/sql/regress/core/TEST037 b/core/sql/regress/core/TEST037
index 711632f..e80295a 100755
--- a/core/sql/regress/core/TEST037
+++ b/core/sql/regress/core/TEST037
@@ -226,7 +226,7 @@ prepare s1 from SELECT BEFORE BEFORE from (values(0)) BEFORE(BEFORE);
-- Expect error [3128]
prepare s1 from SELECT BIT_LENGTH BIT_LENGTH from (values(0)) BIT_LENGTH(BIT_LENGTH);
--- Expect error [3128]
+-- Expect error [15001]
prepare s1 from SELECT BOOLEAN BOOLEAN from (values(0)) BOOLEAN(BOOLEAN);
-- Expect error [3128]
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/executor/EXPECTED002.SB
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED002.SB b/core/sql/regress/executor/EXPECTED002.SB
index b0511c2..fa9bd67 100644
--- a/core/sql/regress/executor/EXPECTED002.SB
+++ b/core/sql/regress/executor/EXPECTED002.SB
@@ -52,10 +52,10 @@
>>?ifMP
>>table t002v;
-W X
------- ------
+W X
+---- ----
- 1 11
+ 1 11
--- 1 row(s) selected.
>> -- should work
@@ -3002,20 +3002,20 @@ A B C E
+>on (T1.a = T2.a)
+>;
-A C
------------ ------
-
- 2 79
- 10 79
- 11 79
- 12 79
- 13 79
- 14 79
- 15 79
- 16 79
- 17 79
- 18 79
- 19 79
+A C
+----------- ----
+
+ 2 79
+ 10 79
+ 11 79
+ 12 79
+ 13 79
+ 14 79
+ 15 79
+ 16 79
+ 17 79
+ 18 79
+ 19 79
--- 11 row(s) selected.
>>
@@ -4298,20 +4298,20 @@ A B C E
+>on (T1.a = T2.a)
+>;
-A C
------------ ------
-
- 2 79
- 10 79
- 14 79
- 15 79
- 19 79
- 12 79
- 13 79
- 17 79
- 11 79
- 16 79
- 18 79
+A C
+----------- ----
+
+ 2 79
+ 10 79
+ 14 79
+ 15 79
+ 19 79
+ 12 79
+ 13 79
+ 17 79
+ 11 79
+ 16 79
+ 18 79
--- 11 row(s) selected.
>>
@@ -6692,10 +6692,10 @@ A B C E
+> WHERE ( EXISTS (
+> SELECT 27 FROM T002T1 ));
-FOO
-------
+FOO
+----
- 54
+ 54
--- 1 row(s) selected.
>> -- 0 rows EMPTY, 1 MULTI
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/executor/EXPECTED012
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED012 b/core/sql/regress/executor/EXPECTED012
index 8259112..5c85c16 100755
--- a/core/sql/regress/executor/EXPECTED012
+++ b/core/sql/regress/executor/EXPECTED012
@@ -2465,7 +2465,7 @@ A B C
--- 9 row(s) selected.
>>
->>select bitextract(3, 15, 1) from (values(1)) x(a);
+>>select bitextract(cast(3 as smallint), 15, 1) from (values(1)) x(a);
(EXPR)
-----------
@@ -2473,7 +2473,7 @@ A B C
1
--- 1 row(s) selected.
->>select bitextract(3, 14, 1) from (values(1)) x(a);
+>>select bitextract(cast(3 as smallint), 14, 1) from (values(1)) x(a);
(EXPR)
-----------
@@ -2481,7 +2481,7 @@ A B C
1
--- 1 row(s) selected.
->>select bitextract(3, 14, 2) from (values(1)) x(a);
+>>select bitextract(cast(3 as smallint), 14, 2) from (values(1)) x(a);
(EXPR)
-----------
@@ -2489,7 +2489,7 @@ A B C
3
--- 1 row(s) selected.
->>select bitextract(3, 0, 1) from (values(1)) x(a);
+>>select bitextract(cast(3 as smallint), 0, 1) from (values(1)) x(a);
(EXPR)
-----------
@@ -2497,7 +2497,7 @@ A B C
0
--- 1 row(s) selected.
->>select bitextract(3, 0, 15) from (values(1)) x(a);
+>>select bitextract(cast(3 as smallint), 0, 15) from (values(1)) x(a);
(EXPR)
-----------
@@ -2505,7 +2505,7 @@ A B C
1
--- 1 row(s) selected.
->>select bitextract(3, 0, 16) from (values(1)) x(a);
+>>select bitextract(cast(3 as smallint), 0, 16) from (values(1)) x(a);
(EXPR)
-----------
@@ -2513,6 +2513,30 @@ A B C
3
--- 1 row(s) selected.
+>>select bitextract(3, 0, 8) from (values(1)) x(a);
+
+(EXPR)
+-----------
+
+ 3
+
+--- 1 row(s) selected.
+>>select bitextract(3, 7, 1) from (values(1)) x(a);
+
+(EXPR)
+-----------
+
+ 1
+
+--- 1 row(s) selected.
+>>select bitextract(3, 8, 1) from (values(1)) x(a);
+
+(EXPR)
+-----------
+
+ 0
+
+--- 1 row(s) selected.
>>
>>select a from t012t3 where a = bitand(a,a);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/executor/EXPECTED022.SB
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/EXPECTED022.SB b/core/sql/regress/executor/EXPECTED022.SB
index d19b72e..80301e8 100644
--- a/core/sql/regress/executor/EXPECTED022.SB
+++ b/core/sql/regress/executor/EXPECTED022.SB
@@ -2686,10 +2686,10 @@ A B
>>
>>select cast(1 as numeric(10) unsigned) from (values(0))x;
-(EXPR)
------------
+(EXPR)
+--------------------
- 1
+ 1
--- 1 row(s) selected.
>>select cast(1 as decimal(10) unsigned) from (values(0))x;
@@ -4025,7 +4025,7 @@ Hello
--- 0 row(s) selected.
>>select cast(N'''\2' as double precision) from t022u;
-*** ERROR[8413] The string argument contains characters that cannot be converted. Source data 275c32
+*** ERROR[8413] The string argument contains characters that cannot be converted. Source data 275c32
--- 0 row(s) selected.
>>?ifNT
@@ -4261,7 +4261,7 @@ Hello
(EXPR) (EXPR) (EXPR)
------------- ------------- --------------------------
-10:13:14.0000 10:13:14.0000 2016-06-11 16:50:13.692785
+10:13:14.0000 10:13:14.0000 2016-07-10 05:20:08.800751
--- 1 row(s) selected.
>>--test on precision of time
@@ -7456,10 +7456,10 @@ A B
>>
>>select cast(1 as numeric(10) unsigned) from (values(0))x;
-(EXPR)
------------
+(EXPR)
+--------------------
- 1
+ 1
--- 1 row(s) selected.
>>select cast(1 as decimal(10) unsigned) from (values(0))x;
@@ -9031,7 +9031,7 @@ Hello
(EXPR) (EXPR) (EXPR)
------------- ------------- --------------------------
-10:13:14.0000 10:13:14.0000 2016-06-11 16:52:59.057377
+10:13:14.0000 10:13:14.0000 2016-07-10 05:23:22.454801
--- 1 row(s) selected.
>>--test on precision of time
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/executor/TEST012
----------------------------------------------------------------------
diff --git a/core/sql/regress/executor/TEST012 b/core/sql/regress/executor/TEST012
index 814adf0..c5e734e 100755
--- a/core/sql/regress/executor/TEST012
+++ b/core/sql/regress/executor/TEST012
@@ -438,12 +438,15 @@ select converttobits(a), converttobits(b), converttobits(c), converttobits(d),
converttobits(m), converttobits(n), converttobits(o)
from t012t3;
-select bitextract(3, 15, 1) from (values(1)) x(a);
-select bitextract(3, 14, 1) from (values(1)) x(a);
-select bitextract(3, 14, 2) from (values(1)) x(a);
-select bitextract(3, 0, 1) from (values(1)) x(a);
-select bitextract(3, 0, 15) from (values(1)) x(a);
-select bitextract(3, 0, 16) from (values(1)) x(a);
+select bitextract(cast(3 as smallint), 15, 1) from (values(1)) x(a);
+select bitextract(cast(3 as smallint), 14, 1) from (values(1)) x(a);
+select bitextract(cast(3 as smallint), 14, 2) from (values(1)) x(a);
+select bitextract(cast(3 as smallint), 0, 1) from (values(1)) x(a);
+select bitextract(cast(3 as smallint), 0, 15) from (values(1)) x(a);
+select bitextract(cast(3 as smallint), 0, 16) from (values(1)) x(a);
+select bitextract(3, 0, 8) from (values(1)) x(a);
+select bitextract(3, 7, 1) from (values(1)) x(a);
+select bitextract(3, 8, 1) from (values(1)) x(a);
select a from t012t3 where a = bitand(a,a);
select b from t012t3 where b = bitor(b,b);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/hive/EXPECTED005
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/EXPECTED005 b/core/sql/regress/hive/EXPECTED005
index 8026bc1..75a64aa 100644
--- a/core/sql/regress/hive/EXPECTED005
+++ b/core/sql/regress/hive/EXPECTED005
@@ -834,7 +834,7 @@ t005part.a t005part.b t005part.c
>>invoke hive.hive.thive_insert_smallint;
-- Definition of hive table THIVE_INSERT_SMALLINT
--- Definition current Sat Jul 2 07:06:59 2016
+-- Definition current Fri Jul 8 09:45:59 2016
(
A SMALLINT
@@ -939,7 +939,7 @@ A
>>invoke hive.hive.thive_insert_varchar;
-- Definition of hive table THIVE_INSERT_VARCHAR
--- Definition current Sat Jul 2 07:07:07 2016
+-- Definition current Fri Jul 8 09:46:08 2016
(
A VARCHAR(1 CHAR) CHARACTER SET UTF8 COLLATE
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/hive/EXPECTED015
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/EXPECTED015 b/core/sql/regress/hive/EXPECTED015
index 162a3bc..1ede641 100644
--- a/core/sql/regress/hive/EXPECTED015
+++ b/core/sql/regress/hive/EXPECTED015
@@ -210,9 +210,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.T015T2
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.T015T2
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.T015T2
Rows Processed: 5
-Task: PREPARATION Status: Ended ET: 00:00:00.051
+Task: PREPARATION Status: Ended ET: 00:00:00.083
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.T015T2
-Task: COMPLETION Status: Ended ET: 00:00:00.781
+Task: COMPLETION Status: Ended ET: 00:00:00.344
--- 5 row(s) loaded.
>>
@@ -234,9 +234,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.T015T2
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.T015T2
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.T015T2
Rows Processed: 5
-Task: PREPARATION Status: Ended ET: 00:00:00.162
+Task: PREPARATION Status: Ended ET: 00:00:00.068
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.T015T2
-Task: COMPLETION Status: Ended ET: 00:00:00.183
+Task: COMPLETION Status: Ended ET: 00:00:00.151
--- 5 row(s) loaded.
>>
@@ -259,9 +259,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.T015T2
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.T015T2
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.T015T2
Rows Processed: 5
-Task: PREPARATION Status: Ended ET: 00:00:00.064
+Task: PREPARATION Status: Ended ET: 00:00:00.075
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.T015T2
-Task: COMPLETION Status: Ended ET: 00:00:00.327
+Task: COMPLETION Status: Ended ET: 00:00:00.275
--- 5 row(s) loaded.
>>
@@ -289,9 +289,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.T015T2
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.T015T2
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.T015T2
Rows Processed: 5
-Task: PREPARATION Status: Ended ET: 00:00:00.164
+Task: PREPARATION Status: Ended ET: 00:00:00.068
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.T015T2
-Task: COMPLETION Status: Ended ET: 00:00:00.268
+Task: COMPLETION Status: Ended ET: 00:00:00.279
--- 5 row(s) loaded.
>>
@@ -378,8 +378,8 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
--- SQL operation complete.
>>log;
sort_key ............... (HashDistPartHash(cast(TRAFODION.HBASE.T015T1.A))
- Hash2Distrib cast(2)), TRAFODION.HBASE.T015T1.A
-
+ Hash2Distrib cast(cast(2))),
+ TRAFODION.HBASE.T015T1.A
>>prepare s5 from load transform into t015t5 select a,a,a from t015t1 <<+ cardinality 10e0 >> ;
--- SQL command prepared.
@@ -462,9 +462,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.CUSTOMER_ADDRE
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.CUSTOMER_ADDRESS
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.CUSTOMER_ADDRESS
Rows Processed: 5000
-Task: PREPARATION Status: Ended ET: 00:00:08.885
+Task: PREPARATION Status: Ended ET: 00:00:07.833
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.CUSTOMER_ADDRESS
-Task: COMPLETION Status: Ended ET: 00:00:01.379
+Task: COMPLETION Status: Ended ET: 00:00:00.608
--- 5000 row(s) loaded.
>>
@@ -544,9 +544,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.CUSTOMER_ADDRE
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.CUSTOMER_ADDRESS_NOPK
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.CUSTOMER_ADDRESS_NOPK
Rows Processed: 5000
-Task: PREPARATION Status: Ended ET: 00:00:01.054
+Task: PREPARATION Status: Ended ET: 00:00:00.953
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.CUSTOMER_ADDRESS_NOPK
-Task: COMPLETION Status: Ended ET: 00:00:00.820
+Task: COMPLETION Status: Ended ET: 00:00:00.399
--- 5000 row(s) loaded.
>>
@@ -645,9 +645,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOG
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
Rows Processed: 5000
-Task: PREPARATION Status: Ended ET: 00:00:03.594
+Task: PREPARATION Status: Ended ET: 00:00:03.825
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
-Task: COMPLETION Status: Ended ET: 00:00:00.323
+Task: COMPLETION Status: Ended ET: 00:00:00.594
--- 5000 row(s) loaded.
>>
@@ -734,12 +734,12 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD
ESP_EXCHANGE ============================== SEQ_NO 6 ONLY CHILD 5
child_partitioning_func range partitioned 4 ways on
((HashDistPartHash(cast(HIVE.CUSTOMER_DEMOGRAPHICS
- .CD_DEMO_SK)) Hash2Distrib cast(4)),
+ .CD_DEMO_SK)) Hash2Distrib cast(cast(4))),
HIVE.HIVE.CUSTOMER_DEMOGRAPHICS.CD_DEMO_SK) with
ESP_EXCHANGE ============================== SEQ_NO 2 ONLY CHILD 1
parent_partitioning_fun range partitioned 4 ways on
((HashDistPartHash(cast(HIVE.CUSTOMER_DEMOGRAPHICS
- .CD_DEMO_SK)) Hash2Distrib cast(4)),
+ .CD_DEMO_SK)) Hash2Distrib cast(cast(4))),
HIVE.HIVE.CUSTOMER_DEMOGRAPHICS.CD_DEMO_SK) with
>>
>>load into customer_demographics_salt
@@ -749,9 +749,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOG
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS_SALT
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS_SALT
Rows Processed: 5000
-Task: PREPARATION Status: Ended ET: 00:00:05.596
+Task: PREPARATION Status: Ended ET: 00:00:06.638
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS_SALT
-Task: COMPLETION Status: Ended ET: 00:00:01.203
+Task: COMPLETION Status: Ended ET: 00:00:01.913
--- 5000 row(s) loaded.
>>
@@ -1261,9 +1261,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOG
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
Rows Processed: 5000
-Task: PREPARATION Status: Ended ET: 00:00:04.891
+Task: PREPARATION Status: Ended ET: 00:00:06.553
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
-Task: COMPLETION Status: Ended ET: 00:00:02.090
+Task: COMPLETION Status: Ended ET: 00:00:01.562
--- 5000 row(s) loaded.
>>
@@ -1304,11 +1304,11 @@ Task: DISABLE INDEXE Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOG
Task: DISABLE INDEXE Status: Ended Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
Rows Processed: 1000
-Task: PREPARATION Status: Ended ET: 00:00:04.588
+Task: PREPARATION Status: Ended ET: 00:00:03.781
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
-Task: COMPLETION Status: Ended ET: 00:00:01.075
+Task: COMPLETION Status: Ended ET: 00:00:01.479
Task: POPULATE INDEX Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS
-Task: POPULATE INDEX Status: Ended ET: 00:00:11.865
+Task: POPULATE INDEX Status: Ended ET: 00:00:13.703
--- 1000 row(s) loaded.
>>
@@ -1353,11 +1353,11 @@ Task: DISABLE INDEXE Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOG
Task: DISABLE INDEXE Status: Ended Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS_SALT
Task: PREPARATION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS_SALT
Rows Processed: 5000
-Task: PREPARATION Status: Ended ET: 00:00:05.812
+Task: PREPARATION Status: Ended ET: 00:00:05.478
Task: COMPLETION Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS_SALT
-Task: COMPLETION Status: Ended ET: 00:00:02.106
+Task: COMPLETION Status: Ended ET: 00:00:02.063
Task: POPULATE INDEX Status: Started Object: TRAFODION.HBASE.CUSTOMER_DEMOGRAPHICS_SALT
-Task: POPULATE INDEX Status: Ended ET: 00:00:12.813
+Task: POPULATE INDEX Status: Ended ET: 00:00:15.035
--- 5000 row(s) loaded.
>>
@@ -1531,9 +1531,9 @@ Task: CLEANUP Status: Started Object: TRAFODION.HBASE."customer_addr
Task: CLEANUP Status: Ended Object: TRAFODION.HBASE."customer_address_delim"
Task: PREPARATION Status: Started Object: TRAFODION.HBASE."customer_address_delim"
Rows Processed: 5000
-Task: PREPARATION Status: Ended ET: 00:00:03.585
+Task: PREPARATION Status: Ended ET: 00:00:03.841
Task: COMPLETION Status: Started Object: TRAFODION.HBASE."customer_address_delim"
-Task: COMPLETION Status: Ended ET: 00:00:01.575
+Task: COMPLETION Status: Ended ET: 00:00:01.934
--- 5000 row(s) loaded.
>>
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/regress/seabase/EXPECTED003
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED003 b/core/sql/regress/seabase/EXPECTED003
index d46cdb8..79347c9 100644
--- a/core/sql/regress/seabase/EXPECTED003
+++ b/core/sql/regress/seabase/EXPECTED003
@@ -10,6 +10,10 @@
--- SQL operation complete.
>>
>>obey TEST003(setup_tiny);
+>>-----------------------------------------------------------
+>>-------------- TINYINT datatype ---------------------------
+>>-----------------------------------------------------------
+>>
>>create table t003t1(a tinyint not null primary key, b tinyint,
+> c tinyint unsigned default 10 not null, d tinyint unsigned);
@@ -17,7 +21,7 @@
>>invoke t003t1;
-- Definition of Trafodion table TRAFODION.SCH.T003T1
--- Definition current Sat Jun 25 16:24:14 2016
+-- Definition current Sun Jul 10 06:36:25 2016
(
A TINYINT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -36,7 +40,7 @@
>>invoke t003t1_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T1_LIKE
--- Definition current Sat Jun 25 16:24:23 2016
+-- Definition current Sun Jul 10 06:36:36 2016
(
A TINYINT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -55,7 +59,7 @@
>>invoke t003t1_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T1_AS
--- Definition current Sat Jun 25 16:24:27 2016
+-- Definition current Sun Jul 10 06:36:41 2016
(
A TINYINT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -301,7 +305,7 @@ A B C D
>>invoke hive.hive.ttiny;
-- Definition of hive table TTINY
--- Definition current Sat Jun 25 16:25:08 2016
+-- Definition current Sun Jul 10 06:37:34 2016
(
A TINYINT
@@ -446,7 +450,7 @@ A B
>>invoke t003t2;
-- Definition of Trafodion table TRAFODION.SCH.T003T2
--- Definition current Sat Jun 25 16:25:17 2016
+-- Definition current Sun Jul 10 06:37:44 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -463,7 +467,7 @@ A B
>>invoke t003t2_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_LIKE
--- Definition current Sat Jun 25 16:25:22 2016
+-- Definition current Sun Jul 10 06:37:48 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -480,7 +484,7 @@ A B
>>invoke t003t2_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_AS
--- Definition current Sat Jun 25 16:25:25 2016
+-- Definition current Sun Jul 10 06:37:53 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -726,13 +730,13 @@ A B
--- 0 row(s) inserted.
>>insert into t003t2 values (-1, 1);
-*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype.
+*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype. Source Type:LARGEINT(MBIN64S) Source Value:-1 Target Type:LARGEINT(IBIN64S) Max Target Value:0. Instruction:RANGE_LOW_S64S64 Operation:RANGE_LOW.
--- 0 row(s) inserted.
>>
>>select cast(-1 as largeint unsigned) from (values(1)) x(a);
-*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype.
+*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype. Source Type:LARGEINT(MBIN64S) Source Value:-1 Target Type:LARGEINT(IBIN64S) Max Target Value:0. Instruction:RANGE_LOW_S64S64 Operation:RANGE_LOW.
--- 0 row(s) selected.
>>select cast(18446744073709551616 as largeint unsigned) from (values(1)) x(a);
@@ -774,7 +778,7 @@ A B
>>invoke t003t2;
-- Definition of Trafodion table TRAFODION.SCH.T003T2
--- Definition current Sat Jun 25 16:25:51 2016
+-- Definition current Sun Jul 10 06:38:21 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -791,7 +795,7 @@ A B
>>invoke t003t2_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_LIKE
--- Definition current Sat Jun 25 16:25:55 2016
+-- Definition current Sun Jul 10 06:38:25 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -808,7 +812,7 @@ A B
>>invoke t003t2_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_AS
--- Definition current Sat Jun 25 16:25:58 2016
+-- Definition current Sun Jul 10 06:38:28 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1054,13 +1058,13 @@ A B
--- 0 row(s) inserted.
>>insert into t003t2 values (-1, 1);
-*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype.
+*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype. Source Type:LARGEINT(MBIN64S) Source Value:-1 Target Type:LARGEINT(IBIN64S) Max Target Value:0. Instruction:RANGE_LOW_S64S64 Operation:RANGE_LOW.
--- 0 row(s) inserted.
>>
>>select cast(-1 as largeint unsigned) from (values(1)) x(a);
-*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype.
+*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype. Source Type:LARGEINT(MBIN64S) Source Value:-1 Target Type:LARGEINT(IBIN64S) Max Target Value:0. Instruction:RANGE_LOW_S64S64 Operation:RANGE_LOW.
--- 0 row(s) selected.
>>select cast(18446744073709551616 as largeint unsigned) from (values(1)) x(a);
@@ -1105,7 +1109,7 @@ A B
>>invoke t003t2;
-- Definition of Trafodion table TRAFODION.SCH.T003T2
--- Definition current Sat Jun 25 16:26:23 2016
+-- Definition current Sun Jul 10 06:38:55 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1122,7 +1126,7 @@ A B
>>invoke t003t2_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_LIKE
--- Definition current Sat Jun 25 16:26:28 2016
+-- Definition current Sun Jul 10 06:38:59 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1139,7 +1143,7 @@ A B
>>invoke t003t2_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_AS
--- Definition current Sat Jun 25 16:26:31 2016
+-- Definition current Sun Jul 10 06:39:03 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1385,13 +1389,13 @@ A B
--- 0 row(s) inserted.
>>insert into t003t2 values (-1, 1);
-*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype.
+*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype. Source Type:LARGEINT(MBIN64S) Source Value:-1 Target Type:LARGEINT(IBIN64S) Max Target Value:0. Instruction:RANGE_LOW_S64S64 Operation:RANGE_LOW.
--- 0 row(s) inserted.
>>
>>select cast(-1 as largeint unsigned) from (values(1)) x(a);
-*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype.
+*** ERROR[8432] A negative value cannot be converted to an unsigned numeric datatype. Source Type:LARGEINT(MBIN64S) Source Value:-1 Target Type:LARGEINT(IBIN64S) Max Target Value:0. Instruction:RANGE_LOW_S64S64 Operation:RANGE_LOW.
--- 0 row(s) selected.
>>select cast(18446744073709551616 as largeint unsigned) from (values(1)) x(a);
@@ -1411,4 +1415,570 @@ A B
>>
>>
>>
+>>cqd traf_boolean_io 'ON';
+
+--- SQL operation complete.
+>>obey TEST003(setup_bool);
+>>-----------------------------------------------------------
+>>-------------- BOOLEAN datatype ---------------------------
+>>-----------------------------------------------------------
+>>
+>>create table if not exists t003t3(a boolean not null primary key, b boolean)
++> attribute aligned format;
+
+--- SQL operation complete.
+>>invoke t003t3;
+
+-- Definition of Trafodion table TRAFODION.SCH.T003T3
+-- Definition current Sun Jul 10 06:39:10 2016
+
+ (
+ A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
+ , B BOOLEAN DEFAULT NULL
+ )
+ PRIMARY KEY (A ASC)
+
+--- SQL operation complete.
+>>
+>>create table if not exists t003t3_like like t003t3;
+
+--- SQL operation complete.
+>>invoke t003t3_like;
+
+-- Definition of Trafodion table TRAFODION.SCH.T003T3_LIKE
+-- Definition current Sun Jul 10 06:39:14 2016
+
+ (
+ A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
+ , B BOOLEAN DEFAULT NULL
+ )
+ PRIMARY KEY (A ASC)
+
+--- SQL operation complete.
+>>
+>>create table if not exists t003t3_as primary key (a) as select * from t003t3;
+
+--- 0 row(s) inserted.
+>>invoke t003t3_as;
+
+-- Definition of Trafodion table TRAFODION.SCH.T003T3_AS
+-- Definition current Sun Jul 10 06:39:18 2016
+
+ (
+ A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
+ , B BOOLEAN DEFAULT NULL
+ )
+ PRIMARY KEY (A ASC)
+
+--- SQL operation complete.
+>>
+>>create table if not exists t003t3_salt(a boolean not null primary key)
++> salt using 2 partitions;
+
+--- SQL operation complete.
+>>invoke t003t3_salt;
+
+-- Definition of Trafodion table TRAFODION.SCH.T003T3_SALT
+-- Definition current Sun Jul 10 06:39:20 2016
+
+ (
+ A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
+ , "_SALT_" INT UNSIGNED NO DEFAULT NOT NULL NOT
+ DROPPABLE
+ )
+ PRIMARY KEY ("_SALT_" ASC, A ASC)
+
+--- SQL operation complete.
+>>
+>>obey TEST003(dml_bool);
+>>insert into t003t3 values (true, true);
+
+--- 1 row(s) inserted.
+>>insert into t003t3 values (false, false);
+
+--- 1 row(s) inserted.
+>>
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>
+>>insert into t003t3_as select * from t003t3;
+
+--- 2 row(s) inserted.
+>>select * from t003t3_as;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>
+>>select * from t003t3 where a = true;
+
+A B
+----- -----
+
+TRUE TRUE
+
+--- 1 row(s) selected.
+>>select * from t003t3 where a = false;
+
+A B
+----- -----
+
+FALSE FALSE
+
+--- 1 row(s) selected.
+>>select * from t003t3 where b = true;
+
+A B
+----- -----
+
+TRUE TRUE
+
+--- 1 row(s) selected.
+>>select * from t003t3 where b = false;
+
+A B
+----- -----
+
+FALSE FALSE
+
+--- 1 row(s) selected.
+>>select * from t003t3 where a != true;
+
+A B
+----- -----
+
+FALSE FALSE
+
+--- 1 row(s) selected.
+>>select * from t003t3 where a != false;
+
+A B
+----- -----
+
+TRUE TRUE
+
+--- 1 row(s) selected.
+>>select * from t003t3 where b != true;
+
+A B
+----- -----
+
+FALSE FALSE
+
+--- 1 row(s) selected.
+>>select * from t003t3 where b != false;
+
+A B
+----- -----
+
+TRUE TRUE
+
+--- 1 row(s) selected.
+>>select * from t003t3 where a is null;
+
+--- 0 row(s) selected.
+>>select * from t003t3 where b is not null;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>
+>>select * from t003t3 where a = true or a = false;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>select * from t003t3 where b = true or b = false;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>
+>>select cast('true' as boolean) from (values(1)) x(a);
+
+(EXPR)
+------
+
+TRUE
+
+--- 1 row(s) selected.
+>>select cast(' faLse ' as boolean) from (values(1)) x(a);
+
+(EXPR)
+------
+
+FALSE
+
+--- 1 row(s) selected.
+>>
+>>select cast(true as boolean not null) from (values(1)) x(a);
+
+(EXPR)
+------
+
+TRUE
+
+--- 1 row(s) selected.
+>>select cast(false as boolean) from (values(1)) x(a);
+
+(EXPR)
+------
+
+FALSE
+
+--- 1 row(s) selected.
+>>
+>>select cast(a as char(10)), cast (b as varchar(11)) from t003t3;
+
+(EXPR) (EXPR)
+---------- -----------
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>
+>>delete from t003t3;
+
+--- 2 row(s) deleted.
+>>prepare s from insert into t003t3 values (?, ?);
+
+--- SQL command prepared.
+>>execute s using true, true;
+
+--- 1 row(s) inserted.
+>>execute s using 'false', ' falSE ';
+
+--- 1 row(s) inserted.
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>
+>>select !a, !b from t003t3;
+
+(EXPR) (EXPR)
+------ ------
+
+TRUE TRUE
+FALSE FALSE
+
+--- 2 row(s) selected.
+>>select * from t003t3 where !a = false;
+
+A B
+----- -----
+
+TRUE TRUE
+
+--- 1 row(s) selected.
+>>update t003t3 set b = !b;
+
+--- 2 row(s) updated.
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE TRUE
+TRUE FALSE
+
+--- 2 row(s) selected.
+>>
+>>begin work;
+
+--- SQL operation complete.
+>>delete from t003t3 where b = false;
+
+--- 1 row(s) deleted.
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE TRUE
+
+--- 1 row(s) selected.
+>>rollback work;
+
+--- SQL operation complete.
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE TRUE
+TRUE FALSE
+
+--- 2 row(s) selected.
+>>
+>>begin work;
+
+--- SQL operation complete.
+>>update t003t3 set b = false where b != false;
+
+--- 1 row(s) updated.
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE FALSE
+
+--- 2 row(s) selected.
+>>rollback work;
+
+--- SQL operation complete.
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE TRUE
+TRUE FALSE
+
+--- 2 row(s) selected.
+>>
+>>obey TEST003(errors_bool);
+>>update t003t3 set b = b + 1;
+
+*** ERROR[4034] The operation (BOOLEAN + NUMERIC(1)) is not allowed.
+
+*** ERROR[8822] The statement was not prepared.
+
+>>
+>>delete from t003t3;
+
+--- 2 row(s) deleted.
+>>
+>>insert into t003t3 values ('true', false);
+
+*** ERROR[4039] Column A is of type BOOLEAN, incompatible with the value's type, CHAR(4).
+
+*** ERROR[8822] The statement was not prepared.
+
+>>insert into t003t3 values (1, true);
+
+*** ERROR[4039] Column A is of type BOOLEAN, incompatible with the value's type, NUMERIC(1).
+
+*** ERROR[8822] The statement was not prepared.
+
+>>
+>>select cast(' truee' as boolean) from (values(1)) x(a);
+
+*** ERROR[8426] The provided value, TRUEE, is an invalid BOOLEAN value.
+
+--- 0 row(s) selected.
+>>
+>>prepare s from insert into t003t3 values (?, ?);
+
+--- SQL command prepared.
+>>execute s using 1, 2;
+
+*** ERROR[8426] The provided value, 2, is an invalid BOOLEAN value.
+
+*** ERROR[15015] PARAM ?(UNNAMED_2) (value 2) cannot be converted to type BOOLEAN.
+
+--- 0 row(s) inserted.
+>>
+>>obey TEST003(hive_bool);
+>>sh echo "drop table tbool;" > TEST003_junk;
+>>sh regrhive.ksh -f TEST003_junk;
+>>
+>>sh echo "create table tbool(a boolean);" > TEST003_junk;
+>>sh regrhive.ksh -f TEST003_junk;
+>>
+>>sh echo "insert into tbool values (true), (false), (NULL);" > TEST003_junk;
+>>sh regrhive.ksh -f TEST003_junk;
+>>
+>>invoke hive.hive.tbool;
+
+-- Definition of hive table TBOOL
+-- Definition current Sun Jul 10 06:40:13 2016
+
+ (
+ A BOOLEAN
+ )
+ /* stored as textfile */
+
+--- SQL operation complete.
+>>select * from hive.hive.tbool;
+
+A
+-----
+
+TRUE
+FALSE
+?
+
+--- 3 row(s) selected.
+>>insert into hive.hive.tbool values (false), (true), (null);
+
+--- 3 row(s) inserted.
+>>select * from hive.hive.tbool;
+
+A
+-----
+
+TRUE
+FALSE
+?
+FALSE
+TRUE
+?
+
+--- 6 row(s) selected.
+>>insert overwrite table hive.hive.tbool select a from t003t3;
+
+--- 0 row(s) inserted.
+>>select * from hive.hive.tbool;
+
+--- 0 row(s) selected.
+>>
+>>
+>>cqd traf_boolean_io 'OFF';
+
+--- SQL operation complete.
+>>obey TEST003(setup_bool);
+>>-----------------------------------------------------------
+>>-------------- BOOLEAN datatype ---------------------------
+>>-----------------------------------------------------------
+>>
+>>create table if not exists t003t3(a boolean not null primary key, b boolean)
++> attribute aligned format;
+
+--- SQL operation complete.
+>>invoke t003t3;
+
+-- Definition of Trafodion table TRAFODION.SCH.T003T3
+-- Definition current Sun Jul 10 06:40:19 2016
+
+ (
+ A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
+ , B BOOLEAN DEFAULT NULL
+ )
+ PRIMARY KEY (A ASC)
+
+--- SQL operation complete.
+>>
+>>create table if not exists t003t3_like like t003t3;
+
+--- SQL operation complete.
+>>invoke t003t3_like;
+
+-- Definition of Trafodion table TRAFODION.SCH.T003T3_LIKE
+-- Definition current Sun Jul 10 06:40:20 2016
+
+ (
+ A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
+ , B BOOLEAN DEFAULT NULL
+ )
+ PRIMARY KEY (A ASC)
+
+--- SQL operation complete.
+>>
+>>create table if not exists t003t3_as primary key (a) as select * from t003t3;
+
+--- 0 row(s) inserted.
+>>invoke t003t3_as;
+
+-- Definition of Trafodion table TRAFODION.SCH.T003T3_AS
+-- Definition current Sun Jul 10 06:40:22 2016
+
+ (
+ A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
+ , B BOOLEAN DEFAULT NULL
+ )
+ PRIMARY KEY (A ASC)
+
+--- SQL operation complete.
+>>
+>>create table if not exists t003t3_salt(a boolean not null primary key)
++> salt using 2 partitions;
+
+--- SQL operation complete.
+>>invoke t003t3_salt;
+
+-- Definition of Trafodion table TRAFODION.SCH.T003T3_SALT
+-- Definition current Sun Jul 10 06:40:23 2016
+
+ (
+ A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
+ , "_SALT_" INT UNSIGNED NO DEFAULT NOT NULL NOT
+ DROPPABLE
+ )
+ PRIMARY KEY ("_SALT_" ASC, A ASC)
+
+--- SQL operation complete.
+>>
+>>obey TEST003(dml_bool_short);
+>>insert into t003t3 values (true, true);
+
+--- 1 row(s) inserted.
+>>insert into t003t3 values (false, false);
+
+--- 1 row(s) inserted.
+>>
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>
+>>delete from t003t3;
+
+--- 2 row(s) deleted.
+>>prepare s from insert into t003t3 values (cast(? as boolean), cast(? as boolean));
+
+--- SQL command prepared.
+>>execute s using true, true;
+
+--- 1 row(s) inserted.
+>>execute s using 'false', 'falSE';
+
+--- 1 row(s) inserted.
+>>select * from t003t3;
+
+A B
+----- -----
+
+FALSE FALSE
+TRUE TRUE
+
+--- 2 row(s) selected.
+>>
+>>
>>log;
[6/6] incubator-trafodion git commit: Merge [TRAFODION-2099] PR-590
Support for boolean datatype
Posted by an...@apache.org.
Merge [TRAFODION-2099] PR-590 Support for boolean datatype
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/a8eef2d7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/a8eef2d7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/a8eef2d7
Branch: refs/heads/master
Commit: a8eef2d7775692c8cd89d935b5c0a278b4287f7b
Parents: 6b3b948 822c35e
Author: Anoop Sharma <an...@esgyn.com>
Authored: Tue Jul 12 22:55:14 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Tue Jul 12 22:55:14 2016 +0000
----------------------------------------------------------------------
.../trafodion/jdbc/t4/InterfaceResultSet.java | 9 +
.../odbc/src/odbc/nsksrvrcore/sqlinterface.cpp | 10 +
core/sql/bin/SqlciErrors.txt | 2 +-
core/sql/cli/sqlcli.h | 4 +
core/sql/common/BaseTypes.cpp | 12 +
core/sql/common/ComSmallDefs.h | 6 +
core/sql/common/MiscType.cpp | 150 ++++-
core/sql/common/MiscType.h | 112 +++-
core/sql/common/NAType.cpp | 8 +
core/sql/common/NumericType.cpp | 18 -
core/sql/common/NumericType.h | 33 +-
core/sql/common/SQLTypeDefs.h | 2 +
core/sql/common/dfs2rec.h | 13 +-
core/sql/common/str.cpp | 40 +-
core/sql/common/str.h | 12 +-
core/sql/exp/ExpErrorEnums.h | 1 +
core/sql/exp/ExpPCode.cpp | 68 ++-
core/sql/exp/ExpPCodeClauseGen.cpp | 398 +++++++-----
core/sql/exp/ExpPCodeExpGen.cpp | 5 +-
core/sql/exp/ExpPCodeInstruction.h | 41 +-
core/sql/exp/ExpPCodeOptimizations.cpp | 103 +++-
core/sql/exp/ExpPCodeOptsConstProp.cpp | 6 +
core/sql/exp/exp_arith.cpp | 6 +-
core/sql/exp/exp_attrs.cpp | 2 +
core/sql/exp/exp_clause.cpp | 3 +-
core/sql/exp/exp_clause_derived.h | 77 ++-
core/sql/exp/exp_comp.cpp | 61 ++
core/sql/exp/exp_conv.cpp | 114 +++-
core/sql/exp/exp_eval.cpp | 222 ++++++-
core/sql/exp/exp_expr.cpp | 2 -
core/sql/exp/exp_expr.h | 23 +-
core/sql/exp/exp_fixup.cpp | 93 ++-
core/sql/exp/exp_function.cpp | 30 +
core/sql/exp/exp_math_func.cpp | 18 +-
core/sql/generator/GenExpGenerator.cpp | 97 ++-
core/sql/generator/GenExpGenerator.h | 3 +
core/sql/generator/GenItemExpr.cpp | 19 +
core/sql/generator/GenPreCode.cpp | 85 +--
core/sql/generator/GenRelJoin.cpp | 7 +-
core/sql/generator/GenRelMisc.cpp | 3 -
core/sql/generator/Generator.cpp | 17 +-
core/sql/generator/Generator.h | 21 -
core/sql/optimizer/BindItemExpr.cpp | 25 +
core/sql/optimizer/BindRelExpr.cpp | 20 +
core/sql/optimizer/ControlDB.cpp | 10 +-
core/sql/optimizer/EncodedValue.cpp | 1 +
core/sql/optimizer/ItemArith.h | 32 +
core/sql/optimizer/ItemExpr.cpp | 27 +
core/sql/optimizer/NAColumn.cpp | 4 +
core/sql/optimizer/NATable.cpp | 9 +
core/sql/optimizer/NormItemExpr.cpp | 2 +-
core/sql/optimizer/OptRange.cpp | 24 +-
core/sql/optimizer/RelExeUtil.cpp | 6 +
core/sql/optimizer/SynthType.cpp | 70 ++-
core/sql/optimizer/UdfDllInteraction.cpp | 23 +
core/sql/optimizer/ValueDesc.cpp | 9 +-
core/sql/parser/ParKeyWords.cpp | 2 +-
core/sql/parser/SqlParserAux.cpp | 8 +-
core/sql/parser/sqlparser.y | 41 +-
core/sql/parser/ulexer.cpp | 3 +-
core/sql/regress/compGeneral/EXPECTED071 | 4 +-
core/sql/regress/core/EXPECTED037.SB | 4 +-
core/sql/regress/core/EXPECTED038.LINUX | 22 +-
core/sql/regress/core/TEST037 | 2 +-
core/sql/regress/executor/EXPECTED002.SB | 68 +--
core/sql/regress/executor/EXPECTED012 | 36 +-
core/sql/regress/executor/EXPECTED022.SB | 18 +-
core/sql/regress/executor/TEST012 | 15 +-
core/sql/regress/hive/EXPECTED005 | 4 +-
core/sql/regress/hive/EXPECTED015 | 60 +-
core/sql/regress/seabase/EXPECTED003 | 608 ++++++++++++++++++-
core/sql/regress/seabase/EXPECTED010 | 378 ++++++------
core/sql/regress/seabase/TEST003 | 134 +++-
core/sql/regress/udr/EXPECTED001 | 30 +-
core/sql/regress/udr/TEST001 | 7 +
core/sql/sqlci/Formatter.cpp | 5 +
core/sql/sqlci/Param.cpp | 1 +
core/sql/sqlci/SqlciEnv.cpp | 4 +
core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp | 9 +-
core/sql/sqlcomp/CmpSeabaseDDLutil.cpp | 2 +
core/sql/sqlcomp/DefaultConstants.h | 8 +
core/sql/sqlcomp/nadefaults.cpp | 4 +
82 files changed, 2856 insertions(+), 839 deletions(-)
----------------------------------------------------------------------
[5/6] incubator-trafodion git commit: changes based on review comments
Posted by an...@apache.org.
changes based on review comments
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/822c35e3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/822c35e3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/822c35e3
Branch: refs/heads/master
Commit: 822c35e3abc9e87d1f58b2b3e60bf02486a55aa5
Parents: d48a0c9
Author: Anoop Sharma <an...@esgyn.com>
Authored: Tue Jul 12 19:18:36 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Tue Jul 12 19:18:36 2016 +0000
----------------------------------------------------------------------
core/sql/common/MiscType.cpp | 4 ---
core/sql/common/str.cpp | 5 ++--
core/sql/exp/exp_attrs.cpp | 2 +-
core/sql/exp/exp_conv.cpp | 7 ++++-
core/sql/optimizer/SynthType.cpp | 4 +--
core/sql/regress/seabase/EXPECTED003 | 48 +++++++++++++++----------------
6 files changed, 36 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/822c35e3/core/sql/common/MiscType.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/MiscType.cpp b/core/sql/common/MiscType.cpp
index 77b780d..2ca1c38 100644
--- a/core/sql/common/MiscType.cpp
+++ b/core/sql/common/MiscType.cpp
@@ -183,10 +183,8 @@ void SQLBooleanNative::minRepresentableValue(void* bufPtr, Lng32* bufLen,
CollHeap* h) const
{
assert(*bufLen >= sizeof(Int8));
- Lng32 valueBuf;
*bufLen = sizeof(Int8);
*((Int8*)bufPtr) = 0;
- valueBuf = 0;
if (stringLiteral != NULL)
{
@@ -203,10 +201,8 @@ void SQLBooleanNative::maxRepresentableValue(void* bufPtr, Lng32* bufLen,
CollHeap* h) const
{
assert(*bufLen >= sizeof(Int8));
- Lng32 valueBuf;
*bufLen = sizeof(Int8);
*((Int8*)bufPtr) = 1;
- valueBuf = 0;
if (stringLiteral != NULL)
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/822c35e3/core/sql/common/str.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/str.cpp b/core/sql/common/str.cpp
index a2a6c8c..e728143 100644
--- a/core/sql/common/str.cpp
+++ b/core/sql/common/str.cpp
@@ -1009,12 +1009,13 @@ char * str_strip_blanks(char *src , Lng32 &len,
if (! src)
return NULL;
- len = str_len(src)-1;
- if (len <= 0)
+ len = str_len(src);
+ if (len == 0) // empty
return src;
if (stripTrailing)
{
+ len--;
while ((len >= 0) && (src[len] == ' '))
len--;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/822c35e3/core/sql/exp/exp_attrs.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_attrs.cpp b/core/sql/exp/exp_attrs.cpp
index 6161377..54ac781 100644
--- a/core/sql/exp/exp_attrs.cpp
+++ b/core/sql/exp/exp_attrs.cpp
@@ -278,7 +278,7 @@ switch (datatype)
case REC_INT_FRACTION: return extFormat? (char *)"INTERVAL FRACTION":(char *)"REC_INT_FRACTION";
case REC_BLOB: return extFormat? (char *)"BLOB":(char *)"REC_BLOB";
case REC_CLOB: return extFormat? (char *)"CLOB":(char *)"REC_CLOB";
- case REC_BOOLEAN: return extFormat ? (char *)"BOOLEAN" : (char *)"BOOLEAN";
+ case REC_BOOLEAN: return extFormat ? (char *)"BOOLEAN" : (char *)"REC_BOOLEAN";
// When you add new datatype in /common/dfs2rec.h, don't
// forget add new case here. Otherwise, showplan won't display it.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/822c35e3/core/sql/exp/exp_conv.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_conv.cpp b/core/sql/exp/exp_conv.cpp
index 1de00ea..7ea18b2 100644
--- a/core/sql/exp/exp_conv.cpp
+++ b/core/sql/exp/exp_conv.cpp
@@ -11330,9 +11330,14 @@ convDoIt(char * source,
*(Int8*)target = 0;
else
{
+ char srcErrBuf[sourceLen + 1 + 2/*for quotes*/];
+ strcpy(srcErrBuf, "'");
+ str_cpy_all(&srcErrBuf[1], source, sourceLen);
+ srcErrBuf[1+sourceLen]=0;
+ strcat(srcErrBuf, "'");
ExRaiseSqlError(heap, diagsArea, EXE_INVALID_BOOLEAN_VALUE,
NULL, NULL, NULL, NULL,
- srcTempPtr);
+ srcErrBuf);
return ex_expr::EXPR_ERROR;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/822c35e3/core/sql/optimizer/SynthType.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/SynthType.cpp b/core/sql/optimizer/SynthType.cpp
index cc39c36..ed64652 100644
--- a/core/sql/optimizer/SynthType.cpp
+++ b/core/sql/optimizer/SynthType.cpp
@@ -1965,8 +1965,8 @@ const NAType *UnArith::synthesizeType()
{
*CmpCommon::diags() << DgSqlCode(-4034)
<< DgString0("!")
- << DgString1("")
- << DgString2(child(0)->getTextUpper());
+ << DgString1(child(0)->getText())
+ << DgString2("");
return NULL;
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/822c35e3/core/sql/regress/seabase/EXPECTED003
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED003 b/core/sql/regress/seabase/EXPECTED003
index 79347c9..3a47db8 100644
--- a/core/sql/regress/seabase/EXPECTED003
+++ b/core/sql/regress/seabase/EXPECTED003
@@ -21,7 +21,7 @@
>>invoke t003t1;
-- Definition of Trafodion table TRAFODION.SCH.T003T1
--- Definition current Sun Jul 10 06:36:25 2016
+-- Definition current Tue Jul 12 19:09:22 2016
(
A TINYINT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -40,7 +40,7 @@
>>invoke t003t1_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T1_LIKE
--- Definition current Sun Jul 10 06:36:36 2016
+-- Definition current Tue Jul 12 19:09:35 2016
(
A TINYINT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -59,7 +59,7 @@
>>invoke t003t1_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T1_AS
--- Definition current Sun Jul 10 06:36:41 2016
+-- Definition current Tue Jul 12 19:09:40 2016
(
A TINYINT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -305,7 +305,7 @@ A B C D
>>invoke hive.hive.ttiny;
-- Definition of hive table TTINY
--- Definition current Sun Jul 10 06:37:34 2016
+-- Definition current Tue Jul 12 19:10:44 2016
(
A TINYINT
@@ -450,7 +450,7 @@ A B
>>invoke t003t2;
-- Definition of Trafodion table TRAFODION.SCH.T003T2
--- Definition current Sun Jul 10 06:37:44 2016
+-- Definition current Tue Jul 12 19:10:56 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -467,7 +467,7 @@ A B
>>invoke t003t2_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_LIKE
--- Definition current Sun Jul 10 06:37:48 2016
+-- Definition current Tue Jul 12 19:11:02 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -484,7 +484,7 @@ A B
>>invoke t003t2_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_AS
--- Definition current Sun Jul 10 06:37:53 2016
+-- Definition current Tue Jul 12 19:11:06 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -778,7 +778,7 @@ A B
>>invoke t003t2;
-- Definition of Trafodion table TRAFODION.SCH.T003T2
--- Definition current Sun Jul 10 06:38:21 2016
+-- Definition current Tue Jul 12 19:11:39 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -795,7 +795,7 @@ A B
>>invoke t003t2_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_LIKE
--- Definition current Sun Jul 10 06:38:25 2016
+-- Definition current Tue Jul 12 19:11:44 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -812,7 +812,7 @@ A B
>>invoke t003t2_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_AS
--- Definition current Sun Jul 10 06:38:28 2016
+-- Definition current Tue Jul 12 19:11:49 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1109,7 +1109,7 @@ A B
>>invoke t003t2;
-- Definition of Trafodion table TRAFODION.SCH.T003T2
--- Definition current Sun Jul 10 06:38:55 2016
+-- Definition current Tue Jul 12 19:12:19 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1126,7 +1126,7 @@ A B
>>invoke t003t2_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_LIKE
--- Definition current Sun Jul 10 06:38:59 2016
+-- Definition current Tue Jul 12 19:12:24 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1143,7 +1143,7 @@ A B
>>invoke t003t2_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T2_AS
--- Definition current Sun Jul 10 06:39:03 2016
+-- Definition current Tue Jul 12 19:12:27 2016
(
A LARGEINT UNSIGNED NO DEFAULT NOT NULL NOT
@@ -1430,7 +1430,7 @@ A B
>>invoke t003t3;
-- Definition of Trafodion table TRAFODION.SCH.T003T3
--- Definition current Sun Jul 10 06:39:10 2016
+-- Definition current Tue Jul 12 19:12:35 2016
(
A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1446,7 +1446,7 @@ A B
>>invoke t003t3_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T3_LIKE
--- Definition current Sun Jul 10 06:39:14 2016
+-- Definition current Tue Jul 12 19:12:40 2016
(
A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1462,7 +1462,7 @@ A B
>>invoke t003t3_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T3_AS
--- Definition current Sun Jul 10 06:39:18 2016
+-- Definition current Tue Jul 12 19:12:44 2016
(
A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1479,7 +1479,7 @@ A B
>>invoke t003t3_salt;
-- Definition of Trafodion table TRAFODION.SCH.T003T3_SALT
--- Definition current Sun Jul 10 06:39:20 2016
+-- Definition current Tue Jul 12 19:12:47 2016
(
A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1795,7 +1795,7 @@ TRUE FALSE
>>
>>select cast(' truee' as boolean) from (values(1)) x(a);
-*** ERROR[8426] The provided value, TRUEE, is an invalid BOOLEAN value.
+*** ERROR[8426] The provided value, ' truee', is an invalid BOOLEAN value.
--- 0 row(s) selected.
>>
@@ -1804,7 +1804,7 @@ TRUE FALSE
--- SQL command prepared.
>>execute s using 1, 2;
-*** ERROR[8426] The provided value, 2, is an invalid BOOLEAN value.
+*** ERROR[8426] The provided value, '2', is an invalid BOOLEAN value.
*** ERROR[15015] PARAM ?(UNNAMED_2) (value 2) cannot be converted to type BOOLEAN.
@@ -1823,7 +1823,7 @@ TRUE FALSE
>>invoke hive.hive.tbool;
-- Definition of hive table TBOOL
--- Definition current Sun Jul 10 06:40:13 2016
+-- Definition current Tue Jul 12 19:13:43 2016
(
A BOOLEAN
@@ -1880,7 +1880,7 @@ TRUE
>>invoke t003t3;
-- Definition of Trafodion table TRAFODION.SCH.T003T3
--- Definition current Sun Jul 10 06:40:19 2016
+-- Definition current Tue Jul 12 19:13:50 2016
(
A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1896,7 +1896,7 @@ TRUE
>>invoke t003t3_like;
-- Definition of Trafodion table TRAFODION.SCH.T003T3_LIKE
--- Definition current Sun Jul 10 06:40:20 2016
+-- Definition current Tue Jul 12 19:13:52 2016
(
A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1912,7 +1912,7 @@ TRUE
>>invoke t003t3_as;
-- Definition of Trafodion table TRAFODION.SCH.T003T3_AS
--- Definition current Sun Jul 10 06:40:22 2016
+-- Definition current Tue Jul 12 19:13:53 2016
(
A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
@@ -1929,7 +1929,7 @@ TRUE
>>invoke t003t3_salt;
-- Definition of Trafodion table TRAFODION.SCH.T003T3_SALT
--- Definition current Sun Jul 10 06:40:23 2016
+-- Definition current Tue Jul 12 19:13:55 2016
(
A BOOLEAN NO DEFAULT NOT NULL NOT DROPPABLE
[3/6] incubator-trafodion git commit: JIRA TRAFODION-2099 Add support
for boolean datatype
Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_attrs.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_attrs.cpp b/core/sql/exp/exp_attrs.cpp
index 9259481..6161377 100644
--- a/core/sql/exp/exp_attrs.cpp
+++ b/core/sql/exp/exp_attrs.cpp
@@ -278,6 +278,8 @@ switch (datatype)
case REC_INT_FRACTION: return extFormat? (char *)"INTERVAL FRACTION":(char *)"REC_INT_FRACTION";
case REC_BLOB: return extFormat? (char *)"BLOB":(char *)"REC_BLOB";
case REC_CLOB: return extFormat? (char *)"CLOB":(char *)"REC_CLOB";
+ case REC_BOOLEAN: return extFormat ? (char *)"BOOLEAN" : (char *)"BOOLEAN";
+
// When you add new datatype in /common/dfs2rec.h, don't
// forget add new case here. Otherwise, showplan won't display it.
default: return extFormat? (char *)"UNKNOWN":(char *)"add datatype in getDatatypeAsString()";
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_clause.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_clause.cpp b/core/sql/exp/exp_clause.cpp
index 2c8c1e4..164268c 100644
--- a/core/sql/exp/exp_clause.cpp
+++ b/core/sql/exp/exp_clause.cpp
@@ -1570,7 +1570,8 @@ ex_arith_clause::ex_arith_clause(OperatorTypeEnum oper_type,
Space * space,
short arithRoundingMode,
NABoolean divToDownscale)
- : ex_clause (ex_clause::ARITH_TYPE, oper_type, 3, attr, space),
+ : ex_clause (ex_clause::ARITH_TYPE, oper_type,
+ (oper_type == ITM_NEGATE ? 2 : 3), attr, space),
flags_(0)
{
arithRoundingMode_ = (char)arithRoundingMode;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_clause_derived.h
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_clause_derived.h b/core/sql/exp/exp_clause_derived.h
index 6a8ea39..8d09325 100644
--- a/core/sql/exp/exp_clause_derived.h
+++ b/core/sql/exp/exp_clause_derived.h
@@ -434,7 +434,9 @@ public:
MUL_BIN32S_BIN16S_BIN64S =67,
MUL_BIN32S_BIN32S_BIN64S =68,
- DIV_BIN64S_BIN64S_BIN64S_ROUND=69
+ DIV_BIN64S_BIN64S_BIN64S_ROUND=69,
+
+ NEGATE_BOOLEAN =70
};
// Construction
@@ -490,6 +492,11 @@ public:
NA_EIDPROC Long pack(void *);
NA_EIDPROC ex_expr::exp_return_type pCodeGenerate(Space *space,
UInt32 flags);
+
+ // pcode for unary arith operators, like NEGATE.
+ ex_expr::exp_return_type unaryArithPCodeGenerate
+ (Space *space, UInt32 flags);
+
NA_EIDPROC ex_expr::exp_return_type fixup(Space * space = 0,
CollHeap * exHeap = 0,
char * constants_area = 0,
@@ -1115,8 +1122,24 @@ public:
GE_BIN64U_BIN64S =175,
GE_BIN64S_BIN64U =176,
- COMP_NOT_SUPPORTED =177
-
+ EQ_BOOL_BOOL =177,
+ NE_BOOL_BOOL =178,
+
+ // tinyint operations
+ EQ_BIN8S_BIN8S =179,
+ EQ_BIN8U_BIN8U =180,
+ NE_BIN8S_BIN8S =181,
+ NE_BIN8U_BIN8U =182,
+ LT_BIN8S_BIN8S =183,
+ LT_BIN8U_BIN8U =184,
+ LE_BIN8S_BIN8S =185,
+ LE_BIN8U_BIN8U =186,
+ GT_BIN8S_BIN8S =187,
+ GT_BIN8U_BIN8U =188,
+ GE_BIN8S_BIN8S =189,
+ GE_BIN8U_BIN8U =190,
+
+ COMP_NOT_SUPPORTED =191
};
// Construction
@@ -1572,27 +1595,35 @@ enum conv_case_index {
CONV_BIN8U_BIN16U =255,
CONV_BIN16S_BIN8S =256,
CONV_BIN16U_BIN8U =257,
- CONV_BIN8S_ASCII =258,
- CONV_BIN8U_ASCII =259,
- CONV_BIN16U_BIN8S =260,
- CONV_BIN16S_BIN8U =261,
- CONV_BIN8U_BIN16S =262,
- CONV_ASCII_BIN8S =263,
- CONV_ASCII_BIN8U =264,
+ CONV_BIN16U_BIN8S =258,
+ CONV_BIN16S_BIN8U =259,
+ CONV_BIN8U_BIN16S =260,
+ CONV_BIN8S_BIN32S =261,
+ CONV_BIN8U_BIN32U =262,
+ CONV_BIN8S_BIN64S =263,
+ CONV_BIN8U_BIN64U =264,
+ CONV_BIN8S_ASCII =265,
+ CONV_BIN8U_ASCII =266,
+ CONV_ASCII_BIN8S =267,
+ CONV_ASCII_BIN8U =268,
+
+ // boolean conversions
+ CONV_BOOL_BOOL =269,
+ CONV_BOOL_ASCII =270,
+ CONV_ASCII_BOOL =271,
// unsigned largeint related conversions
- CONV_BIN64S_BIN64U =269,
- CONV_BIN64U_BIN64U =270,
- CONV_FLOAT32_BIN64U =271,
- CONV_FLOAT64_BIN64U =272,
- CONV_BIN64U_BIN64S =273,
- CONV_BIN64U_BIGNUM =274,
- CONV_BIGNUM_BIN64U =275,
- CONV_BIN64U_FLOAT32 =276,
- CONV_BIN64U_FLOAT64 =277,
- CONV_BIN64U_ASCII =278,
- CONV_ASCII_BIN64U =279
-
+ CONV_BIN64S_BIN64U =272,
+ CONV_BIN64U_BIN64U =273,
+ CONV_FLOAT32_BIN64U =274,
+ CONV_FLOAT64_BIN64U =275,
+ CONV_BIN64U_BIN64S =276,
+ CONV_BIN64U_BIGNUM =277,
+ CONV_BIGNUM_BIN64U =278,
+ CONV_BIN64U_FLOAT32 =279,
+ CONV_BIN64U_FLOAT64 =280,
+ CONV_BIN64U_ASCII =281,
+ CONV_ASCII_BIN64U =282
};
class SQLEXP_LIB_FUNC ex_conv_clause : public ex_clause {
@@ -1655,6 +1686,8 @@ public:
short targetType, Lng32 targetLen,
Lng32 scaleDifference);
+ NABoolean isConversionSupported(short sourceType, short targetType);
+
NA_EIDPROC NABoolean treatAllSpacesAsZero()
{ return ((flags_ & TREAT_ALL_SPACES_AS_ZERO) != 0); };
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_comp.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_comp.cpp b/core/sql/exp/exp_comp.cpp
index b69ad07..2e4fb3e 100644
--- a/core/sql/exp/exp_comp.cpp
+++ b/core/sql/exp/exp_comp.cpp
@@ -190,6 +190,14 @@ ex_expr::exp_return_type ex_comp_clause::eval(char *op_data[],
switch (get_case_index())
{
// EQUAL opcode
+ case EQ_BIN8S_BIN8S:
+ *(Lng32 *)op_data[0] = (*(Int8 *)op_data[1] == *(Int8 *)op_data[2]);
+ break;
+
+ case EQ_BIN8U_BIN8U:
+ *(Lng32 *)op_data[0] = (*(UInt8 *)op_data[1] == *(UInt8 *)op_data[2]);
+ break;
+
case EQ_BIN16S_BIN16S:
*(Lng32 *)op_data[0] = (*(short *)op_data[1] == *(short *)op_data[2]);
break;
@@ -317,6 +325,14 @@ ex_expr::exp_return_type ex_comp_clause::eval(char *op_data[],
// NOT EQUAL operator
+ case NE_BIN8S_BIN8S:
+ *(Lng32 *)op_data[0] = (*(Int8 *)op_data[1] != *(Int8 *)op_data[2]);
+ break;
+
+ case NE_BIN8U_BIN8U:
+ *(Lng32 *)op_data[0] = (*(UInt8 *)op_data[1] != *(UInt8 *)op_data[2]);
+ break;
+
case NE_BIN16S_BIN16S:
// LCOV_EXCL_START
*(Lng32 *)op_data[0] = (*(short *)op_data[1] != *(short *)op_data[2]);
@@ -451,6 +467,14 @@ ex_expr::exp_return_type ex_comp_clause::eval(char *op_data[],
// LESS THAN opcode
+ case LT_BIN8S_BIN8S:
+ *(Lng32 *)op_data[0] = (*(Int8 *)op_data[1] < *(Int8 *)op_data[2]);
+ break;
+
+ case LT_BIN8U_BIN8U:
+ *(Lng32 *)op_data[0] = (*(UInt8 *)op_data[1] < *(UInt8 *)op_data[2]);
+ break;
+
case LT_BIN16S_BIN16S:
*(Lng32 *)op_data[0] = (*(short *)op_data[1] < *(short *)op_data[2]);
break;
@@ -626,6 +650,14 @@ ex_expr::exp_return_type ex_comp_clause::eval(char *op_data[],
// LESS THAN OR EQUAL TO opcode
+ case LE_BIN8S_BIN8S:
+ *(Lng32 *)op_data[0] = (*(Int8 *)op_data[1] <= *(Int8 *)op_data[2]);
+ break;
+
+ case LE_BIN8U_BIN8U:
+ *(Lng32 *)op_data[0] = (*(UInt8 *)op_data[1] <= *(UInt8 *)op_data[2]);
+ break;
+
case LE_BIN16S_BIN16S:
*(Lng32 *)op_data[0] = (*(short *)op_data[1] <= *(short *)op_data[2]);
break;
@@ -807,6 +839,14 @@ ex_expr::exp_return_type ex_comp_clause::eval(char *op_data[],
// GREATER THAN opcode
+ case GT_BIN8S_BIN8S:
+ *(Lng32 *)op_data[0] = (*(Int8 *)op_data[1] > *(Int8 *)op_data[2]);
+ break;
+
+ case GT_BIN8U_BIN8U:
+ *(Lng32 *)op_data[0] = (*(UInt8 *)op_data[1] > *(UInt8 *)op_data[2]);
+ break;
+
case GT_BIN16S_BIN16S:
*(Lng32 *)op_data[0] = (*(short *)op_data[1] > *(short *)op_data[2]);
break;
@@ -984,6 +1024,14 @@ ex_expr::exp_return_type ex_comp_clause::eval(char *op_data[],
// GREATER THAN OR EQUAL TO
+ case GE_BIN8S_BIN8S:
+ *(Lng32 *)op_data[0] = (*(Int8 *)op_data[1] >= *(Int8 *)op_data[2]);
+ break;
+
+ case GE_BIN8U_BIN8U:
+ *(Lng32 *)op_data[0] = (*(UInt8 *)op_data[1] >= *(UInt8 *)op_data[2]);
+ break;
+
case GE_BIN16S_BIN16S:
*(Lng32 *)op_data[0] = (*(short *)op_data[1] >= *(short *)op_data[2]);
break;
@@ -1205,6 +1253,19 @@ ex_expr::exp_return_type ex_comp_clause::eval(char *op_data[],
break;
}
+ // boolean comparison
+ case EQ_BOOL_BOOL:
+ {
+ *(Lng32*)op_data[0] = (*(Int8 *)op_data[1] == *(Int8 *)op_data[2]);
+ }
+ break;
+
+ case NE_BOOL_BOOL:
+ {
+ *(Lng32*)op_data[0] = (*(Int8 *)op_data[1] != *(Int8 *)op_data[2]);
+ }
+ break;
+
case COMP_COMPLEX:
*(Lng32 *)op_data[0] =
((ComplexType *)getOperand(1))->comp(getOperType(), getOperand(2), op_data);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_conv.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_conv.cpp b/core/sql/exp/exp_conv.cpp
index c10643d..1de00ea 100644
--- a/core/sql/exp/exp_conv.cpp
+++ b/core/sql/exp/exp_conv.cpp
@@ -5118,7 +5118,31 @@ convDoIt(char * source,
*(Int16 *)target = *(UInt8 *)source;
}
break;
-
+
+ case CONV_BIN8S_BIN32S:
+ {
+ *(Int32 *)target = *(Int8 *)source;
+ }
+ break;
+
+ case CONV_BIN8S_BIN64S:
+ {
+ *(Int64 *)target = *(Int8 *)source;
+ }
+ break;
+
+ case CONV_BIN8U_BIN32U:
+ {
+ *(UInt32 *)target = *(UInt8 *)source;
+ }
+ break;
+
+ case CONV_BIN8U_BIN64U:
+ {
+ *(UInt64 *)target = *(UInt8 *)source;
+ }
+ break;
+
case CONV_BIN16U_BIN8S:
{
if (*(UInt16 *)source > CHAR_MAX)
@@ -11231,6 +11255,89 @@ convDoIt(char * source,
}
break;
+ case CONV_BOOL_BOOL:
+ {
+ if ((*(Int8*)source == 1) ||
+ (*(Int8*)source == 0))
+ *(Int8*)target = *(Int8*)source;
+ else
+ {
+ char tempBuf[10];
+ str_itoa(*(Int8*)source, tempBuf);
+ ExRaiseSqlError(heap, diagsArea, EXE_INVALID_BOOLEAN_VALUE,
+ NULL, NULL, NULL, NULL,
+ tempBuf);
+ return ex_expr::EXPR_ERROR;
+ }
+ }
+ break;
+
+ case CONV_BOOL_ASCII:
+ {
+ char boolbuf[10];
+ if (*(Int8*)source == 1)
+ strcpy(boolbuf, "TRUE");
+ else if (*(Int8*)source == 0)
+ strcpy(boolbuf, "FALSE");
+ else
+ {
+ char tempBuf[10];
+ str_itoa(*(Int8*)source, tempBuf);
+ ExRaiseSqlError(heap, diagsArea, EXE_INVALID_BOOLEAN_VALUE,
+ NULL, NULL, NULL, NULL,
+ tempBuf);
+ return ex_expr::EXPR_ERROR;
+ }
+
+ // this case isn't translated into PCODE at this time
+ Lng32 convertedDataLen;
+
+ if (convCharToChar(boolbuf, strlen(boolbuf), REC_BYTE_F_ASCII,
+ 0, SQLCHARSETCODE_ISO88591,
+ target,
+ targetLen,
+ targetType,
+ targetPrecision,
+ targetScale,
+ heap,
+ diagsArea,
+ NULL,
+ &convertedDataLen,
+ ((varCharLenSize > 0) ? FALSE : TRUE),
+ TRUE,
+ FALSE)
+ != ex_expr::EXPR_OK)
+ return ex_expr::EXPR_ERROR;
+ if (varCharLenSize > 0)
+ setVCLength(varCharLen, varCharLenSize, convertedDataLen);
+ }
+ break;
+
+ case CONV_ASCII_BOOL:
+ {
+ char srcTempBuf[sourceLen+1];
+ str_cpy_convert(srcTempBuf, source, sourceLen, 1);
+ srcTempBuf[sourceLen] = 0;
+ Lng32 tempLen;
+ char * srcTempPtr = srcTempBuf;
+ srcTempPtr = str_strip_blanks(srcTempBuf, tempLen, TRUE, TRUE);
+
+ if ((strcmp(srcTempPtr, "TRUE") == 0) ||
+ (strcmp(srcTempPtr, "1") == 0))
+ *(Int8*)target = 1;
+ else if ((strcmp(srcTempPtr, "FALSE") == 0) ||
+ (strcmp(srcTempPtr, "0") == 0))
+ *(Int8*)target = 0;
+ else
+ {
+ ExRaiseSqlError(heap, diagsArea, EXE_INVALID_BOOLEAN_VALUE,
+ NULL, NULL, NULL, NULL,
+ srcTempPtr);
+ return ex_expr::EXPR_ERROR;
+ }
+ }
+ break;
+
case CONV_NOT_SUPPORTED:
default:
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_eval.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_eval.cpp b/core/sql/exp/exp_eval.cpp
index d841463..d438125 100644
--- a/core/sql/exp/exp_eval.cpp
+++ b/core/sql/exp/exp_eval.cpp
@@ -3614,9 +3614,27 @@ ex_expr::exp_return_type ex_expr::evalPCode(PCodeBinary* pCode32,
break;
}
+ case PCIT::MOVE_MBIN16S_MBIN8S:
+ MOVE_INSTR( Int16, Int8 );
+
+ case PCIT::MOVE_MBIN16U_MBIN8U:
+ MOVE_INSTR( UInt16, UInt8 );
+
case PCIT::MOVE_MBIN16U_MBIN8:
MOVE_INSTR( UInt16, UInt8 );
+ case PCIT::MOVE_MBIN32S_MBIN8S:
+ MOVE_INSTR( Int32, Int8 );
+
+ case PCIT::MOVE_MBIN32U_MBIN8U:
+ MOVE_INSTR( UInt32, UInt8 );
+
+ case PCIT::MOVE_MBIN64S_MBIN8S:
+ MOVE_INSTR( Int64, Int8 );
+
+ case PCIT::MOVE_MBIN64U_MBIN8U:
+ MOVE_INSTR( UInt64, UInt8 );
+
case PCIT::MOVE_MBIN32U_MBIN16U:
MOVE_INSTR( UInt32, UInt16 );
@@ -3653,6 +3671,15 @@ ex_expr::exp_return_type ex_expr::evalPCode(PCodeBinary* pCode32,
case PCIT::MOVE_MBIN64S_MBIN64S:
MOVE_INSTR( Int64 , Int64 );
+ case PCIT::MOVE_MBIN64S_MBIN64U:
+ MOVE_INSTR( Int64 , UInt64 );
+
+ case PCIT::MOVE_MBIN64U_MBIN64S:
+ MOVE_INSTR( UInt64 , Int64 );
+
+ case PCIT::MOVE_MBIN64U_MBIN64U:
+ MOVE_INSTR( UInt64 , UInt64 );
+
case PCIT::MOVE_MBIN64S_MDECS_IBIN32S:
{
PTR_DEF_ASSIGN(char, src, 2);
@@ -5350,6 +5377,153 @@ ex_expr::exp_return_type ex_expr::evalPCode(PCodeBinary* pCode32,
}
+ case PCIT::EQ_MBIN32S_MBIN8S_MBIN8S:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(Int8, x, 2 );
+ PTR_DEF_ASSIGN(Int8, y, 4 );
+
+ *result = (*x == *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::NE_MBIN32S_MBIN8S_MBIN8S:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(Int8, x, 2 );
+ PTR_DEF_ASSIGN(Int8, y, 4 );
+
+ *result = (*x != *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::LT_MBIN32S_MBIN8S_MBIN8S:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(Int8, x, 2 );
+ PTR_DEF_ASSIGN(Int8, y, 4 );
+
+ *result = (*x < *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::GT_MBIN32S_MBIN8S_MBIN8S:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(Int8, x, 2 );
+ PTR_DEF_ASSIGN(Int8, y, 4 );
+
+ *result = (*x > *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::LE_MBIN32S_MBIN8S_MBIN8S:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(Int8, x, 2 );
+ PTR_DEF_ASSIGN(Int8, y, 4 );
+
+ *result = (*x <= *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::GE_MBIN32S_MBIN8S_MBIN8S:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(Int8, x, 2 );
+ PTR_DEF_ASSIGN(Int8, y, 4 );
+
+ *result = (*x >= *y);
+
+ pCode += 6;
+ break;
+ }
+
+
+ case PCIT::EQ_MBIN32S_MBIN8U_MBIN8U:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(UInt8, x, 2 );
+ PTR_DEF_ASSIGN(UInt8, y, 4 );
+
+ *result = (*x == *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::NE_MBIN32S_MBIN8U_MBIN8U:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(UInt8, x, 2 );
+ PTR_DEF_ASSIGN(UInt8, y, 4 );
+
+ *result = (*x != *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::LT_MBIN32S_MBIN8U_MBIN8U:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(UInt8, x, 2 );
+ PTR_DEF_ASSIGN(UInt8, y, 4 );
+
+ *result = (*x < *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::GT_MBIN32S_MBIN8U_MBIN8U:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(UInt8, x, 2 );
+ PTR_DEF_ASSIGN(UInt8, y, 4 );
+
+ *result = (*x > *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::LE_MBIN32S_MBIN8U_MBIN8U:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(UInt8, x, 2 );
+ PTR_DEF_ASSIGN(UInt8, y, 4 );
+
+ *result = (*x <= *y);
+
+ pCode += 6;
+ break;
+ }
+
+ case PCIT::GE_MBIN32S_MBIN8U_MBIN8U:
+ {
+ PTR_DEF_ASSIGN(Int32, result, 0 );
+ PTR_DEF_ASSIGN(UInt8, x, 2 );
+ PTR_DEF_ASSIGN(UInt8, y, 4 );
+
+ *result = (*x >= *y);
+
+ pCode += 6;
+ break;
+ }
+
+
+
case PCIT::EQ_MBIN32S_MBIN16U_MBIN16S:
{
PTR_DEF_ASSIGN(Int32, result, 0 );
@@ -6077,6 +6251,40 @@ ex_expr::exp_return_type ex_expr::evalPCode(PCodeBinary* pCode32,
break;
}
+ case PCIT::ENCODE_MASCII_MBIN8S_IBIN32S:
+ {
+ PTR_DEF_ASSIGN(Int8, outputPtr, 0 );
+ PTR_DEF_ASSIGN(Int8, resultPtr, 2 );
+ DEF_ASSIGN(Int32, bitwiseNOT, 4 );
+ Int8 result = *resultPtr;
+
+ result ^= 0x80;
+
+ if ( bitwiseNOT )
+ result = ~result;
+
+ * outputPtr = result ;
+
+ pCode += 5;
+ }
+ break;
+
+ case PCIT::ENCODE_MASCII_MBIN8U_IBIN32S:
+ {
+ PTR_DEF_ASSIGN(Int8, outputPtr, 0 );
+ PTR_DEF_ASSIGN(Int8, resultPtr, 2 );
+ DEF_ASSIGN(Int32, bitwiseNOT , 4 );
+ UInt8 result = *resultPtr;
+
+ if ( bitwiseNOT )
+ result = ~result;
+
+ * outputPtr = result ;
+
+ pCode += 5;
+ }
+ break;
+
case PCIT::ENCODE_MASCII_MBIN16S_IBIN32S:
{
PTR_DEF_ASSIGN(Int16, outputPtr, 0 );
@@ -6760,6 +6968,18 @@ ex_expr::exp_return_type ex_expr::evalPCode(PCodeBinary* pCode32,
break;
}
+ case PCIT::NEGATE_MASCII_MASCII:
+ {
+ PTR_DEF_ASSIGN(char, result, 0 );
+ PTR_DEF_ASSIGN(char, op1, 2 );
+ if (*(Int8*)op1 == 1)
+ *(Int8*)result = 0;
+ else
+ *(Int8*)result = 1;
+ pCode += 4;
+ break;
+ }
+
case PCIT::RANGE_MFLT64:
{
double flt64_1;
@@ -8058,7 +8278,7 @@ ex_expr::exp_return_type ex_expr::evalPCode(PCodeBinary* pCode32,
};
};
- Error1_:
+ Error1_:
return reportOverflowError(atp1, pCodeOpcPtr, pCode, stack);
Error2_:
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_expr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_expr.cpp b/core/sql/exp/exp_expr.cpp
index b0e3d17..9424eb9 100644
--- a/core/sql/exp/exp_expr.cpp
+++ b/core/sql/exp/exp_expr.cpp
@@ -333,8 +333,6 @@ void ex_expr::displayContents(Space * space, short mode, const char * displayStr
//creating text for the showplan
UInt32 f = 0;
ex_expr_base::setForShowplan(f, TRUE);
- ex_expr_base::setDownrevCompileR2FCS(f, ((flag & 0x00000010) != 0));
- ex_expr_base::setDownrevCompileRR(f, ((flag & 0x00000020) != 0));
pCodeGenerate(&tempSpace, &tempSpace, f);
if(getPCodeObject())
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_expr.h
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_expr.h b/core/sql/exp/exp_expr.h
index cb14d62..022f999 100644
--- a/core/sql/exp/exp_expr.h
+++ b/core/sql/exp/exp_expr.h
@@ -698,17 +698,6 @@ public:
static void setForShowplan(UInt32 &f, NABoolean v)
{ ( v ? f |= FOR_SHOWPLAN : f &= ~FOR_SHOWPLAN );}
- static NABoolean downrevCompile(UInt32 f) {return ((f & DOWNREV_COMPILE) != 0);}
- static NABoolean downrevCompileR2FCS(UInt32 f) {return ((f & DOWNREV_COMPILE) != 0);}
- static void setDownrevCompile(UInt32 &f, NABoolean v)
- { ( v ? f |= DOWNREV_COMPILE : f &= ~DOWNREV_COMPILE );}
-
- static void setDownrevCompileR2FCS(UInt32 &f, NABoolean v)
- { ( v ? f |= DOWNREV_COMPILE : f &= ~DOWNREV_COMPILE );}
-
- static NABoolean downrevCompileRR(UInt32 f) {return ((f & DOWNREV_COMPILE_RR) != 0);}
- static void setDownrevCompileRR(UInt32 &f, NABoolean v)
- { ( v ? f |= DOWNREV_COMPILE_RR : f &= ~DOWNREV_COMPILE_RR );}
static NABoolean notValidateFloat64(UInt32 f)
{ return ((f & NOT_VALIDATE_FLOAT64) != 0); }
static void setNotValidateFloat64(UInt32 &f, NABoolean v)
@@ -800,16 +789,9 @@ protected:
// expression being generated for SHOWPLAN request
FOR_SHOWPLAN = 0x0001,
- // expressions compatible with pre-R2.1(052005) and post R1.8
- // release(R2 FCS) need to be generated
- DOWNREV_COMPILE = 0x0002,
-
- // expressions compatible with R2.1(roadrunner) need to be generated
- DOWNREV_COMPILE_RR = 0x0004,
-
// tell clause pcodegenerate() to generate PCode instruction
// to validate value range for float64 to float64 assigments
- NOT_VALIDATE_FLOAT64 = 0x0008
+ NOT_VALIDATE_FLOAT64 = 0x0002
};
exp_eye_catcher eyeCatcher_; // 00-03
@@ -1200,7 +1182,8 @@ public:
(((source >= REC_MIN_INTERVAL) && (source <= REC_MAX_INTERVAL)) &&
((target >= REC_MIN_INTERVAL) && (target <= REC_MAX_INTERVAL))) ||
((source == REC_BLOB) && (target == REC_BLOB)) ||
- ((source == REC_CLOB) && (target == REC_CLOB)))
+ ((source == REC_CLOB) && (target == REC_CLOB)) ||
+ ((source == REC_BOOLEAN) && (target == REC_BOOLEAN)))
return TRUE;
else
return FALSE;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_fixup.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_fixup.cpp b/core/sql/exp/exp_fixup.cpp
index 417745f..c407a9f 100644
--- a/core/sql/exp/exp_fixup.cpp
+++ b/core/sql/exp/exp_fixup.cpp
@@ -324,13 +324,14 @@ ex_expr::exp_return_type ex_clause::fixup(Space * space,
NABoolean spaceCompOnly)
{
for (Lng32 i=0; i<numOperands_;i++)
+ if (op_[i])
op_[i]->fixup(space,
constantsArea,
tempsArea,
persistentArea,
fixupFlag,
spaceCompOnly);
-
+
return ex_expr::EXPR_OK;
};
@@ -468,7 +469,10 @@ const ex_arith_struct * ex_arith_clause::getMatchingRow(OperatorTypeEnum op,
{ITM_DIVIDE, REC_BIN16_UNSIGNED, REC_BIN32_UNSIGNED, REC_BIN32_UNSIGNED, DIV_BIN16U_BIN32U_BIN32U},
{ITM_DIVIDE, REC_BIN32_UNSIGNED, REC_BIN16_UNSIGNED, REC_BIN32_UNSIGNED, DIV_BIN32U_BIN16U_BIN32U},
{ITM_DIVIDE, REC_BIN32_UNSIGNED, REC_BIN32_UNSIGNED, REC_BIN32_UNSIGNED, DIV_BIN32U_BIN32U_BIN32U},
- {ITM_DIVIDE, REC_FLOAT64, REC_FLOAT64, REC_FLOAT64, DIV_FLOAT64_FLOAT64_FLOAT64}
+ {ITM_DIVIDE, REC_FLOAT64, REC_FLOAT64, REC_FLOAT64, DIV_FLOAT64_FLOAT64_FLOAT64},
+
+ {ITM_NEGATE, REC_BOOLEAN, REC_BOOLEAN, REC_BOOLEAN, NEGATE_BOOLEAN},
+
};
Int32 max_array_size = sizeof(as) / sizeof(ex_arith_struct);
@@ -503,10 +507,16 @@ const ex_arith_clause::arith_case_index ex_arith_clause::computeCaseIndex(Operat
getCaseDatatypes(attr1->getDatatype(), attr1->getLength(), type_op1,
result->getDatatype(), result->getLength(), type_result,
0 /* don't need to take scale difference into account here */);
+
+// attr2 eill be null for unary operands.
+// Some methods below expect 2 operands. Change oper2 to be the same as oper1
+// to avoid null pointer exception.
+ if (!attr2)
+ attr2 = attr1;
getCaseDatatypes(attr2->getDatatype(), attr2->getLength(), type_op2,
result->getDatatype(), result->getLength(), type_result,
0 /* don't need to take scale difference into account here */);
-
+
const ex_arith_struct * as = getMatchingRow(op,
type_op1,
type_op2,
@@ -573,7 +583,9 @@ void ex_arith_clause::set_case_index()
else
{
// Simple types are handled here.
- case_index = computeCaseIndex(getOperType(), getOperand(1), getOperand(2),
+ case_index = computeCaseIndex(getOperType(),
+ getOperand(1),
+ (getNumOperands() == 3 ? getOperand(2) : NULL),
getOperand(0));
}
}
@@ -620,6 +632,10 @@ const ex_comp_struct * ex_comp_clause::getMatchingRow(OperatorTypeEnum op,
const static ex_comp_struct cs[] =
{
// op op1 datatype op2 datatype case statement index
+
+ {ITM_EQUAL, REC_BIN8_SIGNED, REC_BIN8_SIGNED, EQ_BIN8S_BIN8S},
+ {ITM_EQUAL, REC_BIN8_UNSIGNED, REC_BIN8_UNSIGNED, EQ_BIN8U_BIN8U},
+
{ITM_EQUAL, REC_BIN16_SIGNED, REC_BIN16_SIGNED, EQ_BIN16S_BIN16S},
{ITM_EQUAL, REC_BIN16_SIGNED, REC_BIN32_SIGNED, EQ_BIN16S_BIN32S},
{ITM_EQUAL, REC_BIN16_SIGNED, REC_BPINT_UNSIGNED, EQ_BIN16S_BIN16U},
@@ -674,13 +690,18 @@ const ex_comp_struct * ex_comp_clause::getMatchingRow(OperatorTypeEnum op,
{ITM_EQUAL, REC_BYTE_V_ASCII_LONG, REC_BYTE_V_ASCII, EQ_ASCII_COMP},
{ITM_EQUAL, REC_BYTE_V_ASCII_LONG, REC_BYTE_V_ASCII_LONG, EQ_ASCII_COMP},
- {ITM_EQUAL,REC_NCHAR_F_UNICODE,REC_NCHAR_F_UNICODE,EQ_UNICODE_F_F},
- {ITM_EQUAL, REC_NCHAR_F_UNICODE,REC_NCHAR_V_UNICODE,UNICODE_COMP},
- {ITM_EQUAL, REC_NCHAR_V_UNICODE,REC_NCHAR_F_UNICODE,UNICODE_COMP},
- {ITM_EQUAL, REC_NCHAR_V_UNICODE,REC_NCHAR_V_UNICODE,UNICODE_COMP},
+ {ITM_EQUAL,REC_NCHAR_F_UNICODE,REC_NCHAR_F_UNICODE,EQ_UNICODE_F_F},
+ {ITM_EQUAL, REC_NCHAR_F_UNICODE,REC_NCHAR_V_UNICODE,UNICODE_COMP},
+ {ITM_EQUAL, REC_NCHAR_V_UNICODE,REC_NCHAR_F_UNICODE,UNICODE_COMP},
+ {ITM_EQUAL, REC_NCHAR_V_UNICODE,REC_NCHAR_V_UNICODE,UNICODE_COMP},
+
+ {ITM_EQUAL, REC_BLOB,REC_BLOB,EQ_BLOB},
+
+ {ITM_EQUAL, REC_BOOLEAN, REC_BOOLEAN, EQ_BOOL_BOOL},
- {ITM_EQUAL, REC_BLOB,REC_BLOB,EQ_BLOB},
-
+ {ITM_NOT_EQUAL, REC_BIN8_SIGNED, REC_BIN8_SIGNED, NE_BIN8S_BIN8S},
+ {ITM_NOT_EQUAL, REC_BIN8_UNSIGNED, REC_BIN8_UNSIGNED, NE_BIN8U_BIN8U},
+
{ITM_NOT_EQUAL, REC_BIN16_SIGNED, REC_BIN16_SIGNED, NE_BIN16S_BIN16S},
{ITM_NOT_EQUAL, REC_BIN16_SIGNED, REC_BIN32_SIGNED, NE_BIN16S_BIN32S},
{ITM_NOT_EQUAL, REC_BIN16_SIGNED, REC_BPINT_UNSIGNED, NE_BIN16S_BIN16U},
@@ -740,6 +761,11 @@ const ex_comp_struct * ex_comp_clause::getMatchingRow(OperatorTypeEnum op,
{ITM_NOT_EQUAL, REC_NCHAR_V_UNICODE, REC_NCHAR_F_UNICODE, UNICODE_COMP},
{ITM_NOT_EQUAL, REC_NCHAR_V_UNICODE, REC_NCHAR_V_UNICODE, UNICODE_COMP},
+ {ITM_NOT_EQUAL, REC_BOOLEAN, REC_BOOLEAN, NE_BOOL_BOOL},
+
+ {ITM_LESS, REC_BIN8_SIGNED, REC_BIN8_SIGNED, LT_BIN8S_BIN8S},
+ {ITM_LESS, REC_BIN8_UNSIGNED, REC_BIN8_UNSIGNED, LT_BIN8U_BIN8U},
+
{ITM_LESS, REC_BIN16_SIGNED, REC_BIN16_SIGNED, LT_BIN16S_BIN16S},
{ITM_LESS, REC_BIN16_SIGNED, REC_BIN32_SIGNED, LT_BIN16S_BIN32S},
{ITM_LESS, REC_BIN16_SIGNED, REC_BPINT_UNSIGNED, LT_BIN16S_BIN16U},
@@ -799,6 +825,9 @@ const ex_comp_struct * ex_comp_clause::getMatchingRow(OperatorTypeEnum op,
{ITM_LESS, REC_NCHAR_V_UNICODE, REC_NCHAR_V_UNICODE, UNICODE_COMP},
+ {ITM_LESS_EQ, REC_BIN8_SIGNED, REC_BIN8_SIGNED, LE_BIN8S_BIN8S},
+ {ITM_LESS_EQ, REC_BIN8_UNSIGNED, REC_BIN8_UNSIGNED, LE_BIN8U_BIN8U},
+
{ITM_LESS_EQ, REC_BIN16_SIGNED, REC_BIN16_SIGNED, LE_BIN16S_BIN16S},
{ITM_LESS_EQ, REC_BIN16_SIGNED, REC_BIN32_SIGNED, LE_BIN16S_BIN32S},
{ITM_LESS_EQ, REC_BIN16_SIGNED, REC_BPINT_UNSIGNED, LE_BIN16S_BIN16U},
@@ -858,6 +887,10 @@ const ex_comp_struct * ex_comp_clause::getMatchingRow(OperatorTypeEnum op,
{ITM_LESS_EQ, REC_NCHAR_V_UNICODE, REC_NCHAR_F_UNICODE, UNICODE_COMP},
{ITM_LESS_EQ, REC_NCHAR_V_UNICODE, REC_NCHAR_V_UNICODE, UNICODE_COMP},
+
+ {ITM_GREATER, REC_BIN8_SIGNED, REC_BIN8_SIGNED, GT_BIN8S_BIN8S},
+ {ITM_GREATER, REC_BIN8_UNSIGNED, REC_BIN8_UNSIGNED, GT_BIN8U_BIN8U},
+
{ITM_GREATER, REC_BIN16_SIGNED, REC_BIN16_SIGNED, GT_BIN16S_BIN16S},
{ITM_GREATER, REC_BIN16_SIGNED, REC_BIN32_SIGNED, GT_BIN16S_BIN32S},
{ITM_GREATER, REC_BIN16_SIGNED, REC_BPINT_UNSIGNED, GT_BIN16S_BIN16U},
@@ -917,6 +950,10 @@ const ex_comp_struct * ex_comp_clause::getMatchingRow(OperatorTypeEnum op,
{ITM_GREATER, REC_NCHAR_V_UNICODE, REC_NCHAR_F_UNICODE, UNICODE_COMP},
{ITM_GREATER, REC_NCHAR_V_UNICODE, REC_NCHAR_V_UNICODE, UNICODE_COMP},
+
+ {ITM_GREATER_EQ, REC_BIN8_SIGNED, REC_BIN8_SIGNED, GE_BIN8S_BIN8S},
+ {ITM_GREATER_EQ, REC_BIN8_UNSIGNED, REC_BIN8_UNSIGNED, GE_BIN8U_BIN8U},
+
{ITM_GREATER_EQ, REC_BIN16_SIGNED, REC_BIN16_SIGNED, GE_BIN16S_BIN16S},
{ITM_GREATER_EQ, REC_BIN16_SIGNED, REC_BIN32_SIGNED, GE_BIN16S_BIN32S},
{ITM_GREATER_EQ, REC_BIN16_SIGNED, REC_BPINT_UNSIGNED, GE_BIN16S_BIN16U},
@@ -1150,11 +1187,15 @@ conv_case_index ex_conv_clause::find_case_index(short sourceType, Lng32 sourceLe
{REC_BPINT_UNSIGNED, REC_NCHAR_V_UNICODE, CONV_BIN16U_UNICODE},
{REC_BIN8_SIGNED, REC_BIN16_SIGNED, CONV_BIN8S_BIN16S},
+ {REC_BIN8_SIGNED, REC_BIN32_SIGNED, CONV_BIN8S_BIN32S},
+ {REC_BIN8_SIGNED, REC_BIN64_SIGNED, CONV_BIN8S_BIN64S},
{REC_BIN8_SIGNED, REC_BIN8_SIGNED, CONV_BIN8S_BIN8S},
{REC_BIN8_SIGNED, REC_BYTE_F_ASCII, CONV_BIN8S_ASCII},
{REC_BIN8_SIGNED, REC_BYTE_V_ASCII, CONV_BIN8S_ASCII},
{REC_BIN8_UNSIGNED, REC_BIN16_UNSIGNED, CONV_BIN8U_BIN16U},
+ {REC_BIN8_UNSIGNED, REC_BIN32_UNSIGNED, CONV_BIN8U_BIN32U},
+ {REC_BIN8_UNSIGNED, REC_BIN64_UNSIGNED, CONV_BIN8U_BIN64U},
{REC_BIN8_UNSIGNED, REC_BIN16_SIGNED, CONV_BIN8U_BIN16S},
{REC_BIN8_UNSIGNED, REC_BIN8_UNSIGNED, CONV_BIN8U_BIN8U},
{REC_BIN8_UNSIGNED, REC_BYTE_F_ASCII, CONV_BIN8U_ASCII},
@@ -1451,6 +1492,8 @@ conv_case_index ex_conv_clause::find_case_index(short sourceType, Lng32 sourceLe
{REC_BYTE_F_ASCII, REC_NCHAR_V_UNICODE, CONV_ASCII_UNICODE_V},
{REC_BYTE_F_ASCII, REC_NCHAR_V_ANSI_UNICODE, CONV_ASCII_TO_ANSI_V_UNICODE},
+ {REC_BYTE_F_ASCII, REC_BOOLEAN, CONV_ASCII_BOOL},
+
// 12/8/97: added for Unicode. Note the importance of
// grouping tuples with similar source types together.
{REC_NCHAR_F_UNICODE, REC_NCHAR_F_UNICODE, CONV_UNICODE_F_F},
@@ -1534,6 +1577,7 @@ conv_case_index ex_conv_clause::find_case_index(short sourceType, Lng32 sourceLe
{REC_BYTE_V_ASCII, REC_NCHAR_V_UNICODE, CONV_ASCII_UNICODE_V},
{REC_BYTE_V_ASCII, REC_NCHAR_V_ANSI_UNICODE, CONV_ASCII_TO_ANSI_V_UNICODE},
+ {REC_BYTE_V_ASCII, REC_BOOLEAN, CONV_ASCII_BOOL},
{REC_BYTE_V_ASCII_LONG, REC_BPINT_UNSIGNED, CONV_ASCII_BIN16U},
{REC_BYTE_V_ASCII_LONG, REC_BIN16_SIGNED, CONV_ASCII_BIN16S},
@@ -1568,8 +1612,12 @@ conv_case_index ex_conv_clause::find_case_index(short sourceType, Lng32 sourceLe
{REC_NCHAR_V_ANSI_UNICODE, REC_NCHAR_V_UNICODE, CONV_ANSI_V_UNICODE_TO_UNICODE_V},
{REC_BLOB, REC_BLOB, CONV_BLOB_BLOB},
{REC_BLOB, REC_BYTE_F_ASCII, CONV_BLOB_ASCII_F},
- {REC_CLOB, REC_CLOB, CONV_BLOB_BLOB},
- {REC_CLOB, REC_BYTE_F_ASCII, CONV_BLOB_ASCII_F}
+ {REC_CLOB, REC_CLOB, CONV_BLOB_BLOB},
+ {REC_CLOB, REC_BYTE_F_ASCII, CONV_BLOB_ASCII_F},
+
+ {REC_BOOLEAN, REC_BOOLEAN, CONV_BOOL_BOOL},
+ {REC_BOOLEAN, REC_BYTE_F_ASCII, CONV_BOOL_ASCII},
+ {REC_BOOLEAN, REC_BYTE_V_ASCII, CONV_BOOL_ASCII},
};
getConvCaseDatatypes(sourceType, sourceLen, sourceType, targetType, targetLen, targetType, scaleDifference);
@@ -1593,14 +1641,6 @@ conv_case_index ex_conv_clause::find_case_index(short sourceType, Lng32 sourceLe
i++;
};
- if (case_index == CONV_NOT_SUPPORTED) {
-#if (!defined (__TANDEM) && !defined(__EID))
- // cout << sourceType << " to "
- // << targetType << " conversion not yet supported. \n";
-#endif
- };
-
-
if (case_index == CONV_INTERVALS_INTERVALS_DIV)
{
// have to look at scale difference to distinguish whether
@@ -1615,6 +1655,17 @@ conv_case_index ex_conv_clause::find_case_index(short sourceType, Lng32 sourceLe
};
+NABoolean ex_conv_clause::isConversionSupported
+(short sourceType, short targetType)
+{
+ conv_case_index ci =
+ find_case_index(sourceType, 0, targetType, 0, 0);
+ if (ci == CONV_NOT_SUPPORTED)
+ return FALSE;
+ else
+ return TRUE;
+}
+
void ex_conv_clause::set_case_index() {
// Test added to allow conditional union to be rowset-aware
if((getOperand(0)->getRowsetSize() > 0) && (getOperand(1)->getRowsetSize() > 0))
@@ -1623,9 +1674,7 @@ void ex_conv_clause::set_case_index() {
SimpleType *op0 = (SimpleType *) getOperand(0);
SimpleType *op1 = (SimpleType *) getOperand(1);
if (!(op0->getUseTotalRowsetSize())) {
-#pragma nowarn(1506) // warning elimination
op0->setLength(sizeof(Lng32) + (op0->getLength() * op0->getRowsetSize()));
-#pragma warn(1506) // warning elimination
op0->setUseTotalRowsetSize();
op1->setUseTotalRowsetSize();
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_function.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_function.cpp b/core/sql/exp/exp_function.cpp
index 8442a8e..c96b450 100644
--- a/core/sql/exp/exp_function.cpp
+++ b/core/sql/exp/exp_function.cpp
@@ -3208,6 +3208,7 @@ void ex_function_encode::encodeKeyValue(Attributes * attr,
break;
case REC_BIN8_UNSIGNED:
+ case REC_BOOLEAN:
*(UInt8*)target = *(UInt8*)source;
break;
@@ -4833,6 +4834,9 @@ ex_expr::exp_return_type ex_function_mod::eval(char *op_data[],
switch (len1)
{
+ case 1:
+ op1 = *((Int8 *) op_data[1]);
+ break;
case 2:
op1 = *((short *) op_data[1]);
break;
@@ -4852,6 +4856,9 @@ ex_expr::exp_return_type ex_function_mod::eval(char *op_data[],
switch (len2)
{
+ case 1:
+ op2 = *((Int8 *) op_data[2]);
+ break;
case 2:
op2 = *((short *) op_data[2]);
break;
@@ -4878,6 +4885,9 @@ ex_expr::exp_return_type ex_function_mod::eval(char *op_data[],
switch (lenr)
{
+ case 1:
+ *((Int8 *) op_data[0]) = (short) result;
+ break;
case 2:
*((short *) op_data[0]) = (short) result;
break;
@@ -4911,6 +4921,16 @@ ex_expr::exp_return_type ex_function_mask::eval(char *op_data[],
switch (getOperand(0)->getStorageLength())
{
+ case 1:
+ op1 = *((UInt8 *) op_data[1]);
+ op2 = *((UInt8 *) op_data[2]);
+ if(getOperType() == ITM_MASK_SET) {
+ result = op1 | op2;
+ } else {
+ result = op1 & ~op2;
+ }
+ *((unsigned short *) op_data[0]) = (unsigned short) result;
+ break;
case 2:
op1 = *((unsigned short *) op_data[1]);
op2 = *((unsigned short *) op_data[2]);
@@ -4969,6 +4989,15 @@ ex_expr::exp_return_type ExFunctionShift::eval(char *op_data[],
ULng32 value, result;
switch (getOperand(0)->getStorageLength()) {
+ case 1:
+ value = *((UInt8 *) op_data[1]);
+ if(getOperType() == ITM_SHIFT_RIGHT) {
+ result = value >> shift;
+ } else {
+ result = value << shift;
+ }
+ *((UInt8 *) op_data[0]) = (UInt8) result;
+ break;
case 2:
value = *((unsigned short *) op_data[1]);
if(getOperType() == ITM_SHIFT_RIGHT) {
@@ -7152,6 +7181,7 @@ short ex_function_encode::decodeKeyValue(Attributes * attr,
break;
case REC_BIN8_UNSIGNED:
+ case REC_BOOLEAN:
*(UInt8*)target = *(UInt8*)source;
break;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/exp/exp_math_func.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/exp_math_func.cpp b/core/sql/exp/exp_math_func.cpp
index b6e6cd2..e249df0 100644
--- a/core/sql/exp/exp_math_func.cpp
+++ b/core/sql/exp/exp_math_func.cpp
@@ -82,6 +82,11 @@ ex_expr::exp_return_type ex_function_abs::eval(char *op_data[],
switch (getOperand(1)->getDatatype())
{
+ case REC_BIN8_SIGNED:
+ *(Int8 *)op_data[0] = (*(Int8 *)op_data[1] < 0 ? -*(Int8 *)op_data[1]
+ : *(Int8 *)op_data[1]);
+ break;
+
case REC_BIN16_SIGNED:
#pragma nowarn(1506) // warning elimination
*(short *)op_data[0] = (*(short *)op_data[1] < 0 ? -*(short *)op_data[1]
@@ -500,7 +505,7 @@ ex_expr::exp_return_type ExFunctionBitOper::eval(char *op_data[],
UInt32 endByte = (startBit + numBits - 1) / 8 ;
if ((numBits == 0) ||
- (endByte >= opLen))
+ (endByte > opLen))
{
ExRaiseSqlError(heap, diagsArea, EXE_BAD_ARG_TO_MATH_FUNC);
**diagsArea << DgString0("BITEXTRACT");
@@ -509,9 +514,18 @@ ex_expr::exp_return_type ExFunctionBitOper::eval(char *op_data[],
UInt64 result = 0;
- //Int64 temp = 0;
switch (getOperand(1)->getDatatype())
{
+ case REC_BIN8_SIGNED:
+ case REC_BIN8_UNSIGNED:
+ {
+ UInt8 temp;
+ temp = *(UInt8*)op_data[1] << startBit;
+ temp = temp >> (8 - numBits);
+ result = temp;
+ }
+ break;
+
case REC_BIN16_SIGNED:
case REC_BIN16_UNSIGNED:
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/generator/GenExpGenerator.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenExpGenerator.cpp b/core/sql/generator/GenExpGenerator.cpp
index ed20c83..bfdc65a 100644
--- a/core/sql/generator/GenExpGenerator.cpp
+++ b/core/sql/generator/GenExpGenerator.cpp
@@ -823,6 +823,84 @@ short ExpGenerator::genColNameList(const NAColumnArray &naColArr,
return 0;
}
+short ExpGenerator::handleUnsupportedCast(Cast * castNode)
+{
+ const NAType &srcNAType = castNode->child(0)->getValueId().getType();
+ const NAType &tgtNAType = castNode->getValueId().getType();
+ short srcFsType = srcNAType.getFSDatatype();
+ short tgtFsType = tgtNAType.getFSDatatype();
+
+ // check if conversion involves tinyint or largeint unsigned
+ if ((srcFsType != REC_BIN8_SIGNED) &&
+ (srcFsType != REC_BIN8_UNSIGNED) &&
+ (srcFsType != REC_BIN64_UNSIGNED) &&
+ (tgtFsType != REC_BIN8_SIGNED) &&
+ (tgtFsType != REC_BIN8_UNSIGNED) &&
+ (tgtFsType != REC_BIN64_UNSIGNED))
+ return 0;
+
+ ex_conv_clause tempClause;
+ if (tempClause.isConversionSupported(srcFsType, tgtFsType))
+ return 0;
+
+ // if this cast involved a tinyint and is unsupported, convert to
+ // smallint.
+ if ((srcFsType == REC_BIN8_SIGNED) ||
+ (srcFsType == REC_BIN8_UNSIGNED) ||
+ (tgtFsType == REC_BIN8_SIGNED) ||
+ (tgtFsType == REC_BIN8_UNSIGNED))
+ {
+ // add a Cast node to convert from/to tinyint to/from small int.
+ const NumericType &srcNum = (NumericType&)srcNAType;
+ NumericType * newType;
+ if (srcNum.getScale() == 0)
+ newType = new (generator->wHeap())
+ SQLSmall(NOT srcNum.isUnsigned(),
+ srcNAType.supportsSQLnull());
+ else
+ newType = new (generator->wHeap())
+ SQLNumeric(sizeof(short), srcNum.getPrecision(), srcNum.getScale(),
+ NOT srcNum.isUnsigned(), srcNAType.supportsSQLnull());
+ ItemExpr * newChild =
+ new (generator->wHeap())
+ Cast(castNode->child(0), newType);
+ ((Cast*)newChild)->setFlags(castNode->getFlags());
+ castNode->setSrcIsVarcharPtr(FALSE);
+ newChild = newChild->bindNode(generator->getBindWA());
+ newChild = newChild->preCodeGen(generator);
+ if (! newChild)
+ return -1;
+
+ castNode->setChild(0, newChild);
+ srcFsType = castNode->child(0)->getValueId().getType().getFSDatatype();
+ }
+
+ if ((srcFsType == REC_BIN64_UNSIGNED) ||
+ (tgtFsType == REC_BIN64_UNSIGNED))
+ {
+ const NumericType &numSrc = (NumericType&)srcNAType;
+ // add a Cast node to convert to sqllargeint signed.
+ ItemExpr * newChild =
+ new (generator->wHeap())
+ Cast(castNode->child(0),
+ new (generator->wHeap())
+ SQLLargeInt(numSrc.getScale(), 1,
+ TRUE,
+ srcNAType.supportsSQLnull()));
+ ((Cast*)newChild)->setFlags(castNode->getFlags());
+ castNode->setSrcIsVarcharPtr(FALSE);
+ newChild = newChild->bindNode(generator->getBindWA());
+ newChild = newChild->preCodeGen(generator);
+ if (! newChild)
+ return -1;
+
+ castNode->setChild(0, newChild);
+ srcFsType = castNode->child(0)->getValueId().getType().getFSDatatype();
+ }
+
+ return 0;
+}
+
/////////////////////////////////////////////////////////////////
// this function returns an expr tree that multiplies the source
// by 10 ** exponent. If exponent is negative, the returned expr
@@ -911,6 +989,9 @@ ItemExpr * ExpGenerator::matchScales(const ValueId & source,
retTree = new(wHeap()) Cast(retTree, &targetType);
retTree->bindNode(generator->getBindWA());
+ if (handleUnsupportedCast((Cast*)retTree))
+ return NULL;
+
// Mark this as preCodeGenned so we don't generate more
// scaling code to handle possible scale differences in the
// new Cast (note that matchScalesNoCast() in this case has
@@ -986,6 +1067,10 @@ ItemExpr * ExpGenerator::matchScalesNoCast(const ValueId & source,
(targetScale != sourceScale)) {
retTree = new(wHeap()) Cast(retTree,&targetType);
retTree->bindNode(generator->getBindWA());
+
+ if (handleUnsupportedCast((Cast*)retTree))
+ return NULL;
+
retTree->markAsPreCodeGenned();
retTree = scaleBy10x(retTree->getValueId(), targetScale - sourceScale);
}
@@ -4666,18 +4751,6 @@ short ExpGenerator::endExprGen(ex_expr ** expr, short gen_last_clause)
// generate pcode at compile time
UInt32 f = 0;
ex_expr_base::setForShowplan(f, FALSE);
- if (generator->downrevCompileNeeded())
- {
- if (generator->getDownrevCompileMXV() == COM_VERS_R2_FCS)
- {
- ex_expr_base::setDownrevCompileR2FCS(f, TRUE);
- ex_expr_base::setDownrevCompileRR(f, TRUE);
- }
- else if (generator->getDownrevCompileMXV() == COM_VERS_R2_1)
- ex_expr_base::setDownrevCompileRR(f, TRUE);
- }
- else if ((CmpCommon::getDefaultLong(QUERY_OPTIMIZATION_OPTIONS) & QO_EXPR_OPT) == 0)
- ex_expr_base::setDownrevCompileR2FCS(f, TRUE);
if (generator->genNoFloatValidatePCode())
ex_expr_base::setNotValidateFloat64(f, TRUE);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/generator/GenExpGenerator.h
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenExpGenerator.h b/core/sql/generator/GenExpGenerator.h
index 87b31f9..500d747 100644
--- a/core/sql/generator/GenExpGenerator.h
+++ b/core/sql/generator/GenExpGenerator.h
@@ -892,6 +892,9 @@ public:
ItemExpr * matchScalesNoCast(const ValueId & source,
const NAType & targetType);
+ // if Cast from/to is not supported, convert to supported datatype.
+ short handleUnsupportedCast(Cast * castNode);
+
// if the source is an interval, this function returns an expr
// tree to convert the source type to numeric.
ItemExpr * convertIntervalToNumeric(const ValueId & source);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/generator/GenItemExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenItemExpr.cpp b/core/sql/generator/GenItemExpr.cpp
index 0df647e..517272b 100644
--- a/core/sql/generator/GenItemExpr.cpp
+++ b/core/sql/generator/GenItemExpr.cpp
@@ -398,6 +398,25 @@ short BiArithCount::codeGen(Generator * generator)
return 0;
}
+short UnArith::codeGen(Generator * generator)
+{
+ Attributes ** attr;
+ ExpGenerator * eg = generator->getExpGenerator();
+
+ if (eg->genItemExpr(this, &attr, (1+getArity()), -1) == 1)
+ return 0;
+
+
+ ex_arith_clause * arith_clause =
+ new(generator->getSpace())
+ ex_arith_clause(getOperatorType(), attr, generator->getSpace(),
+ 0, FALSE);
+
+ generator->getExpGenerator()->linkClause(this, arith_clause);
+
+ return 0;
+}
+
void
markGeneratedEntries(Generator *generator, ItemExpr *item, ValueIdSet &marks)
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index 50c83cb..a122a44 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -1752,8 +1752,7 @@ RelExpr * RelRoot::preCodeGen(Generator * generator,
}
- if ((CmpCommon::getDefault(EID_SPACE_USAGE_OPT) == DF_ON) &&
- (NOT generator->downrevCompileNeeded()))
+ if (CmpCommon::getDefault(EID_SPACE_USAGE_OPT) == DF_ON)
{
generator->setDoEidSpaceUsageOpt(TRUE);
}
@@ -1794,9 +1793,6 @@ RelExpr * RelRoot::preCodeGen(Generator * generator,
}
}
- if (generator->downrevCompileNeeded())
- generator->oltOptInfo()->setOltEidLeanOpt(FALSE);
-
if (CmpCommon::getDefault(OLT_QUERY_OPT_LEAN) == DF_OFF)
generator->oltOptInfo()->setOltEidLeanOpt(FALSE);
} // oltAnyOpt
@@ -3577,18 +3573,6 @@ RelExpr * HashJoin::preCodeGen(Generator * generator,
if (hjp.isEmpty())
{
- if (generator->downrevCompileNeeded())
- {
- // This is a cartesian product.
- // create a join predicate " 1 = 1 " which will always be true.
- //
- ItemExpr *left = new(generator->wHeap()) ConstValue(1);
- ItemExpr *right = new(generator->wHeap()) ConstValue(1);
-
- BiRelat *pred = new(generator->wHeap()) BiRelat(ITM_EQUAL,left,right);
- pred->bindNode(generator->getBindWA());
- newJoinPreds.insert(pred->getValueId());
- }
}
else
{
@@ -7929,6 +7913,17 @@ ItemExpr * BiArith::preCodeGen(Generator * generator)
return this;
} // BiArith::preCodeGen()
+ItemExpr * UnArith::preCodeGen(Generator * generator)
+{
+ if (nodeIsPreCodeGenned())
+ return this;
+
+ if (! ItemExpr::preCodeGen(generator))
+ return NULL;
+
+ return this;
+}
+
ItemExpr * BiLogic::preCodeGen(Generator * generator)
{
if (nodeIsPreCodeGenned())
@@ -8659,61 +8654,14 @@ ItemExpr * Cast::preCodeGen(Generator * generator)
}
}
+ if (generator->getExpGenerator()->handleUnsupportedCast(this))
+ return NULL;
+
const NAType &srcNAType = child(0)->getValueId().getType();
const NAType &tgtNAType = getValueId().getType();
short srcFsType = srcNAType.getFSDatatype();
short tgtFsType = tgtNAType.getFSDatatype();
- // Currently, Tinyint conversions are only supported to/from smallint.
- // if source is TINYINT, then convert it to SMALLINT first.
- if (((srcNAType.getTypeName() == LiteralTinyInt) &&
- (tgtNAType.getTypeName() != LiteralSmallInt)) ||
- ((srcNAType.getTypeName() != LiteralSmallInt) &&
- (tgtNAType.getTypeName() == LiteralTinyInt)))
- {
- // add a Cast node to convert from/to tinyint to/from small int.
- ItemExpr * newChild =
- new (generator->wHeap())
- Cast(child(0),
- new (generator->wHeap())
- SQLSmall(TRUE,
- srcNAType.supportsSQLnull()));
- ((Cast*)newChild)->setFlags(getFlags());
- setSrcIsVarcharPtr(FALSE);
- newChild = newChild->bindNode(generator->getBindWA());
- newChild = newChild->preCodeGen(generator);
- if (! newChild)
- return NULL;
-
- setChild(0, newChild);
- srcFsType = child(0)->getValueId().getType().getFSDatatype();
- }
-
- if (((srcNAType.getTypeQualifier() == NA_NUMERIC_TYPE) &&
- (tgtNAType.getTypeQualifier() == NA_NUMERIC_TYPE)) &&
- ((NOT srcNAType.expConvSupported(tgtNAType)) ||
- (NOT tgtNAType.expConvSupported(srcNAType))))
- {
- const NumericType &numSrc = (NumericType&)srcNAType;
- // add a Cast node to convert to sqllargeint signed.
- ItemExpr * newChild =
- new (generator->wHeap())
- Cast(child(0),
- new (generator->wHeap())
- SQLLargeInt(numSrc.getScale(), 1,
- TRUE,
- srcNAType.supportsSQLnull()));
- ((Cast*)newChild)->setFlags(getFlags());
- setSrcIsVarcharPtr(FALSE);
- newChild = newChild->bindNode(generator->getBindWA());
- newChild = newChild->preCodeGen(generator);
- if (! newChild)
- return NULL;
-
- setChild(0, newChild);
- srcFsType = child(0)->getValueId().getType().getFSDatatype();
- }
-
if ((sourceTypeQual == NA_NUMERIC_TYPE) &&
(targetTypeQual == NA_DATETIME_TYPE))
{
@@ -9012,6 +8960,9 @@ ItemExpr * Cast::preCodeGen(Generator * generator)
child(0)->bindNode(generator->getBindWA());
+ if (generator->getExpGenerator()->handleUnsupportedCast((Cast*)child(0)->castToItemExpr()))
+ return NULL;
+
// To suppress insertion of multiplying/dividing, mark Cast as
// already pre-code-genned.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/generator/GenRelJoin.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelJoin.cpp b/core/sql/generator/GenRelJoin.cpp
index e182935..6635756 100644
--- a/core/sql/generator/GenRelJoin.cpp
+++ b/core/sql/generator/GenRelJoin.cpp
@@ -2548,11 +2548,8 @@ short MergeJoin::codeGen(Generator * generator)
generator->setGenNoFloatValidatePCode(TRUE);
NABoolean doEncodedKeyCompOpt = FALSE;
- if (NOT generator->downrevCompileNeeded())
- {
- doEncodedKeyCompOpt = TRUE;
- encoded_key_atp_index = 2;
- }
+ doEncodedKeyCompOpt = TRUE;
+ encoded_key_atp_index = 2;
// generate expressions to find out if left or right rows are duplicate
// of the previous rows.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/generator/GenRelMisc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelMisc.cpp b/core/sql/generator/GenRelMisc.cpp
index bec9e24..7f61807 100644
--- a/core/sql/generator/GenRelMisc.cpp
+++ b/core/sql/generator/GenRelMisc.cpp
@@ -2881,9 +2881,6 @@ short RelRoot::codeGen(Generator * generator)
// move ESP nodemask into frag dir
exFragDir->setNodeMask((ULng32) getDefault(PARALLEL_ESP_NODEMASK));
- if (generator->downrevCompileNeeded())
- exFragDir->setPlanVersion(generator->getDownrevCompileMXV());
-
// generate the partition input data descriptor from the compile-time
// partitioning attributes
ExPartInputDataDesc **partInputDataDescs =
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/generator/Generator.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/Generator.cpp b/core/sql/generator/Generator.cpp
index c244c5a..466e124 100644
--- a/core/sql/generator/Generator.cpp
+++ b/core/sql/generator/Generator.cpp
@@ -148,8 +148,6 @@ Generator::Generator(CmpContext* currentCmpContext) :
tempSpace_ = NULL;
- downrevCompileMXV_ = COM_VERS_CURR_PLAN;
-
numBMOs_ = 0;
totalNumBMOsPerCPU_ = 0;
@@ -346,15 +344,7 @@ void Generator::initTdbFields(ComTdb *tdb)
tdb->setTdbId(getAndIncTdbId());
- // set plan version to R2, if downrev compile needed.
- // After R2.1 or whenever full versioning support is added,
- // the next 3 lines should be removed.
- if (downrevCompileNeeded())
- {
- tdb->setPlanVersion(getDownrevCompileMXV());
- }
- else
- tdb->setPlanVersion(ComVersion_GetCurrentPlanVersion());
+ tdb->setPlanVersion(ComVersion_GetCurrentPlanVersion());
if (computeStats())
{
@@ -492,11 +482,6 @@ RelExpr * Generator::preGenCode(RelExpr * expr_node)
setUpdatableSelect(((RelRoot *)expr_node)->updatableSelect());
- if (((RelRoot *)expr_node)->downrevCompileNeeded())
- {
- setDownrevCompileMXV(((RelRoot *)expr_node)->getDownrevCompileMXV());
- }
-
// see if aqr could be done
NABoolean aqr = FALSE;
// Only dynamic queries from odbc/jdbc, NCI or mxci will enable AQR.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/generator/Generator.h
----------------------------------------------------------------------
diff --git a/core/sql/generator/Generator.h b/core/sql/generator/Generator.h
index 7cd02d6..58b9571 100644
--- a/core/sql/generator/Generator.h
+++ b/core/sql/generator/Generator.h
@@ -129,8 +129,6 @@ class Generator : public NABasicObject
DO_EID_SPACE_USAGE_OPT = 0x0800,
- //DOWNREV_COMPILE_NEEDED = 0x1000,
-
//this flag is used to indicate to the Root TDB that this is a Non-atomic statement
// where nonfatal errors are to be tolerated.
TOLERATE_NONFATAL_ERROR = 0x2000,
@@ -210,9 +208,6 @@ class Generator : public NABasicObject
// If the statement can be reclaimed
CANT_RECLAIM_QUERY = 0x1000
- // almost all 32 bits are used in this enum, except
- // DOWNREV_COMPILE_NEEDED = 0x1000,
- // is unused, so we recycle it.
};
/* All enum values for the flags_ have been used. Use this enum with
@@ -413,13 +408,6 @@ class Generator : public NABasicObject
ComSpace * tempSpace_;
- // downrevCompileMXV_ contains the version of code which needs to be
- // generated. It is the min MXV of all partitions.
- // For coyote, we need to generate either roadrunner or R2 fcs code,
- // depending on the min MXV. Valid only if downrevCompileNeeded_ is TRUE.
- // This will be removed when real versioning support is in.
- COM_VERSION downrevCompileMXV_;
-
// indicates to the split-top that this is a LRU query. This flag
// is set during RelRoot::codeGen(); that is where we know if this
// is a LRU query or not.
@@ -1105,11 +1093,6 @@ public:
Int32 getSMTag() const { return genSMTag_; }
Int32 getNextSMTag() { return ++genSMTag_; }
- NABoolean downrevCompileNeeded()
- {
- return ((downrevCompileMXV_ == COM_VERS_CURR_PLAN) ? FALSE : TRUE);
- }
-
NABoolean doEidSpaceUsageOpt() { return (flags_ & DO_EID_SPACE_USAGE_OPT) != 0; };
void setDoEidSpaceUsageOpt(NABoolean v)
{
@@ -1384,10 +1367,6 @@ public:
ComTdbRoot *getTopRoot();
const Space *getTopSpace() const;
- void setDownrevCompileMXV(COM_VERSION mxv)
- { downrevCompileMXV_ = mxv;}
- COM_VERSION getDownrevCompileMXV() { return downrevCompileMXV_;}
-
static Lng32 getRecordLength(ComTdbVirtTableIndexInfo * indexInfo,
ComTdbVirtTableColumnInfo * columnInfoArray);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/BindItemExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/BindItemExpr.cpp b/core/sql/optimizer/BindItemExpr.cpp
index 2e4d8e0..0561f8d 100644
--- a/core/sql/optimizer/BindItemExpr.cpp
+++ b/core/sql/optimizer/BindItemExpr.cpp
@@ -5943,6 +5943,31 @@ ItemExpr *BiArith::bindNode(BindWA *bindWA)
} // BiArith::bindNode()
// -----------------------------------------------------------------------
+// member functions for class UnArith
+// -----------------------------------------------------------------------
+
+ItemExpr *UnArith::bindNode(BindWA *bindWA)
+{
+ ItemExpr * result = NULL;
+
+ if (nodeIsBound())
+ return getValueId().getItemExpr();
+
+ CMPASSERT(getOperatorType() == ITM_NEGATE);
+
+ child(0) = child(0)->bindNode(bindWA);
+ if (bindWA->errStatus())
+ return this;
+
+ result = ItemExpr::bindNode(bindWA);
+ if (bindWA->errStatus())
+ return this;
+
+ return result;
+
+} // UnArith::bindNode()
+
+// -----------------------------------------------------------------------
// member functions for class Assign
// -----------------------------------------------------------------------
// Helper function
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/BindRelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/BindRelExpr.cpp b/core/sql/optimizer/BindRelExpr.cpp
index c82fb37..966cd8f 100644
--- a/core/sql/optimizer/BindRelExpr.cpp
+++ b/core/sql/optimizer/BindRelExpr.cpp
@@ -1072,6 +1072,26 @@ void castComputedColumnsToAnsiTypes(BindWA *bindWA,
naType = (NAType*)&cast->getValueId().getType();
}
+
+ if ((naType->getFSDatatype() == REC_BOOLEAN) &&
+ (CmpCommon::getDefault(TRAF_BOOLEAN_IO) == DF_OFF) &&
+ (NOT bindWA->inCTAS()))
+ {
+ NumericType *nTyp = (NumericType *)naType;
+
+ ItemExpr * cast = new (bindWA->wHeap())
+ Cast(col->getValueId().getItemExpr(),
+ new (bindWA->wHeap())
+ SQLChar(SQL_BOOLEAN_DISPLAY_SIZE, naType->supportsSQLnull()));
+
+ cast = cast->bindNode(bindWA);
+ if (bindWA->errStatus())
+ return;
+ col->setValueId(cast->getValueId());
+ compExpr[i] = cast->getValueId();
+
+ naType = (NAType*)&cast->getValueId().getType();
+ }
// if OFF, return tinyint as smallint.
// This is needed until all callers/drivers have full support to
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/ControlDB.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ControlDB.cpp b/core/sql/optimizer/ControlDB.cpp
index 96da26d..a8e4299 100644
--- a/core/sql/optimizer/ControlDB.cpp
+++ b/core/sql/optimizer/ControlDB.cpp
@@ -1734,7 +1734,7 @@ ExprNode *DecodeShapeSyntax(const NAString &fname,
return NULL;
}
short arg =
- *((short *) itm->castToConstValue(dummyNegate)->getConstValue());
+ itm->castToConstValue(dummyNegate)->getExactNumericValue();
if (arg == _SYSTEM_)
{
@@ -2051,13 +2051,13 @@ ExprNode *DecodeShapeSyntax(const NAString &fname,
}
else if (nat->getTypeQualifier() == NA_NUMERIC_TYPE)
{
- if (cv->getStorageSize() != 2)
+ if (cv->getStorageSize() > 2)
{
*diags << DgSqlCode(-3113) <<
DgString0("Number of ESPs (short int) expected.");
return NULL;
}
- numOfEsps = *((short *) cv->getConstValue());
+ numOfEsps = cv->getExactNumericValue();
}
else
{
@@ -2143,13 +2143,13 @@ ExprNode *DecodeShapeSyntax(const NAString &fname,
}
else if (nat->getTypeQualifier() == NA_NUMERIC_TYPE)
{
- if (cv->getStorageSize() != 2)
+ if (cv->getStorageSize() > 2)
{
*diags << DgSqlCode(-3113) <<
DgString0("Number of ESPs (short int) expected.");
return NULL;
}
- numOfEsps = *((short *) cv->getConstValue());
+ numOfEsps = cv->getExactNumericValue();
}
else
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/EncodedValue.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/EncodedValue.cpp b/core/sql/optimizer/EncodedValue.cpp
index d05e061..935fd66 100644
--- a/core/sql/optimizer/EncodedValue.cpp
+++ b/core/sql/optimizer/EncodedValue.cpp
@@ -501,6 +501,7 @@ EncodedValue::outputToBufferToComputeRTHash(
flags = ExHDPHash::NO_FLAGS;
switch (naType->getFSDatatype()) {
case REC_BIN8_UNSIGNED:
+ case REC_BOOLEAN:
len = 1;
{ UInt8 y = (UInt8)x; memcpy(data, &y, len); }
break;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/ItemArith.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ItemArith.h b/core/sql/optimizer/ItemArith.h
index 224e85a..e0f0591 100644
--- a/core/sql/optimizer/ItemArith.h
+++ b/core/sql/optimizer/ItemArith.h
@@ -250,4 +250,36 @@ public:
private:
};
+class UnArith : public ItemExpr
+{
+ // ITM_NEGATE. Used with negation of boolean native datatype
+public:
+ UnArith(ItemExpr *child0 = NULL)
+ : ItemExpr(ITM_NEGATE,child0,NULL)
+ {
+ }
+
+ // get the degree of this node (it is a binary op).
+ virtual Int32 getArity() const { return 1;}
+
+ // get a printable string that identifies the operator
+ const NAString getText() const { return '!'; }
+
+ virtual ItemExpr * copyTopNode(ItemExpr *derivedNode = NULL,
+ CollHeap* outHeap = NULL);
+
+ // a virtual function for performing name binding within the query tree
+ virtual ItemExpr *bindNode(BindWA *bindWA);
+
+ // a virtual function for type propagating the node
+ virtual const NAType * synthesizeType();
+
+ // method to do code generation
+ ItemExpr * preCodeGen(Generator*);
+ short codeGen(Generator*);
+
+private:
+};
+
+
#endif /* ITEMARITH_H */
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/ItemExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ItemExpr.cpp b/core/sql/optimizer/ItemExpr.cpp
index 4b65904..cc6d372 100644
--- a/core/sql/optimizer/ItemExpr.cpp
+++ b/core/sql/optimizer/ItemExpr.cpp
@@ -3551,6 +3551,18 @@ NABoolean BiArith::hasEquivalentProperties(ItemExpr * other)
(this->divToDownscale_ == otherBiArith->divToDownscale_);
}
+ItemExpr * UnArith::copyTopNode(ItemExpr *derivedNode, CollHeap* outHeap)
+{
+ UnArith *result;
+
+ if (derivedNode == NULL)
+ result = new (outHeap) UnArith();
+ else
+ result = (UnArith*)derivedNode;
+
+ return result;
+}
+
// -----------------------------------------------------------------------
// member functions for class ColReference
// -----------------------------------------------------------------------
@@ -10453,6 +10465,13 @@ Int64 ConstValue::getExactNumericValue(Lng32 &scale) const
CMPASSERT(t.getNominalSize() == storageSize_);
switch (storageSize_)
{
+ case 1:
+ if (t.isUnsigned())
+ result = *((UInt8 *) value_);
+ else
+ result = *((Int8 *) value_);
+ break;
+
case 2:
if (t.isUnsigned())
result = *((unsigned short *) value_);
@@ -12031,6 +12050,14 @@ Cast::Cast(ItemExpr *val1Ptr, const NAType *type, OperatorTypeEnum otype,
flags_(0)
{
ValueId vid = val1Ptr ? val1Ptr->getValueId() : NULL_VALUE_ID;
+
+ if ((type->getFSDatatype() == 132) &&
+ (vid != NULL_VALUE_ID) &&
+ (vid.getType().getFSDatatype() == 136))
+ {
+ Lng32 ij = 1;
+ }
+
checkForTruncation_ = FALSE;
if (checkForTrunc)
if (vid == NULL_VALUE_ID)
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/NAColumn.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/NAColumn.cpp b/core/sql/optimizer/NAColumn.cpp
index 485e56c..9a726a8 100644
--- a/core/sql/optimizer/NAColumn.cpp
+++ b/core/sql/optimizer/NAColumn.cpp
@@ -562,6 +562,10 @@ NABoolean NAColumn::createNAType(columns_desc_struct *column_desc /*IN*/,
column_desc->null_flag);
break;
+ case REC_BOOLEAN :
+ type = new (heap) SQLBooleanNative(column_desc->null_flag);
+ break;
+
default:
{
// 4031 Column %s is an unknown data type, %d.
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/NATable.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/NATable.cpp b/core/sql/optimizer/NATable.cpp
index 737fd51..afdfaa0 100644
--- a/core/sql/optimizer/NATable.cpp
+++ b/core/sql/optimizer/NATable.cpp
@@ -3304,6 +3304,12 @@ NABoolean createNAType(columns_desc_struct *column_desc /*IN*/,
column_desc->null_flag);
break;
+ case REC_BOOLEAN :
+ {
+ type = new (heap) SQLBooleanNative(column_desc->null_flag);
+ }
+ break;
+
default:
{
// 4031 Column %s is an unknown data type, %d.
@@ -3580,6 +3586,9 @@ NAType* getSQColTypeForHive(const char* hiveType, NAMemory* heap)
if ( !strcmp(hiveType, "bigint"))
return new (heap) SQLLargeInt(TRUE /* neg */, TRUE /* allow NULL*/, heap);
+ if ( !strcmp(hiveType, "boolean"))
+ return new (heap) SQLBooleanNative(TRUE, heap);
+
if ( !strcmp(hiveType, "string"))
{
Int32 len = CmpCommon::getDefaultLong(HIVE_MAX_STRING_LENGTH);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/NormItemExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/NormItemExpr.cpp b/core/sql/optimizer/NormItemExpr.cpp
index 5f908a7..df95266 100644
--- a/core/sql/optimizer/NormItemExpr.cpp
+++ b/core/sql/optimizer/NormItemExpr.cpp
@@ -67,7 +67,7 @@ static NABoolean canBeSQLUnknown(const ItemExpr *ie,
{
const NAType &typ = ie->getValueId().getType();
if (typ.getTypeQualifier() == NA_BOOLEAN_TYPE)
- return ((SQLBoolean &)typ).canBeSQLUnknown();
+ return ((SQLBooleanRelat &)typ).canBeSQLUnknown();
CMPASSERT(!typeMustBeSQLBoolean);
return FALSE;
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/OptRange.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/OptRange.cpp b/core/sql/optimizer/OptRange.cpp
index 8e6464c..2d773c2 100644
--- a/core/sql/optimizer/OptRange.cpp
+++ b/core/sql/optimizer/OptRange.cpp
@@ -533,11 +533,13 @@ void OptRangeSpec::addSubrange(ConstValue* start, ConstValue* end,
case NA_NUMERIC_TYPE:
case NA_DATETIME_TYPE:
case NA_INTERVAL_TYPE:
+ case NA_BOOLEAN_TYPE:
//if (((const NumericType*)type)->isExact())
if (typeQual == NA_DATETIME_TYPE ||
typeQual == NA_INTERVAL_TYPE ||
(typeQual == NA_NUMERIC_TYPE &&
- static_cast<const NumericType*>(type)->isExact()))
+ static_cast<const NumericType*>(type)->isExact()) ||
+ (typeQual == NA_BOOLEAN_TYPE))
{
// Fixed-point numeric subranges are normalized to be inclusive, to
// simplify equivalence and subsumption checks.
@@ -2277,10 +2279,28 @@ Int64 getInt64Value(ConstValue* val, const NAType* rangeColType,
else
switch (storageSize)
{
- case 2:
+ case 1:
{
assertLogAndThrow1(CAT_SQL_COMP_RANGE, level,
isExactNumeric, QRDescriptorException,
+ "Constant value of size 1 not exact numeric, type is: %d",
+ constValNumType->getTypeQualifier());
+ Int8 i8val;
+ memcpy(&i8val, valuePtr, storageSize);
+ if (constValNumType->isSigned())
+ {
+ valWasNegative = (i8val < 0);
+ i64val = (Int64)(i8val * scaleFactor);
+ }
+ else
+ i64val = (Int64)((UInt8)i8val * scaleFactor);
+ }
+ break;
+
+ case 2:
+ {
+ assertLogAndThrow1(CAT_SQL_COMP_RANGE, level,
+ isExactNumeric, QRDescriptorException,
"Constant value of size 2 not exact numeric, type is: %d",
constValNumType->getTypeQualifier());
Int16 i16val;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/RelExeUtil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExeUtil.cpp b/core/sql/optimizer/RelExeUtil.cpp
index 7c9e1b4..25fbdd4 100644
--- a/core/sql/optimizer/RelExeUtil.cpp
+++ b/core/sql/optimizer/RelExeUtil.cpp
@@ -4704,6 +4704,12 @@ RelExpr * ExeUtilCreateTableAs::bindNode(BindWA *bindWA)
ctQuery_ = "CREATE VOLATILE TABLE ";
else
ctQuery_ = "CREATE TABLE ";
+
+ if (createTableNode->createIfNotExists())
+ {
+ ctQuery_ += "IF NOT EXISTS ";
+ }
+
ctQuery_ +=
getTableName().getQualifiedNameObj().getQualifiedNameAsAnsiString();
ctQuery_ += " ";
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/SynthType.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/SynthType.cpp b/core/sql/optimizer/SynthType.cpp
index 6d91505..cc39c36 100644
--- a/core/sql/optimizer/SynthType.cpp
+++ b/core/sql/optimizer/SynthType.cpp
@@ -1438,13 +1438,13 @@ const NAType *Aggregate::synthesizeType()
case ITM_ANY_TRUE_MAX:
case ITM_ANY_TRUE:
{
- const SQLBoolean& operand = (const SQLBoolean &)
+ const SQLBooleanRelat& operand = (const SQLBooleanRelat &)
child(0)->castToItemExpr()->getValueId().getType();
// The argument of a ONE/ANY TRUE must be of type SQLBoolean
CMPASSERT(operand.getTypeQualifier() == NA_BOOLEAN_TYPE);
- result = new HEAP SQLBoolean(operand.canBeSQLUnknown());
+ result = new HEAP SQLBooleanRelat(operand.canBeSQLUnknown());
break;
}
default:
@@ -1796,7 +1796,7 @@ const NAType *Between::synthesizeType()
//
// Return the result.
//
- return new HEAP SQLBoolean(allowsUnknown);
+ return new HEAP SQLBooleanRelat(allowsUnknown);
}
// -----------------------------------------------------------------------
@@ -1945,18 +1945,50 @@ const NAType *BiArith::synthesizeType()
}
// -----------------------------------------------------------------------
+// member functions for class UnArith
+// -----------------------------------------------------------------------
+
+const NAType *UnArith::synthesizeType()
+{
+ //
+ // Type cast any params.
+ //
+ ValueId vid1 = child(0)->getValueId();
+
+ if (vid1.getType().getTypeQualifier() == NA_UNKNOWN_TYPE)
+ {
+ vid1.coerceType(NA_BOOLEAN_TYPE);
+ }
+
+ const NAType& operand1 = vid1.getType();
+ if (operand1.getFSDatatype() != REC_BOOLEAN)
+ {
+ *CmpCommon::diags() << DgSqlCode(-4034)
+ << DgString0("!")
+ << DgString1("")
+ << DgString2(child(0)->getTextUpper());
+
+ return NULL;
+ }
+
+ NAType * retType = new HEAP SQLBooleanNative(operand1.supportsSQLnull());
+
+ return retType;
+}
+
+// -----------------------------------------------------------------------
// member functions for class BiLogic
// -----------------------------------------------------------------------
const NAType *BiLogic::synthesizeType()
{
- const SQLBoolean& operand0 = (SQLBoolean&) child(0).getValueId().getType();
- const SQLBoolean& operand1 = (SQLBoolean&) child(1).getValueId().getType();
+ const SQLBooleanRelat& operand0 = (SQLBooleanRelat&) child(0).getValueId().getType();
+ const SQLBooleanRelat& operand1 = (SQLBooleanRelat&) child(1).getValueId().getType();
NABoolean allowsUnknown = operand0.canBeSQLUnknown() OR
operand1.canBeSQLUnknown();
- return new HEAP SQLBoolean(allowsUnknown);
+ return new HEAP SQLBooleanRelat(allowsUnknown);
}
// -----------------------------------------------------------------------
@@ -1995,7 +2027,7 @@ const NAType *BiRelat::synthesizeType()
if (!synthItemExprLists(exprList1, exprList2, allowIncompatibleComparison,
allowsUnknown, this))
return NULL;
- return new HEAP SQLBoolean(allowsUnknown);
+ return new HEAP SQLBooleanRelat(allowsUnknown);
}
// -----------------------------------------------------------------------
@@ -2004,7 +2036,7 @@ const NAType *BiRelat::synthesizeType()
const NAType *BoolResult::synthesizeType()
{
- return new HEAP SQLBoolean(getOperatorType() == ITM_RETURN_NULL);
+ return new HEAP SQLBooleanRelat(getOperatorType() == ITM_RETURN_NULL);
}
// -----------------------------------------------------------------------
@@ -2013,7 +2045,7 @@ const NAType *BoolResult::synthesizeType()
const NAType *BoolVal::synthesizeType()
{
- return new HEAP SQLBoolean(getOperatorType() == ITM_RETURN_NULL);
+ return new HEAP SQLBooleanRelat(getOperatorType() == ITM_RETURN_NULL);
}
//------------------------------------------------------------------
@@ -2031,7 +2063,7 @@ const NAType *RaiseError::synthesizeType()
return NULL;
}
}
- return new HEAP SQLBoolean(FALSE); // can be overridden in IfThenElse
+ return new HEAP SQLBooleanRelat(FALSE); // can be overridden in IfThenElse
}
// -----------------------------------------------------------------------
@@ -4159,7 +4191,7 @@ const NAType *TriRelational::synthesizeType()
//
// Return the result.
//
- return new HEAP SQLBoolean(allowsUnknown);
+ return new HEAP SQLBooleanRelat(allowsUnknown);
}
// -----------------------------------------------------------------------
@@ -4294,7 +4326,7 @@ const NAType *Like::synthesizeType()
(typ3 AND
typ3->supportsSQLnull());
- return new HEAP SQLBoolean(allowsUnknown);
+ return new HEAP SQLBooleanRelat(allowsUnknown);
}
// -----------------------------------------------------------------------
@@ -4924,7 +4956,7 @@ const NAType *UnLogic::synthesizeType()
case ITM_NOT:
{
CMPASSERT(child(0).getValueId().getType().getTypeQualifier() == NA_BOOLEAN_TYPE);
- const SQLBoolean& operand0 = (SQLBoolean &) child(0).getValueId().getType();
+ const SQLBooleanRelat& operand0 = (SQLBooleanRelat &) child(0).getValueId().getType();
allowsUnknown = operand0.canBeSQLUnknown();
break;
}
@@ -4945,7 +4977,7 @@ const NAType *UnLogic::synthesizeType()
break;
}
- return new HEAP SQLBoolean(allowsUnknown);
+ return new HEAP SQLBooleanRelat(allowsUnknown);
}
// -----------------------------------------------------------------------
@@ -5312,7 +5344,7 @@ ValueIdProxy::pushDownType(NAType& desiredType,
const NAType *VEGPredicate::synthesizeType()
{
- return new HEAP SQLBoolean();
+ return new HEAP SQLBooleanRelat();
}
// -----------------------------------------------------------------------
@@ -5586,7 +5618,7 @@ const NAType * ZZZBinderFunction::synthesizeType()
const NAType *Subquery::synthesizeType()
{
- return new HEAP SQLBoolean();
+ return new HEAP SQLBooleanRelat();
}
const NAType *RowSubquery::synthesizeType()
@@ -5625,7 +5657,7 @@ RowSubquery::pushDownType(NAType& desiredType,
const NAType *Exists::synthesizeType()
{
// EXISTS predicate can never evaluate to Unknown
- return new HEAP SQLBoolean(FALSE);
+ return new HEAP SQLBooleanRelat(FALSE);
}
const NAType *QuantifiedComp::synthesizeType()
@@ -5640,7 +5672,7 @@ const NAType *QuantifiedComp::synthesizeType()
if (!synthItemExprLists(exprList1, exprList2, allowIncompatibleComparison,
allowsUnknown, this))
return NULL;
- return new HEAP SQLBoolean(allowsUnknown);
+ return new HEAP SQLBooleanRelat(allowsUnknown);
}
// MV,
@@ -5726,7 +5758,7 @@ const NAType *IsBitwiseAndTrue::synthesizeType()
return NULL;
}
- return new HEAP SQLBoolean(FALSE);
+ return new HEAP SQLBooleanRelat(FALSE);
}
//--MV
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/UdfDllInteraction.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/UdfDllInteraction.cpp b/core/sql/optimizer/UdfDllInteraction.cpp
index 939c3ce..14a2e10 100644
--- a/core/sql/optimizer/UdfDllInteraction.cpp
+++ b/core/sql/optimizer/UdfDllInteraction.cpp
@@ -1214,6 +1214,29 @@ NABoolean TMUDFInternalSetup::setTypeInfoFromNAType(
switch (length)
{
// SMALLINT, INT, LARGEINT, NUMERIC, signed and unsigned
+ case 1:
+ if (CmpCommon::getDefault(TRAF_TINYINT_SPJ_SUPPORT) == DF_ON)
+ {
+ *diags << DgSqlCode(-11151)
+ << DgString0("type")
+ << DgString1(src->getTypeSQLname())
+ << DgString2("Tinyint datatype not yet supported");
+ result = FALSE;
+ break;
+ }
+
+ if (isUnsigned)
+ {
+ if (!isDecimalPrecision)
+ sqlType = tmudr::TypeInfo::SMALLINT_UNSIGNED;
+ }
+ else
+ {
+ if (!isDecimalPrecision)
+ sqlType = tmudr::TypeInfo::SMALLINT;
+ }
+ break;
+
case 2:
if (isUnsigned)
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/optimizer/ValueDesc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ValueDesc.cpp b/core/sql/optimizer/ValueDesc.cpp
index eba2e2a..d6730bf 100644
--- a/core/sql/optimizer/ValueDesc.cpp
+++ b/core/sql/optimizer/ValueDesc.cpp
@@ -246,7 +246,7 @@ void ValueId::coerceType(enum NABuiltInTypeEnum desiredQualifier,
NAType *desiredType = NULL;
switch (desiredQualifier) {
case NA_BOOLEAN_TYPE:
- desiredType = new STMTHEAP SQLBoolean();
+ desiredType = new STMTHEAP SQLBooleanNative(originalType.supportsSQLnull());
break;
case NA_CHARACTER_TYPE:
{
@@ -405,6 +405,13 @@ void ValueId::coerceType(const NAType& desiredType,
NULL);
}
}
+ else if ((desiredType.getFSDatatype() == REC_BOOLEAN) &&
+ (CmpCommon::getDefault(TRAF_BOOLEAN_IO) == DF_OFF))
+ {
+ newType = new (STMTHEAP)
+ SQLVarChar(SQL_BOOLEAN_DISPLAY_SIZE,
+ desiredType.supportsSQLnull());
+ }
else if (DFS2REC::isBigNum(desiredType.getFSDatatype()))
{
// If bignum IO is not enabled or
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/parser/ParKeyWords.cpp
----------------------------------------------------------------------
diff --git a/core/sql/parser/ParKeyWords.cpp b/core/sql/parser/ParKeyWords.cpp
index fee890f..39d3dd0 100644
--- a/core/sql/parser/ParKeyWords.cpp
+++ b/core/sql/parser/ParKeyWords.cpp
@@ -138,7 +138,7 @@ ParKeyWord ParKeyWords::keyWords_[] = {
ParKeyWord("BLOB", TOK_BLOB, COMPAQ_|RESWORD_),
ParKeyWord("BLOCKS", TOK_BLOCKS, NONRESTOKEN_),
ParKeyWord("BLOCKSIZE", TOK_BLOCKSIZE, NONRESTOKEN_),
- ParKeyWord("BOOLEAN", IDENTIFIER, POTANS_|RESWORD_),
+ ParKeyWord("BOOLEAN", TOK_BOOLEAN, RESWORD_),
ParKeyWord("BOTH", TOK_BOTH, ANS_|RESWORD_|MPWORD_),
ParKeyWord("BREADTH", IDENTIFIER, POTANS_|RESWORD_),
ParKeyWord("BRIEF", TOK_BRIEF, NONRESTOKEN_),
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/parser/SqlParserAux.cpp
----------------------------------------------------------------------
diff --git a/core/sql/parser/SqlParserAux.cpp b/core/sql/parser/SqlParserAux.cpp
index 61ca86e..1f4667b 100644
--- a/core/sql/parser/SqlParserAux.cpp
+++ b/core/sql/parser/SqlParserAux.cpp
@@ -865,11 +865,17 @@ ItemExpr *literalOfNumericPassingScale(NAString *strptr, char sign,
<< DgInt1((Lng32)CmpCommon::getDefaultNumeric(MAX_NUMERIC_PRECISION_ALLOWED));
return NULL;
}
+
+ NABoolean createTinyLiteral =
+ ((CmpCommon::getDefault(TRAF_CREATE_TINYINT_LITERAL)) == DF_ON);
char numericVal[8];
short datatype = -1;
Lng32 length = -1;
- if (strSize < 5) {
+ if ((createTinyLiteral) && (strSize < 3)) {
+ datatype = (createSignedDatatype ? REC_BIN8_SIGNED : REC_BIN8_UNSIGNED);
+ length = sizeof(Int8);
+ } else if (strSize < 5) {
datatype = (createSignedDatatype ? REC_BIN16_SIGNED : REC_BIN16_UNSIGNED);
length = sizeof(short);
} else if (strSize < 10) {
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/parser/sqlparser.y
----------------------------------------------------------------------
diff --git a/core/sql/parser/sqlparser.y b/core/sql/parser/sqlparser.y
index 3cd3663..77d7d65 100755
--- a/core/sql/parser/sqlparser.y
+++ b/core/sql/parser/sqlparser.y
@@ -501,6 +501,7 @@ static void enableMakeQuotedStringISO88591Mechanism()
%token <tokval> TOK_BOTH
%token <tokval> TOK_BROWSE /* Tandem extension */
%token <tokval> TOK_BROWSE_ACCESS /* Tandem extension */
+%token <tokval> TOK_BOOLEAN
%token <tokval> TOK_BY
%token <tokval> TOK_BYTEINT /* TD extension that HP wants to ignore */
%token <tokval> TOK_C /* HP Neo extension non-reserved word */
@@ -1890,6 +1891,7 @@ static void enableMakeQuotedStringISO88591Mechanism()
%type <item> numeric_literal
%type <item> numeric_literal_exact
%type <item> character_literal_sbyte
+%type <item> boolean_literal
%type <stringval> literal_as_string
%type <stringval> character_string_literal
%type <stringval> sbyte_string_literal
@@ -2023,6 +2025,7 @@ static void enableMakeQuotedStringISO88591Mechanism()
%type <na_type> pic_type
%type <na_type> string_type
%type <na_type> blob_type
+%type <na_type> boolean_type
%type <na_type> float_type
%type <na_type> proc_arg_float_type
%type <longint> pic_tail
@@ -3278,6 +3281,19 @@ literal : numeric_literal
SqlParser_CurrentParser->collectItem4HQC($$);
restoreInferCharsetState();
}
+ | boolean_literal
+
+boolean_literal : truth_value
+ {
+ if ($1 == TOK_UNKNOWN)
+ YYERROR;
+
+ char v = ($1 == TOK_TRUE ? 1 : 0);
+ NAString literalBuf($1 == TOK_TRUE ? "TRUE" : "FALSE");
+ $$ = new (PARSERHEAP()) ConstValue
+ (new (PARSERHEAP()) SQLBooleanNative(FALSE),
+ (void *) &v, 1, &literalBuf);
+ }
character_literal_notcasespecific_option : '(' TOK_NOT_CASESPECIFIC ')'
{$$=TRUE;}
@@ -7839,6 +7855,11 @@ factor : sign primary
//SqlParser_CurrentParser->FixupForUnaryNegate((BiArith*) $$);
}
}
+ | '!' primary
+ {
+ $$ = new (PARSERHEAP())
+ UnArith($2);
+ }
| primary
| primary TOK_LPAREN_BEFORE_FORMAT TOK_FORMAT character_string_literal ')'
{
@@ -10537,6 +10558,7 @@ predefined_type : date_time_type
| pic_type
| string_type
| blob_type
+ | boolean_type
/* type na_type */
@@ -11448,6 +11470,12 @@ optional_blob_unit : TOK_K {$$ = 1024;}
| TOK_G {$$ = 1024*1024*1024;}
| empty {$$ = 1;}
+/* type na_type */
+boolean_type : TOK_BOOLEAN
+ {
+ $$ = new (PARSERHEAP()) SQLBooleanNative (TRUE);
+ }
+
/* type pCharLenSpec */
toggled_optional_left_charlen_right: new_left_charlen_right
| empty
@@ -21467,13 +21495,16 @@ query_shape_control : shape_identifier
}
if (nat->getTypeQualifier() == NA_NUMERIC_TYPE)
{
- if (cv->getStorageSize() != 2)
+ if (cv->getStorageSize() > 2)
{
*SqlParser_Diags << DgSqlCode(-3113) <<
DgString0("Number of columns (short int) expected.");
return NULL;
}
- numColumns = *((short *) cv->getConstValue());
+ numColumns =
+ (cv->getStorageSize() == 1
+ ? *((Int8*) cv->getConstValue())
+ : *((short *) cv->getConstValue()));
}
else
{
@@ -21497,7 +21528,9 @@ query_shape_control : shape_identifier
}
if (nat->getTypeQualifier() == NA_NUMERIC_TYPE)
{
- if (cv->getStorageSize() <= 2)
+ if (cv->getStorageSize() <= 1)
+ blocksPerAccess = *((Int8 *) cv->getConstValue());
+ else if (cv->getStorageSize() <= 2)
blocksPerAccess = *((short *) cv->getConstValue());
else if (cv->getStorageSize() <= 4)
blocksPerAccess = *((Lng32 *) cv->getConstValue());
@@ -26808,8 +26841,6 @@ range_n_arg : value_expression TOK_BETWEEN value_expression { $$ = NULL; }
| TOK_NO TOK_RANGE TOK_OR TOK_UNKNOWN { $$ = NULL; }
| TOK_NO TOK_RANGE { $$ = NULL; }
- | TOK_UNKNOWN { $$ = NULL; }
-
/* type pElemDDL */
partition_by_column_list : '(' column_reference_list ')'
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/d48a0c94/core/sql/parser/ulexer.cpp
----------------------------------------------------------------------
diff --git a/core/sql/parser/ulexer.cpp b/core/sql/parser/ulexer.cpp
index d4bd74f..b4a9cbf 100644
--- a/core/sql/parser/ulexer.cpp
+++ b/core/sql/parser/ulexer.cpp
@@ -2143,8 +2143,7 @@ Int32 yyULexer::yylex(YYSTYPE *lvalp)
else
{
doBeforeAction();
- return setTokval(NON_SQLTEXT_CHARACTER,
- DBGMSG("Non-SQLTEXT character <%s>\n"), lvalp);
+ return setTokval(yytext_[0], DBGMSG("Not %s\n"), lvalp);
}
break;
case L'<':