Emits a concat as <first>->concatenate(<second>) (PLAN §8.8, §11.5),
which the engine writes as UNION ALL. The engine types a concatenate of
different column counts as the shorter relation and fails only when it
runs, so the emitter checks both inputs have the node's columns, by name and
in order: a mismatch fails in Cube, not on the engine. Converting types,
each column whose type differs from the node's is cast to it first.
Emits a concat as
<first>->concatenate(<second>)(PLAN §8.8, §11.5), which the engine writes asUNION ALL. The engine types a concatenate of different column counts as the shorter relation and fails only when it runs, so the emitter checks both inputs have the node's columns, by name and in order: a mismatch fails in Cube, not on the engine. Converting types, each column whose type differs from the node's is cast to it first.