diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike index 43488dedacfc65844c69ff98c6636b38c60ea527..7fb075d5ee58f92a94fc773c4210968cbe9a32e0 100644 --- a/lib/modules/Sql.pmod/pgsql.pike +++ b/lib/modules/Sql.pmod/pgsql.pike @@ -1923,9 +1923,10 @@ private inline void throwdelayederror(object parent) { */ int transtype = .pgsql_util.transendprefix->match(q) ? TRANSEND : .pgsql_util.transbeginprefix->match(q) ? TRANSBEGIN : NOTRANS; - if(!forcetext && forcecache==1 - || forcecache!=0 - && (sizeof(q)>=MINPREPARELENGTH || transtype != NOTRANS)) { + if (transtype != NOTRANS) + tp = .pgsql_util.describenodata; // Description already known + else if (!forcetext && forcecache == 1 + || forcecache && sizeof(q) >= MINPREPARELENGTH) { object plugbuffer; while(catch(plugbuffer=c->start())) reconnect(); @@ -1953,7 +1954,7 @@ private inline void throwdelayederror(object parent) { if(forcecache!=1 && .pgsql_util.createprefix->match(q)) { PD("Invalidate cache\n"); invalidatecache=1; // Flush cache on CREATE - tp=UNDEFINED; + tp = 0; } else _prepareds[q]=tp=([]); } @@ -1971,7 +1972,7 @@ private inline void throwdelayederror(object parent) { plugbuffer->sendcmd(KEEP); // close start() tstart=gethrtime(); } else // sql_result autoassigns to portal - tp=UNDEFINED; + tp = 0; .pgsql_util.sql_result portal; portal=.pgsql_util.sql_result(this,c,q, portalbuffersize, _alltyped, from, forcetext, timeout, syncparse, transtype);