You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Benchao Li (Jira)" <ji...@apache.org> on 2022/12/10 08:54:00 UTC
[jira] [Resolved] (CALCITE-5141) Incomplete implicit type conversion for insert values
[ https://issues.apache.org/jira/browse/CALCITE-5141?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benchao Li resolved CALCITE-5141.
---------------------------------
Fix Version/s: 1.33.0
Resolution: Fixed
Fixed via [https://github.com/apache/calcite/commit/00abf3b3f4db6903f1987a9ec1fe683e65b19be2]
[~jiajunbernoulli] Thanks for the PR!
> Incomplete implicit type conversion for insert values
> -----------------------------------------------------
>
> Key: CALCITE-5141
> URL: https://issues.apache.org/jira/browse/CALCITE-5141
> Project: Calcite
> Issue Type: Bug
> Components: core
> Reporter: Jiajun Xie
> Assignee: Jiajun Xie
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.33.0
>
> Time Spent: 2h 20m
> Remaining Estimate: 0h
>
> - Target table schema
> {code:java}
> // Register "T1" table.
> final MockTable t1 =
> MockTable.create(this, tSchema, "T1", false, 7.0, null);
> t1.addColumn("t1_varchar20", f.varchar20Type, true);
> t1.addColumn("t1_smallint", f.smallintType);
> t1.addColumn("t1_int", f.intType);
> t1.addColumn("t1_bigint", f.bigintType);
> t1.addColumn("t1_float", f.floatType);
> t1.addColumn("t1_double", f.doubleType);
> t1.addColumn("t1_decimal", f.decimalType);
> t1.addColumn("t1_timestamp", f.timestampType);
> t1.addColumn("t1_date", f.dateType);
> t1.addColumn("t1_binary", f.binaryType);
> t1.addColumn("t1_boolean", f.booleanType);
> registerTable(t1);
> {code}
> - Insert query
> {code:java}
> insert into t1 values
> ('a', 1, 1.0, 0, 0, 0, 0, TIMESTAMP '2021-11-28 00:00:00', date '2021-11-28', x'0A', false),
> ('b', 2, 2, 0, 0, 0, 0, TIMESTAMP '2021-11-28 00:00:00', date '2021-11-28', x'0A', false),
> ('c', CAST(3 AS SMALLINT), 3.0, 0, 0, 0, 0, TIMESTAMP '2021-11-28 00:00:00', date '2021-11-28', x'0A', false),
> ('d', 4, 4.0, 0, 0, 0, 0, TIMESTAMP '2021-11-28 00:00:00', date '2021-11-28', x'0A', false),
> ('e', 5, 5.0, 0, 0, 0, 0, TIMESTAMP '2021-11-28 00:00:00', date '2021-11-28', x'0A', false)
> {code}
> - Incorrect converted plan: the data type is not matched with table schema
> {code:java}
> LogicalTableModify(table=[[CATALOG, SALES, T1]], operation=[INSERT], flattened=[false])
> LogicalValues(tuples=[[
> { 'a', 1, 1, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false },
> { 'b', 2, 2, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false },
> { 'c', 3, ^3.0^, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false },
> { 'd', 4, ^4.0^, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false },
> { 'e', 5, ^5.0^, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false }]])
> // Here are some numbers that are not integers{code}
> - Correct converted plan
> {code:java}
> LogicalTableModify(table=[[CATALOG, SALES, T1]], operation=[INSERT], flattened=[false])
> LogicalValues(tuples=[[
> { 'a', 1, 1, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false },
> { 'b', 2, 2, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false },
> { 'c', 3, 3, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false },
> { 'd', 4, 4, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false },
> { 'e', 5, 5, 0, 0, 0, 0, 2021-11-28 00:00:00, 2021-11-28, X'0a', false }]])
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)