This is an automated email from the ASF dual-hosted git repository.
dkuzmenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new e3e52f1fcf2 HIVE-25503: Amendment: Null-safe equality comparison
(Denys Kuzmenko, reviewed by Karen Coppage, Laszlo Vegh)
e3e52f1fcf2 is described below
commit e3e52f1fcf2d4db6730adb104550ed9df3232294
Author: Denys Kuzmenko <[email protected]>
AuthorDate: Tue Jun 14 10:21:42 2022 +0200
HIVE-25503: Amendment: Null-safe equality comparison (Denys Kuzmenko,
reviewed by Karen Coppage, Laszlo Vegh)
Closes #3357
---
.../hadoop/hive/metastore/txn/CompactionTxnHandler.java | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java
index ac2243530f0..1e7064016b5 100644
---
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java
+++
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.hive.metastore.txn;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.common.classification.RetrySemantics;
+import org.apache.hadoop.hive.metastore.DatabaseProduct.DbType;
import org.apache.hadoop.hive.metastore.MetaStoreListenerNotifier;
import org.apache.hadoop.hive.metastore.api.CompactionType;
import org.apache.hadoop.hive.metastore.api.FindNextCompactRequest;
@@ -753,7 +754,10 @@ class CompactionTxnHandler extends TxnHandler {
" GROUP BY \"CTC_DATABASE\", \"CTC_TABLE\", \"CTC_PARTITION\")
\"c2\" " +
"ON \"tc\".\"CTC_DATABASE\" = \"c2\".\"CTC_DATABASE\" AND
\"tc\".\"CTC_TABLE\" = \"c2\".\"CTC_TABLE\"" +
" AND (\"tc\".\"CTC_PARTITION\" = \"c2\".\"CTC_PARTITION\" OR
(\"tc\".\"CTC_PARTITION\" IS NULL AND \"c2\".\"CTC_PARTITION\" IS NULL)) " +
- "WHERE \"tc\".\"CTC_WRITEID\" < \"c\".\"highestWriteId\" AND
\"tc\".\"CTC_WRITEID\" != \"c2\".\"updateWriteId\"";
+ "WHERE \"tc\".\"CTC_WRITEID\" < \"c\".\"highestWriteId\" " +
+ (DbType.MYSQL == dbProduct.dbType ?
+ " AND NOT \"tc\".\"CTC_WRITEID\" <=> \"c2\".\"updateWriteId\"" :
+ " AND (\"tc\".\"CTC_WRITEID\" != \"c2\".\"updateWriteId\" OR
\"c2\".\"updateWriteId\" IS NULL)");
break;
case DERBY:
case ORACLE:
@@ -765,7 +769,7 @@ class CompactionTxnHandler extends TxnHandler {
" WHERE \"CTC_DATABASE\" = \"tc\".\"CTC_DATABASE\"" +
" AND \"CTC_TABLE\" = \"tc\".\"CTC_TABLE\"" +
" AND (\"CTC_PARTITION\" = \"tc\".\"CTC_PARTITION\" OR
(\"CTC_PARTITION\" IS NULL AND \"tc\".\"CTC_PARTITION\" IS NULL))" +
- " AND (\"tc\".\"CTC_UPDATE_DELETE\"='N' OR
\"tc\".\"CTC_UPDATE_DELETE\"='Y' AND \"CTC_UPDATE_DELETE\"='Y')" +
+ " AND (\"tc\".\"CTC_UPDATE_DELETE\"='N' OR
\"CTC_UPDATE_DELETE\"='Y')" +
" AND \"tc\".\"CTC_WRITEID\" < \"CTC_WRITEID\")";
break;
case POSTGRES:
@@ -786,7 +790,8 @@ class CompactionTxnHandler extends TxnHandler {
") \"c\" " +
"WHERE \"tc\".\"CTC_DATABASE\" = \"c\".\"CTC_DATABASE\" AND
\"tc\".\"CTC_TABLE\" = \"c\".\"CTC_TABLE\"" +
" AND (\"tc\".\"CTC_PARTITION\" = \"c\".\"CTC_PARTITION\" OR
(\"tc\".\"CTC_PARTITION\" IS NULL AND \"c\".\"CTC_PARTITION\" IS NULL))" +
- " AND \"tc\".\"CTC_WRITEID\" < \"c\".\"highestWriteId\" AND
\"tc\".\"CTC_WRITEID\" != \"c\".\"updateWriteId\"";
+ " AND \"tc\".\"CTC_WRITEID\" < \"c\".\"highestWriteId\" " +
+ " AND \"tc\".\"CTC_WRITEID\" IS DISTINCT FROM
\"c\".\"updateWriteId\"";
break;
default:
String msg = "Unknown database product: " + dbProduct.dbType;