Author: heyongqiang
Date: Mon Sep 19 22:43:31 2011
New Revision: 1172869

URL: http://svn.apache.org/viewvc?rev=1172869&view=rev
Log:
HIVE-2456: JDBCStatsAggregator DELETE STATEMENT should escape _ and % (Ning 
Zhang via He Yongqiang)

Modified:
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java?rev=1172869&r1=1172868&r2=1172869&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsAggregator.java
 Mon Sep 19 22:43:31 2011
@@ -210,8 +210,13 @@ public class JDBCStatsAggregator impleme
     };
     try {
 
+      String keyPrefix = Utilities.escapeSqlLike(rowID) + "%";
+
       PreparedStatement delStmt = Utilities.prepareWithRetry(conn,
           JDBCStatsUtils.getDeleteAggr(rowID, comment), waitWindow, 
maxRetries);
+      delStmt.setString(1, keyPrefix);
+      delStmt.setString(2, Character.toString(Utilities.sqlEscapeChar));
+
       for (int failures = 0;; failures++) {
         try {
             Utilities.executeWithRetry(execUpdate, delStmt, waitWindow, 
maxRetries);

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java?rev=1172869&r1=1172868&r2=1172869&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java 
Mon Sep 19 22:43:31 2011
@@ -161,8 +161,8 @@ public class JDBCStatsUtils {
    */
   public static String getDeleteAggr(String rowID, String comment) {
     String delete = "DELETE /* " + comment + " */ " +
-        " FROM " + getStatTableName() + " WHERE " + 
JDBCStatsUtils.getIdColumnName() + " LIKE '"
-        + rowID + "%'";
+        " FROM " + getStatTableName() + " WHERE " + 
JDBCStatsUtils.getIdColumnName() +
+        " LIKE ? ESCAPE ?";
     return delete;
   }
 


Reply via email to