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 f668355..be342d1 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 @@ -2309,6 +2309,20 @@ if (inheritPerms && success) { fs.setPermission(destf, fs.getFileStatus(destf.getParent()).getPermission()); } + } else { + try { + FileSystem fs2 = destf.getFileSystem(conf); + if (fs2.exists(destf)) { + // use FsShell to move data to .Trash first rather than delete permanently + FsShell fshell = new FsShell(); + fshell.setConf(conf); + fshell.run(new String[]{"-rmr", destf.toString()}); + fshell.run(new String[]{"-mkdir", destf.toString()}); + } + } catch (Exception e) { + //swallow the exception + LOG.warn("Directory " + destf.toString() + " canot be removed."); + } } // srcs must be a list of files -- ensured by LoadSemanticAnalyzer for (List sdpairs : result) {