pgsql: Make executor's SELECT INTO code save and restore original tuple

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Make executor's SELECT INTO code save and restore original tuple
Date: 2012-01-04 23:31:48
Message-ID: E1RiaJA-0008Vw-ED@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Make executor's SELECT INTO code save and restore original tuple receiver.

As previously coded, the QueryDesc's dest pointer was left dangling
(pointing at an already-freed receiver object) after ExecutorEnd. It's a
bit astonishing that it took us this long to notice, and I'm not sure that
the known problem case with SQL functions is the only one. Fix it by
saving and restoring the original receiver pointer, which seems the most
bulletproof way of ensuring any related bugs are also covered.

Per bug #6379 from Paul Ramsey. Back-patch to 8.4 where the current
handling of SELECT INTO was introduced.

Branch
------
REL8_4_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/d23c38d46c78ddccd927cc4fef85e647df9c136b

Modified Files
--------------
src/backend/executor/execMain.c | 20 +++++++++++++++-----
src/test/regress/expected/select_into.out | 25 +++++++++++++++++++++++++
src/test/regress/sql/select_into.sql | 14 ++++++++++++++
3 files changed, 54 insertions(+), 5 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Meskes 2012-01-05 13:10:18 pgsql: Ecpglib stores variables that are used in DECLARE statements in
Previous Message Michael Meskes 2012-01-04 13:55:33 pgsql: Made code in ecpg better readable.