Re: pure parsers and reentrant scanners

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andreas Karlsson <andreas@proxel.se>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-12-19T12:51:13Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Return yyparse() result not via global variable

  2. Remove flex version checks

  3. Drop warning-free support for Flex 2.5.35

  4. plpgsql: pure parser and reentrant scanner

  5. flex code modernization: Replace YY_EXTRA_TYPE define with flex option

  6. guc: reentrant scanner

  7. jsonpath scanner: reentrant scanner

  8. syncrep parser: pure parser and reentrant scanner

  9. replication parser: pure parser and reentrant scanner

  10. bootstrap: pure parser and reentrant scanner

  11. Small whitespace improvement

  12. Prevent redeclaration of typedef yyscan_t

  13. seg: pure parser and reentrant scanner

  14. cube: pure parser and reentrant scanner

On 18.12.24 18:43, Tom Lane wrote:
> Peter Eisentraut <peter@eisentraut.org> writes:
>> I started committing the cube and seg pieces.  There were a couple of
>> complaints from the buildfarm, like
>> segscan.c:348:15: error: redefinition of typedef 'yyscan_t' is a C11
>> feature [-Werror,-Wtypedef-redefinition]
>> typedef void* yyscan_t;
>> ...
>> (Also, we should probably figure out a way to get these warnings before
>> things hit the buildfarm.)
> 
> Interestingly, while sifaka shows that, its sibling indri doesn't.
> Same compiler, same CFLAGS.  I think the relevant difference must
> be that sifaka is using a much older Bison version (the Apple-supplied
> 2.3, versus MacPorts' up-to-the-minute version).  I think that sort of
> thing is exactly why we have the buildfarm.  It would not be
> reasonable to expect CI to cover that many cases.  Trying to do so
> would just make CI slow enough that we'd start looking for a new test
> phase to put in front of it.

The situation is that most current compilers default to some newer C 
standard version.  And so they won't complain about use of C11 features. 
  But the affected buildfarm members for whatever reason run with 
CC='clang -std=gnu99', and so they correctly reject C11 features.  We 
could do something similar in the Cirrus configuration.  I'll start a 
separate thread about that.