[ 
https://issues.apache.org/jira/browse/HIVE-24458?focusedWorklogId=543635&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-543635
 ]

ASF GitHub Bot logged work on HIVE-24458:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 28/Jan/21 13:28
            Start Date: 28/Jan/21 13:28
    Worklog Time Spent: 10m 
      Work Description: pgaref commented on a change in pull request #1726:
URL: https://github.com/apache/hive/pull/1726#discussion_r566060211



##########
File path: 
ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java
##########
@@ -85,100 +89,101 @@ public static PredicateLeaf 
createPredicateLeaf(PredicateLeaf.Operator operator,
   @Test
   public void testNotPushdown() throws Exception {
     assertEquals("leaf-1", SearchArgumentImpl.BuilderImpl.pushDownNot(leaf(1))
-        .toString());
+        .toOldString());
     assertEquals("(not leaf-1)",
-        SearchArgumentImpl.BuilderImpl.pushDownNot(not(leaf(1))).toString());
+        
SearchArgumentImpl.BuilderImpl.pushDownNot(not(leaf(1))).toOldString());
     assertEquals("leaf-1",
         SearchArgumentImpl.BuilderImpl.pushDownNot(not(not(leaf(1))))
-            .toString());
+            .toOldString());
     assertEquals("(not leaf-1)",
         SearchArgumentImpl.BuilderImpl.pushDownNot(not(not(not(leaf(1))))).
-            toString());
+            toOldString());
     assertEquals("(or leaf-1 (not leaf-2))",
         SearchArgumentImpl.BuilderImpl.pushDownNot(not(and(not(leaf(1)),
-            leaf(2)))).toString());
+            leaf(2)))).toOldString());
     assertEquals("(and (not leaf-1) leaf-2)",
         SearchArgumentImpl.BuilderImpl.pushDownNot(not(or(leaf(1),
-            not(leaf(2))))).toString());
+            not(leaf(2))))).toOldString());
     assertEquals("(or (or (not leaf-1) leaf-2) leaf-3)",
         SearchArgumentImpl.BuilderImpl.pushDownNot(or(not(and(leaf(1),
                 not(leaf(2)))),
-            not(not(leaf(3))))).toString());
+            not(not(leaf(3))))).toOldString());
     assertEquals("NO", SearchArgumentImpl.BuilderImpl.pushDownNot(
-        not(constant(TruthValue.YES))).toString());
+        not(constant(TruthValue.YES))).toOldString());
     assertEquals("YES", SearchArgumentImpl.BuilderImpl.pushDownNot(
-        not(constant(TruthValue.NO))).toString());
+        not(constant(TruthValue.NO))).toOldString());
     assertEquals("NULL", SearchArgumentImpl.BuilderImpl.pushDownNot(
-        not(constant(TruthValue.NULL))).toString());
+        not(constant(TruthValue.NULL))).toOldString());
     assertEquals("YES_NO", SearchArgumentImpl.BuilderImpl.pushDownNot(
-        not(constant(TruthValue.YES_NO))).toString());
+        not(constant(TruthValue.YES_NO))).toOldString());
     assertEquals("YES_NULL", SearchArgumentImpl.BuilderImpl.pushDownNot(
-        not(constant(TruthValue.NO_NULL))).toString());
+        not(constant(TruthValue.NO_NULL))).toOldString());
     assertEquals("NO_NULL", SearchArgumentImpl.BuilderImpl.pushDownNot(
-        not(constant(TruthValue.YES_NULL))).toString());
+        not(constant(TruthValue.YES_NULL))).toOldString());
     assertEquals("YES_NO_NULL", SearchArgumentImpl.BuilderImpl.pushDownNot(
-        not(constant(TruthValue.YES_NO_NULL))).toString());
+        not(constant(TruthValue.YES_NO_NULL))).toOldString());
   }
 
   @Test
   public void testFlatten() throws Exception {
-    assertEquals("leaf-1", 
SearchArgumentImpl.BuilderImpl.flatten(leaf(1)).toString());
+    PredicateLeafImpl leaf1 = new PredicateLeafImpl();

Review comment:
       Unused variable

##########
File path: 
storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/ExpressionTree.java
##########
@@ -31,25 +31,25 @@
   public enum Operator {OR, AND, NOT, LEAF, CONSTANT}
   private final Operator operator;
   private final List<ExpressionTree> children;
-  private int leaf;
+  private final SearchArgumentImpl.PredicateLeafImpl leaf;

Review comment:
       This could be changed to PredicateLeaf -- see below

##########
File path: 
storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java
##########
@@ -504,28 +493,18 @@ public SearchArgument build() {
         throw new IllegalArgumentException("Failed to end " +
             currentTree.size() + " operations.");
       }
+      ExpressionTree optimized = optimize(root);

Review comment:
       maybe rename vars to compact and normalized ExpressionTree to avoid 
confusion?

##########
File path: 
storage-api/src/test/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentFactoryTest.java
##########
@@ -0,0 +1,160 @@
+package org.apache.hadoop.hive.ql.io.sarg;

Review comment:
       Apache License?

##########
File path: 
storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgument.java
##########
@@ -162,6 +162,13 @@ public boolean isNeeded() {
    */
   public ExpressionTree getExpression();
 
+  /**
+   * Get the expression tree without the normalization to conjunctive normal

Review comment:
       Nit: could also explicitly say in **getExpression** above that it 
normalizes the expression




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 543635)
    Time Spent: 0.5h  (was: 20m)

> Allow access to SArgs without converting to disjunctive normal form
> -------------------------------------------------------------------
>
>                 Key: HIVE-24458
>                 URL: https://issues.apache.org/jira/browse/HIVE-24458
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Owen O'Malley
>            Assignee: Owen O'Malley
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> For some use cases, it is useful to have access to the SArg expression in a 
> non-normalized form. Currently, the SArg only provides the fully normalized 
> expression.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to