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!");
