You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2009/08/12 01:43:20 UTC
svn commit: r803327 - in /hadoop/hive/trunk: CHANGES.txt
ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
ql/src/test/queries/clientpositive/null_column.q
ql/src/test/results/clientpositive/null_column.q.out
Author: namit
Date: Tue Aug 11 23:43:19 2009
New Revision: 803327
URL: http://svn.apache.org/viewvc?rev=803327&view=rev
Log:
HIVE-734. problem while inserting nulls. (Ning Zhang via namit)
Added:
hadoop/hive/trunk/ql/src/test/queries/clientpositive/null_column.q
hadoop/hive/trunk/ql/src/test/results/clientpositive/null_column.q.out
Modified:
hadoop/hive/trunk/CHANGES.txt
hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
Modified: hadoop/hive/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/CHANGES.txt?rev=803327&r1=803326&r2=803327&view=diff
==============================================================================
--- hadoop/hive/trunk/CHANGES.txt (original)
+++ hadoop/hive/trunk/CHANGES.txt Tue Aug 11 23:43:19 2009
@@ -12,6 +12,8 @@
BUG FIXES
+ HIVE-734. problem while inserting nulls. (Ning Zhang via namit)
+
Release 0.4.0 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=803327&r1=803326&r2=803327&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Tue Aug 11 23:43:19 2009
@@ -128,6 +128,8 @@
import org.apache.hadoop.hive.ql.hooks.ReadEntity;
import org.apache.hadoop.hive.ql.hooks.WriteEntity;
+import org.apache.hadoop.hive.serde.Constants;
+
/**
* Implementation of the semantic analyzer
*/
@@ -2525,7 +2527,21 @@
first = false;
cols = cols.concat(colInfo.getInternalName());
- colTypes = colTypes.concat(colInfo.getType().getTypeName());
+
+ // Replace VOID type with string when the output is a temp table or local files.
+ // A VOID type can be generated under the query:
+ //
+ // select NULL from tt;
+ // or
+ // insert overwrite local directory "abc" select NULL from tt;
+ //
+ // where there is no column type to which the NULL value should be converted.
+ //
+ String tName = colInfo.getType().getTypeName();
+ if ( tName.equals(Constants.VOID_TYPE_NAME) )
+ colTypes = colTypes.concat(Constants.STRING_TYPE_NAME);
+ else
+ colTypes = colTypes.concat(tName);
}
if (!ctx.isMRTmpFileURI(destStr)) {
Added: hadoop/hive/trunk/ql/src/test/queries/clientpositive/null_column.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/null_column.q?rev=803327&view=auto
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/null_column.q (added)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/null_column.q Tue Aug 11 23:43:19 2009
@@ -0,0 +1,23 @@
+drop table temp_null;
+drop table tt;
+drop table tt_b;
+
+create table temp_null(a int) stored as textfile;
+load data local inpath '../data/files/test.dat' overwrite into table temp_null;
+
+select null, null from temp_null;
+
+create table tt(a int, b string);
+insert overwrite table tt select null, null from temp_null;
+select * from tt;
+
+create table tt_b(a int, b string) row format serde "org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe";
+insert overwrite table tt_b select null, null from temp_null;
+select * from tt_b;
+
+insert overwrite directory "../build/ql/test/data/warehouse/null_columns.out" select null, null from temp_null;
+dfs -cat ../build/ql/test/data/warehouse/null_columns.out/*;
+
+drop table tt;
+drop table tt_b;
+drop table temp_null;
Added: hadoop/hive/trunk/ql/src/test/results/clientpositive/null_column.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/null_column.q.out?rev=803327&view=auto
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/null_column.q.out (added)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/null_column.q.out Tue Aug 11 23:43:19 2009
@@ -0,0 +1,52 @@
+query: drop table temp_null
+query: drop table tt
+query: drop table tt_b
+query: create table temp_null(a int) stored as textfile
+query: load data local inpath '../data/files/test.dat' overwrite into table temp_null
+query: select null, null from temp_null
+Input: default/temp_null
+Output: file:/data/users/nzhang/work/734/734-trunk-apache-hive/build/ql/tmp/2083094836/10000
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+query: create table tt(a int, b string)
+query: insert overwrite table tt select null, null from temp_null
+Input: default/temp_null
+Output: default/tt
+query: select * from tt
+Input: default/tt
+Output: file:/data/users/nzhang/work/734/734-trunk-apache-hive/build/ql/tmp/2090243542/10000
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+query: create table tt_b(a int, b string) row format serde "org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe"
+query: insert overwrite table tt_b select null, null from temp_null
+Input: default/temp_null
+Output: default/tt_b
+query: select * from tt_b
+Input: default/tt_b
+Output: file:/data/users/nzhang/work/734/734-trunk-apache-hive/build/ql/tmp/1191541403/10000
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+query: insert overwrite directory "../build/ql/test/data/warehouse/null_columns.out" select null, null from temp_null
+Input: default/temp_null
+Output: ../build/ql/test/data/warehouse/null_columns.out
+\N\N
+\N\N
+\N\N
+\N\N
+\N\N
+\N\N
+query: drop table tt
+query: drop table tt_b
+query: drop table temp_null