Author: gates
Date: Sat Sep 20 14:33:55 2014
New Revision: 1626448

URL: http://svn.apache.org/r1626448
Log:
HIVE-8105 booleans and nulls not handled properly in insert/values (Alan Gates, 
reviewed by Eugene Koifman)

Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
    
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java
    
hive/trunk/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q
    
hive/trunk/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out
    
hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1626448&r1=1626447&r2=1626448&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java 
Sat Sep 20 14:33:55 2014
@@ -804,7 +804,8 @@ public class SemanticAnalyzer extends Ba
         return PlanUtils.stripQuotes(expr.getText());
 
       case HiveParser.KW_FALSE:
-        return "FALSE";
+        // UDFToBoolean casts any non-empty string to true, so set this to 
false
+        return "";
 
       case HiveParser.KW_TRUE:
         return "TRUE";
@@ -812,6 +813,10 @@ public class SemanticAnalyzer extends Ba
       case HiveParser.MINUS:
         return "-" + 
unparseExprForValuesClause((ASTNode)expr.getChildren().get(0));
 
+      case HiveParser.TOK_NULL:
+        // Hive's text input will translate this as a null
+        return "\\N";
+
       default:
         throw new SemanticException("Expression of type " + expr.getText() +
             " not supported in insert/values");

Modified: 
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java?rev=1626448&r1=1626447&r2=1626448&view=diff
==============================================================================
--- 
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java
 (original)
+++ 
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestUpdateDeleteSemanticAnalyzer.java
 Sat Sep 20 14:33:55 2014
@@ -198,7 +198,7 @@ public class TestUpdateDeleteSemanticAna
   @Test
   public void testInsertValues() throws Exception {
     try {
-      ReturnInfo rc = parseAndAnalyze("insert into table T values ('abc', 3), 
('ghi', 5)",
+      ReturnInfo rc = parseAndAnalyze("insert into table T values ('abc', 3), 
('ghi', null)",
           "testInsertValues");
 
       LOG.info(explain((SemanticAnalyzer)rc.sem, rc.plan, rc.ast.dump()));

Modified: 
hive/trunk/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q?rev=1626448&r1=1626447&r2=1626448&view=diff
==============================================================================
--- 
hive/trunk/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q 
(original)
+++ 
hive/trunk/ql/src/test/queries/clientpositive/insert_values_non_partitioned.q 
Sat Sep 20 14:33:55 2014
@@ -12,12 +12,14 @@ create table acid_ivnp(ti tinyint,
                  de decimal(5,2),
                  t timestamp,
                  dt date,
+                 b boolean,
                  s string,
                  vc varchar(128),
                  ch char(12)) clustered by (i) into 2 buckets stored as orc;
 
 insert into table acid_ivnp values 
-    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', 'mary had a little lamb', 'ring around the rosie', 
'red'),
-    (3, 25, 6553, 429496729, 0.14, 1923.141592654, 1.2301, '2014-08-24 
17:21:30.0', '2014-08-26', 'its fleece was white as snow', 'a pocket full of 
posies', 'blue' );
+    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', true, 'mary had a little lamb', 'ring around the 
rosie', 'red'),
+    (null, null, null, null, null, null, null, null, null, null, null, null, 
null),
+    (3, 25, 6553, null, 0.14, 1923.141592654, 1.2301, '2014-08-24 17:21:30.0', 
'2014-08-26', false, 'its fleece was white as snow', 'a pocket full of posies', 
'blue' );
 
-select ti, si, i, bi, f, d, de, t, dt, s, vc, ch from acid_ivnp order by ti;
+select * from acid_ivnp order by ti;

Modified: 
hive/trunk/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out?rev=1626448&r1=1626447&r2=1626448&view=diff
==============================================================================
--- 
hive/trunk/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out
 (original)
+++ 
hive/trunk/ql/src/test/results/clientpositive/insert_values_non_partitioned.q.out
 Sat Sep 20 14:33:55 2014
@@ -7,6 +7,7 @@ PREHOOK: query: create table acid_ivnp(t
                  de decimal(5,2),
                  t timestamp,
                  dt date,
+                 b boolean,
                  s string,
                  vc varchar(128),
                  ch char(12)) clustered by (i) into 2 buckets stored as orc
@@ -22,6 +23,7 @@ POSTHOOK: query: create table acid_ivnp(
                  de decimal(5,2),
                  t timestamp,
                  dt date,
+                 b boolean,
                  s string,
                  vc varchar(128),
                  ch char(12)) clustered by (i) into 2 buckets stored as orc
@@ -29,36 +31,40 @@ POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@acid_ivnp
 PREHOOK: query: insert into table acid_ivnp values 
-    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', 'mary had a little lamb', 'ring around the rosie', 
'red'),
-    (3, 25, 6553, 429496729, 0.14, 1923.141592654, 1.2301, '2014-08-24 
17:21:30.0', '2014-08-26', 'its fleece was white as snow', 'a pocket full of 
posies', 'blue' )
+    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', true, 'mary had a little lamb', 'ring around the 
rosie', 'red'),
+    (null, null, null, null, null, null, null, null, null, null, null, null, 
null),
+    (3, 25, 6553, null, 0.14, 1923.141592654, 1.2301, '2014-08-24 17:21:30.0', 
'2014-08-26', false, 'its fleece was white as snow', 'a pocket full of posies', 
'blue' )
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__1
 PREHOOK: Output: default@acid_ivnp
 POSTHOOK: query: insert into table acid_ivnp values 
-    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', 'mary had a little lamb', 'ring around the rosie', 
'red'),
-    (3, 25, 6553, 429496729, 0.14, 1923.141592654, 1.2301, '2014-08-24 
17:21:30.0', '2014-08-26', 'its fleece was white as snow', 'a pocket full of 
posies', 'blue' )
+    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', true, 'mary had a little lamb', 'ring around the 
rosie', 'red'),
+    (null, null, null, null, null, null, null, null, null, null, null, null, 
null),
+    (3, 25, 6553, null, 0.14, 1923.141592654, 1.2301, '2014-08-24 17:21:30.0', 
'2014-08-26', false, 'its fleece was white as snow', 'a pocket full of posies', 
'blue' )
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__1
 POSTHOOK: Output: default@acid_ivnp
+POSTHOOK: Lineage: acid_ivnp.b EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10,
 type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.bi EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, 
type:string, comment:), ]
-POSTHOOK: Lineage: acid_ivnp.ch EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col12,
 type:string, comment:), ]
+POSTHOOK: Lineage: acid_ivnp.ch EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col13,
 type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.d EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.de EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.dt EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.f EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.i EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, 
type:string, comment:), ]
-POSTHOOK: Lineage: acid_ivnp.s SIMPLE 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10,
 type:string, comment:), ]
+POSTHOOK: Lineage: acid_ivnp.s SIMPLE 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11,
 type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.si EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.t EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.ti EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
-POSTHOOK: Lineage: acid_ivnp.vc EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11,
 type:string, comment:), ]
-PREHOOK: query: select ti, si, i, bi, f, d, de, t, dt, s, vc, ch from 
acid_ivnp order by ti
+POSTHOOK: Lineage: acid_ivnp.vc EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col12,
 type:string, comment:), ]
+PREHOOK: query: select * from acid_ivnp order by ti
 PREHOOK: type: QUERY
 PREHOOK: Input: default@acid_ivnp
 #### A masked pattern was here ####
-POSTHOOK: query: select ti, si, i, bi, f, d, de, t, dt, s, vc, ch from 
acid_ivnp order by ti
+POSTHOOK: query: select * from acid_ivnp order by ti
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@acid_ivnp
 #### A masked pattern was here ####
-1      257     65537   4294967297      3.14    3.141592654     109.23  
2014-08-25 17:21:30     2014-08-25      mary had a little lamb  ring around the 
rosie   red         
-3      25      6553    429496729       0.14    1923.141592654  1.23    
2014-08-24 17:21:30     2014-08-26      its fleece was white as snow    a 
pocket full of posies blue        
+NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL
+1      257     65537   4294967297      3.14    3.141592654     109.23  
2014-08-25 17:21:30     2014-08-25      true    mary had a little lamb  ring 
around the rosie   red         
+3      25      6553    NULL    0.14    1923.141592654  1.23    2014-08-24 
17:21:30     2014-08-26      false   its fleece was white as snow    a pocket 
full of posies blue        

Modified: 
hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out?rev=1626448&r1=1626447&r2=1626448&view=diff
==============================================================================
--- 
hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out
 (original)
+++ 
hive/trunk/ql/src/test/results/clientpositive/tez/insert_values_non_partitioned.q.out
 Sat Sep 20 14:33:55 2014
@@ -7,6 +7,7 @@ PREHOOK: query: create table acid_ivnp(t
                  de decimal(5,2),
                  t timestamp,
                  dt date,
+                 b boolean,
                  s string,
                  vc varchar(128),
                  ch char(12)) clustered by (i) into 2 buckets stored as orc
@@ -22,6 +23,7 @@ POSTHOOK: query: create table acid_ivnp(
                  de decimal(5,2),
                  t timestamp,
                  dt date,
+                 b boolean,
                  s string,
                  vc varchar(128),
                  ch char(12)) clustered by (i) into 2 buckets stored as orc
@@ -29,36 +31,40 @@ POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@acid_ivnp
 PREHOOK: query: insert into table acid_ivnp values 
-    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', 'mary had a little lamb', 'ring around the rosie', 
'red'),
-    (3, 25, 6553, 429496729, 0.14, 1923.141592654, 1.2301, '2014-08-24 
17:21:30.0', '2014-08-26', 'its fleece was white as snow', 'a pocket full of 
posies', 'blue' )
+    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', true, 'mary had a little lamb', 'ring around the 
rosie', 'red'),
+    (null, null, null, null, null, null, null, null, null, null, null, null, 
null),
+    (3, 25, 6553, null, 0.14, 1923.141592654, 1.2301, '2014-08-24 17:21:30.0', 
'2014-08-26', false, 'its fleece was white as snow', 'a pocket full of posies', 
'blue' )
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__1
 PREHOOK: Output: default@acid_ivnp
 POSTHOOK: query: insert into table acid_ivnp values 
-    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', 'mary had a little lamb', 'ring around the rosie', 
'red'),
-    (3, 25, 6553, 429496729, 0.14, 1923.141592654, 1.2301, '2014-08-24 
17:21:30.0', '2014-08-26', 'its fleece was white as snow', 'a pocket full of 
posies', 'blue' )
+    (1, 257, 65537, 4294967297, 3.14, 3.141592654, 109.23, '2014-08-25 
17:21:30.0', '2014-08-25', true, 'mary had a little lamb', 'ring around the 
rosie', 'red'),
+    (null, null, null, null, null, null, null, null, null, null, null, null, 
null),
+    (3, 25, 6553, null, 0.14, 1923.141592654, 1.2301, '2014-08-24 17:21:30.0', 
'2014-08-26', false, 'its fleece was white as snow', 'a pocket full of posies', 
'blue' )
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__1
 POSTHOOK: Output: default@acid_ivnp
+POSTHOOK: Lineage: acid_ivnp.b EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10,
 type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.bi EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, 
type:string, comment:), ]
-POSTHOOK: Lineage: acid_ivnp.ch EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col12,
 type:string, comment:), ]
+POSTHOOK: Lineage: acid_ivnp.ch EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col13,
 type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.d EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.de EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.dt EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.f EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.i EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, 
type:string, comment:), ]
-POSTHOOK: Lineage: acid_ivnp.s SIMPLE 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10,
 type:string, comment:), ]
+POSTHOOK: Lineage: acid_ivnp.s SIMPLE 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11,
 type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.si EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.t EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, 
type:string, comment:), ]
 POSTHOOK: Lineage: acid_ivnp.ti EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, 
type:string, comment:), ]
-POSTHOOK: Lineage: acid_ivnp.vc EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11,
 type:string, comment:), ]
-PREHOOK: query: select ti, si, i, bi, f, d, de, t, dt, s, vc, ch from 
acid_ivnp order by ti
+POSTHOOK: Lineage: acid_ivnp.vc EXPRESSION 
[(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col12,
 type:string, comment:), ]
+PREHOOK: query: select * from acid_ivnp order by ti
 PREHOOK: type: QUERY
 PREHOOK: Input: default@acid_ivnp
 #### A masked pattern was here ####
-POSTHOOK: query: select ti, si, i, bi, f, d, de, t, dt, s, vc, ch from 
acid_ivnp order by ti
+POSTHOOK: query: select * from acid_ivnp order by ti
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@acid_ivnp
 #### A masked pattern was here ####
-1      257     65537   4294967297      3.14    3.141592654     109.23  
2014-08-25 17:21:30     2014-08-25      mary had a little lamb  ring around the 
rosie   red         
-3      25      6553    429496729       0.14    1923.141592654  1.23    
2014-08-24 17:21:30     2014-08-26      its fleece was white as snow    a 
pocket full of posies blue        
+NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL
+1      257     65537   4294967297      3.14    3.141592654     109.23  
2014-08-25 17:21:30     2014-08-25      true    mary had a little lamb  ring 
around the rosie   red         
+3      25      6553    NULL    0.14    1923.141592654  1.23    2014-08-24 
17:21:30     2014-08-26      false   its fleece was white as snow    a pocket 
full of posies blue        


Reply via email to