pike.git/
lib/
modules/
Sql.pmod/
pgsql_util.pmod
Branch:
Tag:
Non-build tags
All tags
No tags
2018-05-18
2018-05-18 09:27:51 by Stephen R. van den Berg <srb@cuci.nl>
180df89bc80acf61ba1273360c48e972299c4382 (
38
lines) (+
37
/-
1
)
[
Show
|
Annotate
]
Branch:
master
pgsql: Add optional communicationslog per filedescriptor for debugging.
393:
final int procmsg; private int didreadcb;
+
#if PG_DEBUGHISTORY > 0
+
final array history = ({});
+
+
final int(-1..) input_from(Stdio.Stream stm, void|int(0..) nbytes) {
+
int oldsize = sizeof(this);
+
int ret = i::input_from(stm, nbytes);
+
if (ret) {
+
Stdio.Buffer tb = Stdio.Buffer(this);
+
tb->consume(oldsize);
+
history += ({"<<"+tb->read(ret)});
+
history = history[<PG_DEBUGHISTORY - 1 ..];
+
}
+
return ret;
+
}
+
#endif
+
protected final bool range_error(int howmuch) { #ifdef PG_DEBUG if (howmuch < 0) {
474:
final int queueinidx = -1; #endif
+
#if PG_DEBUGHISTORY > 0
+
final int(-1..) output_to(Stdio.Stream stm, void|int(0..) nbytes) {
+
Stdio.Buffer tb = Stdio.Buffer(this);
+
int ret = o::output_to(stm, nbytes);
+
if (ret) {
+
i->history += ({">>" + tb->read(ret)});
+
i->history = i->history[<PG_DEBUGHISTORY - 1 ..];
+
}
+
return ret;
+
}
+
#endif
+
private inline void queueup(Result portal) { qportals->write(portal); portal->_synctransact = synctransact; PD("%d>%O %d %d Queue portal %d bytes\n", socket->query_fd(),
818:
catch(fd = c->socket->query_fd()); res = sprintf("Result state: %d numrows: %d eof: %d inflight: %d\n" "query: %O\n"
+
#if PG_DEBUGHISTORY > 0
+
"history: %O\n"
+
#endif
"fd: %O portalname: %O datarows: %d" " synctransact: %d laststatus: %s\n", _state, index, eoffound, inflight,
-
qalreadyprinted == this ? "..." : _query, fd, _portalname,
+
qalreadyprinted == this ? "..." : _query,
+
#if
PG_DEBUGHISTORY > 0
+
qalreadyprinted == this ? 0 : c && c->i->history,
+
#endif
+
fd, _portalname,
datarowtypes && sizeof(datarowtypes), _synctransact, statuscmdcomplete || (_unnamedstatementkey ? "*parsing*" : ""));