Re: ECPG cleanup and fix for clang compile-time problem

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: John Naylor <johncnaylorls@gmail.com>
Cc: pgsql-hackers@lists.postgresql.org, Andres Freund <andres@anarazel.de>, Peter Eisentraut <peter_e@gmx.net>, Michael Paquier <michael.paquier@gmail.com>
Date: 2024-08-12T19:19:57Z
Lists: pgsql-hackers

Attachments

John Naylor <johncnaylorls@gmail.com> writes:
> I started looking at the earlier cleanup patches.

Thanks for looking!

> 0001 seems straightforward. Note: It doesn't apply cleanly anymore,
> but does with 'patch'.

Odd, after rebasing it seems to have only line-number differences.

> + # Emit the target part of the rule.
> + # Note: the leading space is just to match
> + # the old, rather weird output logic.
> + $tstr = ' ' . $non_term_id . ':';
> + add_to_buffer('rules', $tstr);

> Removing the leading space (or making it two spaces) has no effect on
> the output -- does that get normalized elsewhere?

It does affect horizontal space in the generated preproc.y file,
which'd have no effect on the derived preproc.c file.  I tweaked
the commit message to clarify that.

I adopted your other suggestions, no need to rehash them.

Here's a rebased but otherwise identical patchset.  I also added
an 0007 that removes check_rules.pl as threatened.

			regards, tom lane

Commits

  1. ecpg: clean up some other assorted memory leaks.

  2. ecpg: fix some memory leakage of data-type-related structures.

  3. ecpg: put all string-valued tokens returned by pgc.l in local storage.

  4. ecpg: fix more minor mishandling of bad input in preprocessor.

  5. ecpg: fix some minor mishandling of bad input in preprocessor.

  6. ecpg: avoid breaking the IDENT precedence level in two.

  7. ecpg: improve preprocessor's memory management.

  8. ecpg: move some functions into a new file ecpg/preproc/util.c.

  9. ecpg: re-implement preprocessor's string management.

  10. ecpg: major cleanup, simplification, and documentation of parse.pl.

  11. ecpg: remove check_rules.pl.

  12. ecpg: clean up documentation of parse.pl, and add more input checking.

  13. Clean up indentation and whitespace inconsistencies in ecpg.

  14. Exclude flex-generated code from coverage testing