xiedeyantu commented on code in PR #4585:
URL: https://github.com/apache/calcite/pull/4585#discussion_r2440452923


##########
core/src/main/java/org/apache/calcite/rel/RelCollationTraitDef.java:
##########
@@ -87,4 +141,45 @@ private RelCollationTraitDef() {
       RelOptPlanner planner, RelCollation fromTrait, RelCollation toTrait) {
     return true;
   }
+
+  /**
+   * Associates an optimized collation with its original collation.
+   * Used to preserve optimization history for trait satisfaction checking.
+   * The association is scoped to the planner's lifecycle.
+   */
+  public static void setOriginalCollation(
+      RelOptPlanner planner,
+      RelCollation optimized,
+      List<RelFieldCollation> original) {
+    Map<RelCollation, List<RelFieldCollation>> map =
+        getOriginalCollationsMap(planner);
+    map.put(optimized, original);
+  }
+
+  /**
+   * Gets the original collation associated with an optimized collation, if 
any.
+   * Returns null if no original collation was recorded.
+   */
+  public static @Nullable List<RelFieldCollation> getOriginalCollation(
+      RelOptPlanner planner,
+      RelCollation collation) {
+    Map<RelCollation, List<RelFieldCollation>> map =
+        getOriginalCollationsMap(planner);
+    return map.get(collation);
+  }
+
+  /**
+   * Gets the original collation associated with an optimized collation using 
the
+   * current planner context. Convenience method for trait satisfaction 
checking.
+   * Returns null if no current planner or no original collation was recorded.
+   */
+  public static @Nullable List<RelFieldCollation> 
getOriginalCollationFromContext(
+      RelCollation collation) {
+    RelOptPlanner planner = getCurrentPlanner();
+    if (planner == null) {

Review Comment:
   Done.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to