Re: BUG #5867: wish: plpgsql print table for debug - Mailing list pgsql-bugs

From Richard Neill
Subject Re: BUG #5867: wish: plpgsql print table for debug
Date
Msg-id 4D6FCBEC.1060709@richardneill.org
Whole thread Raw
In response to Re: BUG #5867: wish: plpgsql print table for debug  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: BUG #5867: wish: plpgsql print table for debug
Re: BUG #5867: wish: plpgsql print table for debug
List pgsql-bugs
>> The following bug has been logged online:
>>
>> Bug reference:      5867
>> Logged by:          Richard Neill
>> Email address:      postgresql@richardneill.org
>> PostgreSQL version: 9.03
>> Operating system:   Linux
>> Description:        wish: plpgsql print table for debug
>> Details:
>>
>> When debugging a plpgsql function, it would be really amazingly useful to be
>> able to do a regular psql-style SELECT, and have the result printed to
>> screen.
>>
>> Something like:
>>
>>    Raise Notice table 'SELECT .... '
>>
>> and then plpgsql would run the query and dump the result to screen, using
>> its helpful formatting.
>>
>> As far as I can see, this isn't possible (though there are a lot of people
>> searching for how to do it), and the only workaround is to manually handle
>> the looping and formatting, raising lots of individual notices. This makes
>> debugging much harder than it should be.
>
> It wouldn't be too hard to write a loop that runs the select statement
> and does RAISE NOTICE on each row.  Getting that into the psql
> formatting would be a little trickier, but I don't see why you
> couldn't write a PL/pgsql function to do it.  Then you could just call
> that function and pass it an SQL query every time you want to do this.
>

I'm rather hoping that this would actually be an enhancement to
PL/PGSQL, (or at least an officially documented howto) rather than just
a private debugging function.

Do you not think it would be really amazingly useful? After all, in C,
the single most useful debugging tool is "fprintf(stderr,...)", and yet
postgresql doesn't have an equivalent that can operate on the most
common data format. [I'm stretching the analogy a bit here, but it seems
to me that a multi-row table is to postgresql as int is to C.]

There are a lot of people who would benefit from it, most of whom
(including me) don't really have the expertise to do it well.

Also, there is a lot of value in being able to debug as needed with a
1-line debugging statement, then get back to the problem at hand, rather
than having to break out of the current programming task to write a
debug function :-)

Thanks very much,

Richard

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: can't build contrib/uuid-ossp
Next
From: Tom Lane
Date:
Subject: Re: BUG #5912: Etc/GMT time utc offset error