Repository: hive
Updated Branches:
  refs/heads/branch-2 8b16ad0f5 -> 854b9afce


HIVE-20080 : TxnHandler checkLock direct sql fail with ORA-01795 , if the table 
has more than 1000 partitions (Rajkumar Singh via Ashutosh Chauhan)

Signed-off-by: Ashutosh Chauhan <[email protected]>


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

Branch: refs/heads/branch-2
Commit: 854b9afce849e3e89e81486188828a9214f82739
Parents: 8b16ad0
Author: Rajkumar Singh <[email protected]>
Authored: Fri Sep 7 10:54:50 2018 -0700
Committer: Ashutosh Chauhan <[email protected]>
Committed: Fri Sep 7 10:54:50 2018 -0700

----------------------------------------------------------------------
 .../hadoop/hive/metastore/txn/TxnHandler.java     | 18 ++++++++++--------
 .../hadoop/hive/metastore/txn/TxnUtils.java       |  4 ++--
 2 files changed, 12 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/854b9afc/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
----------------------------------------------------------------------
diff --git 
a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java 
b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
index 0e8253b..b78720a 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
@@ -2587,16 +2587,18 @@ abstract class TxnHandler implements TxnStore, 
TxnStore.MutexAPI {
           }
         }
         if (!sawNull) {
-          query.append(" and (hl_partition is null or hl_partition in(");
-          first = true;
+          List<String> queries = new ArrayList<String>();
+          StringBuilder prefix = new StringBuilder();
+          StringBuilder suffix = new StringBuilder();
+          prefix.append(" and ( hl_partition is null or  ");
+
+          suffix.append(" )");
+          List<String> partList = new ArrayList<>();
           for (String s : strings) {
-            if (first) first = false;
-            else query.append(", ");
-            query.append('\'');
-            query.append(s);
-            query.append('\'');
+            partList.add(quoteString(s));
           }
-          query.append("))");
+          TxnUtils.buildQueryWithINClause(conf, queries, prefix, suffix, 
partList, "hl_partition", true, false);
+          query.append(queries.get(0));
         }
       }
       query.append(" and hl_lock_ext_id <= ").append(extLockId);

http://git-wip-us.apache.org/repos/asf/hive/blob/854b9afc/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
----------------------------------------------------------------------
diff --git 
a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java 
b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
index 517eec3..1a243ed 100644
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
@@ -142,8 +142,8 @@ public class TxnUtils {
    *                  e.g. ( id in (1,2,3) OR id in (4,5,6) )
    * @param notIn clause to be broken up is NOT IN
    */
-  public static void buildQueryWithINClause(HiveConf conf, List<String> 
queries, StringBuilder prefix,
-                                            StringBuilder suffix, List<Long> 
inList,
+  public static <T> void buildQueryWithINClause(HiveConf conf, List<String> 
queries, StringBuilder prefix,
+                                            StringBuilder suffix, List<T> 
inList,
                                             String inColumn, boolean 
addParens, boolean notIn) {
     if (inList == null || inList.size() == 0) {
       throw new IllegalArgumentException("The IN list is empty!");

Reply via email to