Re: Clearing psql's input buffer after auto-reconnect
От | Bruce Momjian |
---|---|
Тема | Re: Clearing psql's input buffer after auto-reconnect |
Дата | |
Msg-id | 201005282316.o4SNGS113721@momjian.us обсуждение исходный текст |
Ответ на | Clearing psql's input buffer after auto-reconnect (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
Tom Lane wrote: > We determined that $SUBJECT would be a good idea in this thread: > http://archives.postgresql.org/pgsql-bugs/2010-05/msg00159.php > > I looked a bit at what it would take to make this happen. The > difficulty is that the input buffer is a local variable in MainLoop(), > and so are a bunch of other subsidiary variables that would need to be > reset along with it. The place where auto-reconnect presently happens > is CheckConnection(), which is in a different file and is also several > levels of subroutine call away from MainLoop. AFAICS there are three > ways that we might attack this: > > 1. Massive restructuring of the code in common.c so that the fact of > a connection reset having happened can be returned back to MainLoop. > > 2. Export much of MainLoop's internal state as globals, so that > CheckConnection can hack on it directly. > > 3. Have CheckConnection do longjmp(sigint_interrupt_jmp) after resetting > the connection, to force control to go back to MainLoop directly. > MainLoop is already coded to clear its local state after catching a > longjmp. > > Now #1 might be the best long-term solution but I have no particular > appetite to tackle it, and #2 is just too ugly to contemplate. That > leaves #3, which is a bit ugly in its own right but seems like the best > fix we're likely to get. > > Comments, better ideas? Added to TODO: Prevent psql from sending remaining single-line multi-statement queriesafter reconnection * http://archives.postgresql.org/pgsql-bugs/2010-05/msg00159.php * http://archives.postgresql.org/pgsql-hackers/2010-05/msg01283.php -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com
В списке pgsql-hackers по дате отправления: