On Mon, Jun 01, 2020 at 10:57:29AM +0900, Michael Paquier wrote: > Applied this one then. I also got to check the ODBC driver in more > details, and I am indeed not seeing those functions getting used. > One extra thing to know is that the ODBC driver requires libpq from at > least 9.2, which may give one more argument to just remove them. > > NB: prion has been failing, just looking into it.
Woah. This one is old, good catch from -DRELCACHE_FORCE_RELEASE. It happens that since its introduction in a3519a2 from 2002, currtid_for_view() in tid.c closes the view and then looks at a RTE from it. I have reproduced the issue and the patch attached takes care of the problem. Would it be better to backpatch all the way down or is that not worth caring about? -- Michael
diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c index cc699ee2f4..509a0fdffc 100644 --- a/src/backend/utils/adt/tid.c +++ b/src/backend/utils/adt/tid.c @@ -338,8 +338,13 @@ currtid_for_view(Relation viewrel, ItemPointer tid) rte = rt_fetch(var->varno, query->rtable); if (rte) { + Datum result; + + result = DirectFunctionCall2(currtid_byreloid, + ObjectIdGetDatum(rte->relid), + PointerGetDatum(tid)); table_close(viewrel, AccessShareLock); - return DirectFunctionCall2(currtid_byreloid, ObjectIdGetDatum(rte->relid), PointerGetDatum(tid)); + return result; } } }
signature.asc
Description: PGP signature