This is an automated email from the ASF dual-hosted git repository. kgyrtkirk pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push: new 869b6db HIVE-18702: INSERT OVERWRITE TABLE doesn't clean the table directory before overwriting (Ivan Suller via Ashutosh Chauhan, Zoltan Haindrich) 869b6db is described below commit 869b6db7d74f3f76ddfa495d12ba950eaefeee7a Author: Ivan Suller <isul...@cloudera.com> AuthorDate: Tue Apr 16 12:24:48 2019 +0200 HIVE-18702: INSERT OVERWRITE TABLE doesn't clean the table directory before overwriting (Ivan Suller via Ashutosh Chauhan, Zoltan Haindrich) Signed-off-by: Zoltan Haindrich <k...@rxd.hu> --- .../test/resources/testconfiguration.properties | 1 + .../org/apache/hadoop/hive/ql/metadata/Hive.java | 18 +- .../test/queries/clientpositive/insert_overwrite.q | 77 +++++ .../clientpositive/llap/insert_overwrite.q.out | 375 +++++++++++++++++++++ 4 files changed, 463 insertions(+), 8 deletions(-) diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 4a4cca7..09c3f2a 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -546,6 +546,7 @@ minillaplocal.query.files=\ insert_dir_distcp.q,\ insert_into_default_keyword.q,\ insert_into_with_schema.q,\ + insert_overwrite.q,\ insert_values_orig_table.q,\ insert_values_orig_table_use_metadata.q,\ insert1_overwrite_partitions.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index fdd3e46..40c6cf6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -2138,7 +2138,7 @@ public class Hive { boolean needRecycle = !tbl.isTemporary() && ReplChangeManager.isSourceOfReplication(Hive.get().getDatabase(tbl.getDbName())); replaceFiles(tbl.getPath(), loadPath, destPath, oldPartPath, getConf(), isSrcLocal, - isAutoPurge, newFiles, FileUtils.HIDDEN_FILES_PATH_FILTER, needRecycle, isManaged); + isAutoPurge, newFiles, FileUtils.HIDDEN_FILES_PATH_FILTER, needRecycle, isManaged, isInsertOverwrite); } else { FileSystem fs = destPath.getFileSystem(conf); copyFiles(conf, loadPath, destPath, fs, isSrcLocal, isAcidIUDoperation, @@ -2897,7 +2897,7 @@ private void constructOneLBLocationMap(FileStatus fSta, boolean needRecycle = !tbl.isTemporary() && ReplChangeManager.isSourceOfReplication(Hive.get().getDatabase(tbl.getDbName())); replaceFiles(tblPath, loadPath, destPath, tblPath, conf, isSrcLocal, isAutopurge, - newFiles, FileUtils.HIDDEN_FILES_PATH_FILTER, needRecycle, isManaged); + newFiles, FileUtils.HIDDEN_FILES_PATH_FILTER, needRecycle, isManaged, isInsertOverwrite); } else { try { FileSystem fs = tbl.getDataLocation().getFileSystem(conf); @@ -4748,9 +4748,9 @@ private void constructOneLBLocationMap(FileStatus fSta, * @param isManaged * If the table is managed. */ - protected void replaceFiles(Path tablePath, Path srcf, Path destf, Path oldPath, HiveConf conf, + private void replaceFiles(Path tablePath, Path srcf, Path destf, Path oldPath, HiveConf conf, boolean isSrcLocal, boolean purge, List<Path> newFiles, PathFilter deletePathFilter, - boolean isNeedRecycle, boolean isManaged) throws HiveException { + boolean isNeedRecycle, boolean isManaged, boolean isInsertOverwrite) throws HiveException { try { FileSystem destFs = destf.getFileSystem(conf); @@ -4763,15 +4763,17 @@ private void constructOneLBLocationMap(FileStatus fSta, } catch (IOException e) { throw new HiveException("Getting globStatus " + srcf.toString(), e); } + + // the extra check is required to make ALTER TABLE ... CONCATENATE work + if (oldPath != null && (srcs != null || isInsertOverwrite)) { + deleteOldPathForReplace(destf, oldPath, conf, purge, deletePathFilter, isNeedRecycle); + } + if (srcs == null) { LOG.info("No sources specified to move: " + srcf); return; } - if (oldPath != null) { - deleteOldPathForReplace(destf, oldPath, conf, purge, deletePathFilter, isNeedRecycle); - } - // first call FileUtils.mkdir to make sure that destf directory exists, if not, it creates // destf boolean destfExist = FileUtils.mkdir(destFs, destf, conf); diff --git a/ql/src/test/queries/clientpositive/insert_overwrite.q b/ql/src/test/queries/clientpositive/insert_overwrite.q new file mode 100644 index 0000000..12dd1b5 --- /dev/null +++ b/ql/src/test/queries/clientpositive/insert_overwrite.q @@ -0,0 +1,77 @@ +set hive.exec.dynamic.partition.mode=nonstrict; +set hive.stats.column.autogather=false; +set hive.stats.autogather=false; +set hive.compute.query.using.stats=false; + +CREATE EXTERNAL TABLE ext_non_part (col string); +INSERT INTO ext_non_part VALUES ('first'), ('second'); +CREATE TABLE b LIKE ext_non_part; + +INSERT OVERWRITE TABLE ext_non_part SELECT * FROM b; + +-- should be 0 +SELECT count(*) FROM ext_non_part; + +drop table ext_non_part; + +CREATE TABLE int_non_part (col string); +INSERT INTO int_non_part VALUES ('first'), ('second'); + +INSERT OVERWRITE TABLE int_non_part SELECT * FROM b; + +-- should be 0 +SELECT count(*) FROM int_non_part; + +drop table int_non_part; +drop table b; + + +CREATE EXTERNAL TABLE ext_part (col string) partitioned by (par string); +INSERT INTO ext_part PARTITION (par='1') VALUES ('first'), ('second'); +INSERT INTO ext_part PARTITION (par='2') VALUES ('first'), ('second'); +CREATE TABLE b (par string, col string); + +INSERT OVERWRITE TABLE ext_part PARTITION (par) SELECT * FROM b; + +-- should be 4 +SELECT count(*) FROM ext_part; + +INSERT INTO b VALUES ('third', '1'); + +INSERT OVERWRITE TABLE ext_part PARTITION (par) SELECT * FROM b; + +-- should be 3 +SELECT count(*) FROM ext_part; + +SELECT * FROM ext_part ORDER BY par, col; + +drop table ext_part; +drop table b; + +CREATE TABLE int_part (col string) partitioned by (par string); +INSERT INTO int_part PARTITION (par='1') VALUES ('first'), ('second'); +INSERT INTO int_part PARTITION (par='2') VALUES ('first'), ('second'); +INSERT INTO int_part PARTITION (par='3') VALUES ('first'), ('second'); +CREATE TABLE b (par string, col string); + +INSERT OVERWRITE TABLE int_part PARTITION (par) SELECT * FROM b; + +-- should be 6 +SELECT count(*) FROM int_part; + +INSERT OVERWRITE TABLE int_part PARTITION (par='3') SELECT col FROM b; + +-- should be 4 +SELECT count(*) FROM int_part; + +INSERT INTO b VALUES ('third', '1'); + +INSERT OVERWRITE TABLE int_part PARTITION (par) SELECT * FROM b; + +-- should be 3 +SELECT count(*) FROM int_part; + +SELECT * FROM int_part ORDER BY par, col; + +drop table int_part; +drop table b; diff --git a/ql/src/test/results/clientpositive/llap/insert_overwrite.q.out b/ql/src/test/results/clientpositive/llap/insert_overwrite.q.out new file mode 100644 index 0000000..68f7cc8 --- /dev/null +++ b/ql/src/test/results/clientpositive/llap/insert_overwrite.q.out @@ -0,0 +1,375 @@ +PREHOOK: query: CREATE EXTERNAL TABLE ext_non_part (col string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ext_non_part +POSTHOOK: query: CREATE EXTERNAL TABLE ext_non_part (col string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ext_non_part +PREHOOK: query: INSERT INTO ext_non_part VALUES ('first'), ('second') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@ext_non_part +POSTHOOK: query: INSERT INTO ext_non_part VALUES ('first'), ('second') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@ext_non_part +POSTHOOK: Lineage: ext_non_part.col SCRIPT [] +PREHOOK: query: CREATE TABLE b LIKE ext_non_part +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@b +POSTHOOK: query: CREATE TABLE b LIKE ext_non_part +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@b +PREHOOK: query: INSERT OVERWRITE TABLE ext_non_part SELECT * FROM b +PREHOOK: type: QUERY +PREHOOK: Input: default@b +PREHOOK: Output: default@ext_non_part +POSTHOOK: query: INSERT OVERWRITE TABLE ext_non_part SELECT * FROM b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@b +POSTHOOK: Output: default@ext_non_part +POSTHOOK: Lineage: ext_non_part.col SIMPLE [(b)b.FieldSchema(name:col, type:string, comment:null), ] +PREHOOK: query: SELECT count(*) FROM ext_non_part +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_non_part +#### A masked pattern was here #### +POSTHOOK: query: SELECT count(*) FROM ext_non_part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_non_part +#### A masked pattern was here #### +0 +PREHOOK: query: drop table ext_non_part +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ext_non_part +PREHOOK: Output: default@ext_non_part +POSTHOOK: query: drop table ext_non_part +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ext_non_part +POSTHOOK: Output: default@ext_non_part +PREHOOK: query: CREATE TABLE int_non_part (col string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@int_non_part +POSTHOOK: query: CREATE TABLE int_non_part (col string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@int_non_part +PREHOOK: query: INSERT INTO int_non_part VALUES ('first'), ('second') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@int_non_part +POSTHOOK: query: INSERT INTO int_non_part VALUES ('first'), ('second') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@int_non_part +POSTHOOK: Lineage: int_non_part.col SCRIPT [] +PREHOOK: query: INSERT OVERWRITE TABLE int_non_part SELECT * FROM b +PREHOOK: type: QUERY +PREHOOK: Input: default@b +PREHOOK: Output: default@int_non_part +POSTHOOK: query: INSERT OVERWRITE TABLE int_non_part SELECT * FROM b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@b +POSTHOOK: Output: default@int_non_part +POSTHOOK: Lineage: int_non_part.col SIMPLE [(b)b.FieldSchema(name:col, type:string, comment:null), ] +PREHOOK: query: SELECT count(*) FROM int_non_part +PREHOOK: type: QUERY +PREHOOK: Input: default@int_non_part +#### A masked pattern was here #### +POSTHOOK: query: SELECT count(*) FROM int_non_part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@int_non_part +#### A masked pattern was here #### +0 +PREHOOK: query: drop table int_non_part +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@int_non_part +PREHOOK: Output: default@int_non_part +POSTHOOK: query: drop table int_non_part +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@int_non_part +POSTHOOK: Output: default@int_non_part +PREHOOK: query: drop table b +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@b +PREHOOK: Output: default@b +POSTHOOK: query: drop table b +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@b +POSTHOOK: Output: default@b +PREHOOK: query: CREATE EXTERNAL TABLE ext_part (col string) partitioned by (par string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ext_part +POSTHOOK: query: CREATE EXTERNAL TABLE ext_part (col string) partitioned by (par string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ext_part +PREHOOK: query: INSERT INTO ext_part PARTITION (par='1') VALUES ('first'), ('second') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@ext_part@par=1 +POSTHOOK: query: INSERT INTO ext_part PARTITION (par='1') VALUES ('first'), ('second') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@ext_part@par=1 +POSTHOOK: Lineage: ext_part PARTITION(par=1).col SCRIPT [] +PREHOOK: query: INSERT INTO ext_part PARTITION (par='2') VALUES ('first'), ('second') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@ext_part@par=2 +POSTHOOK: query: INSERT INTO ext_part PARTITION (par='2') VALUES ('first'), ('second') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@ext_part@par=2 +POSTHOOK: Lineage: ext_part PARTITION(par=2).col SCRIPT [] +PREHOOK: query: CREATE TABLE b (par string, col string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@b +POSTHOOK: query: CREATE TABLE b (par string, col string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@b +PREHOOK: query: INSERT OVERWRITE TABLE ext_part PARTITION (par) SELECT * FROM b +PREHOOK: type: QUERY +PREHOOK: Input: default@b +PREHOOK: Output: default@ext_part +POSTHOOK: query: INSERT OVERWRITE TABLE ext_part PARTITION (par) SELECT * FROM b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@b +PREHOOK: query: SELECT count(*) FROM ext_part +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_part +PREHOOK: Input: default@ext_part@par=1 +PREHOOK: Input: default@ext_part@par=2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT count(*) FROM ext_part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_part +POSTHOOK: Input: default@ext_part@par=1 +POSTHOOK: Input: default@ext_part@par=2 +#### A masked pattern was here #### +4 +PREHOOK: query: INSERT INTO b VALUES ('third', '1') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@b +POSTHOOK: query: INSERT INTO b VALUES ('third', '1') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@b +POSTHOOK: Lineage: b.col SCRIPT [] +POSTHOOK: Lineage: b.par SCRIPT [] +PREHOOK: query: INSERT OVERWRITE TABLE ext_part PARTITION (par) SELECT * FROM b +PREHOOK: type: QUERY +PREHOOK: Input: default@b +PREHOOK: Output: default@ext_part +POSTHOOK: query: INSERT OVERWRITE TABLE ext_part PARTITION (par) SELECT * FROM b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@b +POSTHOOK: Output: default@ext_part@par=1 +POSTHOOK: Lineage: ext_part PARTITION(par=1).col SIMPLE [(b)b.FieldSchema(name:par, type:string, comment:null), ] +PREHOOK: query: SELECT count(*) FROM ext_part +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_part +PREHOOK: Input: default@ext_part@par=1 +PREHOOK: Input: default@ext_part@par=2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT count(*) FROM ext_part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_part +POSTHOOK: Input: default@ext_part@par=1 +POSTHOOK: Input: default@ext_part@par=2 +#### A masked pattern was here #### +3 +PREHOOK: query: SELECT * FROM ext_part ORDER BY par, col +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_part +PREHOOK: Input: default@ext_part@par=1 +PREHOOK: Input: default@ext_part@par=2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM ext_part ORDER BY par, col +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_part +POSTHOOK: Input: default@ext_part@par=1 +POSTHOOK: Input: default@ext_part@par=2 +#### A masked pattern was here #### +third 1 +first 2 +second 2 +PREHOOK: query: drop table ext_part +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@ext_part +PREHOOK: Output: default@ext_part +POSTHOOK: query: drop table ext_part +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@ext_part +POSTHOOK: Output: default@ext_part +PREHOOK: query: drop table b +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@b +PREHOOK: Output: default@b +POSTHOOK: query: drop table b +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@b +POSTHOOK: Output: default@b +PREHOOK: query: CREATE TABLE int_part (col string) partitioned by (par string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@int_part +POSTHOOK: query: CREATE TABLE int_part (col string) partitioned by (par string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@int_part +PREHOOK: query: INSERT INTO int_part PARTITION (par='1') VALUES ('first'), ('second') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@int_part@par=1 +POSTHOOK: query: INSERT INTO int_part PARTITION (par='1') VALUES ('first'), ('second') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@int_part@par=1 +POSTHOOK: Lineage: int_part PARTITION(par=1).col SCRIPT [] +PREHOOK: query: INSERT INTO int_part PARTITION (par='2') VALUES ('first'), ('second') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@int_part@par=2 +POSTHOOK: query: INSERT INTO int_part PARTITION (par='2') VALUES ('first'), ('second') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@int_part@par=2 +POSTHOOK: Lineage: int_part PARTITION(par=2).col SCRIPT [] +PREHOOK: query: INSERT INTO int_part PARTITION (par='3') VALUES ('first'), ('second') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@int_part@par=3 +POSTHOOK: query: INSERT INTO int_part PARTITION (par='3') VALUES ('first'), ('second') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@int_part@par=3 +POSTHOOK: Lineage: int_part PARTITION(par=3).col SCRIPT [] +PREHOOK: query: CREATE TABLE b (par string, col string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@b +POSTHOOK: query: CREATE TABLE b (par string, col string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@b +PREHOOK: query: INSERT OVERWRITE TABLE int_part PARTITION (par) SELECT * FROM b +PREHOOK: type: QUERY +PREHOOK: Input: default@b +PREHOOK: Output: default@int_part +POSTHOOK: query: INSERT OVERWRITE TABLE int_part PARTITION (par) SELECT * FROM b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@b +PREHOOK: query: SELECT count(*) FROM int_part +PREHOOK: type: QUERY +PREHOOK: Input: default@int_part +PREHOOK: Input: default@int_part@par=1 +PREHOOK: Input: default@int_part@par=2 +PREHOOK: Input: default@int_part@par=3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT count(*) FROM int_part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@int_part +POSTHOOK: Input: default@int_part@par=1 +POSTHOOK: Input: default@int_part@par=2 +POSTHOOK: Input: default@int_part@par=3 +#### A masked pattern was here #### +6 +PREHOOK: query: INSERT OVERWRITE TABLE int_part PARTITION (par='3') SELECT col FROM b +PREHOOK: type: QUERY +PREHOOK: Input: default@b +PREHOOK: Output: default@int_part@par=3 +POSTHOOK: query: INSERT OVERWRITE TABLE int_part PARTITION (par='3') SELECT col FROM b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@b +POSTHOOK: Output: default@int_part@par=3 +POSTHOOK: Lineage: int_part PARTITION(par=3).col SIMPLE [(b)b.FieldSchema(name:col, type:string, comment:null), ] +PREHOOK: query: SELECT count(*) FROM int_part +PREHOOK: type: QUERY +PREHOOK: Input: default@int_part +PREHOOK: Input: default@int_part@par=1 +PREHOOK: Input: default@int_part@par=2 +PREHOOK: Input: default@int_part@par=3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT count(*) FROM int_part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@int_part +POSTHOOK: Input: default@int_part@par=1 +POSTHOOK: Input: default@int_part@par=2 +POSTHOOK: Input: default@int_part@par=3 +#### A masked pattern was here #### +4 +PREHOOK: query: INSERT INTO b VALUES ('third', '1') +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@b +POSTHOOK: query: INSERT INTO b VALUES ('third', '1') +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@b +POSTHOOK: Lineage: b.col SCRIPT [] +POSTHOOK: Lineage: b.par SCRIPT [] +PREHOOK: query: INSERT OVERWRITE TABLE int_part PARTITION (par) SELECT * FROM b +PREHOOK: type: QUERY +PREHOOK: Input: default@b +PREHOOK: Output: default@int_part +POSTHOOK: query: INSERT OVERWRITE TABLE int_part PARTITION (par) SELECT * FROM b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@b +POSTHOOK: Output: default@int_part@par=1 +POSTHOOK: Lineage: int_part PARTITION(par=1).col SIMPLE [(b)b.FieldSchema(name:par, type:string, comment:null), ] +PREHOOK: query: SELECT count(*) FROM int_part +PREHOOK: type: QUERY +PREHOOK: Input: default@int_part +PREHOOK: Input: default@int_part@par=1 +PREHOOK: Input: default@int_part@par=2 +PREHOOK: Input: default@int_part@par=3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT count(*) FROM int_part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@int_part +POSTHOOK: Input: default@int_part@par=1 +POSTHOOK: Input: default@int_part@par=2 +POSTHOOK: Input: default@int_part@par=3 +#### A masked pattern was here #### +3 +PREHOOK: query: SELECT * FROM int_part ORDER BY par, col +PREHOOK: type: QUERY +PREHOOK: Input: default@int_part +PREHOOK: Input: default@int_part@par=1 +PREHOOK: Input: default@int_part@par=2 +PREHOOK: Input: default@int_part@par=3 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM int_part ORDER BY par, col +POSTHOOK: type: QUERY +POSTHOOK: Input: default@int_part +POSTHOOK: Input: default@int_part@par=1 +POSTHOOK: Input: default@int_part@par=2 +POSTHOOK: Input: default@int_part@par=3 +#### A masked pattern was here #### +third 1 +first 2 +second 2 +PREHOOK: query: drop table int_part +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@int_part +PREHOOK: Output: default@int_part +POSTHOOK: query: drop table int_part +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@int_part +POSTHOOK: Output: default@int_part +PREHOOK: query: drop table b +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@b +PREHOOK: Output: default@b +POSTHOOK: query: drop table b +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@b +POSTHOOK: Output: default@b