public inbox for [email protected]
help / color / mirror / Atom feedFrom: Daniel Heath <[email protected]>
To: Tom Lane <[email protected]>
Cc: [email protected]
Subject: Re: Prepared statement invalidation
Date: Fri, 16 Apr 2021 16:16:45 +1000
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
<[email protected]>
Is there a transaction isolation mode that would help with the specific case of adding a column to a table? EG to prevent a prepared statement from seeing the new schema?
Thanks,
Daniel Heath
On Fri, Apr 16, 2021, at 10:17 AM, Tom Lane wrote:
> "Daniel Heath" <[email protected]> writes:
> > I've found that when I add a new column, I sometimes get a spike of errors on the application side due to prepared statement query plans getting invalidated, causing transactions to rollback.
> > The error is:
> > ERROR: cached plan must not change result type
> > Is there a way to make postgres recalculate the query plan instead of failing the transaction when a new column is added?
>
> No. It'd be easy enough to remove that restriction on the server side,
> but we're afraid that it would break applications, which probably aren't
> expecting the result rowtype of a prepared query to be different from what
> they were told (perhaps only milliseconds earlier).
>
> I'd say the short answer is "don't use prepared queries, or if you do,
> spell out the columns you want instead of saying SELECT *".
>
> regards, tom lane
>
>
>
>
> > Thanks,
> > Daniel Heath
>
>
view thread (3+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: Prepared statement invalidation
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox