[ 
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)

Reply via email to