Steven Talbot created CALCITE-5856: -------------------------------------- Summary: ARG0_NULLABLE_IF_EMPTY should consider GROUPING SETS (.., ()) Key: CALCITE-5856 URL: https://issues.apache.org/jira/browse/CALCITE-5856 Project: Calcite Issue Type: Bug Reporter: Steven Talbot
Currently, the rule switches off getGroupCount to determine if an aggregation is empty. However, "select sum(1) as s from empty group by grouping sets((a), ())" will return null, but getGroupCount() will return non-zero, so the return type for an operator using ARG0_NULLABLE_IF_EMPTY will incorrectly be marked as non-nullable (if the input was non-nullable). As a practical matter, this mostly matters if you try to rewrite GROUPING SETS to some kind of UNION, at which point the branch of the UNION on the "()" grouping set _will_ infer nullable using this strategy, and the type of your rewritten RelNode will no longer match. -- This message was sent by Atlassian Jira (v8.20.10#820010)