Author: prasadm
Date: Fri Jan 31 23:15:04 2014
New Revision: 1563334

URL: http://svn.apache.org/r1563334
Log:
HIVE-6209: 'LOAD DATA INPATH ... OVERWRITE ..' doesn't overwrite current data 
(Szehon Ho via Prasad Mujumdar)

Added:
    hive/trunk/ql/src/test/queries/clientpositive/load_fs_overwrite.q
    hive/trunk/ql/src/test/results/clientpositive/load_fs_overwrite.q.out
Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java?rev=1563334&r1=1563333&r2=1563334&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java Fri Jan 
31 23:15:04 2014
@@ -2195,7 +2195,7 @@ private void constructOneLBLocationMap(F
         }
       }
       success = fs.rename(srcf, destf);
-      LOG.debug((replace ? "Replacing src:" : "Renaming src:") + 
srcf.toString()
+      LOG.info((replace ? "Replacing src:" : "Renaming src:") + srcf.toString()
           + ";dest: " + destf.toString()  + ";Status:" + success);
     } catch (IOException ioe) {
       throw new HiveException("Unable to move source" + srcf + " to 
destination " + destf, ioe);
@@ -2297,10 +2297,7 @@ private void constructOneLBLocationMap(F
       }
       List<List<Path[]>> result = checkPaths(conf, fs, srcs, destf, true);
 
-      // point of no return -- delete oldPath only if it is not same as destf,
-      // otherwise, the oldPath/destf will be cleaned later just before move
-      if (oldPath != null && 
(!destf.getFileSystem(conf).equals(oldPath.getFileSystem(conf))
-          || !destf.equals(oldPath))) {
+      if (oldPath != null) {
         try {
           FileSystem fs2 = oldPath.getFileSystem(conf);
           if (fs2.exists(oldPath)) {
@@ -2321,6 +2318,9 @@ private void constructOneLBLocationMap(F
         Path destfp = destf.getParent();
         if (!fs.exists(destfp)) {
           boolean success = fs.mkdirs(destfp);
+          if (!success) {
+            LOG.warn("Error creating directory " + destf.toString());
+          }
           if (inheritPerms && success) {
             fs.setPermission(destfp, 
fs.getFileStatus(destfp.getParent()).getPermission());
           }
@@ -2334,6 +2334,9 @@ private void constructOneLBLocationMap(F
       } else { // srcf is a file or pattern containing wildcards
         if (!fs.exists(destf)) {
           boolean success = fs.mkdirs(destf);
+          if (!success) {
+            LOG.warn("Error creating directory " + destf.toString());
+          }
           if (inheritPerms && success) {
             fs.setPermission(destf, 
fs.getFileStatus(destf.getParent()).getPermission());
           }

Added: hive/trunk/ql/src/test/queries/clientpositive/load_fs_overwrite.q
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/load_fs_overwrite.q?rev=1563334&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/load_fs_overwrite.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/load_fs_overwrite.q Fri Jan 
31 23:15:04 2014
@@ -0,0 +1,20 @@
+--HIVE 6209
+
+drop table target;
+drop table temp;
+
+create table target (key string, value string) stored as textfile location 
'file:${system:test.tmp.dir}/target';
+create table temp (key string, value string) stored as textfile location 
'file:${system:test.tmp.dir}/temp';
+
+set fs.pfile.impl.disable.cache=false;
+
+load data local inpath '../../data/files/kv1.txt' into table temp;
+load data inpath '${system:test.tmp.dir}/temp/kv1.txt' overwrite into table 
target;
+select count(*) from target;
+
+load data local inpath '../../data/files/kv2.txt' into table temp;
+load data inpath '${system:test.tmp.dir}/temp/kv2.txt' overwrite into table 
target;
+select count(*) from target;
+
+drop table target;
+drop table temp;
\ No newline at end of file

Added: hive/trunk/ql/src/test/results/clientpositive/load_fs_overwrite.q.out
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/load_fs_overwrite.q.out?rev=1563334&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/load_fs_overwrite.q.out 
(added)
+++ hive/trunk/ql/src/test/results/clientpositive/load_fs_overwrite.q.out Fri 
Jan 31 23:15:04 2014
@@ -0,0 +1,80 @@
+PREHOOK: query: --HIVE 6209
+
+drop table target
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: --HIVE 6209
+
+drop table target
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: drop table temp
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table temp
+POSTHOOK: type: DROPTABLE
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@target
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@temp
+PREHOOK: query: load data local inpath '../../data/files/kv1.txt' into table 
temp
+PREHOOK: type: LOAD
+PREHOOK: Output: default@temp
+POSTHOOK: query: load data local inpath '../../data/files/kv1.txt' into table 
temp
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@temp
+#### A masked pattern was here ####
+PREHOOK: type: LOAD
+PREHOOK: Output: default@target
+#### A masked pattern was here ####
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@target
+PREHOOK: query: select count(*) from target
+PREHOOK: type: QUERY
+PREHOOK: Input: default@target
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from target
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@target
+#### A masked pattern was here ####
+500
+PREHOOK: query: load data local inpath '../../data/files/kv2.txt' into table 
temp
+PREHOOK: type: LOAD
+PREHOOK: Output: default@temp
+POSTHOOK: query: load data local inpath '../../data/files/kv2.txt' into table 
temp
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@temp
+#### A masked pattern was here ####
+PREHOOK: type: LOAD
+PREHOOK: Output: default@target
+#### A masked pattern was here ####
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@target
+PREHOOK: query: select count(*) from target
+PREHOOK: type: QUERY
+PREHOOK: Input: default@target
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from target
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@target
+#### A masked pattern was here ####
+500
+PREHOOK: query: drop table target
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@target
+PREHOOK: Output: default@target
+POSTHOOK: query: drop table target
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@target
+POSTHOOK: Output: default@target
+PREHOOK: query: drop table temp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@temp
+PREHOOK: Output: default@temp
+POSTHOOK: query: drop table temp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@temp
+POSTHOOK: Output: default@temp


Reply via email to