pgsql: In plpgsql, unify duplicate variables for record and row cases.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: In plpgsql, unify duplicate variables for record and row cases.
Date: 2017-12-08 16:21:14
Message-ID: E1eNLOk-0007RG-Uj@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

In plpgsql, unify duplicate variables for record and row cases.

plpgsql's function exec_move_row() handles assignment of a composite
source value to either a PLpgSQL_rec or PLpgSQL_row target variable.
Oddly, rather than taking a single target argument which it could do
run-time type detection on, it was coded to take two separate arguments
(only one of which is allowed to be non-NULL). This choice had then
back-propagated into storing two separate target variables in various
plpgsql statement nodes, with lots of duplicative coding and awkward
interface logic to support that. Simplify matters by folding those
pairs down to single variables, distinguishing the two cases only
where we must ... which turns out to be only in exec_move_row itself.
This is purely refactoring and should not change any behavior.

In passing, remove unused field PLpgSQL_stmt_open.returntype.

Discussion: https://postgr.es/m/11787.1512713374@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/dd759b96ea8fa41b48541dd321c07d9a947f8de9

Modified Files
--------------
src/pl/plpgsql/src/pl_comp.c | 2 +-
src/pl/plpgsql/src/pl_exec.c | 111 ++++++++++++++-----------------------
src/pl/plpgsql/src/pl_funcs.c | 39 ++++---------
src/pl/plpgsql/src/pl_gram.y | 126 +++++++++++++++---------------------------
src/pl/plpgsql/src/plpgsql.h | 22 +++-----
5 files changed, 106 insertions(+), 194 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2017-12-08 16:24:48 pgsql: Fix mistake in comment
Previous Message Peter Eisentraut 2017-12-08 15:59:10 pgsql: doc: Add advice about systemd RemoveIPC