This is an automated email from the ASF dual-hosted git repository.

daijy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new e71b096  HIVE-21295: StorageHandler shall convert date to string using 
Hive convention (Daniel Dai, reviewed by Jesus Camacho Rodriguez)
e71b096 is described below

commit e71b09677b610c9b77c924105cc624b46e90695c
Author: Daniel Dai <dai...@gmail.com>
AuthorDate: Thu Feb 21 10:23:49 2019 -0800

    HIVE-21295: StorageHandler shall convert date to string using Hive 
convention (Daniel Dai, reviewed by Jesus Camacho Rodriguez)
    
    Signed-off-by: Jesus Camacho Rodriguez <jcama...@apache.org>
---
 .../org/apache/hive/storage/jdbc/JdbcSerDe.java    |  7 +++-
 .../queries/clientpositive/external_jdbc_table.q   | 17 +++++-----
 .../clientpositive/llap/external_jdbc_table.q.out  | 38 +++++++++++++++-------
 3 files changed, 41 insertions(+), 21 deletions(-)

diff --git 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java
index 87ba682..aabfd7c 100644
--- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java
+++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java
@@ -37,6 +37,7 @@ import org.apache.hadoop.io.MapWritable;
 import org.apache.hadoop.io.ObjectWritable;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.io.Writable;
+import org.apache.hive.common.util.DateUtils;
 import org.apache.hive.storage.jdbc.conf.JdbcStorageConfigManager;
 import org.apache.hive.storage.jdbc.dao.DatabaseAccessor;
 import org.apache.hive.storage.jdbc.dao.DatabaseAccessorFactory;
@@ -197,7 +198,11 @@ public class JdbcSerDe extends AbstractSerDe {
         case CHAR:
         case VARCHAR:
         case STRING:
-          rowVal = rowVal.toString();
+          if (rowVal instanceof java.sql.Date) {
+            rowVal = DateUtils.getDateFormat().format((java.sql.Date)rowVal);
+          } else {
+            rowVal = rowVal.toString();
+          }
           break;
         case DATE:
           if (rowVal instanceof java.sql.Date) {
diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table.q 
b/ql/src/test/queries/clientpositive/external_jdbc_table.q
index 3e629d2..36ed93a 100644
--- a/ql/src/test/queries/clientpositive/external_jdbc_table.q
+++ b/ql/src/test/queries/clientpositive/external_jdbc_table.q
@@ -34,19 +34,19 @@ FROM src
 SELECT
 
 dboutput ( 
'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','',
-'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, 
"dkey" DOUBLE )' ),
+'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, 
"dkey" DOUBLE, "datekey" DATE)' ),
 
 
dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','',
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','20','20','20.0','20.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','20','20','20.0','20.0','1999-02-22'),
 
 
dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','',
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','-20','8','9.0','11.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','-20','8','9.0','11.0','2000-03-15'),
 
 
dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','',
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','101','-16','66.0','-75.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','101','-16','66.0','-75.0','2010-04-01'),
 
 
dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_derby_as_external_table_db;create=true','','',
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','40','50','-455.4543','330.767')
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','40','50','-455.4543','330.767','2010-04-02')
 
 limit 1;
 
@@ -75,7 +75,8 @@ CREATE EXTERNAL TABLE ext_simple_derby_table2
  ikey int,
  bkey bigint,
  fkey float,
- dkey double
+ dkey double,
+ datekey string
 )
 STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
 TBLPROPERTIES (
@@ -96,7 +97,7 @@ select dkey,fkey,bkey,ikey from ext_simple_derby_table1;
 select bkey+ikey,fkey+dkey from ext_simple_derby_table1;
 select abs(dkey),abs(ikey),abs(fkey),abs(bkey) from ext_simple_derby_table1;
 
-
+select datekey from ext_simple_derby_table2;
 
 --Test aggregation
 select count(*) from ext_simple_derby_table1;
@@ -184,4 +185,4 @@ SELECT bkey FROM ext_simple_derby_table2;
 
 
 
---select dkey from ext_simple_derby_table1 order by dkey limit 10 offset 60;
\ No newline at end of file
+--select dkey from ext_simple_derby_table1 order by dkey limit 10 offset 60;
diff --git a/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out 
b/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out
index 2fa37f5..a3b0ac4 100644
--- a/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out
+++ b/ql/src/test/results/clientpositive/llap/external_jdbc_table.q.out
@@ -64,19 +64,19 @@ PREHOOK: query: FROM src
 SELECT
 
 #### A masked pattern was here ####
-'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, 
"dkey" DOUBLE )' ),
+'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, 
"dkey" DOUBLE, "datekey" DATE)' ),
 
 #### A masked pattern was here ####
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','20','20','20.0','20.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','20','20','20.0','20.0','1999-02-22'),
 
 #### A masked pattern was here ####
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','-20','8','9.0','11.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','-20','8','9.0','11.0','2000-03-15'),
 
 #### A masked pattern was here ####
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','101','-16','66.0','-75.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','101','-16','66.0','-75.0','2010-04-01'),
 
 #### A masked pattern was here ####
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','40','50','-455.4543','330.767')
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','40','50','-455.4543','330.767','2010-04-02')
 
 limit 1
 PREHOOK: type: QUERY
@@ -87,19 +87,19 @@ POSTHOOK: query: FROM src
 SELECT
 
 #### A masked pattern was here ####
-'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, 
"dkey" DOUBLE )' ),
+'CREATE TABLE SIMPLE_DERBY_TABLE2 ("ikey" INTEGER, "bkey" BIGINT, "fkey" REAL, 
"dkey" DOUBLE, "datekey" DATE)' ),
 
 #### A masked pattern was here ####
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','20','20','20.0','20.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','20','20','20.0','20.0','1999-02-22'),
 
 #### A masked pattern was here ####
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','-20','8','9.0','11.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','-20','8','9.0','11.0','2000-03-15'),
 
 #### A masked pattern was here ####
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','101','-16','66.0','-75.0'),
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','101','-16','66.0','-75.0','2010-04-01'),
 
 #### A masked pattern was here ####
-'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey") VALUES 
(?,?,?,?)','40','50','-455.4543','330.767')
+'INSERT INTO SIMPLE_DERBY_TABLE2 ("ikey","bkey","fkey","dkey","datekey") 
VALUES (?,?,?,?,?)','40','50','-455.4543','330.767','2010-04-02')
 
 limit 1
 POSTHOOK: type: QUERY
@@ -151,7 +151,8 @@ PREHOOK: query: CREATE EXTERNAL TABLE 
ext_simple_derby_table2
  ikey int,
  bkey bigint,
  fkey float,
- dkey double
+ dkey double,
+ datekey string
 )
 STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
 TBLPROPERTIES (
@@ -171,7 +172,8 @@ POSTHOOK: query: CREATE EXTERNAL TABLE 
ext_simple_derby_table2
  ikey int,
  bkey bigint,
  fkey float,
- dkey double
+ dkey double,
+ datekey string
 )
 STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
 TBLPROPERTIES (
@@ -234,6 +236,18 @@ POSTHOOK: Input: default@ext_simple_derby_table1
 20.0   20      20.0    20
 74.0   100     65.0    15
 330.76 44      455.4540100097656       53
+PREHOOK: query: select datekey from ext_simple_derby_table2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@ext_simple_derby_table2
+#### A masked pattern was here ####
+POSTHOOK: query: select datekey from ext_simple_derby_table2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@ext_simple_derby_table2
+#### A masked pattern was here ####
+1999-02-22
+2000-03-15
+2010-04-01
+2010-04-02
 PREHOOK: query: select count(*) from ext_simple_derby_table1
 PREHOOK: type: QUERY
 PREHOOK: Input: default@ext_simple_derby_table1

Reply via email to