You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2016/10/20 20:10:31 UTC

hive git commit: HIVE-14985 : Remove UDF-s created during test runs (Peter Vary, reviewed by Sergey Shelukhin)

Repository: hive
Updated Branches:
  refs/heads/master bbfc4d9d2 -> 19999dad8


HIVE-14985 : Remove UDF-s created during test runs (Peter Vary, reviewed by Sergey Shelukhin)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/19999dad
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/19999dad
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/19999dad

Branch: refs/heads/master
Commit: 19999dad89557a1121bd26b804e449fb09825564
Parents: bbfc4d9
Author: Sergey Shelukhin <se...@apache.org>
Authored: Thu Oct 20 13:04:29 2016 -0700
Committer: Sergey Shelukhin <se...@apache.org>
Committed: Thu Oct 20 13:04:29 2016 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/ql/QTestUtil.java    | 43 +++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/19999dad/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
----------------------------------------------------------------------
diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
index 0525335..a873721 100644
--- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
+++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
@@ -165,6 +165,7 @@ public class QTestUtil {
   private final Set<String> qJavaVersionSpecificOutput;
   private static final String SORT_SUFFIX = ".sorted";
   private final HashSet<String> srcTables;
+  private final Set<String> srcUDFs;
   private final MiniClusterType clusterType;
   private final FsType fsType;
   private ParseDriver pd;
@@ -213,6 +214,30 @@ public class QTestUtil {
     return srcTables;
   }
 
+  /**
+   * Returns the default UDF names which should not be removed when resetting the test database
+   * @return The list of the UDF names not to remove
+   */
+  private Set<String> getSrcUDFs() {
+    HashSet<String> srcUDFs = new HashSet<String>();
+    // FIXME: moved default value to here...for now
+    // i think this features is never really used from the command line
+    String defaultTestSrcUDFs = "qtest_get_java_boolean";
+    for (String srcUDF : System.getProperty("test.src.udfs", defaultTestSrcUDFs).trim().split(","))
+    {
+      srcUDF = srcUDF.trim();
+      if (!srcUDF.isEmpty()) {
+        srcUDFs.add(srcUDF);
+      }
+    }
+    if (srcUDFs.isEmpty()) {
+      throw new RuntimeException("Source UDFs cannot be empty");
+    }
+    return srcUDFs;
+  }
+
+
+
   public HiveConf getConf() {
     return conf;
   }
@@ -527,6 +552,7 @@ public class QTestUtil {
     this.logDir = logDir;
     this.useHBaseMetastore = useHBaseMetastore;
     this.srcTables=getSrcTables();
+    this.srcUDFs = getSrcUDFs();
 
     // HIVE-14443 move this fall-back logic to CliConfigs
     if (confDir != null && !confDir.isEmpty()) {
@@ -892,6 +918,19 @@ public class QTestUtil {
     }
   }
 
+  public void clearUDFsCreatedDuringTests() throws Exception {
+    if (System.getenv(QTEST_LEAVE_FILES) != null) {
+      return;
+    }
+    // Delete functions created by the tests
+    // It is enough to remove functions from the default database, other databases are dropped
+    for (String udfName : db.getFunctions(DEFAULT_DATABASE_NAME, ".*")) {
+      if (!srcUDFs.contains(udfName)) {
+        db.dropFunction(DEFAULT_DATABASE_NAME, udfName);
+      }
+    }
+  }
+
   /**
    * Clear out any side effects of running tests
    */
@@ -933,7 +972,7 @@ public class QTestUtil {
         }
       }
       if (!DEFAULT_DATABASE_NAME.equals(dbName)) {
-        // Drop cascade, may need to drop functions
+        // Drop cascade, functions dropped by cascade
         db.dropDatabase(dbName, true, true, true);
       }
     }
@@ -980,6 +1019,7 @@ public class QTestUtil {
     db = Hive.get(conf);  // propagate new conf to meta store
 
     clearTablesCreatedDuringTests();
+    clearUDFsCreatedDuringTests();
     clearKeysCreatedInTests();
   }
 
@@ -1001,6 +1041,7 @@ public class QTestUtil {
     }
 
     clearTablesCreatedDuringTests();
+    clearUDFsCreatedDuringTests();
     clearKeysCreatedInTests();
 
     File cleanupFile = new File(cleanupScript);