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