Re: automatically generating node support functions
Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Attachments
- v8-0001-Automatically-generate-node-support-functions.patch (text/plain) patch v8-0001
On 06.07.22 22:46, Tom Lane wrote:
> Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes:
>> [ v7-0001-Automatically-generate-node-support-functions.patch ]
>
> I have gone through this and made some proposed changes (attached),
I have included those.
> and I think it is almost committable. There is one nasty problem
> we need a solution to, which is that pgindent is not at all on board
> with this idea of attaching node attrs to typedefs. It pushes them
> to the next line, like this:
>
> @@ -691,7 +709,8 @@
> (rel)->reloptkind == RELOPT_OTHER_JOINREL || \
> (rel)->reloptkind == RELOPT_OTHER_UPPER_REL)
>
> -typedef struct RelOptInfo pg_node_attr(no_copy_equal, no_read)
> +typedef struct RelOptInfo
> +pg_node_attr(no_copy_equal, no_read)
> {
> NodeTag type;
I have found that putting the attributes at the end of the struct
definition, right before the semicolon, works, so I have changed it that
way. (This is also where a gcc __attribute__() would go, so it seems
reasonable.)
The attached patch is stable under pgindent.
Finally, I have updated src/backend/nodes/README a bit.
I realize I've been confused various times about when a catversion
change is required when changing nodes. (I think the bump in 251154bebe
was probably not needed.) I have tried to put that in the README. This
could perhaps be expanded.
I think for this present patch, I would do a catversion bump, just to be
sure, in case some of the printed node fields are different now.
It was also my plan to remove the #ifdef OBSOLETE sections in a separate
commit right after, just to be clear.
Final thoughts?
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