Attached is a revised patch. Changes:
- abandonded the falloc() idea. There really aren't that many
short-lived allocations in the PL/PgSQL compiler, and using falloc()
made it difficult to use List. Instead, make the CurrentMemoryContext
the long-lived function context, and explicitly pfree short-term
allocations. Not _all_ short-lived allocations are explicitly released;
if this turns out to be a problem, it can be cleaned up later.
- Rewrite various bits of parsing code to be less brain-damaged. Fix
four buffer overruns.
- Raise an error if more RAISE parameters were specified than were
required by the RAISE format string; also raise an error if there were
more parameters required by the format string than were specified.
Barring any objections, I'll apply this to HEAD tomorrow.
-Neil