[
https://issues.apache.org/jira/browse/CALCITE-3598?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16994737#comment-16994737
]
Ruben Q L commented on CALCITE-3598:
------------------------------------
Thanks for the hint [~donnyzone], it seems you are right.
In these these tests we are at {{EnumerableTableScan#format}} with
{{elementType=String.class}}, and indeed it returns {{JavaRowFormat.CUSTOM}}
{code}
private JavaRowFormat format() {
int fieldCount = getRowType().getFieldCount();
...
if (fieldCount == 1 && (Object.class == elementType
|| Primitive.is(elementType)
|| Number.class.isAssignableFrom(elementType))) {
return JavaRowFormat.SCALAR;
}
return JavaRowFormat.CUSTOM;
}
{code}
I suspect there is a missing condition for SCALAR (precisely when elementType
is a String), by adding it, both tests are executed successfully!
{code}
private JavaRowFormat format() {
int fieldCount = getRowType().getFieldCount();
...
if (fieldCount == 1 && (Object.class == elementType
|| Primitive.is(elementType)
|| Number.class.isAssignableFrom(elementType)
|| String.class.isAssignableFrom(elementType))) { // NEW CODE!
return JavaRowFormat.SCALAR;
}
return JavaRowFormat.CUSTOM;
}
{code}
> ClassCastException in MaterializationTest testJoinMaterialization8 and
> testJoinMaterialization9
> -----------------------------------------------------------------------------------------------
>
> Key: CALCITE-3598
> URL: https://issues.apache.org/jira/browse/CALCITE-3598
> Project: Calcite
> Issue Type: Bug
> Affects Versions: 1.21.0
> Reporter: Ruben Q L
> Priority: Minor
> Attachments: codeHashJoin.txt, codeNestedLoopJoin.txt
>
>
> Problem unveiled by CALCITE-3535, and also separately by CALCITE-3576.
> When CALCITE-3535 was committed, it made
> {{MaterializationTest#testJoinMaterialization8}} and
> {{MaterializationTest#testJoinMaterialization9}} change their execution plan
> from hashJoin to nestedLoopJoin. This caused an exception
> {code}
> java.lang.ClassCastException: java.lang.String$CaseInsensitiveComparator
> cannot be cast to java.lang.String
> {code}
> which seems unrelated to CALCITE-3535 (or CALCITE-3576), so the tests were
> temporarily disabled.
> The goal of this ticket is to investigate the root cause of this issue and
> re-activate both tests.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)