On Wed, Dec 26, 2018 at 08:51:56PM -0300, Alvaro Herrera wrote: > Having been victim of ABI incompatibility myself, I loathe giving too > much priority to other issues that can be resolved in other ways, so I > don't necessarily support your view on bugs. > That said, I think in this case it shouldn't be a problem, so I'm going > to work on that next.
And it is even better if bugs can be fixed, even partially without any ABI breakages. Anyway, not breaking the ABI of PGPROC is why 246a6c8 has not been back-patched to begin with, because we have no idea how PGPROC is being used and because its interface is public, so if the intent is to apply 246a6c8 to v10 and down this gets a -1 from me. Back-patching what you sent in https://www.postgresql.org/message-id/20181226190834.wsk2wzott5yzrjiq@alvherre.pgsql is fine for me. >>> Another possibly useful change is to make DISCARD ALL and DISCARD TEMP >>> delete >>> everything in what would be the backend's temp namespace, even if it hasn't >>> been initialized yet. This would cover the case where a connection pooler >>> keeps the connection open for a very long time, which I think is a common >>> case. >> >> That sounds good. > > Thanks. I just tested that the attached patch does the intended. (I > named it "autovac" but obviously the DISCARD part is not about > autovacuum). I intend to push this patch first, and later backpatch the > other one. + snprintf(namespaceName, sizeof(namespaceName), "pg_temp_%d", + MyBackendId); + namespaceId = get_namespace_oid(namespaceName, true); So this is the reverse engineering of GetTempNamespaceBackendId(). Perhaps a dedicated API in namespace.c would be interesting to have? I would recommend to keep the changes for DISCARD and autovacuum into separate commits. -- Michael
signature.asc
Description: PGP signature