[ https://issues.apache.org/jira/browse/CALCITE-2069?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16273705#comment-16273705 ]
Laurent Goujon commented on CALCITE-2069: ----------------------------------------- I did not observe any regression with our own test suite, but maybe we are hitting the same limitation as [~amansinha100] (although we are on Calcite 1.12.0). > RexSimplify.removeNullabilityCast() always removes cast for operand with ANY > type > --------------------------------------------------------------------------------- > > Key: CALCITE-2069 > URL: https://issues.apache.org/jira/browse/CALCITE-2069 > Project: Calcite > Issue Type: Bug > Reporter: Volodymyr Vysotskyi > Assignee: Julian Hyde > > When a field is received from Dynamic Table, its type left {{ANY}}, and it is > used in the filter condition with the cast, which actually should produce > physical cast (for example we are trying to cast varchar to boolean) > {{RexSimplify.removeNullabilityCast()}} removes this cast and lefts only > field in condition. > This test helps to observe this issue: > {code:java} > @Test public void testFilterCastAny() { > final RelBuilder builder = RelBuilder.create(config().build()); > final RelDataType intType = > builder.getTypeFactory().createSqlType(SqlTypeName.ANY); > RelNode root = > builder.scan("EMP") > .filter( > builder.cast( > builder.patternField("varchar_field", intType, 0), > SqlTypeName.BOOLEAN)) > .build(); > assertThat(str(root), > is("LogicalFilter(condition=[CAST(varchar_field.$0):BOOLEAN NOT > NULL])\n" > + " LogicalTableScan(table=[[scott, EMP]])\n")); > } > {code} > It happens because {{SqlTypeUtil.equalSansNullability()}} returns true if any > of its arguments has {{ANY}} type. -- This message was sent by Atlassian JIRA (v6.4.14#64029)