At Thu, 18 Mar 2021 07:34:36 +0000, "tsunakawa.ta...@fujitsu.com" <tsunakawa.ta...@fujitsu.com> wrote in > From: Iwata, Aya/岩田 彩 <iwata....@fujitsu.com> > > > Yes, precisely, 2 bytes for the double quotes needs to be subtracted > > > as > > > follows: > > > > > > len = fprintf(...); > > > *cursor += (len - 2); > > > > Thank you for your advice. I changed pqTraceOutputString set cursor to > > fprintf > > return -2. > > And I removed cursor movement from that function. > > Ouch, not 2 but 3, to include a single whitespace at the beginning. > > The rest looks good. I hope we're almost at the finish line.
Maybe. At Wed, 17 Mar 2021 13:36:32 -0300, Alvaro Herrera <alvhe...@alvh.no-ip.org> wrote in > In pqTraceOutputString(), you can use the return value from fprintf to > move the cursor -- no need to count chars. > > I still think that the message-type specific functions should print the > message type, rather than having the string arrays. In other words, pqTraceOutputMessage recognizes message id and calls the function corresponding one-on-one to the id. So the functions knows what is the message type of myself and there's no reason for pqTraceOutputMessage to print the message type on its behalf. + pqTraceOutputR(const char *message, FILE *f) + { + int cursor = 0; + + pqTraceOutputInt32(message, &cursor, f); I don't understand the reason for spliting message and &cursor here. + pqTraceOutputR(const char *message, FILE *f) + { + char *p = message; + + pqTraceOutputInt32(&p, f); works well. +/* RowDescription */ +static void +pqTraceOutputT(const char *message, int end, FILE *f) +{ + int cursor = 0; + int nfields; + int i; + + nfields = pqTraceOutputInt16(message, &cursor, f); + + for (i = 0; i < nfields; i++) + { + pqTraceOutputString(message, &cursor, end, f); + pqTraceOutputInt32(message, &cursor, f); + pqTraceOutputInt16(message, &cursor, f); + pqTraceOutputInt32(message, &cursor, f); + pqTraceOutputInt16(message, &cursor, f); + pqTraceOutputInt32(message, &cursor, f); + pqTraceOutputInt16(message, &cursor, f); + } +} I didn't looked closer, but lookong the usage of the variable "end", something's wrong in the function. regards. -- Kyotaro Horiguchi NTT Open Source Software Center