cached plan must not change result type - Mailing list pgsql-general

From Jan Bilek
Subject cached plan must not change result type
Date
Msg-id SYXPR01MB0701122A755200ECF78A8405B5D80@SYXPR01MB0701.ausprd01.prod.outlook.com
Whole thread Raw
Responses Re: cached plan must not change result type  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-general
Hi all,

Our client noticed a problem which occurred so far twice, but might be having quite significant impact on our application processing in production: ResStatus: PGRES_FATAL_ERROR transaction. ErrorMessage: ERROR: cached plan must not change result type.

Reading through the documentation problem is quite understood on our side, while most probably caused by our implementation of Virtual Partitioning on postgresql, by triggering database schema update through the application upgrade procedure or simply by altering one of the tables manually - so far so good.

Now, our developers came with a solution where we check return value from PQresultStatus(x) for PGRES_FATAL_ERROR and then if the error message from PQresultErrorMessage(x) contains "cached plan must not change result type" we delete statement and prepare it again.

I would like to ask, would you see this solution in general as fine, or is there any better way to achieve this? I particularly dislike the part when we are trying matching return string on "cached plan must not change result type" as error messages might change (e.g. situations using different locales), is there any way how to get around this e.g. with enumerator?

Thank you,
Jan

pgsql-general by date:

Previous
From: Tiffany Thang
Date:
Subject: Prefixing schema name
Next
From: "David G. Johnston"
Date:
Subject: Re: Prefixing schema name