pike.git/
lib/
modules/
Sql.pmod/
pgsql_util.pmod
Branch:
Tag:
Non-build tags
All tags
No tags
2014-11-18
2014-11-18 21:07:01 by Stephen R. van den Berg <srb@cuci.nl>
2cdb900191aa81eac20026b5cd2087b20ab457f0 (
259
lines) (+
135
/-
124
)
[
Show
|
Annotate
]
Branch:
8.0
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);