Kyle Weaver created BEAM-12274:
----------------------------------

             Summary: Create and use an extension of JavaTypeFactoryImpl.
                 Key: BEAM-12274
                 URL: https://issues.apache.org/jira/browse/BEAM-12274
             Project: Beam
          Issue Type: Wish
          Components: dsl-sql
            Reporter: Kyle Weaver


We rely on CalciteUtils.sqlTypeWithAutoCast [1] to handle certain type mappings 
(Java -> Calcite) that Calcite doesn't know about. Instead of relying on 
sqlTypeWithAutoCast, we should have our own type factory with these mappings, 
so we don't have to make sure sqlTypeWithAutoCast is called everywhere 
(otherwise, it could result in subtle typing bugs).

Once a type factory was implemented, however, it would be difficult to plug in 
because of the way connections are initialized. Currently the type factory is 
initialized to a default [2]. Some methods have an argument for the type 
factory in Driver [3], but they are not public. And some necessary logic [4] 
can't just be copied verbatim into Beam, since it depends on 
CalciteConnectionImpl, which is also not public. So we'd probably have to 
create a root schema as well as a type factory.

[1] 
[https://github.com/apache/beam/blob/54934dce5b439e3f9f83ef84ac32e38b3d318158/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/utils/CalciteUtils.java#L291-L294]

 

[2] 
[https://github.com/apache/calcite/blob/350802b59fa68ef1ee074b78af17bf1b2c435e13/core/src/main/java/org/apache/calcite/jdbc/CalciteConnectionImpl.java#L145]

[3] 
[https://github.com/apache/calcite/blob/350802b59fa68ef1ee074b78af17bf1b2c435e13/core/src/main/java/org/apache/calcite/jdbc/Driver.java#L171-L185]

[4] 
[https://github.com/apache/calcite/blob/350802b59fa68ef1ee074b78af17bf1b2c435e13/core/src/main/java/org/apache/calcite/jdbc/Driver.java#L91-L157]

 



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

Reply via email to