[ 
https://issues.apache.org/jira/browse/CALCITE-6772?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17911696#comment-17911696
 ] 

Mihai Budiu commented on CALCITE-6772:
--------------------------------------

BTW: you filed this for Calcite 1.35, but Calcite is currently at 1.38, the bug 
may have been fixed in the meantime.

> 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
>            Priority: Major
>
> 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)

Reply via email to