Skip to content

Commit f2fb7bf

Browse files
committed
Revert "[CALCITE-6519] Non-aggregate query that uses measure in ORDER BY"
This reverts commit 27fd583.
1 parent 19d0c28 commit f2fb7bf

File tree

3 files changed

+12
-51
lines changed

3 files changed

+12
-51
lines changed

core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@
9292
import org.apache.calcite.sql.SqlWithItem;
9393
import org.apache.calcite.sql.TableCharacteristic;
9494
import org.apache.calcite.sql.fun.SqlCase;
95-
import org.apache.calcite.sql.fun.SqlInternalOperators;
9695
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
9796
import org.apache.calcite.sql.parser.SqlParserPos;
9897
import org.apache.calcite.sql.type.AssignableOperandTypeChecker;
@@ -4867,31 +4866,15 @@ private void validateOrderItem(SqlSelect select, SqlNode orderItem) {
48674866
}
48684867

48694868
@Override public SqlNode expandOrderExpr(SqlSelect select, SqlNode orderExpr) {
4870-
final SqlNode orderExpr2 =
4869+
final SqlNode newSqlNode =
48714870
new OrderExpressionExpander(select, orderExpr).go();
4872-
if (orderExpr2 == orderExpr) {
4873-
return orderExpr2;
4871+
if (newSqlNode != orderExpr) {
4872+
final SqlValidatorScope scope = getOrderScope(select);
4873+
inferUnknownTypes(unknownType, scope, newSqlNode);
4874+
final RelDataType type = deriveType(scope, newSqlNode);
4875+
setValidatedNodeType(newSqlNode, type);
48744876
}
4875-
4876-
final SqlValidatorScope scope = getOrderScope(select);
4877-
inferUnknownTypes(unknownType, scope, orderExpr2);
4878-
final RelDataType type = deriveType(scope, orderExpr2);
4879-
setValidatedNodeType(orderExpr2, type);
4880-
if (!type.isMeasure()) {
4881-
return orderExpr2;
4882-
}
4883-
4884-
final SqlNode orderExpr3 = measureToValue(orderExpr2);
4885-
final RelDataType type3 = deriveType(scope, orderExpr3);
4886-
setValidatedNodeType(orderExpr3, type3);
4887-
return orderExpr3;
4888-
}
4889-
4890-
private static SqlNode measureToValue(SqlNode e) {
4891-
if (e.getKind() == SqlKind.V2M) {
4892-
return ((SqlCall) e).operand(0);
4893-
}
4894-
return SqlInternalOperators.M2V.createCall(e.getParserPosition(), e);
4877+
return newSqlNode;
48954878
}
48964879

48974880
/**

core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3751,6 +3751,7 @@ protected RelFieldCollation convertOrderItem(
37513751
SqlNode orderItem, List<SqlNode> extraExprs,
37523752
RelFieldCollation.Direction direction,
37533753
RelFieldCollation.NullDirection nullDirection) {
3754+
assert select != null;
37543755
// Handle DESC keyword, e.g. 'select a, b from t order by a desc'.
37553756
switch (orderItem.getKind()) {
37563757
case DESCENDING:
@@ -3778,22 +3779,21 @@ protected RelFieldCollation convertOrderItem(
37783779
break;
37793780
}
37803781

3781-
final SqlValidator validator = validator();
3782+
SqlNode converted = validator().expandOrderExpr(select, orderItem);
3783+
37823784
switch (nullDirection) {
37833785
case UNSPECIFIED:
3784-
nullDirection = validator.config().defaultNullCollation().last(desc(direction))
3786+
nullDirection = validator().config().defaultNullCollation().last(desc(direction))
37853787
? RelFieldCollation.NullDirection.LAST
37863788
: RelFieldCollation.NullDirection.FIRST;
37873789
break;
37883790
default:
37893791
break;
37903792
}
37913793

3792-
SqlNode converted = validator.expandOrderExpr(select, orderItem);
3793-
37943794
// Scan the select list and order exprs for an identical expression.
37953795
final SelectScope selectScope =
3796-
requireNonNull(validator.getRawSelectScope(select),
3796+
requireNonNull(validator().getRawSelectScope(select),
37973797
() -> "getRawSelectScope is not found for " + select);
37983798
int ordinal = -1;
37993799
List<SqlNode> expandedSelectList = selectScope.getExpandedSelectList();

core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -756,28 +756,6 @@ LogicalAggregate(group=[{}], X=[SUM($0)], Z=[MIN($1)])
756756
<![CDATA[
757757
LogicalAggregate(group=[{}], X=[SUM($5)], Z=[MIN($5)])
758758
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
759-
]]>
760-
</Resource>
761-
</TestCase>
762-
<TestCase name="testAggregateMerge9">
763-
<Resource name="sql">
764-
<![CDATA[SELECT sum(deptno)
765-
FROM (
766-
SELECT sum(deptno) AS deptno
767-
FROM dept
768-
GROUP BY name)]]>
769-
</Resource>
770-
<Resource name="planBefore">
771-
<![CDATA[
772-
LogicalAggregate(group=[{}], EXPR$0=[SUM($1)])
773-
LogicalAggregate(group=[{1}], DEPTNO=[SUM($0)])
774-
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
775-
]]>
776-
</Resource>
777-
<Resource name="planAfter">
778-
<![CDATA[
779-
LogicalAggregate(group=[{}], EXPR$0=[SUM($0)])
780-
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
781759
]]>
782760
</Resource>
783761
</TestCase>

0 commit comments

Comments
 (0)