What is the problem the feature request solves?
The deletion-vector shape in CometDeltaNativeScan.scala builds ordinary columns with its own implementation of filter binding, output types, schemas and projection assembly, while CometNativeScan.buildNativeScanCommon does the same for the plain shape. Configuration flags and collision-free metadata-name allocation are already shared; the serialization rules are not, so a later serializer fix reaches only one path.
Describe the potential solution
Build a view without the generated columns, reuse the common builder, then append the generated slots and restore output order by attribute identity. Keep the suffix requirement, defaults fallback and DML and liveness checks. Tests compare ordinary-column construction across both paths and keep the predicate-presence, projection-order and synthetic-name collision coverage.
Additional context
Raised in the #5365 review (item 3); filed as a follow-up.
What is the problem the feature request solves?
The deletion-vector shape in
CometDeltaNativeScan.scalabuilds ordinary columns with its own implementation of filter binding, output types, schemas and projection assembly, whileCometNativeScan.buildNativeScanCommondoes the same for the plain shape. Configuration flags and collision-free metadata-name allocation are already shared; the serialization rules are not, so a later serializer fix reaches only one path.Describe the potential solution
Build a view without the generated columns, reuse the common builder, then append the generated slots and restore output order by attribute identity. Keep the suffix requirement, defaults fallback and DML and liveness checks. Tests compare ordinary-column construction across both paths and keep the predicate-presence, projection-order and synthetic-name collision coverage.
Additional context
Raised in the #5365 review (item 3); filed as a follow-up.