pike.git / lib / modules / Sql.pmod / pgsql_util.pmod

version» Context lines:

pike.git/lib/modules/Sql.pmod/pgsql_util.pmod:1382:    }    stmtifkey = pgsqlsess->statementsinflight->acquire();    }    statuscmdcomplete = 0;    pgsqlsess->wasparallelisable = paralleliseprefix->match(_query);    }       final void _releasestatement() {    Thread.MutexKey lock = closemux->lock();    if (_state <= BOUND) { -  _state = COMMITTED; +     stmtifkey = 0; -  +  _state = COMMITTED;    }    }       final void _bindportal() {    Thread.MutexKey lock = closemux->lock();    _state = BOUND;    portalsifkey = pgsqlsess->portalsinflight->acquire();    }       final void _purgeportal() {    PD("Purge portal\n");    datarows->write(1); // Signal EOF    {    Thread.MutexKey lock = closemux->lock();    _fetchlimit = 0; // disables further Executes -  switch (_state) { -  case COPYINPROGRESS: -  case COMMITTED: -  case BOUND: -  portalsifkey = 0; -  } -  switch (_state) { -  case BOUND: -  case PARSING: -  stmtifkey = 0; -  } +  stmtifkey = portalsifkey = 0;    _state = PURGED;    }    releaseconditions();    }       final int _closeportal(conxsess cs, array(Thread.MutexKey) reflock) {    void|bufcon|conxsess plugbuffer = CHAIN(cs);    int retval = KEEP;    PD("%O Try Closeportal %d\n", _portalname, _state);    _fetchlimit = 0; // disables further Executes -  +  stmtifkey = 0;    switch (_state) { -  case PARSING: -  case BOUND: -  _state = COMMITTED; // Avoid _releasestatement() to prevent -  stmtifkey = 0; // lock recursion and lock inversion deadlock -  } -  switch (_state) { +     case PORTALINIT:    case PARSING:    _unnamedstatementkey = 0;    _state = CLOSING;    break;    case COPYINPROGRESS:    PD("CopyDone\n");    plugbuffer->add("c\0\0\0\4");    case COMMITTED:    case BOUND:
pike.git/lib/modules/Sql.pmod/pgsql_util.pmod:1522:    statuscmdcomplete = statusccomplete;    _ddescribe->broadcast();    }    inflight = 0;    conxsess plugbuffer;    array(Thread.MutexKey) reflock = ({closemux->lock()});    if (!catch(plugbuffer = c->start()))    plugbuffer->sendcmd(_closeportal(plugbuffer, reflock));    reflock = 0;    if (_state < CLOSED) { -  _state = CLOSED; +     stmtifkey = 0; -  +  _state = CLOSED;    }    datarows->write(1); // Signal EOF    releaseconditions();    }       protected void destroy() {    catch { // inside destructors, exceptions don't work    _releasesession();    };    }