Re: Implementing RESET CONNECTION ...
Bruce Momjian <pgman@candle.pha.pa.us>
From: Bruce Momjian <pgman@candle.pha.pa.us>
To: Hans-Jürgen Schönig <postgres@cybertec.at>
Cc: eg@cybertec.at, PostgreSQL-patches <pgsql-patches@postgresql.org>
Date: 2006-04-25T14:09:50Z
Lists: pgsql-hackers
Attachments
- (unnamed) (text/plain)
Attached patch applied, with slight modifications. Thanks. --------------------------------------------------------------------------- Hans-Jrgen Schnig wrote: > We have implemented a patch which can be used by connection pools for > instance. > RESECT CONNECTION cleans up a backend so that it can be reused. > Temp tables, LISTEN / NOTIFY stuff, WITH HOLD cursors, open > transactions, prepared statements and GUCs are cleaned up. > I hope we have not missed important per-backend information. > > test=# BEGIN; > BEGIN > test=# RESET CONNECTION; > RESET > test=# COMMIT; > WARNING: there is no transaction in progress > COMMIT > test=# PREPARE myplan(int, int) AS SELECT $1 + $2; > PREPARE > test=# RESET CONNECTION; > RESET > test=# EXECUTE myplan(1, 2); > ERROR: prepared statement "myplan" does not exist > test=# > test=# DECLARE mycur CURSOR WITH HOLD FOR SELECT relname FROM pg_class; > DECLARE CURSOR > test=# FETCH NEXT FROM mycur; > relname > --------- > views > (1 row) > > test=# RESET CONNECTION; > RESET > test=# FETCH NEXT FROM mycur; > ERROR: cursor "mycur" does not exist > test=# CREATE TEMP TABLE mytmp (id int4); > CREATE TABLE > test=# RESET CONNECTION; > RESET > test=# INSERT INTO mytmp VALUES (10); > ERROR: relation "mytmp" does not exist > > > All regression tests passed. > It would be nice if we had this in 8.1. > > Best regards, > > Hans > > > -- > Cybertec Geschwinde u Schoenig > Schoengrabern 134, A-2020 Hollabrunn, Austria > Tel: +43/660/816 40 77 > www.cybertec.at, www.postgresql.at > -- Bruce Momjian http://candle.pha.pa.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. +