[ https://issues.apache.org/jira/browse/CALCITE-4713?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Zuozhi Wang updated CALCITE-4713: --------------------------------- Description: When using JavaTypeFactoryImpl, calling `leastRestrictive` with two `JavaType(String)` types gives a wrong return type of `VARCHAR` (SqlType). The expected return type should still be `JavaType(String)` See the following test case: {code:java} @Test void testLeastRestrictiveWithWithJavaString() { RelDataType javaStringType = TYPE_FACTORY.createJavaType(String.class); // leastRestrictive of two same JavaType(String) types RelDataType leastRestrictive = TYPE_FACTORY.leastRestrictive( Arrays.asList(javaStringType, javaStringType)); // expect leastRestrictive to also be JavaType(String) // but actual value is VARCHAR (BasicSqlType) assertEquals(javaStringType, leastRestrictive); } {code} We are currently investigating a fix of this issue, possibly by adding some equality checks. was: When using JavaTypeFactoryImpl, calling `leastRestrictive` with two `JavaType(String)` types gives a wrong return type of `VARCHAR` (SqlType). The expected return type should still be `JavaType(String)` See the following test case: ``` @Test void testLeastRestrictiveWithWithJavaString() { RelDataType javaStringType = TYPE_FACTORY.createJavaType(String.class); // leastRestrictive of two same JavaType(String) types RelDataType leastRestrictive = TYPE_FACTORY.leastRestrictive( Arrays.asList(javaStringType, javaStringType)); // expect leastRestrictive to also be JavaType(String) // but actual value is VARCHAR (BasicSqlType) assertEquals(javaStringType, leastRestrictive); } ``` We are currently investigating a fix of this issue, possibly by adding some equality checks. > JavaTypeFactory#leastRestrictive returns wrong type for JavaType(String) > ------------------------------------------------------------------------ > > Key: CALCITE-4713 > URL: https://issues.apache.org/jira/browse/CALCITE-4713 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.27.0 > Reporter: Zuozhi Wang > Priority: Minor > > When using JavaTypeFactoryImpl, calling `leastRestrictive` with two > `JavaType(String)` types gives a wrong return type of `VARCHAR` (SqlType). > The expected return type should still be `JavaType(String)` > See the following test case: > {code:java} > @Test void testLeastRestrictiveWithWithJavaString() { > RelDataType javaStringType = TYPE_FACTORY.createJavaType(String.class); > // leastRestrictive of two same JavaType(String) types > RelDataType leastRestrictive = TYPE_FACTORY.leastRestrictive( > Arrays.asList(javaStringType, javaStringType)); > // expect leastRestrictive to also be JavaType(String) > // but actual value is VARCHAR (BasicSqlType) > assertEquals(javaStringType, leastRestrictive); > } > {code} > We are currently investigating a fix of this issue, possibly by adding some > equality checks. -- This message was sent by Atlassian Jira (v8.3.4#803005)