You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ga...@apache.org on 2014/10/24 00:48:36 UTC

svn commit: r1633976 - in /hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn: CompactionTxnHandler.java TxnHandler.java

Author: gates
Date: Thu Oct 23 22:48:36 2014
New Revision: 1633976

URL: http://svn.apache.org/r1633976
Log:
HIVE-8543 Compactions fail on metastore using postgres (Damien Carol and Alan Gates, reviewed by Eugene Koifman)

Modified:
    hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java
    hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java

Modified: hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java?rev=1633976&r1=1633975&r2=1633976&view=diff
==============================================================================
--- hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java (original)
+++ hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java Thu Oct 23 22:48:36 2014
@@ -547,10 +547,27 @@ public class CompactionTxnHandler extend
     Statement stmt = null;
     ResultSet rs = null;
     try {
+      String quote = getIdentifierQuoteString(dbConn);
       stmt = dbConn.createStatement();
-      String s = "SELECT COLUMN_NAME FROM " + (ci.partName == null ? "TAB_COL_STATS" : "PART_COL_STATS")
+      StringBuilder bldr = new StringBuilder();
+      bldr.append("SELECT ").append(quote).append("COLUMN_NAME").append(quote)
+          .append(" FROM ")
+          .append(quote).append((ci.partName == null ? "TAB_COL_STATS" : "PART_COL_STATS"))
+              .append(quote)
+          .append(" WHERE ")
+          .append(quote).append("DB_NAME").append(quote).append(" = '").append(ci.dbname)
+              .append("' AND ").append(quote).append("TABLE_NAME").append(quote)
+              .append(" = '").append(ci.tableName).append("'");
+      if (ci.partName != null) {
+        bldr.append(" AND ").append(quote).append("PARTITION_NAME").append(quote).append(" = '")
+            .append(ci.partName).append("'");
+      }
+      String s = bldr.toString();
+
+      /*String s = "SELECT COLUMN_NAME FROM " + (ci.partName == null ? "TAB_COL_STATS" :
+          "PART_COL_STATS")
          + " WHERE DB_NAME='" + ci.dbname + "' AND TABLE_NAME='" + ci.tableName + "'"
-        + (ci.partName == null ? "" : " AND PARTITION_NAME='" + ci.partName + "'");
+        + (ci.partName == null ? "" : " AND PARTITION_NAME='" + ci.partName + "'");*/
       LOG.debug("Going to execute <" + s + ">");
       rs = stmt.executeQuery(s);
       List<String> columns = new ArrayList<String>();

Modified: hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java?rev=1633976&r1=1633975&r2=1633976&view=diff
==============================================================================
--- hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java (original)
+++ hive/branches/branch-0.14/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java Thu Oct 23 22:48:36 2014
@@ -90,6 +90,8 @@ public class TxnHandler {
   // Transaction timeout, in milliseconds.
   private long timeout;
 
+  private String identifierQuoteString; // quotes to use for quoting tables, where necessary
+
   // DEADLOCK DETECTION AND HANDLING
   // A note to developers of this class.  ALWAYS access HIVE_LOCKS before TXNS to avoid deadlock
   // between simultaneous accesses.  ALWAYS access TXN_COMPONENTS before HIVE_LOCKS .
@@ -960,6 +962,19 @@ public class TxnHandler {
     }
   }
 
+  /**
+   * Determine the String that should be used to quote identifiers.
+   * @param conn Active connection
+   * @return quotes
+   * @throws SQLException
+   */
+  protected String getIdentifierQuoteString(Connection conn) throws SQLException {
+    if (identifierQuoteString == null) {
+      identifierQuoteString = conn.getMetaData().getIdentifierQuoteString();
+    }
+    return identifierQuoteString;
+  }
+
   protected enum DatabaseProduct { DERBY, MYSQL, POSTGRES, ORACLE, SQLSERVER}
 
   /**