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

Benchao Li commented on CALCITE-4888:
-------------------------------------

No, there is no code from Jing in that PR, these two PR just happened to be 
very similar. 

I learned this from CALCITE-5127, which is very similar to this case, so I 
thought this was a general rule to do so. I agree with you, we can give credit 
in other ways.

> The type of generated search argument literal is wrong if the literal types 
> of RelBuilder.in are different and compatible
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-4888
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4888
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Jing Zhang
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: image-2021-11-23-10-31-05-137.png, screenshot-1.png, 
> screenshot-2.png, screenshot-3.png
>
>          Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> The type of resulted search argument literal is wrong if the literal types of 
> RelBuilder.in are different and compatible with each other.
> For example, 
> {code:java}
>   /**
>    * Custom type system that converts different length of CHAR type to 
> VARCHAR type.
>    */
>   public static class VaryingTypeSystem extends RelDataTypeSystemImpl {
>     public static final RelDataTypeSystem INSTANCE = new VaryingTypeSystem();
>     @Override public boolean shouldConvertRaggedUnionTypesToVarying() {
>       return true;
>     }
>   }
>     RelBuilder relBuilder = 
> RelBuilder.create(config().typeSystem(VaryingTypeSystem.INSTANCE).build());
>     relBuilder.scan("EMP");
>     RexNode condition = relBuilder.in(relBuilder.field("JOB"), 
> relBuilder.literal("CLERK"), relBuilder.literal("A"));
> {code}
> In the above example, we overwrite the shouldConvertRaggedUnionTypesToVarying 
> to suggest the least restrictive type of a number of CHAR types of different 
> lengths should be a VARCHAR type.
> We expect the type of the generated SARGS literal  to be VACHAR(5).
> Actually, the type of generated SARGS literal is CHAR(5) and the literal with 
> value 'A' is converted to char(5), which leads to wrong result data.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to