zhengyu created CALCITE-6772:
--------------------------------
Summary: onversion to relational algebra failed to preserve
datatypes:
Key: CALCITE-6772
URL: https://issues.apache.org/jira/browse/CALCITE-6772
Project: Calcite
Issue Type: Bug
Environment: 1.35.0
Reporter: zhengyu
my table :
.setName("step")
.column("ID", DataTypes.NULLABLE_STRING)
.column("name", DataTypes.NULLABLE_STRING)
.column("payment", DataTypes.NULLABLE_INT)
.column("date", DataTypes.NULLABLE_TIMESTAMP)
.column("date1", DataTypes.NULLABLE_TIMESTAMP)
.column("合同签约时间", DataTypes.NULLABLE_TIMESTAMP)
.column("合同类型", DataTypes.NULLABLE_STRING)
.column("合同付款类型", DataTypes.NULLABLE_STRING)
.column("合同金额", DataTypes.NULLABLE_DOUBLE)
.column("回款金额", DataTypes.NULLABLE_DOUBLE)
.column("购买数量", DataTypes.NULLABLE_DOUBLE)
.column("省份", DataTypes.NULLABLE_STRING)
.column("城市", DataTypes.NULLABLE_STRING)
my sql:
"SELECT `城市`, YEAR(`合同签约时间`) AS `年份`, \n" +
" SUM(`合同金额`) AS `合同金额`,\n" +
" SUM(`合同金额`) - LAG(SUM(`合同金额`), 1) OVER (PARTITION BY `城市` ORDER BY
YEAR(`合同签约时间`)) AS `合同金额变化`\n" +
"FROM `step`\n" +
"GROUP BY `城市`, YEAR(`合同签约时间`)\n" +
"ORDER BY `城市`, YEAR(`合同签约时间`);",
"When I parse this SQL and execute this step: {{{}RelRoot root =
converter.convertQuery(parsed, true, true);{}}}, a type mismatch error occurs.
The detailed message is as follows:"
Conversion to relational algebra failed to preserve datatypes:
validated type:
RecordType(VARCHAR CHARACTER SET "UTF-8" NOT NULL 城市, BIGINT NOT NULL 年份, FLOAT
NOT NULL 合同金额, FLOAT 合同金额变化) NOT NULL
converted type:
RecordType(VARCHAR CHARACTER SET "UTF-8" NOT NULL 城市, BIGINT NOT NULL 年份, FLOAT
NOT NULL 合同金额, FLOAT NOT NULL 合同金额变化) NOT NULL
rel:
LogicalSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC])
LogicalProject(城市=[$0], 年份=[$1], 合同金额=[$2], 合同金额变化=[-($2, CAST(LAG($2, 1)
OVER (PARTITION BY $0 ORDER BY $1)):BIGINT NOT NULL)])
LogicalAggregate(group=[\\{0, 1}], 合同金额=[SUM($2)])
LogicalProject(城市=[$12], $f1=[EXTRACT(FLAG(YEAR), $5)], 合同金额=[$8])
LogicalTableScan(table=[[step]])
java.lang.AssertionError: Conversion to relational algebra failed to preserve
datatypes:
validated type:
RecordType(VARCHAR CHARACTER SET "UTF-8" NOT NULL 城市, BIGINT NOT NULL 年份, FLOAT
NOT NULL 合同金额, FLOAT 合同金额变化) NOT NULL
converted type:
RecordType(VARCHAR CHARACTER SET "UTF-8" NOT NULL 城市, BIGINT NOT NULL 年份, FLOAT
NOT NULL 合同金额, FLOAT NOT NULL 合同金额变化) NOT NULL
rel:
LogicalSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC])
LogicalProject(城市=[$0], 年份=[$1], 合同金额=[$2], 合同金额变化=[-($2, CAST(LAG($2, 1)
OVER (PARTITION BY $0 ORDER BY $1)):BIGINT NOT NULL)])
LogicalAggregate(group=[\\{0, 1}], 合同金额=[SUM($2)])
LogicalProject(城市=[$12], $f1=[EXTRACT(FLAG(YEAR), $5)], 合同金额=[$8])
LogicalTableScan(table=[[step]])
at
org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:498)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)