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 0122aed84f..8947594e3f 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 @@ -2437,16 +2437,18 @@ private LockResponse checkLock(Connection dbConn, long extLockId) } } if (!sawNull) { - query.append(" and (hl_partition is null or hl_partition in("); - first = true; + List queries = new ArrayList(); + StringBuilder prefix = new StringBuilder(); + StringBuilder suffix = new StringBuilder(); + prefix.append(" and "); + + suffix.append(" and hl_partition is not null"); + List 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); 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 517eec3017..1a243edfa9 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 static boolean isAcidTable(Table table) { * 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 queries, StringBuilder prefix, - StringBuilder suffix, List inList, + public static void buildQueryWithINClause(HiveConf conf, List queries, StringBuilder prefix, + StringBuilder suffix, List inList, String inColumn, boolean addParens, boolean notIn) { if (inList == null || inList.size() == 0) { throw new IllegalArgumentException("The IN list is empty!");