You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Ruben Q L (Jira)" <ji...@apache.org> on 2022/06/21 09:15:00 UTC
[jira] [Resolved] (CALCITE-4897) Implicit type conversion is not complete for set operation in DML
[ https://issues.apache.org/jira/browse/CALCITE-4897?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ruben Q L resolved CALCITE-4897.
--------------------------------
Resolution: Fixed
Fixed via [https://github.com/apache/calcite/commit/9a102e77dd2f7b566b0a4a8cb0d504c6c572e1e1]
Thanks [~jiajunbernoulli] for the patch!
> Implicit type conversion is not complete for set operation in DML
> -----------------------------------------------------------------
>
> Key: CALCITE-4897
> URL: https://issues.apache.org/jira/browse/CALCITE-4897
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.28.0
> Reporter: Jiajun Xie
> Assignee: Jiajun Xie
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.31.0
>
> Time Spent: 2h 40m
> Remaining Estimate: 0h
>
> *case1*
> Here is the sql:
> {code:java}
> insert into t3
> select 'a', 1.0, 1 union
> select 'b', 2, 2 union
> select 'c', 3.0, CAST(3 AS SMALLINT) union
> select 'd', 4.0, 4 union
> select 'e', 5.0, 5 {code}
> but the validated sql is : *(The same problem occurs in other set operations in DML)*
> {code:java}
> INSERT INTO `CATALOG`.`SALES`.`T3`
> SELECT 'a', CAST(1.0 AS INTEGER), CAST(1 AS SMALLINT) UNION
> SELECT 'b', 2, CAST(2 AS SMALLINT) UNION
> SELECT 'c', 3.0, CAST(3 AS SMALLINT) UNION
> SELECT 'd', 4.0, 4 UNION -- should be cast
> SELECT 'e', 5.0, 5 -- should be cast {code}
> This is why CALCITE-4458 changed '&&' to '||', the right validated sql is:
> {code:java}
> INSERT INTO `CATALOG`.`SALES`.`T3`
> SELECT 'a', CAST(1.0 AS INTEGER), CAST(1 AS SMALLINT)
> UNION
> SELECT 'b', 2, CAST(2 AS SMALLINT)
> UNION
> SELECT 'c', CAST(3.0 AS INTEGER), CAST(3 AS SMALLINT)
> UNION
> SELECT 'd', CAST(4.0 AS INTEGER), CAST(4 AS SMALLINT)
> UNION
> SELECT 'e', CAST(5.0 AS INTEGER), CAST(5 AS SMALLINT){code}
>
> *case2*
> Here is the sql
> {code:java}
> insert into t3 values
> ('a', 1.0, 1),
> ('b', 2, 2),
> ('c', 3.0, CAST(3 AS SMALLINT)),
> ('d', 4.0, 4),
> ('e', 5.0, 5){code}
> the validated sql is :
> {code:java}
> INSERT INTO `CATALOG`.`SALES`.`T3`
> VALUES ROW('a', CAST(1.0 AS INTEGER), CAST(1 AS SMALLINT)),
> ROW('b', 2, CAST(2 AS SMALLINT)),-- Encountered an integer and ended early
> ROW('c', 3.0, CAST(3 AS SMALLINT)),-- Encountered an samllint and ended early
> ROW('d', 4.0, 4),
> ROW('e', 5.0, 5) {code}
> the right validated sql is:
> {code:java}
> INSERT INTO `CATALOG`.`SALES`.`T3`
> VALUES ROW('a', CAST(1.0 AS INTEGER), CAST(1 AS SMALLINT)),
> ROW('b', 2, CAST(2 AS SMALLINT)),
> ROW('c', CAST(3.0 AS INTEGER), CAST(3 AS SMALLINT)),
> ROW('d', CAST(4.0 AS INTEGER), CAST(4 AS SMALLINT)),
> ROW('e', CAST(5.0 AS INTEGER), CAST(5 AS SMALLINT)){code}
>
--
This message was sent by Atlassian Jira
(v8.20.7#820007)