Rationalize order of input files for gen_node_support.pl.

Per a question from Andres Freund.  While here, also make the
list of nodetag-only files easier to compare to the full list
of input files.

Discussion: https://postgr.es/m/20220710214622.haiektrjzisob6rl@awork3.anarazel.de
This commit is contained in:
Tom Lane 2022-07-11 13:38:40 -04:00
parent b2d5b4c6e0
commit bf022d337e
3 changed files with 50 additions and 32 deletions

View File

@ -33,27 +33,31 @@ OBJS = \
include $(top_srcdir)/src/backend/common.mk include $(top_srcdir)/src/backend/common.mk
# The principal node-defining headers are listed in their inclusion order,
# to ensure cross-file subtyping works correctly. The rest can just be
# listed alphabetically.
# Caution: re-ordering this list risks ABI breakage!
node_headers = \ node_headers = \
nodes/nodes.h \ nodes/nodes.h \
nodes/execnodes.h \
nodes/plannodes.h \
nodes/primnodes.h \ nodes/primnodes.h \
nodes/pathnodes.h \
nodes/extensible.h \
nodes/parsenodes.h \ nodes/parsenodes.h \
nodes/replnodes.h \ nodes/pathnodes.h \
nodes/value.h \ nodes/plannodes.h \
commands/trigger.h \ nodes/execnodes.h \
commands/event_trigger.h \
foreign/fdwapi.h \
access/amapi.h \ access/amapi.h \
access/sdir.h \
access/tableam.h \ access/tableam.h \
access/tsmapi.h \ access/tsmapi.h \
utils/rel.h \ commands/event_trigger.h \
nodes/supportnodes.h \ commands/trigger.h \
executor/tuptable.h \ executor/tuptable.h \
foreign/fdwapi.h \
nodes/extensible.h \
nodes/lockoptions.h \ nodes/lockoptions.h \
access/sdir.h nodes/replnodes.h \
nodes/supportnodes.h \
nodes/value.h \
utils/rel.h
# see also catalog/Makefile for an explanation of these make rules # see also catalog/Makefile for an explanation of these make rules

View File

@ -95,6 +95,22 @@ push @scalar_types, qw(EquivalenceClass* EquivalenceMember*);
# currently not required. # currently not required.
push @scalar_types, qw(QualCost); push @scalar_types, qw(QualCost);
# Nodes from these input files don't need support functions, just node tags.
my @nodetag_only_files = qw(
nodes/execnodes.h
access/amapi.h
access/sdir.h
access/tableam.h
access/tsmapi.h
commands/event_trigger.h
commands/trigger.h
executor/tuptable.h
foreign/fdwapi.h
nodes/lockoptions.h
nodes/replnodes.h
nodes/supportnodes.h
);
# XXX various things we are not publishing right now to stay level # XXX various things we are not publishing right now to stay level
# with the manual system # with the manual system
push @no_copy, qw(CallContext InlineCodeBlock); push @no_copy, qw(CallContext InlineCodeBlock);
@ -133,6 +149,9 @@ foreach my $infile (@ARGV)
open my $ifh, '<', $infile or die "could not open \"$infile\": $!"; open my $ifh, '<', $infile or die "could not open \"$infile\": $!";
# now shorten filename for use below
$infile =~ s!.*src/include/!!;
my $raw_file_content = do { local $/; <$ifh> }; my $raw_file_content = do { local $/; <$ifh> };
# strip C comments, preserving newlines so we can count lines correctly # strip C comments, preserving newlines so we can count lines correctly
@ -295,12 +314,8 @@ foreach my $infile (@ARGV)
$node_type_info{$in_struct}->{field_types} = \%ft; $node_type_info{$in_struct}->{field_types} = \%ft;
$node_type_info{$in_struct}->{field_attrs} = \%fa; $node_type_info{$in_struct}->{field_attrs} = \%fa;
# Nodes from these files don't need support functions, # Exclude nodes in nodetag_only_files from support.
# just node tags. if (elem $infile, @nodetag_only_files)
if (elem basename($infile),
qw(execnodes.h trigger.h event_trigger.h amapi.h tableam.h
tsmapi.h fdwapi.h tuptable.h replnodes.h supportnodes.h)
)
{ {
push @no_copy, $in_struct; push @no_copy, $in_struct;
push @no_equal, $in_struct; push @no_equal, $in_struct;

View File

@ -843,29 +843,28 @@ EOF
'src/backend/nodes/node-support-stamp', 'src/backend/nodes/node-support-stamp',
'src/backend/nodes/gen_node_support.pl')) 'src/backend/nodes/gen_node_support.pl'))
{ {
# XXX duplicates src/backend/nodes/Makefile # XXX duplicates node_headers list in src/backend/nodes/Makefile
my @node_headers = qw( my @node_headers = qw(
nodes/nodes.h nodes/nodes.h
nodes/execnodes.h
nodes/plannodes.h
nodes/primnodes.h nodes/primnodes.h
nodes/pathnodes.h
nodes/extensible.h
nodes/parsenodes.h nodes/parsenodes.h
nodes/replnodes.h nodes/pathnodes.h
nodes/value.h nodes/plannodes.h
commands/trigger.h nodes/execnodes.h
commands/event_trigger.h
foreign/fdwapi.h
access/amapi.h access/amapi.h
access/sdir.h
access/tableam.h access/tableam.h
access/tsmapi.h access/tsmapi.h
utils/rel.h commands/event_trigger.h
nodes/supportnodes.h commands/trigger.h
executor/tuptable.h executor/tuptable.h
foreign/fdwapi.h
nodes/extensible.h
nodes/lockoptions.h nodes/lockoptions.h
access/sdir.h nodes/replnodes.h
nodes/supportnodes.h
nodes/value.h
utils/rel.h
); );
chdir('src/backend/nodes'); chdir('src/backend/nodes');