So we construct result row twice. If ExecProject can take (Row left, Row right) as input, we don't have to waste one construction. Notes a straightforward idea may need changes in algebrizer ordinal resolution, but it might be possible to do it without touching algebrizer.
we have this pattern in join:
and in ExecProject(Row input)
So we construct result row twice. If ExecProject can take (Row left, Row right) as input, we don't have to waste one construction. Notes a straightforward idea may need changes in algebrizer ordinal resolution, but it might be possible to do it without touching algebrizer.
(actual rows = 100, loops = 10) => (actual rows = 93..105, loops = 10)
we can further print details if with EXPLAIN VERBOSE