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)