Skip to content

Commit ab353e4

Browse files
olivrleeAnthrino
authored andcommitted
Revert "[CALCITE-6519] Non-aggregate query that uses measure in ORDER BY"
This reverts commit 27fd583.
1 parent e3a790d commit ab353e4

File tree

2 files changed

+12
-28
lines changed

2 files changed

+12
-28
lines changed

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

Lines changed: 7 additions & 23 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;
@@ -4869,32 +4868,17 @@ private void validateOrderItem(SqlSelect select, SqlNode orderItem) {
48694868
}
48704869

48714870
@Override public SqlNode expandOrderExpr(SqlSelect select, SqlNode orderExpr) {
4872-
final SqlNode orderExpr2 =
4871+
final SqlNode newSqlNode =
48734872
new OrderExpressionExpander(select, orderExpr).go();
4874-
if (orderExpr2 == orderExpr) {
4875-
return orderExpr2;
4873+
if (newSqlNode != orderExpr) {
4874+
final SqlValidatorScope scope = getOrderScope(select);
4875+
inferUnknownTypes(unknownType, scope, newSqlNode);
4876+
final RelDataType type = deriveType(scope, newSqlNode);
4877+
setValidatedNodeType(newSqlNode, type);
48764878
}
4877-
4878-
final SqlValidatorScope scope = getOrderScope(select);
4879-
inferUnknownTypes(unknownType, scope, orderExpr2);
4880-
final RelDataType type = deriveType(scope, orderExpr2);
4881-
setValidatedNodeType(orderExpr2, type);
4882-
if (!type.isMeasure()) {
4883-
return orderExpr2;
4884-
}
4885-
4886-
final SqlNode orderExpr3 = measureToValue(orderExpr2);
4887-
final RelDataType type3 = deriveType(scope, orderExpr3);
4888-
setValidatedNodeType(orderExpr3, type3);
4889-
return orderExpr3;
4879+
return newSqlNode;
48904880
}
48914881

4892-
private static SqlNode measureToValue(SqlNode e) {
4893-
if (e.getKind() == SqlKind.V2M) {
4894-
return ((SqlCall) e).operand(0);
4895-
}
4896-
return SqlInternalOperators.M2V.createCall(e.getParserPosition(), e);
4897-
}
48984882

48994883
/**
49004884
* Validates the GROUP BY clause of a SELECT statement. This method is

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3742,6 +3742,7 @@ protected RelFieldCollation convertOrderItem(
37423742
SqlNode orderItem, List<SqlNode> extraExprs,
37433743
RelFieldCollation.Direction direction,
37443744
RelFieldCollation.NullDirection nullDirection) {
3745+
assert select != null;
37453746
// Handle DESC keyword, e.g. 'select a, b from t order by a desc'.
37463747
switch (orderItem.getKind()) {
37473748
case DESCENDING:
@@ -3769,22 +3770,21 @@ protected RelFieldCollation convertOrderItem(
37693770
break;
37703771
}
37713772

3772-
final SqlValidator validator = validator();
3773+
SqlNode converted = validator().expandOrderExpr(select, orderItem);
3774+
37733775
switch (nullDirection) {
37743776
case UNSPECIFIED:
3775-
nullDirection = validator.config().defaultNullCollation().last(desc(direction))
3777+
nullDirection = validator().config().defaultNullCollation().last(desc(direction))
37763778
? RelFieldCollation.NullDirection.LAST
37773779
: RelFieldCollation.NullDirection.FIRST;
37783780
break;
37793781
default:
37803782
break;
37813783
}
37823784

3783-
SqlNode converted = validator.expandOrderExpr(select, orderItem);
3784-
37853785
// Scan the select list and order exprs for an identical expression.
37863786
final SelectScope selectScope =
3787-
requireNonNull(validator.getRawSelectScope(select),
3787+
requireNonNull(validator().getRawSelectScope(select),
37883788
() -> "getRawSelectScope is not found for " + select);
37893789
int ordinal = -1;
37903790
List<SqlNode> expandedSelectList = selectScope.getExpandedSelectList();

0 commit comments

Comments
 (0)