This is an automated email from the ASF dual-hosted git repository.

stoty pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix-connectors.git


The following commit(s) were added to refs/heads/master by this push:
     new 349a2b2  PHOENIX-6524 Hive Connector returns emtpy AND expression when 
all children are pushed down
349a2b2 is described below

commit 349a2b2d7d5c4be78e99f7a94e20d47b22b68e6d
Author: Istvan Toth <st...@apache.org>
AuthorDate: Wed Aug 4 10:43:06 2021 +0200

    PHOENIX-6524 Hive Connector returns emtpy AND expression when all children 
are pushed down
    
    also fix incorrect phoenix.hbase.table.name property in some tests
---
 .../apache/phoenix/hive/HivePhoenixStoreIT.java    | 54 +++++++++++++++++++---
 .../hive/ql/index/IndexPredicateAnalyzer.java      |  5 ++
 2 files changed, 52 insertions(+), 7 deletions(-)

diff --git 
a/phoenix-hive-base/src/it/java/org/apache/phoenix/hive/HivePhoenixStoreIT.java 
b/phoenix-hive-base/src/it/java/org/apache/phoenix/hive/HivePhoenixStoreIT.java
index bdd10e5..461ab99 100644
--- 
a/phoenix-hive-base/src/it/java/org/apache/phoenix/hive/HivePhoenixStoreIT.java
+++ 
b/phoenix-hive-base/src/it/java/org/apache/phoenix/hive/HivePhoenixStoreIT.java
@@ -139,7 +139,7 @@ public abstract class HivePhoenixStoreIT extends 
BaseHivePhoenixStoreIT {
                 "DOUBLE,fl FLOAT, us INT)" + HiveTestUtil.CRLF +
                 " STORED BY  
\"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
                 .CRLF + " TBLPROPERTIES(" + HiveTestUtil.CRLF +
-                "   'phoenix.hbase.table.name'='phoenix_datatype'," + 
HiveTestUtil.CRLF +
+                "   'phoenix.table.name'='phoenix_datatype'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.znode.parent'='/hbase'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.quorum'='localhost'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.client.port'='" +
@@ -185,7 +185,7 @@ public abstract class HivePhoenixStoreIT extends 
BaseHivePhoenixStoreIT {
                 " STORED BY  
\"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
                 .CRLF +
                 " TBLPROPERTIES(" + HiveTestUtil.CRLF +
-                "   'phoenix.hbase.table.name'='phoenix_MultiKey'," + 
HiveTestUtil.CRLF +
+                "   'phoenix.table.name'='phoenix_MultiKey'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.znode.parent'='/hbase'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.quorum'='localhost'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.client.port'='" +
@@ -233,7 +233,7 @@ public abstract class HivePhoenixStoreIT extends 
BaseHivePhoenixStoreIT {
                 " STORED BY  
\"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
                 .CRLF +
                 " TBLPROPERTIES(" + HiveTestUtil.CRLF +
-                "   'phoenix.hbase.table.name'='joinTable1'," + 
HiveTestUtil.CRLF +
+                "   'phoenix.table.name'='joinTable1'," + HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.znode.parent'='/hbase'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.quorum'='localhost'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.client.port'='" +
@@ -244,7 +244,7 @@ public abstract class HivePhoenixStoreIT extends 
BaseHivePhoenixStoreIT {
                 " STORED BY  
\"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
                 .CRLF +
                 " TBLPROPERTIES(" + HiveTestUtil.CRLF +
-                "   'phoenix.hbase.table.name'='joinTable2'," + 
HiveTestUtil.CRLF +
+                "   'phoenix.table.name'='joinTable2'," + HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.znode.parent'='/hbase'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.quorum'='localhost'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.client.port'='" +
@@ -283,7 +283,7 @@ public abstract class HivePhoenixStoreIT extends 
BaseHivePhoenixStoreIT {
                 " STORED BY  
\"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
                 .CRLF +
                 " TBLPROPERTIES(" + HiveTestUtil.CRLF +
-                "   'phoenix.hbase.table.name'='joinTable3'," + 
HiveTestUtil.CRLF +
+                "   'phoenix.table.name'='joinTable3'," + HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.znode.parent'='/hbase'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.quorum'='localhost'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.client.port'='" +
@@ -295,7 +295,7 @@ public abstract class HivePhoenixStoreIT extends 
BaseHivePhoenixStoreIT {
                 " STORED BY  
\"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
                 .CRLF +
                 " TBLPROPERTIES(" + HiveTestUtil.CRLF +
-                "   'phoenix.hbase.table.name'='joinTable4'," + 
HiveTestUtil.CRLF +
+                "   'phoenix.table.name'='joinTable4'," + HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.znode.parent'='/hbase'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.quorum'='localhost'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.client.port'='" +
@@ -344,7 +344,7 @@ public abstract class HivePhoenixStoreIT extends 
BaseHivePhoenixStoreIT {
                 " STORED BY  
\"org.apache.phoenix.hive.PhoenixStorageHandler\"" + HiveTestUtil
                 .CRLF +
                 " TBLPROPERTIES(" + HiveTestUtil.CRLF +
-                "   'phoenix.hbase.table.name'='TIMESTAMPTABLE'," + 
HiveTestUtil.CRLF +
+                "   'phoenix.table.name'='TIMESTAMPTABLE'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.znode.parent'='/hbase'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.quorum'='localhost'," + 
HiveTestUtil.CRLF +
                 "   'phoenix.zookeeper.client.port'='" +
@@ -362,4 +362,44 @@ public abstract class HivePhoenixStoreIT extends 
BaseHivePhoenixStoreIT {
         createFile(sb.toString(), fullPath);
         runTest(testName, fullPath);
     }
+
+    @Test
+    //For some reason, this test only fails on Mapreduce, and not on Tez
+    public void testCompletelyEliminateAnd() throws Exception {
+        String testName = "testCompletelyEliminateAnd";
+        utility.getTestFileSystem().createNewFile(new Path(hiveLogDir, 
testName + ".out"));
+        createFile("1\t1\tc_h\td_h\te_h\t2020-01-30 15:10:10\t2020-01-30\n", 
new Path(hiveOutputDir, testName + ".out").toString());
+        createFile(StringUtil.EMPTY_STRING, new Path(hiveLogDir, testName + 
".out").toString());
+        StringBuilder sb = new StringBuilder();
+
+        sb.append("CREATE EXTERNAL TABLE TEST_PHX (\n"
+                + "a_h string,\n"
+                + "b_h string,\n"
+                + "c_h string,\n"
+                + "d_h string,\n"
+                + "e_h string,\n"
+                + "f_h string,\n"
+                + "g_h string)\n"
+                + "ROW FORMAT SERDE\n"
+                + "   'org.apache.phoenix.hive.PhoenixSerDe'\n"
+                + "STORED BY\n"
+                + "   'org.apache.phoenix.hive.PhoenixStorageHandler'\n"
+                + "WITH SERDEPROPERTIES (\n"
+                + "   'serialization.format'='1')\n"
+                + "TBLPROPERTIES (\n"
+                + "   'bucketing_version'='2',\n"
+                + "'phoenix.rowkeys'='a_h, b_h, c_h, d_h, e_h, f_h' ,"
+                + "'phoenix.table.name'='TEST',\n"
+                + "'phoenix.zookeeper.client.port'='"+ 
utility.getZkCluster().getClientPort() + "',"
+                + "'phoenix.zookeeper.quorum'='localhost',\n"
+                + "'phoenix.zookeeper.znode.parent'='/hbase');" + 
HiveTestUtil.CRLF);
+
+        sb.append("INSERT into TEST_PHX values ('1', '1', 'c_h', 'd_h', 'e_h', 
'2020-01-30 15:10:10', '2020-01-30');\n" + HiveTestUtil.CRLF);
+
+        sb.append("SELECT * from TEST_PHX where f_h >=\"2020-01-30\" and 
b_h=\"1\";" + HiveTestUtil.CRLF);
+
+        String fullPath = new Path(utility.getDataTestDir(), 
testName).toString();
+        createFile(sb.toString(), fullPath);
+        runTest(testName, fullPath);
+    }
 }
diff --git 
a/phoenix-hive-base/src/main/java/org/apache/phoenix/hive/ql/index/IndexPredicateAnalyzer.java
 
b/phoenix-hive-base/src/main/java/org/apache/phoenix/hive/ql/index/IndexPredicateAnalyzer.java
index e4082bb..d9079da 100644
--- 
a/phoenix-hive-base/src/main/java/org/apache/phoenix/hive/ql/index/IndexPredicateAnalyzer.java
+++ 
b/phoenix-hive-base/src/main/java/org/apache/phoenix/hive/ql/index/IndexPredicateAnalyzer.java
@@ -360,7 +360,12 @@ public class IndexPredicateAnalyzer {
                     residuals.add((ExprNodeDesc) nodeOutput);
                 }
             }
+            if (residuals.size() == 0) {
+                //All children were pushed down
+                return null;
+            }
             if (residuals.size() == 1) {
+                //A single child remains
                 return residuals.get(0);
             }
             return new 
ExprNodeGenericFuncDesc(TypeInfoFactory.booleanTypeInfo, FunctionRegistry

Reply via email to