row literal problem

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2012-07-18T18:58:22Z
Lists: pgsql-hackers
I'm chasing up an issue from a client who has this problem (in 9.1):

with q as
(
     some query here
)
select q.* from q

yields:

                    job_scope                   | checked_col
-----------------------------------------------+------------------------------------------
  Co Revenues: Co Revenues $100 to $999 Million | <input panel=data 
type=checkbox checked>
  Metropolitan Area: Austin-Round Rock          | <input panel=data 
type=checkbox checked>

which is as expected.

However,

with q as
(
     same query here
)
select q from q

yields:

q
-----------------------------------------------------------------------------------------------
  ("Co Revenues: Co Revenues $100 to $999 Million","<input panel=data 
type=checkbox checked>",)
  ("Metropolitan Area: Austin-Round Rock","<input panel=data 
type=checkbox checked>",)


Note the trailing comma inside the (), which certainly looks bogus to 
me. If I replace "select q" with "select row(q.*)" it disappears.

It doesn't happen in all cases, and I'm trying to work out a minimal 
reproducible example. But it sure is puzzling.

cheers

andrew