You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Zuozhi Wang (Jira)" <ji...@apache.org> on 2021/08/02 22:48:00 UTC

[jira] [Created] (CALCITE-4713) JavaTypeFactory#leastRestrictive returns wrong type for JavaType(String)

Zuozhi Wang created CALCITE-4713:
------------------------------------

             Summary: 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


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.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)