You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Benchao Li (Jira)" <ji...@apache.org> on 2022/10/14 15:11:00 UTC
[jira] [Commented] (CALCITE-4888) The type of generated search argument literal is wrong if the literal types of RelBuilder.in are different and compatible
[ https://issues.apache.org/jira/browse/CALCITE-4888?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17617794#comment-17617794 ]
Benchao Li commented on CALCITE-4888:
-------------------------------------
When I was reviewing the [PR|https://github.com/apache/calcite/pull/2853] of CALCITE-4632, I found it was very similar to this one. I've already link it as duplicated. Since there is a PR in this issue and it was already reviewed by a few people, I would like to hear your opinions for CALCITE-4632.
If there is no objections, I would go with merging https://github.com/apache/calcite/pull/2853, and mark both CALCITE-4632 and this one as resolved. Also, I would also add [~jingzhang] as co-author of https://github.com/apache/calcite/pull/2853.
> 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)