Mihai Budiu created CALCITE-6620:
------------------------------------
Summary: VALUES created by RelBuilder do not have a homogeneous
type
Key: CALCITE-6620
URL: https://issues.apache.org/jira/browse/CALCITE-6620
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.37.0
Reporter: Mihai Budiu
This is a left-over issue from [CALCITE-6617]
A reproduction is the following test that can be added to SqlOperatorTest.
This reproduction was created by [~rubenql].
{code:java}
@Test void differentTypeValues() {
CalciteAssert.that()
.with(CalciteConnectionProperty.LEX, Lex.JAVA)
.with(CalciteConnectionProperty.FORCE_DECORRELATE, false)
.withSchema("s", new ReflectiveSchema(new HrSchema()))
.query("SELECT * FROM (VALUES (1, 2, 3), (CAST(5E0 AS REAL), 5E0,
NULL))")
.explainContains("PLAN=EnumerableValues(tuples=[[{ 1.0E0, 2.0E0, 3 }, "
+ "{ 5.0E0, 5.0E0, null }]])")
.returnsOrdered("EXPR$0=1.0; EXPR$1=2.0; EXPR$2=3", "EXPR$0=5.0;
EXPR$1=5.0; EXPR$2=null");
}
{code}
The underlying problem is the fact that RelBuilder can create an instance of
LogicalValues with multiple "rows" where each row has a different type.
Although RelBuilder computes the unifying type, this type is actually never
used in the construction of the LogicalValues to cast the literals that form
the Values.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)