pgsql: Use fast path in plpgsql's RETURN/RETURN NEXT in more cases.
От | Tom Lane |
---|---|
Тема | pgsql: Use fast path in plpgsql's RETURN/RETURN NEXT in more cases. |
Дата | |
Msg-id | E1YNSHw-0005pK-Lp@gemulon.postgresql.org обсуждение исходный текст |
Список | 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(-)
В списке pgsql-committers по дате отправления: