Details
-
Improvement
-
Status: Open
-
Not a Priority
-
Resolution: Unresolved
-
None
-
None
Description
FLINK-16344 avoids errors due to incompatible types during planning by preserving the nullability attributes of nested types. It added an additional check for rt.getStructKind == StructKind.PEEK_FIELDS_NO_EXPAND to only cover nested rows. Not top-level rows. But it seems that a couple of execution plans would look nicer if the nullability property is preserved for top-level rows as well. However, a lot of join tests fail we should investigate this issue if we would like to have more efficient execution plans.
The comment in RelDataTypeFactoryImpl#createTypeWithNullability says:
According to the SQL standard, nullability for struct types can be defined only for columns, which translates to top level structs. Nested struct attributes are always nullable, so in principle we could always set the nested attributes to be nullable.