Evgeny Stanilovsky created IGNITE-19106:
-------------------------------------------
Summary: Sql. Column namings are partially broken after upgrading
to calcite 1.34
Key: IGNITE-19106
URL: https://issues.apache.org/jira/browse/IGNITE-19106
Project: Ignite
Issue Type: Improvement
Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Evgeny Stanilovsky
After upgrading to calcite 1.34 SqlValidator#deriveAlias and overloading call
IgniteSqlValidator#deriveAlias is changed, thus requests like :
select v / 2 from t, return EXPR$ instead of column name derived from
IgniteSqlValidator#deriveAlias. Fast (near) fix looks like cover both such
queries:
IgnitePlanner#validateAndGetTypeMetadata ->
{noformat}
public ValidationResult validateAndGetTypeMetadata(SqlNode sqlNode) {
SqlNode validatedNode = validator().validate(sqlNode);
RelDataType type = validator().getValidatedNodeType(validatedNode);
List<List<String>> origins = validator().getFieldOrigins(validatedNode);
List<String> derived = Collections.emptyList();
if (sqlNode instanceof SqlSelect) {
SelectScope list = validator().getRawSelectScope((SqlSelect)
sqlNode);
assert type.getFieldList().size() ==
list.getExpandedSelectList().size();
int cnt = 0;
derived = new ArrayList<>(list.getExpandedSelectList().size());
for (SqlNode node : list.getExpandedSelectList()) {
derived.add(validator().deriveAlias(node, cnt++));
}
}
return new ValidationResult(validatedNode, type, origins, derived);
}
{noformat}
and use this derived instead of aliases here:
PrepareServiceImpl#resultSetMetadata
--
This message was sent by Atlassian Jira
(v8.20.10#820010)