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
