Improve plpgsql's handling of record field references by forcing all potential
Tom Lane <tgl@sss.pgh.pa.us>
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
| Path | Change | +/− |
|---|---|---|
| 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 |