From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Use fast path in plpgsql's RETURN/RETURN NEXT in more cases. |
Date: | 2015-02-16 20:29:04 |
Message-ID: | E1YNSHw-0005pK-Lp@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Use fast path in plpgsql's RETURN/RETURN NEXT in more cases.
exec_stmt_return() and exec_stmt_return_next() have fast-path code for
handling a simple variable reference (i.e. "return var") without going
through the full expression evaluation machinery. For some reason,
pl_gram.y was under the impression that this fast path only applied for
record/row variables; but in reality code for handling regular scalar
variables has been there all along. Adjusting the logic to allow that
code to be used actually results in a net savings of code in pl_gram.y
(by eliminating some redundancy), and it buys a measurable though not
very impressive amount of speedup.
Noted while fooling with my expanded-array patch, wherein this makes a much
bigger difference because it enables returning an expanded array variable
without an extra flattening step. But AFAICS this is a win regardless,
so commit it separately.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/9e3ad1aac52454569393a947c06be0d301749362
Modified Files
--------------
src/pl/plpgsql/src/pl_exec.c | 10 ++++++----
src/pl/plpgsql/src/pl_gram.y | 42 ++++++++++++++++++++++--------------------
2 files changed, 28 insertions(+), 24 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2015-02-16 20:36:24 | pgsql: Restore the SSL_set_session_id_context() call to OpenSSL renegot |
Previous Message | Heikki Linnakangas | 2015-02-16 20:12:13 | pgsql: In the SSL test suite, use a root CA cert that won't expire (so |