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;

Reply via email to