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)

Reply via email to