You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by dl...@apache.org on 2020/10/02 18:18:07 UTC

[asterixdb] branch master updated: [NO ISSUE][COMP] Add equivalence support in DISTINCT FD visitor.

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

dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new a93f36d  [NO ISSUE][COMP] Add equivalence support in DISTINCT FD visitor.
a93f36d is described below

commit a93f36df22debbdbd5290b4155d23a57b173794a
Author: Glenn <gg...@uci.edu>
AuthorDate: Thu Oct 1 15:20:47 2020 -0700

    [NO ISSUE][COMP] Add equivalence support in DISTINCT FD visitor.
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Detail:
    - FD visitor for DISTINCT operator now correctly accounts for
    equivalent variables.
    
    Change-Id: I78d66c65864aeacd1713ee60e7f4d221af0eacd1
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/8206
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>
---
 .../operators/logical/visitors/FDsAndEquivClassesVisitor.java        | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/FDsAndEquivClassesVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/FDsAndEquivClassesVisitor.java
index eaac45d..ccdbd1f 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/FDsAndEquivClassesVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/FDsAndEquivClassesVisitor.java
@@ -189,7 +189,10 @@ public class FDsAndEquivClassesVisitor implements ILogicalOperatorVisitor<Void,
             if (p2.getExpressionTag() == LogicalExpressionTag.VARIABLE) {
                 VariableReferenceExpression var2 = (VariableReferenceExpression) p2;
                 LogicalVariable v2 = var2.getVariableReference();
-                if (normSet.contains(v2)) {
+                // We must additionally account for equivalent variables.
+                EquivalenceClass v2EquivalenceClass = equivalenceClasses.get(v2);
+                if ((v2EquivalenceClass != null && normSet.contains(v2EquivalenceClass.getVariableRepresentative()))
+                        || (v2EquivalenceClass == null && normSet.contains(v2))) {
                     newDistinctByList.add(p2Ref);
                 }
             } else {