Improve plpgsql's handling of record field references by forcing all potential

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

Commit: 01f7d29902cb27fb698e5078d72cb837398e074c
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2010-01-10T17:15:18Z
Releases: 9.0.0
Improve plpgsql's handling of record field references by forcing all potential
field references in SQL expressions to have RECFIELD datum-array entries at
parse time.  If it turns out that the reference is actually to a SQL column,
the RECFIELD entry is useless, but it costs little.  This allows us to get rid
of the previous use of FieldSelect applied to a whole-row Param for the record
variable; which was not only slower than a direct RECFIELD reference, but
failed for references to system columns of a trigger's NEW or OLD record.
Per report and fix suggestion from Dean Rasheed.

Files

PathChange+/−
src/pl/plpgsql/src/gram.y modified +19 −19
src/pl/plpgsql/src/pl_comp.c modified +41 −45
src/pl/plpgsql/src/plpgsql.h modified +10 −2
src/pl/plpgsql/src/pl_scanner.c modified +7 −8