Improve plpgsql's handling of record field references by forcing all potential
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 10 Jan 2010 17:15:18 +0000 (17:15 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 10 Jan 2010 17:15:18 +0000 (17:15 +0000)
commit01f7d29902cb27fb698e5078d72cb837398e074c
tree1608a7512287730ae200d1fdc31ce0c7f6c613e7
parentf537e7dfa483a6284c59f3143e8a86170affdc74
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.
src/pl/plpgsql/src/gram.y
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/pl_scanner.c
src/pl/plpgsql/src/plpgsql.h