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