Re: Pgoutput not capturing the generated columns - Mailing list pgsql-hackers

From Peter Smith
Subject Re: Pgoutput not capturing the generated columns
Date
Msg-id CAHut+Ps3ORjQTcce0MyHyT3aEqCh_jyUMNHUjm0XcrxKNEM8-Q@mail.gmail.com
Whole thread Raw
In response to Re: Pgoutput not capturing the generated columns  (Peter Smith <smithpb2250@gmail.com>)
Responses Re: Pgoutput not capturing the generated columns
List pgsql-hackers
Hi Vignesh,

I was having some second thoughts about this patch and my previous suggestion.

Currently the code is current written something like:

printfPQExpBuffer(&buf,
 "SELECT oid, pubname,\n"
 "  pg_catalog.pg_get_userbyid(pubowner) AS owner,\n"
 "  puballtables, pubinsert, pubupdate, pubdelete");

if (has_pubtruncate)
 appendPQExpBufferStr(&buf, ", pubtruncate");

if (has_pubgencols)
 appendPQExpBufferStr(&buf, ", pubgencols");

if (has_pubviaroot)
 appendPQExpBufferStr(&buf, ", pubviaroot");

~~

IIUC the variable number of result columns (for different server
versions) is what is causing all the subsequent hassles.

So, wouldn't the easiest fix be to change the code by adding the
appropriate 'else' alias for when the column is not available?

Like this:

printfPQExpBuffer(&buf,
 "SELECT oid, pubname,\n"
 "  pg_catalog.pg_get_userbyid(pubowner) AS owner,\n"
 "  puballtables, pubinsert, pubupdate, pubdelete");

if (has_pubtruncate)
 appendPQExpBufferStr(&buf, ", pubtruncate");
else
 appendPQExpBufferStr(&buf, ", 'f' AS pubtruncate");

if (has_pubgencols)
 appendPQExpBufferStr(&buf, ", pubgencols");
else
 appendPQExpBufferStr(&buf, ", 'f' AS pubgencols");

if (has_pubviaroot)
 appendPQExpBufferStr(&buf, ", pubviaroot");
else
 appendPQExpBufferStr(&buf, ", 'f' AS pubviaroot");

~~

Unless I am mistaken this will simplify the subsequent code a lot because:
1. Now you can put the cols in the same order you want to display them
2. Now the tuple result has a fixed number of cols for all server versions
3. Now hardcoding the indexes (1,2,3,4...) is fine because they are
always the same

Thoughts?

======
Kind Regards,
Peter Smith.
Fujitsu Australia



pgsql-hackers by date:

Previous
From: Yura Sokolov
Date:
Subject: Re: Get rid of WALBufMappingLock
Next
From: Julien Rouhaud
Date:
Subject: Re: Re:Limit length of queryies in pg_stat_statement extension