diff --git a/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g b/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index 2b865f3cf7..b03b0989b8 100644 --- a/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ b/parser/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -1185,7 +1185,7 @@ createTableStatement truncateTableStatement @init { pushMsg("truncate table statement", state); } @after { popMsg(state); } - : KW_TRUNCATE KW_TABLE tablePartitionPrefix (KW_COLUMNS LPAREN columnNameList RPAREN)? force? + : KW_TRUNCATE KW_TABLE? tablePartitionPrefix (KW_COLUMNS LPAREN columnNameList RPAREN)? force? -> ^(TOK_TRUNCATETABLE tablePartitionPrefix columnNameList? force?); dropTableStatement diff --git a/ql/src/test/queries/clientpositive/truncate_table.q b/ql/src/test/queries/clientpositive/truncate_table.q index 6a1ce7ad27..5c20c89288 100644 --- a/ql/src/test/queries/clientpositive/truncate_table.q +++ b/ql/src/test/queries/clientpositive/truncate_table.q @@ -1,5 +1,8 @@ create table src_truncate (key string, value string); -load data local inpath '../../data/files/kv1.txt' into table src_truncate;; +load data local inpath '../../data/files/kv1.txt' into table src_truncate; + +create table src_truncate_alt (key string, value string); +load data local inpath '../../data/files/kv1.txt' into table src_truncate_alt; create table srcpart_truncate (key string, value string) partitioned by (ds string, hr string); alter table srcpart_truncate add partition (ds='2008-04-08', hr='11'); @@ -23,6 +26,12 @@ TRUNCATE TABLE src_truncate; select * from src_truncate; select count (*) from src_truncate; +-- truncate non-partitioned table with alternative syntax +explain TRUNCATE src_truncate_alt; +TRUNCATE src_truncate_alt; +select * from src_truncate_alt; +select count (*) from src_truncate_alt; + -- truncate a partition explain TRUNCATE TABLE srcpart_truncate partition (ds='2008-04-08', hr='11'); TRUNCATE TABLE srcpart_truncate partition (ds='2008-04-08', hr='11'); diff --git a/ql/src/test/results/clientpositive/truncate_table.q.out b/ql/src/test/results/clientpositive/truncate_table.q.out index 0607bcb68d..8feafce074 100644 --- a/ql/src/test/results/clientpositive/truncate_table.q.out +++ b/ql/src/test/results/clientpositive/truncate_table.q.out @@ -14,6 +14,22 @@ POSTHOOK: query: load data local inpath '../../data/files/kv1.txt' into table sr POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@src_truncate +PREHOOK: query: create table src_truncate_alt (key string, value string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@src_truncate_alt +POSTHOOK: query: create table src_truncate_alt (key string, value string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@src_truncate_alt +PREHOOK: query: load data local inpath '../../data/files/kv1.txt' into table src_truncate_alt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@src_truncate_alt +POSTHOOK: query: load data local inpath '../../data/files/kv1.txt' into table src_truncate_alt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@src_truncate_alt PREHOOK: query: create table srcpart_truncate (key string, value string) partitioned by (ds string, hr string) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default @@ -151,6 +167,43 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@src_truncate #### A masked pattern was here #### 0 +PREHOOK: query: explain TRUNCATE src_truncate_alt +PREHOOK: type: TRUNCATETABLE +PREHOOK: Output: default@src_truncate_alt +POSTHOOK: query: explain TRUNCATE src_truncate_alt +POSTHOOK: type: TRUNCATETABLE +POSTHOOK: Output: default@src_truncate_alt +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Truncate Table or Partition + table name: default.src_truncate_alt + +PREHOOK: query: TRUNCATE src_truncate_alt +PREHOOK: type: TRUNCATETABLE +PREHOOK: Output: default@src_truncate_alt +POSTHOOK: query: TRUNCATE src_truncate_alt +POSTHOOK: type: TRUNCATETABLE +POSTHOOK: Output: default@src_truncate_alt +PREHOOK: query: select * from src_truncate_alt +PREHOOK: type: QUERY +PREHOOK: Input: default@src_truncate_alt +#### A masked pattern was here #### +POSTHOOK: query: select * from src_truncate_alt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_truncate_alt +#### A masked pattern was here #### +PREHOOK: query: select count (*) from src_truncate_alt +PREHOOK: type: QUERY +PREHOOK: Input: default@src_truncate_alt +#### A masked pattern was here #### +POSTHOOK: query: select count (*) from src_truncate_alt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_truncate_alt +#### A masked pattern was here #### +0 PREHOOK: query: explain TRUNCATE TABLE srcpart_truncate partition (ds='2008-04-08', hr='11') PREHOOK: type: TRUNCATETABLE PREHOOK: Output: default@srcpart_truncate@ds=2008-04-08/hr=11