[
https://issues.apache.org/jira/browse/CALCITE-6617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17888108#comment-17888108
]
Julian Hyde edited comment on CALCITE-6617 at 10/15/24 3:56 AM:
----------------------------------------------------------------
Fixed in
[052a5f8|https://github.com/apache/calcite/commit/052a5f8bf8abc12d0804071982b36189067c4453].
(Revised, adding test cases, in
[243c3ad|https://github.com/apache/calcite/commit/243c3adc0a2ace81fc6ce4c3724f034e0f16fb7d].)
Thank you for the reviews, [~rubenql], [~caicancai], [~nobigo].
was (Author: JIRAUSER295926):
Fixed in
https://github.com/apache/calcite/commit/052a5f8bf8abc12d0804071982b36189067c4453
Thank you for the reviews, [~rubenql][~caicancai][~nobigo]
> TypeCoercion is not applied correctly to comparisons
> ----------------------------------------------------
>
> Key: CALCITE-6617
> URL: https://issues.apache.org/jira/browse/CALCITE-6617
> Project: Calcite
> Issue Type: Bug
> Components: core
> Reporter: Claude Brisson
> Assignee: Mihai Budiu
> Priority: Blocker
> Labels: pull-request-available
> Fix For: 1.38.0
>
>
> The following statement:
> {code:java}
> SELECT * FROM (VALUES (1, 2, 3), (5E0::REAL, 5E0, NULL)) AS foo {code}
> will provoke a ClassCastException between a Double and a BigDecimal, while it
> was working in 1.37.0.
> It's due to the fact that when trying to infer a collation on a Values
> tuples, the comparator still assumes that all numbers are of the same class,
> which changed with CALCITE-2067.
> Here is the full stack trace:
>
> {code:java}
> Caused by: java.lang.ClassCastException: class java.lang.Double cannot be
> cast to class java.math.BigDecimal (java.lang.Double and java.math.BigDecimal
> are in module java.base of loader 'bootstrap')
> at java.base/java.math.BigDecimal.compareTo(BigDecimal.java:330)
> at
> org.apache.calcite.rel.RelFieldCollation.compare(RelFieldCollation.java:45)
> at
> org.apache.calcite.rel.metadata.RelMdCollation$1.compare(RelMdCollation.java:458)
> at
> org.apache.calcite.rel.metadata.RelMdCollation$1.compare(RelMdCollation.java:454)
> at com.google.common.collect.Ordering.isOrdered(Ordering.java:910)
> at
> org.apache.calcite.rel.metadata.RelMdCollation.values(RelMdCollation.java:434)
> at
> org.apache.calcite.rel.logical.LogicalValues.lambda$create$0(LogicalValues.java:111)
> at org.apache.calcite.plan.RelTraitSet.replaceIfs(RelTraitSet.java:246)
> at
> org.apache.calcite.rel.logical.LogicalValues.create(LogicalValues.java:110)
> at
> org.apache.calcite.rel.core.RelFactories$ValuesFactoryImpl.createValues(RelFactories.java:521)
> at org.apache.calcite.tools.RelBuilder.values(RelBuilder.java:3497)
> at org.apache.calcite.tools.RelBuilder.setOp(RelBuilder.java:2924)
> at org.apache.calcite.tools.RelBuilder.union(RelBuilder.java:2946)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertValuesImpl(SqlToRelConverter.java:5050)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertFrom(SqlToRelConverter.java:2488)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertFrom(SqlToRelConverter.java:2393)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertFrom(SqlToRelConverter.java:2355)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:754)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:734)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3905)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:627)
> {code}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)