From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | taylor(at)youneedabudget(dot)com |
Cc: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: BUG #15544: Unexpected: "Returned record type does not match expected record type" after ALTER TABLE |
Date: | 2018-12-09 15:52:25 |
Message-ID: | 11115.1544370745@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
=?utf-8?q?PG_Bug_reporting_form?= <noreply(at)postgresql(dot)org> writes:
> If you define a function to return a type of "<some table name>", and then
> alter the table to add a column, that function will immediately begin to
> throw an error: "Returned record type does not match expected record type".
> This error is not present on any new connections to the database.
Yeah, plpgsql has historically been unfriendly to intrasession changes
in the rowtypes of composite-typed variables or parameters, because
it sets up internal data structures that depend on those details and
doesn't have a way to update them. This is improved in v11 --- I won't
claim it's perfect yet, but at least it seems to handle this example
without problems. Prior to v11, you'd have to start a new session or
do CREATE OR REPLACE FUNCTION to make this work.
> The only way to fix the issue and use the function again is disconnect and
> reconnect to the database (new sessions work fine). This leads me to believe
> that there is a cached definition of this table type that is not being
> refreshed when the table is altered. It's worth noting that when this
> happened to us, not even dropping and recreating the function appeared to be
> enough to fix the issue on existing connections.
Really? Replacing the function ought to be enough, I should think
(and it is, when I try your example on v10). I'd be interested to
see a fleshed-out example where it isn't.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | PG Bug reporting form | 2018-12-11 12:46:49 | BUG #15545: wrong calculation |
Previous Message | PG Bug reporting form | 2018-12-09 02:30:07 | BUG #15544: Unexpected: "Returned record type does not match expected record type" after ALTER TABLE |