> On Sep 27, 2016, at 11:25 PM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
>
> On 09/28/2016 02:35 AM, Mark Dilger wrote:
>> The function
>>
>> static void xlog_outdesc(StringInfo buf, XLogReaderState *record);
>>
>> in src/backend/access/transam/xlog.c is called by XLogInsertRecord,
>> and after returning a string describing an XLogRecord, it clears the
>> state data in its XLogReaderState argument. That mixes the read-only
>> semantics of "give me a string that describes this argument" and the
>> read-write semantics of "clear out the value in this argument".
>
> I don't see where the "clears the state data" is happening. Can you elaborate?
My apologies. At the bottom of the function, it calls through the function pointer
RmgrTable[rmid].rm_desc(buf, record);
which is set up to call various *_desc functions. I must have chased through
those function pointers incorrectly, as I can't find the problem now that I am
reviewing all those functions.
Sorry for the noise,
Mark Dilger