Aleksey Plekhanov created CALCITE-5435:
------------------------------------------

             Summary: Insert multi row values failed when column have values of 
different types
                 Key: CALCITE-5435
                 URL: https://issues.apache.org/jira/browse/CALCITE-5435
             Project: Calcite
          Issue Type: Bug
            Reporter: Aleksey Plekhanov
            Assignee: Aleksey Plekhanov


Queries like:
{noformat}
insert into empnullables (empno) values (10), ('20'){noformat}
Or:
{noformat}
insert into empnullables (empno, deptno) values (10, '300'), (20, 
null){noformat}
Fail with an exception:
{noformat}
>From line 2, column 1 to line 2, column 32: Values passed to VALUES operator 
>must have compatible types
org.apache.calcite.runtime.CalciteContextException: From line 2, column 1 to 
line 2, column 32: Values passed to VALUES operator must have compatible types
...
    at 
app//org.apache.calcite.sql.validate.SqlValidatorImpl.validateValues(SqlValidatorImpl.java:5370){noformat}
In the first query, first row has column type INTEGER and second row has column 
type CHAR(2).
In the second query data type of {{null}} is infered from target data type 
(INTEGER).
However types of values can be coerced.
In case of one-by-one inserts statements work as expected. For one-row inserts 
this check is skipped and types are coerced later in 
{{SqlValidatorImpl#validateInsert}} -> {{{}checkTypeAssignment{}}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to