Branch: Tag:

2014-11-18

2014-11-18 21:07:01 by Stephen R. van den Berg <srb@cuci.nl>

pgsql: Eliminate parsing race for very fast servers.

650:    if(sizeof(dtoid)!=sizeof(paramValues))    SUSERERROR("Invalid number of bindings, expected %d, got %d\n",    sizeof(dtoid),sizeof(paramValues)); +  Thread.MutexKey lock=prepbuffermux->lock(); +  if(!_portalname) { +  _portalname=(_unnamedportalkey=pgsqlsess._unnamedportalmux->trylock(1)) +  ? "" : PORTALPREFIX + #ifdef PG_DEBUG +  +(string)(c->socket->query_fd())+"_" + #endif +  +int2hex(pgsqlsess._pportalcount++); +  lock=0;   #ifdef PG_DEBUGMORE    PD("ParamValues to bind: %O\n",paramValues);   #endif
784:    else if(dontcacheprefix->match(_query)) // Don't cache FETCH/COPY    m_delete(pgsqlsess->_prepareds,_query),_tprepared=0;    if(prepbufferready) { -  Thread.MutexKey lock=prepbuffermux->lock(); +  lock=prepbuffermux->lock();    prepbuffer=plugbuffer;    catch(prepbufferready->signal()); -  lock=0; +     }    } -  +  lock=0; +  }       final void _processrowdesc(array(mapping(string:mixed)) datarowdesc) {    _setrowdesc(datarowdesc);