xndai commented on a change in pull request #1884:
URL: https://github.com/apache/calcite/pull/1884#discussion_r422814362



##########
File path: core/src/main/java/org/apache/calcite/rel/RelCollationTraitDef.java
##########
@@ -69,10 +70,14 @@ public RelNode convert(
       return null;
     }
 
-    // Create a logical sort, then ask the planner to convert its remaining
-    // traits (e.g. convert it to an EnumerableSortRel if rel is enumerable
-    // convention)
-    final Sort sort = LogicalSort.create(rel, toCollation, null, null);
+    // Create a sort operator based on given convention
+    Convention toConvention = rel.getConvention();
+    RelBuilder builder =
+        RelFactories.LOGICAL_BUILDER.create(rel.getCluster(), null);
+    RelNode sort = builder.push(rel)
+                          .adoptConvention(toConvention)
+                          .sort(toCollation)
+                          .build();

Review comment:
       This was the very first proposal from Haisheng. We debated a lot and 
came to agreement to use RelBuilder due to a few benefits - 1. reuse existing 
RelBuilder logics. For example, it would be very easy to create sort limit as 
well. 2. support more scenarios, not just the enforcement. 3. support building 
rel tree with multiple conventions (as discussed in JIRA)




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


Reply via email to