Patch with a test (probably not best placed) that exposes the issue, and a 
simple candidate fix. Given the nature of the bug, I’m thinking a review of the 
NullPolicy for all the operators in this area would make sense. By inspection 
there’s a whole bunch of non-null-safe Collection logic in SqlFunctions that 
should be receiving guard logic during the rex translation.

Thanks,

Chris

From: Mihai Budiu <mbu...@gmail.com>
Date: Thursday, November 7, 2024 at 2:08 PM
To: dev@calcite.apache.org <dev@calcite.apache.org>
Subject: [EXTERNAL] Re: NullPolicy for IS_EMPTY in RexImpTable
Can you provide a concise reproduction, ideally as a test that can be used in 
Calcite (e.g., SqlValidatorTest)?

Mihai
________________________________
From: Chris Dennis <chris.w.den...@ibm.com.INVALID>
Sent: Thursday, November 7, 2024 11:06 AM
To: dev@calcite.apache.org <dev@calcite.apache.org>
Subject: NullPolicy for IS_EMPTY in RexImpTable

Hi All,

I’m working on a calcite adapter and I’m hitting issues with handling array 
columns. I’m seeing NullPointerExceptions from queries like “SELECT * FROM 
table WHERE list IS EMPTY” when “list” is a nullable column. I think the root 
cause here might be the NullPolicy for the IS_EMPTY operator in RexImpTable? 
I’m thinking this should probably be NullPolicy.STRICT and not NullPolicy.NONE, 
and therefore not shortcircuiting the null check on the collection before 
calling isEmpty()?

Thanks,

Chris

Reply via email to