[ https://issues.apache.org/jira/browse/CALCITE-5044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17510502#comment-17510502 ]
Xurenhe commented on CALCITE-5044: ---------------------------------- Yes, I agree with you. We could define a switch[{*}removeOrderByConstantKey]{*} in *SqlDialect* whether remove constant keys in order-by. Please review this [PR-2749|[https://github.com/apache/calcite/pull/2749], if you have a time.|https://github.com/apache/calcite/pull/2749],] Thanks a lot. > OrderBy constant executing RelToSql ambiguously > ----------------------------------------------- > > Key: CALCITE-5044 > URL: https://issues.apache.org/jira/browse/CALCITE-5044 > Project: Calcite > Issue Type: Improvement > Reporter: Xurenhe > Assignee: Xurenhe > Priority: Major > Attachments: image-2022-03-17-21-45-22-988.png > > > > There is ambiguous in the rel-to-sql's converter when meeting `order by > constant `. > Here is an example: > {code:java} > @Test void testOderByConstant() { > final Function<RelBuilder, RelNode> relFn = b -> b > .scan("EMP") > .project(b.literal(1), b.field(1), b.field(2)) > .sort(RelCollations.of(ImmutableList.of( > new RelFieldCollation(0), new RelFieldCollation(1)))) > .project(b.field(2), b.field(1)) > .build(); > final String expected = ""; > relFn(relFn).ok(expected); > } {code} > Return sql: > {code:java} > SELECT "JOB", "ENAME" > FROM "scott"."EMP" > ORDER BY 1, "ENAME" {code} > But, `ORDER BY 1` may mean 'sort by the first column in the select list' > because of SqlConformance#isSortByOrdinal. > > I keep this the same semantics, by apply the rule of > `CoreRules#SORT_REMOVE_CONSTANT_KEYS` > Should the rel_to_sql's converter support it natively? > *CODE:* > https://github.com/wojustme/calcite/blob/6ad04e85875d9202e592a78cca8db807c5bde362/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java#L1601 > -- This message was sent by Atlassian Jira (v8.20.1#820001)