pike.git/
lib/
modules/
Sql.pmod/
pgsql_util.pmod
Branch:
Tag:
Non-build tags
All tags
No tags
2014-11-18
2014-11-18 16:58:22 by Stephen R. van den Berg <srb@cuci.nl>
5bbaced7e1428cebc139f0ab9c4b84401dd7174f (
15
lines) (+
9
/-
6
)
[
Show
|
Annotate
]
Branch:
8.1
pgsql: Discard data on portals that have already been closed.
803:
plugbuffer=prepbuffer; prepbuffer=0; // Free memory when plugbuffer leaves scope }
-
if(!prepbufferready || _state=
=CLOSED
)
+
if(!prepbufferready || _state
>
=
CLOSING
)
lock=_unnamedstatementkey=0; else { destruct(prepbufferready); // Make sure we do this exactly once
848:
final void _purgeportal() { _unnamedportalkey=_unnamedstatementkey=0;
+
datarows->write(1); // Signal EOF
Thread.MutexKey lock=closemux->lock(); _fetchlimit=0; // disables further Executes switch(_state) { case COPYINPROGRESS: case BOUND:
-
datarows->write(1); // Signal EOF
+
--pgsqlsess->_portalsinflight; } _state=CLOSED;
874:
switch(_state) { case PORTALINIT: _unnamedstatementkey=0;
-
_state=
CLOSED
;
+
_state=
CLOSING
;
break; case COPYINPROGRESS: PD("CopyDone\n"); plugbuffer->add("c\0\0\0\4"); case BOUND:
-
_state=
CLOSED
;
+
_state=
CLOSING
;
lock=0; PD("Close portal %O\n",_portalname); if(sizeof(_portalname)) {
907:
final void _processdataready(array datarow,void|int msglen) { bytesreceived+=msglen; inflight--;
+
if(_state<CLOSED)
datarows->write(datarow); if(++rowsreceived==1) PD("<%O _fetchlimit %d=min(%d||1,%d), inflight %d\n",_portalname,
945:
if(statusccomplete && !statuscmdcomplete) statuscmdcomplete=statusccomplete; inflight=0;
-
datarows->write(1); // Signal EOF
+
conxion plugbuffer=c->start(1); plugbuffer->sendcmd(_closeportal(plugbuffer));
-
+
_state=CLOSED;
+
datarows->write(1); // Signal EOF
releaseconditions(); }