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}
/**