From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
---|---|
To: | Richard Neill <postgresql(at)richardneill(dot)org> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #5867: wish: plpgsql print table for debug |
Date: | 2011-03-03 15:03:41 |
Message-ID: | AANLkTimrzAYxjqFaKRjmVvXiVt_YuAVG54C9EcNW95db@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Mon, Feb 7, 2011 at 1:01 AM, Richard Neill
<postgresql(at)richardneill(dot)org> wrote:
>
> The following bug has been logged online:
>
> Bug reference: 5867
> Logged by: Richard Neill
> Email address: postgresql(at)richardneill(dot)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.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2011-03-03 15:04:52 | Re: BUG #5871: database connecting failed |
Previous Message | Robert Haas | 2011-03-03 15:00:38 | Re: BUG #5863: help message report 5433 as default port |