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)