From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Speed up plpgsql trigger startup by introducing "promises". |
Date: | 2018-02-14 00:20:42 |
Message-ID: | E1elkoU-0002Bk-Ka@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Speed up plpgsql trigger startup by introducing "promises".
Over the years we've accreted quite a few special variables that are
predefined in plpgsql trigger functions. The cost of initializing these
variables to their defined values turns out to be a significant part of
the runtime of simple triggers; but, undoubtedly, most real-world triggers
never examine the values of most of these variables.
To improve matters, invent the notion of a variable that has a "promise"
attached to it, specifying which of the predetermined values should be
assigned to the variable if anything ever reads it. This eliminates all
the unneeded startup overhead, in return for a small penalty on accesses
to these variables.
Tom Lane, reviewed by Pavel Stehule
Discussion: https://postgr.es/m/11986.1514407114@sss.pgh.pa.us
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/fd333bc763ea104f2a2c10c6b0061c996d4a2f5a
Modified Files
--------------
src/pl/plpgsql/src/pl_comp.c | 50 +++++--
src/pl/plpgsql/src/pl_exec.c | 334 +++++++++++++++++++++++++++---------------
src/pl/plpgsql/src/pl_funcs.c | 5 +
src/pl/plpgsql/src/pl_gram.y | 3 +
src/pl/plpgsql/src/plpgsql.h | 56 +++++--
5 files changed, 306 insertions(+), 142 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2018-02-14 03:15:24 | pgsql: Support CONSTANT/NOT NULL/initial value for plpgsql composite va |
Previous Message | Tom Lane | 2018-02-14 00:10:51 | pgsql: Speed up plpgsql function startup by doing fewer pallocs. |