Here is another set of preparatory patches that clean up various special
cases and similar in the node support.
0001-Remove-T_Expr.patch
Removes unneeded T_Expr.
0002-Add-COPY_ARRAY_FIELD-and-COMPARE_ARRAY_FIELD.patch
0003-Add-WRITE_INDEX_ARRAY.patch
These add macros to handle a few cases that were previously hand-coded.
0004-Make-node-output-prefix-match-node-structure-name.patch
Some nodes' output/read functions use a label that is slightly different
from their node name, e.g., "NOTIFY" instead of "NOTIFYSTMT". This
cleans that up so that an automated approach doesn't have to deal with
these special cases.
0005-Add-Cardinality-typedef.patch
Adds a typedef Cardinality for double fields that store an estimated row
or other count. Works alongside Cost and Selectivity.
This is useful because it appears that the serialization format for
these float fields depends on their intent: Cardinality => %.0f, Cost =>
%.2f, Selectivity => %.4f. The only remaining exception is allvisfrac,
which uses %.6f. Maybe that could also be a Selectivity, but I left it
as is. I think this improves the clarity in this area.