[ 
https://issues.apache.org/jira/browse/CALCITE-2302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16910144#comment-16910144
 ] 

Danny Chan edited comment on CALCITE-2302 at 8/19/19 2:59 AM:
--------------------------------------------------------------

Thanks [~zabetak], most of  the sql contexts that need implicit type coercion 
are common in the popular DB engines, what we need to be caution is the 
different behaviors of some cast cases. We can fix them for specific dialects 
if we find any. But AFAIK, this kind of cases are really few.

Because almost all the DB engines that support implicit type coercion default 
enable the casts, we should also follow this to default enable type coercion 
for Calcite.


was (Author: danny0405):
Thanks [~zabetak], most of  the sql contexts that need implicit type coercion 
are common in the popular DB engines, what we need to be caution is the 
different behaviors of some cast cases. We can fix them for specific dialects 
if we find any. But AFAIK, this kind of cases are really few.

But because almost all the DB engines that support implicit type coercion 
default enable the casts, we should also follow this to default enable type 
coercion for Calcite.

> Implicit type cast support
> --------------------------
>
>                 Key: CALCITE-2302
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2302
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.17.0
>            Reporter: Danny Chan
>            Assignee: Danny Chan
>            Priority: Critical
>              Labels: pull-request-available
>             Fix For: 1.21.0
>
>          Time Spent: 6.5h
>  Remaining Estimate: 0h
>
> Now many DBs have support implicit type cast, eg: SqlServer, Oracle, Hive.
> Implicit type cast is an useful function for many cases, So we should support 
> this.
> I checkout Calcite code and found that:
>  # Now we use a validator to validate our operands types[ through kinds of 
> namespaces and scopes ]
>  # Most of the validations will finally goes to
> {code:java}
> SqlOperator.validateOperands
> {code}
>  # which will use validation logic defined in corresponding 
> SqlOperandTypeChecker
> What i'm confused about is where should i put the implicit type cast logic 
> in? I figured out 2 ways:
>  # Supply a tool class/rules to add casts into a parsed SqlNode tree which 
> will then go through the validation logic later on.
>  # Unleash the validation logic in kinds of SqlOperandTypeChecker, then 
> modify the RelNode/RexNodes tree converted from a validated SqlNode tree to 
> add in casts through custom RelOptRules.
> So guys, which of the 2 ways should i go, or if there are better way to do 
> this?
> I need your help.
>  
> Updated 18-05-30:
> Hi guys, i have made a PR in 
> [CALCITE-2302|https://github.com/apache/calcite/pull/706]
> This is design doc: [Calcite Implicit Type Cast 
> Design|https://docs.google.com/document/d/1g2RUnLXyp_LjUlO-wbblKuP5hqEu3a_2Mt2k4dh6RwU/edit?usp=sharing].
> This is the conversion types mapping: [Conversion Types 
> Mapping|https://docs.google.com/spreadsheets/d/1GhleX5h5W8-kJKh7NMJ4vtoE78pwfaZRJl88ULX_MgU/edit?usp=sharing].
> I really appreciate your suggestions, thx.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to