[
https://issues.apache.org/jira/browse/IGNITE-18753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maksim Zhuravkov updated IGNITE-18753:
--------------------------------------
Description:
MRE:
{code:java}
@Test
public void testThis() {
assertQuery("SELECT ?::INTEGER = '8'")
.withParams(8)
.returns(true)
.check();
}
{code}
Output:
{code:java}
Conversion to relational algebra failed to preserve datatypes:
validated type:
RecordType(BOOLEAN NOT NULL EXPR$0) NOT NULL
converted type:
RecordType(BOOLEAN EXPR$0) NOT NULL
rel:
LogicalProject(EXPR$0=[=(?0, 8)])
LogicalValues(tuples=[[{ 0 }]])
at
org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:492)
at
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:607)
at
org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.rel(IgnitePlanner.java:222)
at
org.apache.ignite.internal.sql.engine.prepare.PlannerHelper.optimize(PlannerHelper.java:63)
at
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareExplain$0(PrepareServiceImpl.java:208)
{code}
It seems that nullability attribute is being lost somewhere at the validation
stage.
The error does not depend on a type of a dynamic parameter because the query
below also trigger the same assertion:
{code:java}
@Test
public void oops() {
assertQuery("SELECT ?::VARCHAR = '8'")
.withParams("8")
.returns(true)
.check();
}
{code}
P.S.
>From the first glance it may look like it is related to dynamic parameters.
>This error is present in main branch.
Then I switched to commit that introduces IGNITE-18282: Illegal use of dynamic
parameter exception in SQL functions (#1418) (November) and commented out
IgniteSqlValidator::inferUnknownTypes. And I still got this error.
was:
MRE:
{code:java}
@Test
public void testThis() {
assertQuery("SELECT ?::INTEGER = '8'")
.withParams(8)
.returns(true)
.check();
}
{code}
Output:
{code:java}
onversion to relational algebra failed to preserve datatypes:
validated type:
RecordType(BOOLEAN NOT NULL EXPR$0) NOT NULL
converted type:
RecordType(BOOLEAN EXPR$0) NOT NULL
rel:
LogicalProject(EXPR$0=[=(?0, 8)])
LogicalValues(tuples=[[{ 0 }]])
at
org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:492)
at
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:607)
at
org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.rel(IgnitePlanner.java:222)
at
org.apache.ignite.internal.sql.engine.prepare.PlannerHelper.optimize(PlannerHelper.java:63)
at
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareExplain$0(PrepareServiceImpl.java:208)
{code}
It seems that nullability attribute is being lost somewhere at the validation
stage.
The error does not depend on a type of a dynamic parameter because the query
below also trigger the same assertion:
{code:java}
@Test
public void oops() {
assertQuery("SELECT ?::VARCHAR = '8'")
.withParams("8")
.returns(true)
.check();
}
{code}
P.S.
>From the first glance it may look like it is related to dynamic parameters.
>This error is present in main branch.
Then I switched to commit that introduces IGNITE-18282: Illegal use of dynamic
parameter exception in SQL functions (#1418) (November) and commented out
IgniteSqlValidator::inferUnknownTypes. And I still got this error.
> Sql. Conversion to relational algebra failed to preserve datatypes.
> -------------------------------------------------------------------
>
> Key: IGNITE-18753
> URL: https://issues.apache.org/jira/browse/IGNITE-18753
> Project: Ignite
> Issue Type: Bug
> Components: sql
> Reporter: Maksim Zhuravkov
> Priority: Major
> Labels: calcite2-required, calcite3-required, ignite-3
> Fix For: 3.0.0-beta2
>
>
> MRE:
> {code:java}
> @Test
> public void testThis() {
> assertQuery("SELECT ?::INTEGER = '8'")
> .withParams(8)
> .returns(true)
> .check();
> }
> {code}
> Output:
> {code:java}
> Conversion to relational algebra failed to preserve datatypes:
> validated type:
> RecordType(BOOLEAN NOT NULL EXPR$0) NOT NULL
> converted type:
> RecordType(BOOLEAN EXPR$0) NOT NULL
> rel:
> LogicalProject(EXPR$0=[=(?0, 8)])
> LogicalValues(tuples=[[{ 0 }]])
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:492)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:607)
> at
> org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.rel(IgnitePlanner.java:222)
> at
> org.apache.ignite.internal.sql.engine.prepare.PlannerHelper.optimize(PlannerHelper.java:63)
> at
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareExplain$0(PrepareServiceImpl.java:208)
> {code}
> It seems that nullability attribute is being lost somewhere at the validation
> stage.
> The error does not depend on a type of a dynamic parameter because the query
> below also trigger the same assertion:
> {code:java}
> @Test
> public void oops() {
> assertQuery("SELECT ?::VARCHAR = '8'")
> .withParams("8")
> .returns(true)
> .check();
> }
> {code}
> P.S.
> From the first glance it may look like it is related to dynamic parameters.
> This error is present in main branch.
> Then I switched to commit that introduces IGNITE-18282: Illegal use of
> dynamic parameter exception in SQL functions (#1418) (November) and
> commented out IgniteSqlValidator::inferUnknownTypes. And I still got this
> error.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)