[ 
https://issues.apache.org/jira/browse/CALCITE-6593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17884582#comment-17884582
 ] 

Ruben Q L edited comment on CALCITE-6593 at 9/25/24 11:55 AM:
--------------------------------------------------------------

[~rrueda] I agree, I'm also not very convinced about the revert in future 
versions.
Moreover, with the new idea in the PR of linking the CALCITE-3094 feature with 
a CalciteSystem property (with the possibility of disabling it by setting a 
specific value), we could leave the compact code and let the user decide via 
properties if they want compact code, flink splitter, both or none. The only 
thing to be decided is the default value of those properties (i.e. whether or 
not the should be enabled by default).


was (Author: rubenql):
[~rrueda] I agree, I'm also not very convinced about the revert in future 
versions.
Moreover, with the new idea in the PR of linking the CALCITE-3094 feature with 
a CalciteSystem property (with the possibility of disabling it by setting a 
specific value), we could leave the compact code and let the user decide via 
properties if they want compact code, flink splitter, both or none. The only to 
be decided is the default value of those properties (i.e. whether or not the 
should be enabled by default).

> NPE when outer joining tables with many fields and unmatching rows
> ------------------------------------------------------------------
>
>                 Key: CALCITE-6593
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6593
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Rodrigo Rueda
>            Assignee: Ruben Q L
>            Priority: Blocker
>              Labels: pull-request-available
>             Fix For: 1.38.0
>
>
> The fix for CALCITE-3094 started generating the following code for a join 
> when the resulting field count is >= 100.
> {code:java}
> public Object[] apply(Object[] left, Object[] right) {
>   Object[] outputArray = new Object[102];
>   System.arraycopy(left, 0, outputArray, 0, 94);
>   System.arraycopy(right, 0, outputArray, 94, 8);
>   return outputArray;
> } {code}
> But left or right might be null if one of the sides of the join is empty, 
> which leads to a NPE:
> {code:java}
> java.lang.NullPointerException
>     at java.base/java.lang.System.arraycopy(Native Method)
>     at Baz$3.apply(Unknown Source)
>     at Baz$3.apply(Unknown Source)
>     at Baz$3.apply(Unknown Source)
>     at 
> org.apache.calcite.linq4j.EnumerableDefaults$12$1.current(EnumerableDefaults.java:2078)
>     at Baz$4$1.current(Unknown Source) {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to