seawinde commented on code in PR #39629:
URL: https://github.com/apache/doris/pull/39629#discussion_r1724198661


##########
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/exploration/mv/mapping/EquivalenceClassMapping.java:
##########
@@ -30,39 +31,41 @@
  * This will extract the equivalence class set in EquivalenceClass and mapping 
set in
  * two different EquivalenceClass.
  */
-public class EquivalenceClassSetMapping extends Mapping {
+public class EquivalenceClassMapping extends Mapping {
 
-    private final Map<Set<SlotReference>, Set<SlotReference>> 
equivalenceClassSetMap;
+    private final Map<List<SlotReference>, List<SlotReference>> 
equivalenceClassSetMap;
 
-    public EquivalenceClassSetMapping(Map<Set<SlotReference>,
-            Set<SlotReference>> equivalenceClassSetMap) {
+    public EquivalenceClassMapping(Map<List<SlotReference>,
+            List<SlotReference>> equivalenceClassSetMap) {
         this.equivalenceClassSetMap = equivalenceClassSetMap;
     }
 
-    public static EquivalenceClassSetMapping of(Map<Set<SlotReference>, 
Set<SlotReference>> equivalenceClassSetMap) {
-        return new EquivalenceClassSetMapping(equivalenceClassSetMap);
+    public static EquivalenceClassMapping of(Map<List<SlotReference>, 
List<SlotReference>> equivalenceClassSetMap) {
+        return new EquivalenceClassMapping(equivalenceClassSetMap);
     }
 
     /**
      * Generate source equivalence set map to target equivalence set
      */
-    public static EquivalenceClassSetMapping generate(EquivalenceClass source, 
EquivalenceClass target) {
+    public static EquivalenceClassMapping generate(EquivalenceClass source, 
EquivalenceClass target) {
 
-        Map<Set<SlotReference>, Set<SlotReference>> equivalenceClassSetMap = 
new HashMap<>();
-        List<Set<SlotReference>> sourceSets = source.getEquivalenceSetList();
-        List<Set<SlotReference>> targetSets = target.getEquivalenceSetList();
+        Map<List<SlotReference>, List<SlotReference>> equivalenceClassSetMap = 
new HashMap<>();

Review Comment:
   such as the expression `o_orderstatus = o_orderstatus` we should compensate 
`o_orderstatus = o_orderstatus` on materialized view. 
   If we record the slot equal expression in set, only get` {o_orderstatus}`, 
in `Predicates#compensateEquivalence` we couldn't compensate filter. 
   Change set to list. we get  {`o_orderstatus, o_orderstatus}`, then we can 
compensate filter by `Predicates#compensateEquivalence` .



-- 
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.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

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


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to