Thread: Bug or Feature - plpgsql odity

Bug or Feature - plpgsql odity

From
"Uwe C. Schroeder"
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hi,

following odity:

I have a table "quote".
In a stored proc I do a

rquote quote%ROWTYPE;

SELECT INTO rquote * FROM quote WHERE .....(some clause resulting in one
record)

Fine so far.
Now I manually add a column to the table (via psql).

After that I do a vacuum full analyze - just to make sure.

BUT: The above SELECT fails to retrieve a value for the new column. It will
always return NULL, even after I stored the procedure again (using the create
or replace syntax). Values for all other columns are OK.

If I declare the rquote variable as type RECORD everything works as expected.

Is the %ROWTYPE" cached somewhere ? Is that intentional ?
Accessing rquote.newcolumn doesn't raise an exception, but the value is NULL

Running 7.3.2 on linux.

    UC

- --
Open Source Solutions 4U, LLC    2570 Fleetwood Drive
Phone:  +1 650 872 2425        San Bruno, CA 94066
Cell:   +1 650 302 2405        United States
Fax:    +1 650 872 2417
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE/yrmrjqGXBvRToM4RAm1EAJoCQGXhYGhdAGexNX5QaHI8MtAGAACgjWjC
3y04n9FTpEeX8FxEgkEU5Cw=
=okfE
-----END PGP SIGNATURE-----


Re: Bug or Feature - plpgsql odity

From
Tom Lane
Date:
"Uwe C. Schroeder" <uwe@oss4u.com> writes:
> Is the %ROWTYPE" cached somewhere ? Is that intentional ?

I see some fixes in the 7.4 CVS logs for dropped columns in plpgsql
rowtypes.  Not sure if they'd have any impact on added columns, but
you could try.  In general though I'd expect that plpgsql would cache
the definitions of rowtypes, the same as it does for tables.

            regards, tom lane

Re: Bug or Feature - plpgsql odity

From
"Uwe C. Schroeder"
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sunday 30 November 2003 08:15 pm, Tom Lane wrote:
> "Uwe C. Schroeder" <uwe@oss4u.com> writes:
> > Is the %ROWTYPE" cached somewhere ? Is that intentional ?
>
> I see some fixes in the 7.4 CVS logs for dropped columns in plpgsql
> rowtypes.  Not sure if they'd have any impact on added columns, but
> you could try.  In general though I'd expect that plpgsql would cache
> the definitions of rowtypes, the same as it does for tables.
>
>             regards, tom lane

So how would I force a reload of the cache ? I tried restarting postgres
alltogether, as well as recreating the procedure. Should I try a DROP and
CREATE cycle rather than a CREATE OR REPLACE ?
My understanding would be that the rowtype is compiled the moment the
procedure is created, so I'd expect a recreate of the procedure to take care
of the cache problem.

    UC

- --
Open Source Solutions 4U, LLC    2570 Fleetwood Drive
Phone:  +1 650 872 2425        San Bruno, CA 94066
Cell:   +1 650 302 2405        United States
Fax:    +1 650 872 2417
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE/ysJjjqGXBvRToM4RAuq1AJ9LgkhYXEz19+0I8ou8/N7AeKPEgwCffzBT
XvJPiExWzZVyDAKjLUsbW4M=
=IQTs
-----END PGP SIGNATURE-----


Re: Bug or Feature - plpgsql odity

From
Tom Lane
Date:
"Uwe C. Schroeder" <uwe@oss4u.com> writes:
> On Sunday 30 November 2003 08:15 pm, Tom Lane wrote:
>> I see some fixes in the 7.4 CVS logs for dropped columns in plpgsql
>> rowtypes.  Not sure if they'd have any impact on added columns, but
>> you could try.  In general though I'd expect that plpgsql would cache
>> the definitions of rowtypes, the same as it does for tables.

> So how would I force a reload of the cache ?

Starting a fresh session would be sufficient.  If 7.4 doesn't do what
you want after starting a fresh session, please file a bug report with
details.

            regards, tom lane