You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Aleksey Plekhanov (Jira)" <ji...@apache.org> on 2022/12/15 14:00:00 UTC
[jira] [Created] (CALCITE-5435) Insert multi row values failed when column have values of different types
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)