Re: automatically generating node support functions
Tom Lane <tgl@sss.pgh.pa.us>
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes: > Here is a patch that reformats the relevant (and a few more) comments > that way. This has been run through pgindent, so the formatting should > be stable. Now that that's been pushed, the main patch is of course quite broken. Are you working on a rebase? I looked through the last published version of the main patch (Alvaro's 0002 from 2022-04-19), without trying to actually test it, and found a couple of things that look wrong in the Makefiles: * AFAICT, the infrastructure for removing the generated files at "make *clean" is incomplete. In particular I don't see any code for removing the symlinks or the associated stamp file during "make clean". It looks like the existing header symlinks are all cleaned up in src/include/Makefile's "clean" rule, so you could do likewise for these. Also, the "make maintainer-clean" infrastructure seems incomplete --- shouldn't src/backend/Makefile's maintainer-clean rule now also do $(MAKE) -C nodes $@ ? * There are some useful comments in backend/utils/Makefile that I think should be carried over along with the make rules that (it looks like) you cribbed from there, notably # fmgr-stamp records the last time we ran Gen_fmgrtab.pl. We don't rely on # the timestamps of the individual output files, because the Perl script # won't update them if they didn't change (to avoid unnecessary recompiles). # These generated headers must be symlinked into builddir/src/include/, # using absolute links for the reasons explained in src/backend/Makefile. # We use header-stamp to record that we've done this because the symlinks # themselves may appear older than fmgr-stamp. and something similar to this for the "clean" rule: # fmgroids.h, fmgrprotos.h, fmgrtab.c, fmgr-stamp, and errcodes.h are in the # distribution tarball, so they are not cleaned here. Also, I share David's upthread allergy to the option names "path_hackN" and to documenting those only inside the conversion script. I think the existing text that you moved into the script, such as this bit: # We do not print the parent, else we'd be in infinite # recursion. We can print the parent's relids for # identification purposes, though. We print the pathtarget # only if it's not the default one for the rel. We also do # not print the whole of param_info, since it's printed via # RelOptInfo; it's sufficient and less cluttering to print # just the required outer relids. is perfectly adequate as documentation, it just needs to be somewhere else (pathnodes.h seems fine, if not nodes.h) and labeled as to exactly which pg_node_attr option invokes which behavior. BTW, I think this: "Unknown attributes are ignored" is a seriously bad idea; it will allow typos to escape detection. regards, tom lane
Commits
-
Fix MSVC build script's check for obsolete node support functions.
- 9a9f25e21742 16.0 landed
-
Improve performance of ORDER BY / DISTINCT aggregates
- 1349d2790bf4 16.0 cited
-
doc: Fix typos in protocol.sgml
- a69959fab2f3 16.0 cited
-
Tighten up parsing logic in gen_node_support.pl.
- 7c0eb3c622eb 16.0 landed
-
Add defenses against unexpected changes in the NodeTag enum list.
- eea9fa9b250f 16.0 landed
-
Add copy/equal support for XID lists
- 5ca0fe5c8ad7 16.0 landed
-
Rationalize order of input files for gen_node_support.pl.
- bf022d337ef0 16.0 landed
-
Make assorted quality-of-life improvements in gen_node_support.pl.
- 8eccaf652542 16.0 landed
-
Doc: rearrange high-level commentary about node support coverage.
- 3cd0ac987819 16.0 landed
-
Automatically generate node support functions
- 964d01ae90c3 16.0 landed
-
Adjust node serialization tag of A_Expr for consistency
- bf1f4a364d6c 16.0 landed
-
Remove T_Join and T_Plan
- 251154bebe98 16.0 landed
-
Reformat some more node comments
- 3140f089855c 16.0 landed
-
Reformat some node comments
- 835d476fd21b 16.0 landed
-
Remove JsonPathSpec typedef
- dc2be6ed47e5 15.0 landed
-
Add missing enum tag in enum used in nodes
- d47a11da9e5c 15.0 landed
-
Add Cardinality typedef
- 6fe0eb963d38 15.0 landed
-
Make node output prefix match node structure name
- e58136069687 15.0 landed
-
Add WRITE_INDEX_ARRAY
- bdeb2c4ec270 15.0 landed
-
Add COPY_ARRAY_FIELD and COMPARE_ARRAY_FIELD
- 308da179e7c2 15.0 landed
-
Remove T_Expr
- 853992919773 15.0 landed
-
Change NestPath node to contain JoinPath node
- 18fea737b5e4 15.0 landed
-
Change SeqScan node to contain Scan node
- 2226b4189bb4 15.0 landed
-
Check the size in COPY_POINTER_FIELD
- c1132aae336c 15.0 landed
-
Remove T_MemoryContext
- 256909c6c167 15.0 landed
-
Add missing enum tags in enums used in nodes
- 983bdc4fac49 15.0 landed
-
Rename some node support functions for consistency
- 31360381f0a5 15.0 landed
-
Rename argument of _outValue()
- 3d25b4ea6e2c 15.0 landed
-
Rename NodeTag of ExprState
- d9a38c52cef3 15.0 landed