On 12/27/18, Tom Lane <t...@sss.pgh.pa.us> wrote: > diff --git a/src/tools/gen_keywords.pl b/src/tools/gen_keywords.pl > + elsif ($arg =~ /^-o/) > + { > + $output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV; > + } > > My perl-fu is not great, but it looks like this will accept arguments > like "-ofilename", which is a style I don't like at all. I'd rather > either insist on the filename being separate or write the switch like > "-o=filename". Also, project style when taking both forms is usually > more like > -o filename > --offset=filename
This style was cargo-culted from the catalog scripts. I can settle on just the first form if you like. > +$kw_input_file =~ /((\w*)kwlist)\.h/; > +my $base_filename = $1; > +$prefix = $2 if !defined $prefix; > > Hmm, what happens if the input filename does not end with "kwlist.h"? If that's a maintainability hazard, I can force every invocation to provide a prefix instead. > I looked very briefly at v4-0002, and I'm not very convinced about > the "middle" aspect of that optimization. It seems unmaintainable, > plus you've not exhibited how the preferred keywords would get selected > in the first place (wiring them into the Perl script is surely not > acceptable). What if the second argument of the macro held this info? Something like: PG_KEYWORD("security", FULL_SEARCH, UNRESERVED_KEYWORD) PG_KEYWORD("select", OPTIMIZE, SELECT, RESERVED_KEYWORD) with a warning emitted if more than one keyword per range has OPTIMIZE. That would require all keyword lists to have that second argument, but selecting a preferred keyword would be optional. -John Naylor