You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jd...@apache.org on 2014/11/11 22:08:58 UTC

svn commit: r1638402 - in /hive/trunk/ql/src: java/org/apache/hadoop/hive/ql/parse/ test/queries/clientnegative/ test/queries/clientpositive/ test/results/clientnegative/ test/results/clientpositive/

Author: jdere
Date: Tue Nov 11 21:08:56 2014
New Revision: 1638402

URL: http://svn.apache.org/r1638402
Log:
HIVE-3187: support ISO-2012 timestamp literals (Navis via Jason Dere)

Added:
    hive/trunk/ql/src/test/queries/clientnegative/timestamp_literal.q
    hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp.q
    hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp2.q
    hive/trunk/ql/src/test/queries/clientpositive/timestamp_literal.q
    hive/trunk/ql/src/test/results/clientnegative/timestamp_literal.q.out
    hive/trunk/ql/src/test/results/clientpositive/partition_timestamp.q.out
    hive/trunk/ql/src/test/results/clientpositive/partition_timestamp2.q.out
    hive/trunk/ql/src/test/results/clientpositive/timestamp_literal.q.out
Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
    hive/trunk/ql/src/test/results/clientnegative/date_literal2.q.out
    hive/trunk/ql/src/test/results/clientnegative/date_literal3.q.out
    hive/trunk/ql/src/test/results/clientnegative/illegal_partition_type4.q.out

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g?rev=1638402&r1=1638401&r2=1638402&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g Tue Nov 11 21:08:56 2014
@@ -109,6 +109,7 @@ TOK_DATE;
 TOK_DATELITERAL;
 TOK_DATETIME;
 TOK_TIMESTAMP;
+TOK_TIMESTAMPLITERAL;
 TOK_STRING;
 TOK_CHAR;
 TOK_VARCHAR;

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g?rev=1638402&r1=1638401&r2=1638402&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g Tue Nov 11 21:08:56 2014
@@ -218,6 +218,7 @@ constant
     :
     Number
     | dateLiteral
+    | timestampLiteral
     | StringLiteral
     | stringLiteralSequence
     | BigintLiteral
@@ -250,6 +251,14 @@ dateLiteral
     }
     ;
 
+timestampLiteral
+    :
+    KW_TIMESTAMP StringLiteral ->
+    {
+      adaptor.create(TOK_TIMESTAMPLITERAL, $StringLiteral.text)
+    }
+    ;
+
 expression
 @init { gParent.pushMsg("expression specification", state); }
 @after { gParent.popMsg(state); }
@@ -260,7 +269,6 @@ expression
 atomExpression
     :
     KW_NULL -> TOK_NULL
-    | dateLiteral
     | constant
     | castExpression
     | caseExpression

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java?rev=1638402&r1=1638401&r2=1638402&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java Tue Nov 11 21:08:56 2014
@@ -19,6 +19,7 @@
 package org.apache.hadoop.hive.ql.parse;
 
 import java.sql.Date;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -170,7 +171,8 @@ public class TypeCheckProcFactory {
         tf.getStrExprProcessor());
     opRules.put(new RuleRegExp("R4", HiveParser.KW_TRUE + "%|"
         + HiveParser.KW_FALSE + "%"), tf.getBoolExprProcessor());
-    opRules.put(new RuleRegExp("R5", HiveParser.TOK_DATELITERAL + "%"), tf.getDateExprProcessor());
+    opRules.put(new RuleRegExp("R5", HiveParser.TOK_DATELITERAL + "%|"
+        + HiveParser.TOK_TIMESTAMPLITERAL + "%"), tf.getDateTimeExprProcessor());
     opRules.put(new RuleRegExp("R6", HiveParser.TOK_TABLE_OR_COL + "%"),
         tf.getColumnExprProcessor());
     opRules.put(new RuleRegExp("R7", HiveParser.TOK_SUBQUERY_OP + "%"),
@@ -420,7 +422,7 @@ public class TypeCheckProcFactory {
   /**
    * Processor for date constants.
    */
-  public static class DateExprProcessor implements NodeProcessor {
+  public static class DateTimeExprProcessor implements NodeProcessor {
 
     @Override
     public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx,
@@ -437,14 +439,24 @@ public class TypeCheckProcFactory {
       }
 
       ASTNode expr = (ASTNode) nd;
+      String timeString = BaseSemanticAnalyzer.stripQuotes(expr.getText());
 
       // Get the string value and convert to a Date value.
       try {
-        String dateString = BaseSemanticAnalyzer.stripQuotes(expr.getText());
-        Date date = Date.valueOf(dateString);
-        return new ExprNodeConstantDesc(TypeInfoFactory.dateTypeInfo, date);
-      } catch (IllegalArgumentException err) {
-        throw new SemanticException("Unable to convert date literal string to date value.", err);
+        // todo replace below with joda-time, which supports timezone
+        if (expr.getType() == HiveParser.TOK_DATELITERAL) {
+          PrimitiveTypeInfo typeInfo = TypeInfoFactory.dateTypeInfo;
+          return new ExprNodeConstantDesc(typeInfo,
+              Date.valueOf(timeString));
+        }
+        if (expr.getType() == HiveParser.TOK_TIMESTAMPLITERAL) {
+          return new ExprNodeConstantDesc(TypeInfoFactory.timestampTypeInfo,
+              Timestamp.valueOf(timeString));
+        }
+        throw new IllegalArgumentException("Invalid time literal type " + expr.getType());
+      } catch (Exception err) {
+        throw new SemanticException(
+            "Unable to convert time literal '" + timeString + "' to time value.", err);
       }
     }
   }
@@ -454,8 +466,8 @@ public class TypeCheckProcFactory {
    *
    * @return DateExprProcessor.
    */
-  public DateExprProcessor getDateExprProcessor() {
-    return new DateExprProcessor();
+  public DateTimeExprProcessor getDateTimeExprProcessor() {
+    return new DateTimeExprProcessor();
   }
 
   /**

Added: hive/trunk/ql/src/test/queries/clientnegative/timestamp_literal.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/timestamp_literal.q?rev=1638402&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/timestamp_literal.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/timestamp_literal.q Tue Nov 11 21:08:56 2014
@@ -0,0 +1,2 @@
+-- TimeZone is not yet supported
+SELECT TIMESTAMP '2012-12-29 20:01:00 +03:00';

Added: hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp.q?rev=1638402&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp.q Tue Nov 11 21:08:56 2014
@@ -0,0 +1,57 @@
+drop table partition_timestamp_1;
+
+create table partition_timestamp_1 (key string, value string) partitioned by (dt timestamp, region string);
+
+insert overwrite table partition_timestamp_1 partition(dt='2000-01-01 01:00:00', region= '1')
+  select * from src tablesample (10 rows);
+insert overwrite table partition_timestamp_1 partition(dt='2000-01-01 02:00:00', region= '2')
+  select * from src tablesample (5 rows);
+insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 01:00:00', region= '2020-20-20')
+  select * from src tablesample (5 rows);
+insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 02:00:00', region= '1')
+  select * from src tablesample (20 rows);
+insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 03:00:00', region= '10')
+  select * from src tablesample (11 rows);
+
+select distinct dt from partition_timestamp_1;
+select * from partition_timestamp_1 where dt = '2000-01-01 01:00:00' and region = '2' order by key,value;
+
+-- 10
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 01:00:00';
+-- 10.  Also try with string value in predicate
+select count(*) from partition_timestamp_1 where dt = '2000-01-01 01:00:00';
+-- 5
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 02:00:00' and region = '2';
+-- 11
+select count(*) from partition_timestamp_1 where dt = timestamp '2001-01-01 03:00:00' and region = '10';
+-- 30
+select count(*) from partition_timestamp_1 where region = '1';
+-- 0
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 01:00:00' and region = '3';
+-- 0
+select count(*) from partition_timestamp_1 where dt = timestamp '1999-01-01 01:00:00';
+
+-- Try other comparison operations
+
+-- 20
+select count(*) from partition_timestamp_1 where dt > timestamp '2000-01-01 01:00:00' and region = '1';
+-- 10
+select count(*) from partition_timestamp_1 where dt < timestamp '2000-01-02 01:00:00' and region = '1';
+-- 20
+select count(*) from partition_timestamp_1 where dt >= timestamp '2000-01-02 01:00:00' and region = '1';
+-- 10
+select count(*) from partition_timestamp_1 where dt <= timestamp '2000-01-01 01:00:00' and region = '1';
+-- 20
+select count(*) from partition_timestamp_1 where dt <> timestamp '2000-01-01 01:00:00' and region = '1';
+-- 10
+select count(*) from partition_timestamp_1 where dt between timestamp '1999-12-30 12:00:00' and timestamp '2000-01-03 12:00:00' and region = '1';
+
+
+-- Try a string key with timestamp-like strings
+
+-- 5
+select count(*) from partition_timestamp_1 where region = '2020-20-20';
+-- 5
+select count(*) from partition_timestamp_1 where region > '2010-01-01';
+
+drop table partition_timestamp_1;

Added: hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp2.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp2.q?rev=1638402&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp2.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/partition_timestamp2.q Tue Nov 11 21:08:56 2014
@@ -0,0 +1,56 @@
+drop table partition_timestamp2_1;
+
+create table partition_timestamp2_1 (key string, value string) partitioned by (dt timestamp, region int);
+
+-- test timestamp literal syntax
+from (select * from src tablesample (1 rows)) x
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 01:00:00', region=1) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1999-01-01 00:00:00', region=2) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1999-01-01 01:00:00', region=2) select *;
+
+select distinct dt from partition_timestamp2_1;
+select * from partition_timestamp2_1;
+
+-- insert overwrite
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1)
+  select 'changed_key', 'changed_value' from src tablesample (2 rows);
+select * from partition_timestamp2_1;
+
+-- truncate
+truncate table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1);
+select distinct dt from partition_timestamp2_1;
+select * from partition_timestamp2_1;
+
+-- alter table add partition
+alter table partition_timestamp2_1 add partition (dt=timestamp '1980-01-02 00:00:00', region=3);
+select distinct dt from partition_timestamp2_1;
+select * from partition_timestamp2_1;
+
+-- alter table drop
+alter table partition_timestamp2_1 drop partition (dt=timestamp '1999-01-01 01:00:00', region=2);
+select distinct dt from partition_timestamp2_1;
+select * from partition_timestamp2_1;
+
+-- alter table set serde
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe';
+
+-- alter table set fileformat
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  set fileformat rcfile;
+describe extended partition_timestamp2_1  partition(dt=timestamp '1980-01-02 00:00:00', region=3);
+
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  select * from src tablesample (2 rows);
+select * from partition_timestamp2_1 order by key,value,dt,region;
+
+-- alter table set location
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  set location "file:///tmp/partition_timestamp2_1";
+describe extended partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3);
+
+-- alter table touch
+alter table partition_timestamp2_1 touch partition(dt=timestamp '1980-01-02 00:00:00', region=3);
+
+drop table partition_timestamp2_1;

Added: hive/trunk/ql/src/test/queries/clientpositive/timestamp_literal.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/timestamp_literal.q?rev=1638402&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/timestamp_literal.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/timestamp_literal.q Tue Nov 11 21:08:56 2014
@@ -0,0 +1,12 @@
+explain
+select timestamp '2011-01-01 01:01:01';
+select timestamp '2011-01-01 01:01:01';
+
+explain
+select '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100';
+select '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100';
+
+explain
+select 1 where timestamp '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100';
+select 1 where timestamp '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100';
+

Modified: hive/trunk/ql/src/test/results/clientnegative/date_literal2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/date_literal2.q.out?rev=1638402&r1=1638401&r2=1638402&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/date_literal2.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/date_literal2.q.out Tue Nov 11 21:08:56 2014
@@ -1 +1 @@
-FAILED: SemanticException Unable to convert date literal string to date value.
+FAILED: SemanticException Unable to convert time literal '2001/01/01' to time value.

Modified: hive/trunk/ql/src/test/results/clientnegative/date_literal3.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/date_literal3.q.out?rev=1638402&r1=1638401&r2=1638402&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/date_literal3.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/date_literal3.q.out Tue Nov 11 21:08:56 2014
@@ -1 +1 @@
-FAILED: SemanticException Unable to convert date literal string to date value.
+FAILED: SemanticException Unable to convert time literal '2001-01-32' to time value.

Modified: hive/trunk/ql/src/test/results/clientnegative/illegal_partition_type4.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/illegal_partition_type4.q.out?rev=1638402&r1=1638401&r2=1638402&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/illegal_partition_type4.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/illegal_partition_type4.q.out Tue Nov 11 21:08:56 2014
@@ -6,4 +6,4 @@ POSTHOOK: query: create table tab1(s str
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tab1
-FAILED: SemanticException Unable to convert date literal string to date value.
+FAILED: SemanticException Unable to convert time literal 'foo' to time value.

Added: hive/trunk/ql/src/test/results/clientnegative/timestamp_literal.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/timestamp_literal.q.out?rev=1638402&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/timestamp_literal.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/timestamp_literal.q.out Tue Nov 11 21:08:56 2014
@@ -0,0 +1 @@
+FAILED: SemanticException Unable to convert time literal '2012-12-29 20:01:00 +03:00' to time value.

Added: hive/trunk/ql/src/test/results/clientpositive/partition_timestamp.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/partition_timestamp.q.out?rev=1638402&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/partition_timestamp.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/partition_timestamp.q.out Tue Nov 11 21:08:56 2014
@@ -0,0 +1,312 @@
+PREHOOK: query: drop table partition_timestamp_1
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table partition_timestamp_1
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: create table partition_timestamp_1 (key string, value string) partitioned by (dt timestamp, region string)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@partition_timestamp_1
+POSTHOOK: query: create table partition_timestamp_1 (key string, value string) partitioned by (dt timestamp, region string)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@partition_timestamp_1
+PREHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2000-01-01 01:00:00', region= '1')
+  select * from src tablesample (10 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+POSTHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2000-01-01 01:00:00', region= '1')
+  select * from src tablesample (10 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2000-01-01 01:00:00,region=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2000-01-01 01:00:00,region=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2000-01-01 02:00:00', region= '2')
+  select * from src tablesample (5 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@partition_timestamp_1@dt=2000-01-01 02%3A00%3A00/region=2
+POSTHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2000-01-01 02:00:00', region= '2')
+  select * from src tablesample (5 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@partition_timestamp_1@dt=2000-01-01 02%3A00%3A00/region=2
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2000-01-01 02:00:00,region=2).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2000-01-01 02:00:00,region=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 01:00:00', region= '2020-20-20')
+  select * from src tablesample (5 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@partition_timestamp_1@dt=2001-01-01 01%3A00%3A00/region=2020-20-20
+POSTHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 01:00:00', region= '2020-20-20')
+  select * from src tablesample (5 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@partition_timestamp_1@dt=2001-01-01 01%3A00%3A00/region=2020-20-20
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2001-01-01 01:00:00,region=2020-20-20).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2001-01-01 01:00:00,region=2020-20-20).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 02:00:00', region= '1')
+  select * from src tablesample (20 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+POSTHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 02:00:00', region= '1')
+  select * from src tablesample (20 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2001-01-01 02:00:00,region=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2001-01-01 02:00:00,region=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 03:00:00', region= '10')
+  select * from src tablesample (11 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@partition_timestamp_1@dt=2001-01-01 03%3A00%3A00/region=10
+POSTHOOK: query: insert overwrite table partition_timestamp_1 partition(dt='2001-01-01 03:00:00', region= '10')
+  select * from src tablesample (11 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@partition_timestamp_1@dt=2001-01-01 03%3A00%3A00/region=10
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2001-01-01 03:00:00,region=10).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp_1 PARTITION(dt=2001-01-01 03:00:00,region=10).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: select distinct dt from partition_timestamp_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 02%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 01%3A00%3A00/region=2020-20-20
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 03%3A00%3A00/region=10
+#### A masked pattern was here ####
+POSTHOOK: query: select distinct dt from partition_timestamp_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 02%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 01%3A00%3A00/region=2020-20-20
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 03%3A00%3A00/region=10
+#### A masked pattern was here ####
+2000-01-01 01:00:00
+2000-01-01 02:00:00
+2001-01-01 01:00:00
+2001-01-01 02:00:00
+2001-01-01 03:00:00
+PREHOOK: query: select * from partition_timestamp_1 where dt = '2000-01-01 01:00:00' and region = '2' order by key,value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from partition_timestamp_1 where dt = '2000-01-01 01:00:00' and region = '2' order by key,value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+#### A masked pattern was here ####
+PREHOOK: query: -- 10
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 01:00:00'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 01:00:00'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+10
+PREHOOK: query: -- 10.  Also try with string value in predicate
+select count(*) from partition_timestamp_1 where dt = '2000-01-01 01:00:00'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10.  Also try with string value in predicate
+select count(*) from partition_timestamp_1 where dt = '2000-01-01 01:00:00'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+10
+PREHOOK: query: -- 5
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 02:00:00' and region = '2'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 02%3A00%3A00/region=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- 5
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 02:00:00' and region = '2'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 02%3A00%3A00/region=2
+#### A masked pattern was here ####
+5
+PREHOOK: query: -- 11
+select count(*) from partition_timestamp_1 where dt = timestamp '2001-01-01 03:00:00' and region = '10'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 03%3A00%3A00/region=10
+#### A masked pattern was here ####
+POSTHOOK: query: -- 11
+select count(*) from partition_timestamp_1 where dt = timestamp '2001-01-01 03:00:00' and region = '10'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 03%3A00%3A00/region=10
+#### A masked pattern was here ####
+11
+PREHOOK: query: -- 30
+select count(*) from partition_timestamp_1 where region = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 30
+select count(*) from partition_timestamp_1 where region = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+#### A masked pattern was here ####
+30
+PREHOOK: query: -- 0
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 01:00:00' and region = '3'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 0
+select count(*) from partition_timestamp_1 where dt = timestamp '2000-01-01 01:00:00' and region = '3'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- 0
+select count(*) from partition_timestamp_1 where dt = timestamp '1999-01-01 01:00:00'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 0
+select count(*) from partition_timestamp_1 where dt = timestamp '1999-01-01 01:00:00'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- Try other comparison operations
+
+-- 20
+select count(*) from partition_timestamp_1 where dt > timestamp '2000-01-01 01:00:00' and region = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- Try other comparison operations
+
+-- 20
+select count(*) from partition_timestamp_1 where dt > timestamp '2000-01-01 01:00:00' and region = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+#### A masked pattern was here ####
+20
+PREHOOK: query: -- 10
+select count(*) from partition_timestamp_1 where dt < timestamp '2000-01-02 01:00:00' and region = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10
+select count(*) from partition_timestamp_1 where dt < timestamp '2000-01-02 01:00:00' and region = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+10
+PREHOOK: query: -- 20
+select count(*) from partition_timestamp_1 where dt >= timestamp '2000-01-02 01:00:00' and region = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 20
+select count(*) from partition_timestamp_1 where dt >= timestamp '2000-01-02 01:00:00' and region = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+#### A masked pattern was here ####
+20
+PREHOOK: query: -- 10
+select count(*) from partition_timestamp_1 where dt <= timestamp '2000-01-01 01:00:00' and region = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10
+select count(*) from partition_timestamp_1 where dt <= timestamp '2000-01-01 01:00:00' and region = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+10
+PREHOOK: query: -- 20
+select count(*) from partition_timestamp_1 where dt <> timestamp '2000-01-01 01:00:00' and region = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 20
+select count(*) from partition_timestamp_1 where dt <> timestamp '2000-01-01 01:00:00' and region = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 02%3A00%3A00/region=1
+#### A masked pattern was here ####
+20
+PREHOOK: query: -- 10
+select count(*) from partition_timestamp_1 where dt between timestamp '1999-12-30 12:00:00' and timestamp '2000-01-03 12:00:00' and region = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10
+select count(*) from partition_timestamp_1 where dt between timestamp '1999-12-30 12:00:00' and timestamp '2000-01-03 12:00:00' and region = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+10
+PREHOOK: query: -- Try a string key with timestamp-like strings
+
+-- 5
+select count(*) from partition_timestamp_1 where region = '2020-20-20'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 01%3A00%3A00/region=2020-20-20
+#### A masked pattern was here ####
+POSTHOOK: query: -- Try a string key with timestamp-like strings
+
+-- 5
+select count(*) from partition_timestamp_1 where region = '2020-20-20'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 01%3A00%3A00/region=2020-20-20
+#### A masked pattern was here ####
+5
+PREHOOK: query: -- 5
+select count(*) from partition_timestamp_1 where region > '2010-01-01'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 01%3A00%3A00/region=2020-20-20
+#### A masked pattern was here ####
+POSTHOOK: query: -- 5
+select count(*) from partition_timestamp_1 where region > '2010-01-01'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Input: default@partition_timestamp_1@dt=2001-01-01 01%3A00%3A00/region=2020-20-20
+#### A masked pattern was here ####
+5
+PREHOOK: query: drop table partition_timestamp_1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@partition_timestamp_1
+PREHOOK: Output: default@partition_timestamp_1
+POSTHOOK: query: drop table partition_timestamp_1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@partition_timestamp_1
+POSTHOOK: Output: default@partition_timestamp_1

Added: hive/trunk/ql/src/test/results/clientpositive/partition_timestamp2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/partition_timestamp2.q.out?rev=1638402&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/partition_timestamp2.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/partition_timestamp2.q.out Tue Nov 11 21:08:56 2014
@@ -0,0 +1,395 @@
+PREHOOK: query: drop table partition_timestamp2_1
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table partition_timestamp2_1
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: create table partition_timestamp2_1 (key string, value string) partitioned by (dt timestamp, region int)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@partition_timestamp2_1
+POSTHOOK: query: create table partition_timestamp2_1 (key string, value string) partitioned by (dt timestamp, region int)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@partition_timestamp2_1
+PREHOOK: query: -- test timestamp literal syntax
+from (select * from src tablesample (1 rows)) x
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 01:00:00', region=1) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1999-01-01 00:00:00', region=2) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1999-01-01 01:00:00', region=2) select *
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Output: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: Output: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Output: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+POSTHOOK: query: -- test timestamp literal syntax
+from (select * from src tablesample (1 rows)) x
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 01:00:00', region=1) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1999-01-01 00:00:00', region=2) select *
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1999-01-01 01:00:00', region=2) select *
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: Output: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Output: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=1999-01-01 00:00:00,region=2).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=1999-01-01 00:00:00,region=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=1999-01-01 01:00:00,region=2).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=1999-01-01 01:00:00,region=2).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=2000-01-01 00:00:00,region=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=2000-01-01 00:00:00,region=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=2000-01-01 01:00:00,region=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=2000-01-01 01:00:00,region=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: select distinct dt from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select distinct dt from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+1999-01-01 00:00:00
+1999-01-01 01:00:00
+2000-01-01 00:00:00
+2000-01-01 01:00:00
+PREHOOK: query: select * from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+238	val_238	1999-01-01 00:00:00	2
+238	val_238	1999-01-01 01:00:00	2
+238	val_238	2000-01-01 00:00:00	1
+238	val_238	2000-01-01 01:00:00	1
+PREHOOK: query: -- insert overwrite
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1)
+  select 'changed_key', 'changed_value' from src tablesample (2 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: query: -- insert overwrite
+insert overwrite table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1)
+  select 'changed_key', 'changed_value' from src tablesample (2 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=2000-01-01 00:00:00,region=1).key SIMPLE []
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=2000-01-01 00:00:00,region=1).value SIMPLE []
+PREHOOK: query: select * from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+238	val_238	1999-01-01 00:00:00	2
+238	val_238	1999-01-01 01:00:00	2
+changed_key	changed_value	2000-01-01 00:00:00	1
+changed_key	changed_value	2000-01-01 00:00:00	1
+238	val_238	2000-01-01 01:00:00	1
+PREHOOK: query: -- truncate
+truncate table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Output: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: query: -- truncate
+truncate table partition_timestamp2_1 partition(dt=timestamp '2000-01-01 00:00:00', region=1)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Output: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: query: select distinct dt from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select distinct dt from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+1999-01-01 00:00:00
+1999-01-01 01:00:00
+2000-01-01 00:00:00
+2000-01-01 01:00:00
+PREHOOK: query: select * from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+238	val_238	1999-01-01 00:00:00	2
+238	val_238	1999-01-01 01:00:00	2
+238	val_238	2000-01-01 01:00:00	1
+PREHOOK: query: -- alter table add partition
+alter table partition_timestamp2_1 add partition (dt=timestamp '1980-01-02 00:00:00', region=3)
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Output: default@partition_timestamp2_1
+POSTHOOK: query: -- alter table add partition
+alter table partition_timestamp2_1 add partition (dt=timestamp '1980-01-02 00:00:00', region=3)
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Output: default@partition_timestamp2_1
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: query: select distinct dt from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select distinct dt from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+1980-01-02 00:00:00
+1999-01-01 00:00:00
+1999-01-01 01:00:00
+2000-01-01 00:00:00
+2000-01-01 01:00:00
+PREHOOK: query: select * from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+238	val_238	1999-01-01 00:00:00	2
+238	val_238	1999-01-01 01:00:00	2
+238	val_238	2000-01-01 01:00:00	1
+PREHOOK: query: -- alter table drop
+alter table partition_timestamp2_1 drop partition (dt=timestamp '1999-01-01 01:00:00', region=2)
+PREHOOK: type: ALTERTABLE_DROPPARTS
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Output: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+POSTHOOK: query: -- alter table drop
+alter table partition_timestamp2_1 drop partition (dt=timestamp '1999-01-01 01:00:00', region=2)
+POSTHOOK: type: ALTERTABLE_DROPPARTS
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1999-01-01 01%3A00%3A00/region=2
+PREHOOK: query: select distinct dt from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select distinct dt from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+1980-01-02 00:00:00
+1999-01-01 00:00:00
+2000-01-01 00:00:00
+2000-01-01 01:00:00
+PREHOOK: query: select * from partition_timestamp2_1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from partition_timestamp2_1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+238	val_238	1999-01-01 00:00:00	2
+238	val_238	2000-01-01 01:00:00	1
+PREHOOK: query: -- alter table set serde
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'
+PREHOOK: type: ALTERPARTITION_SERIALIZER
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: query: -- alter table set serde
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  set serde 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'
+POSTHOOK: type: ALTERPARTITION_SERIALIZER
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: query: -- alter table set fileformat
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  set fileformat rcfile
+PREHOOK: type: ALTERPARTITION_FILEFORMAT
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: query: -- alter table set fileformat
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  set fileformat rcfile
+POSTHOOK: type: ALTERPARTITION_FILEFORMAT
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: query: describe extended partition_timestamp2_1  partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: query: describe extended partition_timestamp2_1  partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@partition_timestamp2_1
+key                 	string              	                    
+value               	string              	                    
+dt                  	timestamp           	                    
+region              	int                 	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+dt                  	timestamp           	                    
+region              	int                 	                    
+	 	 
+#### A masked pattern was here ####
+PREHOOK: query: insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  select * from src tablesample (2 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: query: insert overwrite table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+  select * from src tablesample (2 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=1980-01-02 00:00:00,region=3).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: partition_timestamp2_1 PARTITION(dt=1980-01-02 00:00:00,region=3).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: select * from partition_timestamp2_1 order by key,value,dt,region
+PREHOOK: type: QUERY
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+PREHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+POSTHOOK: query: select * from partition_timestamp2_1 order by key,value,dt,region
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1999-01-01 00%3A00%3A00/region=2
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 00%3A00%3A00/region=1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=2000-01-01 01%3A00%3A00/region=1
+#### A masked pattern was here ####
+238	val_238	1980-01-02 00:00:00	3
+238	val_238	1999-01-01 00:00:00	2
+238	val_238	2000-01-01 01:00:00	1
+86	val_86	1980-01-02 00:00:00	3
+PREHOOK: query: -- alter table set location
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+#### A masked pattern was here ####
+PREHOOK: type: ALTERPARTITION_LOCATION
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+#### A masked pattern was here ####
+POSTHOOK: query: -- alter table set location
+alter table partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+#### A masked pattern was here ####
+POSTHOOK: type: ALTERPARTITION_LOCATION
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+#### A masked pattern was here ####
+PREHOOK: query: describe extended partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: query: describe extended partition_timestamp2_1 partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@partition_timestamp2_1
+key                 	string              	                    
+value               	string              	                    
+dt                  	timestamp           	                    
+region              	int                 	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+dt                  	timestamp           	                    
+region              	int                 	                    
+	 	 
+#### A masked pattern was here ####
+PREHOOK: query: -- alter table touch
+alter table partition_timestamp2_1 touch partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+PREHOOK: type: ALTERTABLE_TOUCH
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: query: -- alter table touch
+alter table partition_timestamp2_1 touch partition(dt=timestamp '1980-01-02 00:00:00', region=3)
+POSTHOOK: type: ALTERTABLE_TOUCH
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Input: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+POSTHOOK: Output: default@partition_timestamp2_1@dt=1980-01-02 00%3A00%3A00/region=3
+PREHOOK: query: drop table partition_timestamp2_1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@partition_timestamp2_1
+PREHOOK: Output: default@partition_timestamp2_1
+POSTHOOK: query: drop table partition_timestamp2_1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@partition_timestamp2_1
+POSTHOOK: Output: default@partition_timestamp2_1

Added: hive/trunk/ql/src/test/results/clientpositive/timestamp_literal.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/timestamp_literal.q.out?rev=1638402&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/timestamp_literal.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/timestamp_literal.q.out Tue Nov 11 21:08:56 2014
@@ -0,0 +1,99 @@
+PREHOOK: query: explain
+select timestamp '2011-01-01 01:01:01'
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select timestamp '2011-01-01 01:01:01'
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: _dummy_table
+          Row Limit Per Split: 1
+          Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE
+          Select Operator
+            expressions: 2011-01-01 01:01:01.0 (type: timestamp)
+            outputColumnNames: _col0
+            Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE
+            ListSink
+
+PREHOOK: query: select timestamp '2011-01-01 01:01:01'
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select timestamp '2011-01-01 01:01:01'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+2011-01-01 01:01:01
+PREHOOK: query: explain
+select '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100'
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100'
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: _dummy_table
+          Row Limit Per Split: 1
+          Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE
+          Select Operator
+            expressions: true (type: boolean)
+            outputColumnNames: _col0
+            Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE
+            ListSink
+
+PREHOOK: query: select '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100'
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+true
+PREHOOK: query: explain
+select 1 where timestamp '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100'
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select 1 where timestamp '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100'
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: _dummy_table
+          Row Limit Per Split: 1
+          Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE
+          Select Operator
+            expressions: 1 (type: int)
+            outputColumnNames: _col0
+            Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE
+            ListSink
+
+PREHOOK: query: select 1 where timestamp '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100'
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select 1 where timestamp '2011-01-01 01:01:01.101' <> timestamp '2011-01-01 01:01:01.100'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+1