columnIndexes) {
+ this.columnIndexes = columnIndexes;
+ }
+
+ public String getInputDir() {
+ return inputDir;
+ }
+
+ public void setInputDir(String inputDir) {
+ this.inputDir = inputDir;
+ }
+
+ public String getOutputDir() {
+ return outputDir;
+ }
+
+ public void setOutputDir(String outputDir) {
+ this.outputDir = outputDir;
+ }
+
+ public ListBucketingCtx getLbCtx() {
+ return lbCtx;
+ }
+
+ public void setLbCtx(ListBucketingCtx lbCtx) {
+ this.lbCtx = lbCtx;
+ }
}
Index: ql/src/test/queries/clientnegative/truncate_bucketed_column.q
===================================================================
--- ql/src/test/queries/clientnegative/truncate_bucketed_column.q (revision 0)
+++ ql/src/test/queries/clientnegative/truncate_bucketed_column.q (working copy)
@@ -0,0 +1,7 @@
+-- Tests truncating a bucketed column
+
+CREATE TABLE test_tab (key STRING, value STRING) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS RCFILE;
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src;
+
+TRUNCATE TABLE test_tab COLUMNS (key);
Index: ql/src/test/queries/clientnegative/truncate_column_indexed_table.q
===================================================================
--- ql/src/test/queries/clientnegative/truncate_column_indexed_table.q (revision 0)
+++ ql/src/test/queries/clientnegative/truncate_column_indexed_table.q (working copy)
@@ -0,0 +1,9 @@
+-- Tests truncating a column from an indexed table
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE;
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src;
+
+CREATE INDEX test_tab_index ON TABLE test_tab (key) as 'COMPACT' WITH DEFERRED REBUILD;
+
+TRUNCATE TABLE test_tab COLUMNS (value);
Index: ql/src/test/queries/clientnegative/truncate_column_list_bucketing.q
===================================================================
--- ql/src/test/queries/clientnegative/truncate_column_list_bucketing.q (revision 0)
+++ ql/src/test/queries/clientnegative/truncate_column_list_bucketing.q (working copy)
@@ -0,0 +1,14 @@
+set hive.mapred.supports.subdirectories=true;
+set mapred.input.dir.recursive=true;
+
+-- Tests truncating a column on which a table is list bucketed
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE;
+
+ALTER TABLE test_tab
+SKEWED BY (key) ON ("484")
+STORED AS DIRECTORIES;
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src;
+
+TRUNCATE TABLE test_tab COLUMNS (key);
Index: ql/src/test/queries/clientnegative/truncate_column_seqfile.q
===================================================================
--- ql/src/test/queries/clientnegative/truncate_column_seqfile.q (revision 0)
+++ ql/src/test/queries/clientnegative/truncate_column_seqfile.q (working copy)
@@ -0,0 +1,7 @@
+-- Tests truncating a column from a table stored as a sequence file
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS SEQUENCEFILE;
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src;
+
+TRUNCATE TABLE test_tab COLUMNS (key);
Index: ql/src/test/queries/clientnegative/truncate_nonexistant_column.q
===================================================================
--- ql/src/test/queries/clientnegative/truncate_nonexistant_column.q (revision 0)
+++ ql/src/test/queries/clientnegative/truncate_nonexistant_column.q (working copy)
@@ -0,0 +1,7 @@
+-- Tests attempting to truncate a column in a table that doesn't exist
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE;
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src;
+
+TRUNCATE TABLE test_tab COLUMNS (doesnt_exist);
Index: ql/src/test/queries/clientnegative/truncate_partition_column.q
===================================================================
--- ql/src/test/queries/clientnegative/truncate_partition_column.q (revision 0)
+++ ql/src/test/queries/clientnegative/truncate_partition_column.q (working copy)
@@ -0,0 +1,7 @@
+-- Tests truncating a partition column
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE;
+
+INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src;
+
+TRUNCATE TABLE test_tab COLUMNS (part);
Index: ql/src/test/queries/clientnegative/truncate_partition_column2.q
===================================================================
--- ql/src/test/queries/clientnegative/truncate_partition_column2.q (revision 0)
+++ ql/src/test/queries/clientnegative/truncate_partition_column2.q (working copy)
@@ -0,0 +1,7 @@
+-- Tests truncating a partition column
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE;
+
+INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src;
+
+TRUNCATE TABLE test_tab PARTITION (part = '1') COLUMNS (part);
Index: ql/src/test/queries/clientpositive/truncate_column.q
===================================================================
--- ql/src/test/queries/clientpositive/truncate_column.q (revision 0)
+++ ql/src/test/queries/clientpositive/truncate_column.q (working copy)
@@ -0,0 +1,79 @@
+-- Tests truncating column(s) from a table, also tests that stats are updated
+
+CREATE TABLE test_tab (key STRING, value STRING)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' STORED AS RCFILE;
+
+set hive.stats.autogather=true;
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10;
+
+DESC FORMATTED test_tab;
+
+SELECT * FROM test_tab;
+
+-- Truncate 1 column
+TRUNCATE TABLE test_tab COLUMNS (key);
+
+DESC FORMATTED test_tab;
+
+-- First column should be null
+SELECT * FROM test_tab;
+
+-- Truncate multiple columns
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10;
+
+TRUNCATE TABLE test_tab COLUMNS (key, value);
+
+DESC FORMATTED test_tab;
+
+-- Both columns should be null
+SELECT * FROM test_tab;
+
+-- Truncate columns again
+TRUNCATE TABLE test_tab COLUMNS (key, value);
+
+DESC FORMATTED test_tab;
+
+-- Both columns should be null
+SELECT * FROM test_tab;
+
+-- Test truncating with a binary serde
+ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe';
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10;
+
+DESC FORMATTED test_tab;
+
+SELECT * FROM test_tab;
+
+-- Truncate 1 column
+TRUNCATE TABLE test_tab COLUMNS (key);
+
+DESC FORMATTED test_tab;
+
+-- First column should be null
+SELECT * FROM test_tab;
+
+-- Truncate 2 columns
+TRUNCATE TABLE test_tab COLUMNS (key, value);
+
+DESC FORMATTED test_tab;
+
+-- Both columns should be null
+SELECT * FROM test_tab;
+
+-- Test truncating a partition
+CREATE TABLE test_tab_part (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE;
+
+INSERT OVERWRITE TABLE test_tab_part PARTITION (part = '1') SELECT * FROM src LIMIT 10;
+
+DESC FORMATTED test_tab_part PARTITION (part = '1');
+
+SELECT * FROM test_tab_part WHERE part = '1';
+
+TRUNCATE TABLE test_tab_part PARTITION (part = '1') COLUMNS (key);
+
+DESC FORMATTED test_tab_part PARTITION (part = '1');
+
+-- First column should be null
+SELECT * FROM test_tab_part WHERE part = '1';
Index: ql/src/test/queries/clientpositive/truncate_column_buckets.q
===================================================================
--- ql/src/test/queries/clientpositive/truncate_column_buckets.q (revision 0)
+++ ql/src/test/queries/clientpositive/truncate_column_buckets.q (working copy)
@@ -0,0 +1,23 @@
+-- Tests truncating columns from a bucketed table, table should remain bucketed
+
+CREATE TABLE test_tab (key STRING, value STRING) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS RCFILE;
+
+set hive.enforce.bucketing=true;
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src;
+
+-- Check how many rows there are in each bucket, there should be two rows
+SELECT cnt FROM (
+SELECT INPUT__FILE__NAME file_name, count(*) cnt FROM
+test_tab GROUP BY INPUT__FILE__NAME
+ORDER BY file_name DESC)a;
+
+-- Truncate a column on which the table is not bucketed
+TRUNCATE TABLE test_tab COLUMNS (value);
+
+-- Check how many rows there are in each bucket, this should produce the same rows as before
+-- because truncate should not break bucketing
+SELECT cnt FROM (
+SELECT INPUT__FILE__NAME file_name, count(*) cnt FROM
+test_tab GROUP BY INPUT__FILE__NAME
+ORDER BY file_name DESC)a;
Index: ql/src/test/queries/clientpositive/truncate_column_list_bucket.q
===================================================================
--- ql/src/test/queries/clientpositive/truncate_column_list_bucket.q (revision 0)
+++ ql/src/test/queries/clientpositive/truncate_column_list_bucket.q (working copy)
@@ -0,0 +1,33 @@
+set hive.mapred.supports.subdirectories=true;
+set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
+set hive.merge.mapfiles=false;
+set hive.merge.mapredfiles=false;
+set mapred.input.dir.recursive=true;
+
+-- Tests truncating a column from a list bucketing table
+
+-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23)
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE;
+
+ALTER TABLE test_tab
+SKEWED BY (key) ON ("484")
+STORED AS DIRECTORIES;
+
+INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src;
+
+set hive.optimize.listbucketing=true;
+SELECT * FROM test_tab WHERE part = '1' AND key = '0';
+
+TRUNCATE TABLE test_tab PARTITION (part ='1') COLUMNS (value);
+
+-- In the following select statements the list bucketing optimization should still be used
+-- In both cases value should be null
+
+EXPLAIN EXTENDED SELECT * FROM test_tab WHERE part = '1' AND key = '484';
+
+SELECT * FROM test_tab WHERE part = '1' AND key = '484';
+
+EXPLAIN EXTENDED SELECT * FROM test_tab WHERE part = '1' AND key = '0';
+
+SELECT * FROM test_tab WHERE part = '1' AND key = '0';
Index: ql/src/test/queries/clientpositive/truncate_column_merge.q
===================================================================
--- ql/src/test/queries/clientpositive/truncate_column_merge.q (revision 0)
+++ ql/src/test/queries/clientpositive/truncate_column_merge.q (working copy)
@@ -0,0 +1,20 @@
+-- Tests truncating a column from a table with multiple files, then merging those files
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE;
+
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 5;
+
+INSERT INTO TABLE test_tab SELECT * FROM src LIMIT 5;
+
+-- The value should be 2 indicating the table has 2 files
+SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM test_tab;
+
+TRUNCATE TABLE test_tab COLUMNS (key);
+
+ALTER TABLE test_tab CONCATENATE;
+
+-- The first column (key) should be null for all 10 rows
+SELECT * FROM test_tab;
+
+-- The value should be 1 indicating the table has 1 file
+SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM test_tab;
Index: ql/src/test/results/clientnegative/truncate_bucketed_column.q.out
===================================================================
--- ql/src/test/results/clientnegative/truncate_bucketed_column.q.out (revision 0)
+++ ql/src/test/results/clientnegative/truncate_bucketed_column.q.out (working copy)
@@ -0,0 +1,20 @@
+PREHOOK: query: -- Tests truncating a bucketed column
+
+CREATE TABLE test_tab (key STRING, value STRING) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a bucketed column
+
+CREATE TABLE test_tab (key STRING, value STRING) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+FAILED: SemanticException org.apache.hadoop.hive.ql.parse.SemanticException: A column on which a partition/table is bucketed cannot be truncated. key
Index: ql/src/test/results/clientnegative/truncate_column_archived.q.out
===================================================================
--- ql/src/test/results/clientnegative/truncate_column_archived.q.out (revision 0)
+++ ql/src/test/results/clientnegative/truncate_column_archived.q.out (working copy)
@@ -0,0 +1,20 @@
+PREHOOK: query: -- Tests truncating a column from an archived partition
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a column from an archived partition
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab@part=1
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab@part=1
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+FAILED: SemanticException [Error 10107]: Archiving methods are currently disabled. Please see the Hive wiki for more information about enabling archiving
Index: ql/src/test/results/clientnegative/truncate_column_indexed_table.q.out
===================================================================
--- ql/src/test/results/clientnegative/truncate_column_indexed_table.q.out (revision 0)
+++ ql/src/test/results/clientnegative/truncate_column_indexed_table.q.out (working copy)
@@ -0,0 +1,27 @@
+PREHOOK: query: -- Tests truncating a column from an indexed table
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a column from an indexed table
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: CREATE INDEX test_tab_index ON TABLE test_tab (key) as 'COMPACT' WITH DEFERRED REBUILD
+PREHOOK: type: CREATEINDEX
+POSTHOOK: query: CREATE INDEX test_tab_index ON TABLE test_tab (key) as 'COMPACT' WITH DEFERRED REBUILD
+POSTHOOK: type: CREATEINDEX
+POSTHOOK: Output: default@default__test_tab_test_tab_index__
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+FAILED: SemanticException org.apache.hadoop.hive.ql.parse.SemanticException: Can not truncate columns from table with indexes
Index: ql/src/test/results/clientnegative/truncate_column_list_bucketing.q.out
===================================================================
--- ql/src/test/results/clientnegative/truncate_column_list_bucketing.q.out (revision 0)
+++ ql/src/test/results/clientnegative/truncate_column_list_bucketing.q.out (working copy)
@@ -0,0 +1,32 @@
+PREHOOK: query: -- Tests truncating a column on which a table is list bucketed
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a column on which a table is list bucketed
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: ALTER TABLE test_tab
+SKEWED BY (key) ON ("484")
+STORED AS DIRECTORIES
+PREHOOK: type: ALTERTABLE_SKEWED
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: ALTER TABLE test_tab
+SKEWED BY (key) ON ("484")
+STORED AS DIRECTORIES
+POSTHOOK: type: ALTERTABLE_SKEWED
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+FAILED: SemanticException org.apache.hadoop.hive.ql.parse.SemanticException: A column on which a partition/table is list bucketed cannot be truncated. key
Index: ql/src/test/results/clientnegative/truncate_column_seqfile.q.out
===================================================================
--- ql/src/test/results/clientnegative/truncate_column_seqfile.q.out (revision 0)
+++ ql/src/test/results/clientnegative/truncate_column_seqfile.q.out (working copy)
@@ -0,0 +1,20 @@
+PREHOOK: query: -- Tests truncating a column from a table stored as a sequence file
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS SEQUENCEFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a column from a table stored as a sequence file
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS SEQUENCEFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+FAILED: SemanticException org.apache.hadoop.hive.ql.parse.SemanticException: Only RCFileFormat supports column truncation.
Index: ql/src/test/results/clientnegative/truncate_nonexistant_column.q.out
===================================================================
--- ql/src/test/results/clientnegative/truncate_nonexistant_column.q.out (revision 0)
+++ ql/src/test/results/clientnegative/truncate_nonexistant_column.q.out (working copy)
@@ -0,0 +1,20 @@
+PREHOOK: query: -- Tests attempting to truncate a column in a table that doesn't exist
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests attempting to truncate a column in a table that doesn't exist
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+FAILED: SemanticException org.apache.hadoop.hive.ql.parse.SemanticException: Invalid column reference doesnt_exist
Index: ql/src/test/results/clientnegative/truncate_partition_column.q.out
===================================================================
--- ql/src/test/results/clientnegative/truncate_partition_column.q.out (revision 0)
+++ ql/src/test/results/clientnegative/truncate_partition_column.q.out (working copy)
@@ -0,0 +1,20 @@
+PREHOOK: query: -- Tests truncating a partition column
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a partition column
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab@part=1
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab@part=1
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: table is partitioned but partition spec is not specified or does not fully match table partitioning: null
Index: ql/src/test/results/clientnegative/truncate_partition_column2.q.out
===================================================================
--- ql/src/test/results/clientnegative/truncate_partition_column2.q.out (revision 0)
+++ ql/src/test/results/clientnegative/truncate_partition_column2.q.out (working copy)
@@ -0,0 +1,20 @@
+PREHOOK: query: -- Tests truncating a partition column
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a partition column
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab@part=1
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab@part=1
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+FAILED: SemanticException org.apache.hadoop.hive.ql.parse.SemanticException: Invalid column reference part
Index: ql/src/test/results/clientpositive/truncate_column.q.out
===================================================================
--- ql/src/test/results/clientpositive/truncate_column.q.out (revision 0)
+++ ql/src/test/results/clientpositive/truncate_column.q.out (working copy)
@@ -0,0 +1,761 @@
+PREHOOK: query: -- Tests truncating column(s) from a table, also tests that stats are updated
+
+CREATE TABLE test_tab (key STRING, value STRING)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating column(s) from a table, also tests that stats are updated
+
+CREATE TABLE test_tab (key STRING, value STRING)
+ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string None
+value string None
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ numFiles 1
+ numPartitions 0
+ numRows 10
+ rawDataSize 94
+ totalSize 185
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: SELECT * FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+238 val_238
+86 val_86
+311 val_311
+27 val_27
+165 val_165
+409 val_409
+255 val_255
+278 val_278
+98 val_98
+484 val_484
+PREHOOK: query: -- Truncate 1 column
+TRUNCATE TABLE test_tab COLUMNS (key)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: -- Truncate 1 column
+TRUNCATE TABLE test_tab COLUMNS (key)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string None
+value string None
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ numFiles 1
+ numPartitions 0
+ numRows 10
+ rawDataSize 94
+ totalSize 150
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: -- First column should be null
+SELECT * FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- First column should be null
+SELECT * FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+NULL val_238
+NULL val_86
+NULL val_311
+NULL val_27
+NULL val_165
+NULL val_409
+NULL val_255
+NULL val_278
+NULL val_98
+NULL val_484
+PREHOOK: query: -- Truncate multiple columns
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: -- Truncate multiple columns
+INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: TRUNCATE TABLE test_tab COLUMNS (key, value)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: TRUNCATE TABLE test_tab COLUMNS (key, value)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string None
+value string None
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ numFiles 1
+ numPartitions 0
+ numRows 10
+ rawDataSize 94
+ totalSize 75
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: -- Both columns should be null
+SELECT * FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- Both columns should be null
+SELECT * FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+PREHOOK: query: -- Truncate columns again
+TRUNCATE TABLE test_tab COLUMNS (key, value)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: -- Truncate columns again
+TRUNCATE TABLE test_tab COLUMNS (key, value)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string None
+value string None
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+ numFiles 1
+ numPartitions 0
+ numRows 10
+ rawDataSize 94
+ totalSize 75
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: -- Both columns should be null
+SELECT * FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- Both columns should be null
+SELECT * FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+PREHOOK: query: -- Test truncating with a binary serde
+ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
+PREHOOK: type: ALTERTABLE_SERIALIZER
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: -- Test truncating with a binary serde
+ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
+POSTHOOK: type: ALTERTABLE_SERIALIZER
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string from deserializer
+value string from deserializer
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+ numFiles 1
+ numPartitions 0
+ numRows 10
+ rawDataSize 94
+ totalSize 185
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: SELECT * FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+238 val_238
+86 val_86
+311 val_311
+27 val_27
+165 val_165
+409 val_409
+255 val_255
+278 val_278
+98 val_98
+484 val_484
+PREHOOK: query: -- Truncate 1 column
+TRUNCATE TABLE test_tab COLUMNS (key)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: -- Truncate 1 column
+TRUNCATE TABLE test_tab COLUMNS (key)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string from deserializer
+value string from deserializer
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+ numFiles 1
+ numPartitions 0
+ numRows 10
+ rawDataSize 94
+ totalSize 150
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: -- First column should be null
+SELECT * FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- First column should be null
+SELECT * FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+NULL val_238
+NULL val_86
+NULL val_311
+NULL val_27
+NULL val_165
+NULL val_409
+NULL val_255
+NULL val_278
+NULL val_98
+NULL val_484
+PREHOOK: query: -- Truncate 2 columns
+TRUNCATE TABLE test_tab COLUMNS (key, value)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: -- Truncate 2 columns
+TRUNCATE TABLE test_tab COLUMNS (key, value)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string from deserializer
+value string from deserializer
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+ numFiles 1
+ numPartitions 0
+ numRows 10
+ rawDataSize 94
+ totalSize 75
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: -- Both columns should be null
+SELECT * FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- Both columns should be null
+SELECT * FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+NULL NULL
+PREHOOK: query: -- Test truncating a partition
+CREATE TABLE test_tab_part (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Test truncating a partition
+CREATE TABLE test_tab_part (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab_part
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab_part PARTITION (part = '1') SELECT * FROM src LIMIT 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab_part@part=1
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab_part PARTITION (part = '1') SELECT * FROM src LIMIT 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab_part@part=1
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab_part PARTITION (part = '1')
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab_part PARTITION (part = '1')
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string None
+value string None
+
+# Partition Information
+# col_name data_type comment
+
+part string None
+
+# Detailed Partition Information
+Partition Value: [1]
+Database: default
+Table: test_tab_part
+#### A masked pattern was here ####
+Protect Mode: None
+#### A masked pattern was here ####
+Partition Parameters:
+ numFiles 1
+ numRows 10
+ rawDataSize 94
+ totalSize 185
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: SELECT * FROM test_tab_part WHERE part = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab_part@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_tab_part WHERE part = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab_part@part=1
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+238 val_238 1
+86 val_86 1
+311 val_311 1
+27 val_27 1
+165 val_165 1
+409 val_409 1
+255 val_255 1
+278 val_278 1
+98 val_98 1
+484 val_484 1
+PREHOOK: query: TRUNCATE TABLE test_tab_part PARTITION (part = '1') COLUMNS (key)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab_part
+PREHOOK: Output: default@test_tab_part@part=1
+POSTHOOK: query: TRUNCATE TABLE test_tab_part PARTITION (part = '1') COLUMNS (key)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab_part
+POSTHOOK: Output: default@test_tab_part@part=1
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: DESC FORMATTED test_tab_part PARTITION (part = '1')
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED test_tab_part PARTITION (part = '1')
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+# col_name data_type comment
+
+key string None
+value string None
+
+# Partition Information
+# col_name data_type comment
+
+part string None
+
+# Detailed Partition Information
+Partition Value: [1]
+Database: default
+Table: test_tab_part
+#### A masked pattern was here ####
+Protect Mode: None
+#### A masked pattern was here ####
+Partition Parameters:
+ numFiles 1
+ numRows 10
+ rawDataSize 94
+ totalSize 150
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+InputFormat: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ serialization.format 1
+PREHOOK: query: -- First column should be null
+SELECT * FROM test_tab_part WHERE part = '1'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab_part@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: -- First column should be null
+SELECT * FROM test_tab_part WHERE part = '1'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab_part@part=1
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab_part PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+NULL val_238 1
+NULL val_86 1
+NULL val_311 1
+NULL val_27 1
+NULL val_165 1
+NULL val_409 1
+NULL val_255 1
+NULL val_278 1
+NULL val_98 1
+NULL val_484 1
Index: ql/src/test/results/clientpositive/truncate_column_buckets.q.out
===================================================================
--- ql/src/test/results/clientpositive/truncate_column_buckets.q.out (revision 0)
+++ ql/src/test/results/clientpositive/truncate_column_buckets.q.out (working copy)
@@ -0,0 +1,73 @@
+PREHOOK: query: -- Tests truncating columns from a bucketed table, table should remain bucketed
+
+CREATE TABLE test_tab (key STRING, value STRING) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating columns from a bucketed table, table should remain bucketed
+
+CREATE TABLE test_tab (key STRING, value STRING) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: -- Check how many rows there are in each bucket, there should be two rows
+SELECT cnt FROM (
+SELECT INPUT__FILE__NAME file_name, count(*) cnt FROM
+test_tab GROUP BY INPUT__FILE__NAME
+ORDER BY file_name DESC)a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- Check how many rows there are in each bucket, there should be two rows
+SELECT cnt FROM (
+SELECT INPUT__FILE__NAME file_name, count(*) cnt FROM
+test_tab GROUP BY INPUT__FILE__NAME
+ORDER BY file_name DESC)a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+258
+242
+PREHOOK: query: -- Truncate a column on which the table is not bucketed
+TRUNCATE TABLE test_tab COLUMNS (value)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: -- Truncate a column on which the table is not bucketed
+TRUNCATE TABLE test_tab COLUMNS (value)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: -- Check how many rows there are in each bucket, this should produce the same rows as before
+-- because truncate should not break bucketing
+SELECT cnt FROM (
+SELECT INPUT__FILE__NAME file_name, count(*) cnt FROM
+test_tab GROUP BY INPUT__FILE__NAME
+ORDER BY file_name DESC)a
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- Check how many rows there are in each bucket, this should produce the same rows as before
+-- because truncate should not break bucketing
+SELECT cnt FROM (
+SELECT INPUT__FILE__NAME file_name, count(*) cnt FROM
+test_tab GROUP BY INPUT__FILE__NAME
+ORDER BY file_name DESC)a
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+258
+242
Index: ql/src/test/results/clientpositive/truncate_column_list_bucket.q.out
===================================================================
--- ql/src/test/results/clientpositive/truncate_column_list_bucket.q.out (revision 0)
+++ ql/src/test/results/clientpositive/truncate_column_list_bucket.q.out (working copy)
@@ -0,0 +1,312 @@
+PREHOOK: query: -- Tests truncating a column from a list bucketing table
+
+-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23)
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a column from a list bucketing table
+
+-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23)
+
+CREATE TABLE test_tab (key STRING, value STRING) PARTITIONED BY (part STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: ALTER TABLE test_tab
+SKEWED BY (key) ON ("484")
+STORED AS DIRECTORIES
+PREHOOK: type: ALTERTABLE_SKEWED
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: ALTER TABLE test_tab
+SKEWED BY (key) ON ("484")
+STORED AS DIRECTORIES
+POSTHOOK: type: ALTERTABLE_SKEWED
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab@part=1
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab PARTITION (part = '1') SELECT * FROM src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab@part=1
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: SELECT * FROM test_tab WHERE part = '1' AND key = '0'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+PREHOOK: Input: default@test_tab@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_tab WHERE part = '1' AND key = '0'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Input: default@test_tab@part=1
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+0 val_0 1
+0 val_0 1
+0 val_0 1
+PREHOOK: query: TRUNCATE TABLE test_tab PARTITION (part ='1') COLUMNS (value)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab@part=1
+POSTHOOK: query: TRUNCATE TABLE test_tab PARTITION (part ='1') COLUMNS (value)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab@part=1
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: -- In the following select statements the list bucketing optimization should still be used
+-- In both cases value should be null
+
+EXPLAIN EXTENDED SELECT * FROM test_tab WHERE part = '1' AND key = '484'
+PREHOOK: type: QUERY
+POSTHOOK: query: -- In the following select statements the list bucketing optimization should still be used
+-- In both cases value should be null
+
+EXPLAIN EXTENDED SELECT * FROM test_tab WHERE part = '1' AND key = '484'
+POSTHOOK: type: QUERY
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+ABSTRACT SYNTAX TREE:
+ (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME test_tab))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (AND (= (TOK_TABLE_OR_COL part) '1') (= (TOK_TABLE_OR_COL key) '484')))))
+
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Alias -> Map Operator Tree:
+ test_tab
+ TableScan
+ alias: test_tab
+ GatherStats: false
+ Filter Operator
+ isSamplingPred: false
+ predicate:
+ expr: (key = '484')
+ type: boolean
+ Select Operator
+ expressions:
+ expr: key
+ type: string
+ expr: value
+ type: string
+ expr: part
+ type: string
+ outputColumnNames: _col0, _col1, _col2
+ File Output Operator
+ compressed: false
+ GlobalTableId: 0
+#### A masked pattern was here ####
+ NumFilesPerFileSink: 1
+#### A masked pattern was here ####
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+ properties:
+ columns _col0,_col1,_col2
+ columns.types string:string:string
+ escape.delim \
+ serialization.format 1
+ TotalFiles: 1
+ GatherStats: false
+ MultiFileSpray: false
+ Needs Tagging: false
+ Path -> Alias:
+#### A masked pattern was here ####
+ Path -> Partition:
+#### A masked pattern was here ####
+ Partition
+ base file name: key=484
+ input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+ partition values:
+ part 1
+ properties:
+ bucket_count -1
+ columns key,value
+ columns.types string:string
+#### A masked pattern was here ####
+ name default.test_tab
+ numFiles 2
+ numRows 500
+ partition_columns part
+ rawDataSize 4812
+ serialization.ddl struct test_tab { string key, string value}
+ serialization.format 1
+ serialization.lib org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+ totalSize 1761
+#### A masked pattern was here ####
+ serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+
+ input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+ properties:
+ bucket_count -1
+ columns key,value
+ columns.types string:string
+#### A masked pattern was here ####
+ name default.test_tab
+ numFiles 2
+ numPartitions 1
+ numRows 500
+ partition_columns part
+ rawDataSize 4812
+ serialization.ddl struct test_tab { string key, string value}
+ serialization.format 1
+ serialization.lib org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+ totalSize 1761
+#### A masked pattern was here ####
+ serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+ name: default.test_tab
+ name: default.test_tab
+ Truncated Path -> Alias:
+ /test_tab/part=1/key=484 [test_tab]
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+
+
+PREHOOK: query: SELECT * FROM test_tab WHERE part = '1' AND key = '484'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+PREHOOK: Input: default@test_tab@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_tab WHERE part = '1' AND key = '484'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Input: default@test_tab@part=1
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+484 NULL 1
+PREHOOK: query: EXPLAIN EXTENDED SELECT * FROM test_tab WHERE part = '1' AND key = '0'
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN EXTENDED SELECT * FROM test_tab WHERE part = '1' AND key = '0'
+POSTHOOK: type: QUERY
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+ABSTRACT SYNTAX TREE:
+ (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME test_tab))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (AND (= (TOK_TABLE_OR_COL part) '1') (= (TOK_TABLE_OR_COL key) '0')))))
+
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Alias -> Map Operator Tree:
+ test_tab
+ TableScan
+ alias: test_tab
+ GatherStats: false
+ Filter Operator
+ isSamplingPred: false
+ predicate:
+ expr: (key = '0')
+ type: boolean
+ Select Operator
+ expressions:
+ expr: key
+ type: string
+ expr: value
+ type: string
+ expr: part
+ type: string
+ outputColumnNames: _col0, _col1, _col2
+ File Output Operator
+ compressed: false
+ GlobalTableId: 0
+#### A masked pattern was here ####
+ NumFilesPerFileSink: 1
+#### A masked pattern was here ####
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+ properties:
+ columns _col0,_col1,_col2
+ columns.types string:string:string
+ escape.delim \
+ serialization.format 1
+ TotalFiles: 1
+ GatherStats: false
+ MultiFileSpray: false
+ Needs Tagging: false
+ Path -> Alias:
+#### A masked pattern was here ####
+ Path -> Partition:
+#### A masked pattern was here ####
+ Partition
+ base file name: HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME
+ input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+ partition values:
+ part 1
+ properties:
+ bucket_count -1
+ columns key,value
+ columns.types string:string
+#### A masked pattern was here ####
+ name default.test_tab
+ numFiles 2
+ numRows 500
+ partition_columns part
+ rawDataSize 4812
+ serialization.ddl struct test_tab { string key, string value}
+ serialization.format 1
+ serialization.lib org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+ totalSize 1761
+#### A masked pattern was here ####
+ serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+
+ input format: org.apache.hadoop.hive.ql.io.RCFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.RCFileOutputFormat
+ properties:
+ bucket_count -1
+ columns key,value
+ columns.types string:string
+#### A masked pattern was here ####
+ name default.test_tab
+ numFiles 2
+ numPartitions 1
+ numRows 500
+ partition_columns part
+ rawDataSize 4812
+ serialization.ddl struct test_tab { string key, string value}
+ serialization.format 1
+ serialization.lib org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+ totalSize 1761
+#### A masked pattern was here ####
+ serde: org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
+ name: default.test_tab
+ name: default.test_tab
+ Truncated Path -> Alias:
+ /test_tab/part=1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME [test_tab]
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+
+
+PREHOOK: query: SELECT * FROM test_tab WHERE part = '1' AND key = '0'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+PREHOOK: Input: default@test_tab@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_tab WHERE part = '1' AND key = '0'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Input: default@test_tab@part=1
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+0 NULL 1
+0 NULL 1
+0 NULL 1
Index: ql/src/test/results/clientpositive/truncate_column_merge.q.out
===================================================================
--- ql/src/test/results/clientpositive/truncate_column_merge.q.out (revision 0)
+++ ql/src/test/results/clientpositive/truncate_column_merge.q.out (working copy)
@@ -0,0 +1,109 @@
+PREHOOK: query: -- Tests truncating a column from a table with multiple files, then merging those files
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests truncating a column from a table with multiple files, then merging those files
+
+CREATE TABLE test_tab (key STRING, value STRING) STORED AS RCFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@test_tab
+PREHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 5
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT OVERWRITE TABLE test_tab SELECT * FROM src LIMIT 5
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: INSERT INTO TABLE test_tab SELECT * FROM src LIMIT 5
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: INSERT INTO TABLE test_tab SELECT * FROM src LIMIT 5
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: -- The value should be 2 indicating the table has 2 files
+SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- The value should be 2 indicating the table has 2 files
+SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+2
+PREHOOK: query: TRUNCATE TABLE test_tab COLUMNS (key)
+PREHOOK: type: TRUNCATETABLE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: TRUNCATE TABLE test_tab COLUMNS (key)
+POSTHOOK: type: TRUNCATETABLE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: ALTER TABLE test_tab CONCATENATE
+PREHOOK: type: ALTER_TABLE_MERGE
+PREHOOK: Input: default@test_tab
+PREHOOK: Output: default@test_tab
+POSTHOOK: query: ALTER TABLE test_tab CONCATENATE
+POSTHOOK: type: ALTER_TABLE_MERGE
+POSTHOOK: Input: default@test_tab
+POSTHOOK: Output: default@test_tab
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: -- The first column (key) should be null for all 10 rows
+SELECT * FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- The first column (key) should be null for all 10 rows
+SELECT * FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+NULL val_238
+NULL val_86
+NULL val_311
+NULL val_27
+NULL val_165
+NULL val_238
+NULL val_86
+NULL val_311
+NULL val_27
+NULL val_165
+PREHOOK: query: -- The value should be 1 indicating the table has 1 file
+SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM test_tab
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: query: -- The value should be 1 indicating the table has 1 file
+SELECT COUNT(DISTINCT INPUT__FILE__NAME) FROM test_tab
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_tab
+#### A masked pattern was here ####
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: test_tab.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+1
Index: serde/src/java/org/apache/hadoop/hive/serde2/columnar/BytesRefArrayWritable.java
===================================================================
--- serde/src/java/org/apache/hadoop/hive/serde2/columnar/BytesRefArrayWritable.java (revision 1448333)
+++ serde/src/java/org/apache/hadoop/hive/serde2/columnar/BytesRefArrayWritable.java (working copy)
@@ -31,7 +31,7 @@
* BytesRefArrayWritable holds an array reference to BytesRefWritable,
* and is able to resize without recreating new array if not necessary.
*
- *
+ *
* Each BytesRefArrayWritable holds instance has a valid field,
* which is the desired valid number of BytesRefWritable it holds.
* resetValid can reset the valid, but it will not care the underlying
@@ -47,7 +47,7 @@
/**
* Constructs an empty array with the specified capacity.
- *
+ *
* @param capacity
* initial capacity
* @exception IllegalArgumentException
@@ -70,7 +70,7 @@
/**
* Returns the number of valid elements.
- *
+ *
* @return the number of valid elements
*/
public int size() {
@@ -80,7 +80,7 @@
/**
* Gets the BytesRefWritable at the specified position. Make sure the position
* is valid by first call resetValid.
- *
+ *
* @param index
* the position index, starting from zero
* @throws IndexOutOfBoundsException
@@ -95,7 +95,7 @@
/**
* Gets the BytesRefWritable at the specified position without checking.
- *
+ *
* @param index
* the position index, starting from zero
* @throws IndexOutOfBoundsException
@@ -107,7 +107,7 @@
/**
* Set the BytesRefWritable at the specified position with the specified
* BytesRefWritable.
- *
+ *
* @param index
* index position
* @param bytesRefWritable
@@ -116,9 +116,6 @@
* if the specified new element is null
*/
public void set(int index, BytesRefWritable bytesRefWritable) {
- if (bytesRefWritable == null) {
- throw new IllegalArgumentException("Can not assign null.");
- }
ensureCapacity(index + 1);
bytesRefWritables[index] = bytesRefWritable;
if (valid <= index) {
@@ -154,7 +151,7 @@
/**
* Returns true if this instance contains one or more the specified
* BytesRefWritable.
- *
+ *
* @param bytesRefWritable
* BytesRefWritable element to be tested
* @return true if contains the specified element
@@ -196,7 +193,7 @@
* elements specified by newValidCapacity argument. It will also narrow the
* valid capacity when needed. Notice: it only enlarge or narrow the valid
* capacity with no care of the already stored invalid BytesRefWritable.
- *
+ *
* @param newValidCapacity
* the desired capacity
*/