pike.git/lib/modules/Sql.pmod/pgsql.pike:585:
plugbuffer->add("database\0")->add(database)->add_int8(0);
options->reconnect=undefinedp(options->reconnect) || options->reconnect;
foreach(options
-(<"use_ssl","force_ssl","cache_autoprepared_statements","reconnect",
"text_query","is_superuser","server_encoding","server_version",
"integer_datetimes","session_authorization">);
string name;mixed value)
plugbuffer->add(name)->add_int8(0)->add((string)value)->add_int8(0);
plugbuffer->add_int8(0);
PD("%O\n",(string)plugbuffer);
- ci->start()->add_hstring(plugbuffer,4,4)->sendcmd(flushsend);
- }
+ ci->start()->add_hstring(plugbuffer,4,4)->sendcmd(sendout);
+ } // Do not flush at this point, PostgreSQL 9.4 disapproves
cancelsecret=0;
#ifdef PG_DEBUG
PD("Processloop\n");
string datarowdebug;
int datarowdebugcount;
void showportal(int msgtype) {
if(objectp(portal))
PD("<%O %d %c switch portal\n",
portal._portalname,++ci->queueinidx,msgtype);
pike.git/lib/modules/Sql.pmod/pgsql.pike:730:
break;
default:
PD("Unknown Authentication Method %c\n",authtype);
errtype=protocolunsupported;
break;
}
switch(errtype) {
case noerror:
if(cancelsecret!="")
ci->start()->add_int8('p')->add_hstring(sendpass,4,5)
- ->add_int8(0)->sendcmd(flushsend);
- break;
+ ->add_int8(0)->sendcmd(sendout);
+ break; // No flushing here, PostgreSQL 9.4 disapproves
default:
case protocolunsupported:
ERROR("Unsupported authenticationmethod %c\n",authtype);
break;
}
break;
}
case 'K':
msglen-=4+4;backendpid=ci->read_int32();
cancelsecret=ci->read(msglen);
pike.git/lib/modules/Sql.pmod/pgsql.pike:813: Inside #if defined(PG_DEBUG)
PD("<%O ParameterDescription %d values\n",portal._query,cols);
msglen-=4+2+4*cols;
#endif
foreach(a=allocate(cols);int i;)
a[i]=ci->read_int32();
#ifdef PG_DEBUGMORE
PD("%O\n",a);
#endif
if(portal._tprepared)
portal._tprepared.datatypeoid=a;
- portal->_preparebind();
+ portal->_preparebind(a);
break;
}
case 'T': {
array a;
#ifdef PG_DEBUG
int cols=ci->read_int16();
PD("<RowDescription %d columns %O\n",cols,portal._query);
msglen-=4+2;
foreach(a=allocate(cols);int i;)
#else
pike.git/lib/modules/Sql.pmod/pgsql.pike:1067: Inside #if defined(PG_DEBUG)
#ifdef PG_DEBUG
PD("<%O CopyDone\n",portal._portalname);
msglen-=4;
#endif
portal=0;
break;
case 'E': {
if(!_readyforquerycount)
sendsync();
PD("<%O ErrorResponse %O\n",
- portal&&(portal._portalname||portal._preparedname),
- portal&&portal._query);
+ objectp(portal)&&(portal._portalname||portal._preparedname),
+ objectp(portal)&&portal._query);
mapping(string:string) msgresponse;
msgresponse=getresponse();
warningsdropcount+=warningscollected;
warningscollected=0;
switch(msgresponse.C) {
case "P0001":
lastmessage=({sprintf("%s: %s",msgresponse.S,msgresponse.M)});
USERERROR(a2nls(lastmessage
+({pinpointerror(portal._query,msgresponse.P)})
+showbindings(portal)));
pike.git/lib/modules/Sql.pmod/pgsql.pike:1093:
errtype=protocolerror;
case "XX000":case "42883":case "42P01":
invalidatecache=1;
default:
preplastmessage(msgresponse);
if(msgresponse.D)
lastmessage+=({msgresponse.D});
if(msgresponse.H)
lastmessage+=({msgresponse.H});
lastmessage+=({
- pinpointerror(portal&&portal._query,msgresponse.P)+
+ pinpointerror(objectp(portal)&&portal._query,msgresponse.P)+
pinpointerror(msgresponse.q,msgresponse.p)});
if(msgresponse.W)
lastmessage+=({msgresponse.W});
lastmessage+=showbindings(portal);
switch(msgresponse.S) {
case "PANIC":werror(a2nls(lastmessage));
}
USERERROR(a2nls(lastmessage));
}
- if(portal)
+ if(objectp(portal))
portal->_releasesession();
break;
}
case 'N': {
PD("<NoticeResponse\n");
mapping(string:string) msgresponse;
msgresponse=getresponse();
if(clearmessage) {
warningsdropcount+=warningscollected;
clearmessage=warningscollected=0;
pike.git/lib/modules/Sql.pmod/pgsql.pike:1920:
} else {
if(parsebuffer)
parsebuffer->sendcmd();
#ifdef PG_STATS
skippeddescribe++;
#endif
portal->_setrowdesc(tp.datarowdesc);
}
portal._preparedname=preparedname;
if((portal._tprepared=tp) && tp.datatypeoid) {
- mixed e=catch(portal->_preparebind());
+ mixed e=catch(portal->_preparebind(tp.datatypeoid));
if(e && !portal._delayederror) {
if(!stringp(e))
throw(e);
portal._delayederror=e;
}
}
}
throwdelayederror(portal);
return portal;
}