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

zabetak 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 260924050b HIVE-26127: INSERT OVERWRITE throws FileNotFound when 
destination partition is deleted (Yu-Wen Lai, reviewed by Stamatis Zampetakis)
260924050b is described below

commit 260924050b11d3342b44091797d88b6f489dcaef
Author: Yu-Wen Lai <yu-wen....@cloudera.com>
AuthorDate: Fri Apr 8 17:56:32 2022 -0700

    HIVE-26127: INSERT OVERWRITE throws FileNotFound when destination partition 
is deleted (Yu-Wen Lai, reviewed by Stamatis Zampetakis)
    
    Closes #3198
---
 ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java      |  2 +-
 ql/src/test/queries/clientpositive/insert_overwrite.q         |  4 ++++
 .../test/results/clientpositive/llap/insert_overwrite.q.out   | 11 +++++++++++
 3 files changed, 16 insertions(+), 1 deletion(-)

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 4ed822aa7b..ac21ecd95a 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
@@ -5377,7 +5377,7 @@ private void constructOneLBLocationMap(FileStatus fSta,
       // But not sure why we changed not to delete the oldPath in HIVE-8750 if 
it is
       // not the destf or its subdir?
       isOldPathUnderDestf = isSubDir(oldPath, destPath, oldFs, destFs, false);
-      if (isOldPathUnderDestf) {
+      if (isOldPathUnderDestf && oldFs.exists(oldPath)) {
         cleanUpOneDirectoryForReplace(oldPath, oldFs, pathFilter, conf, purge, 
isNeedRecycle);
       }
     } catch (IOException e) {
diff --git a/ql/src/test/queries/clientpositive/insert_overwrite.q 
b/ql/src/test/queries/clientpositive/insert_overwrite.q
index 357227e4af..43f0bb29af 100644
--- a/ql/src/test/queries/clientpositive/insert_overwrite.q
+++ b/ql/src/test/queries/clientpositive/insert_overwrite.q
@@ -77,6 +77,10 @@ SELECT count(*) FROM ext_part;
 
 SELECT * FROM ext_part ORDER BY par, col;
 
+-- removing a partition manually should not fail the next insert overwrite 
operation
+dfs -rm -r ${hiveconf:hive.metastore.warehouse.dir}/ext_part/par=1;
+INSERT OVERWRITE TABLE ext_part PARTITION (par) SELECT * FROM b;
+
 drop table ext_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
index 626a8e2c9f..f92c6c6254 100644
--- a/ql/src/test/results/clientpositive/llap/insert_overwrite.q.out
+++ b/ql/src/test/results/clientpositive/llap/insert_overwrite.q.out
@@ -308,6 +308,17 @@ POSTHOOK: Input: default@ext_part@par=2
 third  1
 first  2
 second 2
+#### A masked pattern was here ####
+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
+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: drop table ext_part
 PREHOOK: type: DROPTABLE
 PREHOOK: Input: default@ext_part

Reply via email to