From 024c521117579a6d356050ad3d78fdc95e44eefa Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Sun, 3 Mar 2024 19:38:22 +0200 Subject: Replace BackendIds with 0-based ProcNumbers Now that BackendId was just another index into the proc array, it was redundant with the 0-based proc numbers used in other places. Replace all usage of backend IDs with proc numbers. The only place where the term "backend id" remains is in a few pgstat functions that expose backend IDs at the SQL level. Those IDs are now in fact 0-based ProcNumbers too, but the documentation still calls them "backend ids". That term still seems appropriate to describe what the numbers are, so I let it be. One user-visible effect is that pg_temp_0 is now a valid temp schema name, for backend with ProcNumber 0. Reviewed-by: Andres Freund Discussion: https://www.postgresql.org/message-id/8171f1aa-496f-46a6-afc3-c46fe7a9b407@iki.fi --- src/backend/utils/cache/relcache.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'src/backend/utils/cache/relcache.c') diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 50acae45298..37c37df56c1 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -1144,13 +1144,13 @@ retry: { case RELPERSISTENCE_UNLOGGED: case RELPERSISTENCE_PERMANENT: - relation->rd_backend = InvalidBackendId; + relation->rd_backend = INVALID_PROC_NUMBER; relation->rd_islocaltemp = false; break; case RELPERSISTENCE_TEMP: if (isTempOrTempToastNamespace(relation->rd_rel->relnamespace)) { - relation->rd_backend = BackendIdForTempRelations(); + relation->rd_backend = ProcNumberForTempRelations(); relation->rd_islocaltemp = true; } else @@ -1159,18 +1159,18 @@ retry: * If it's a temp table, but not one of ours, we have to use * the slow, grotty method to figure out the owning backend. * - * Note: it's possible that rd_backend gets set to MyBackendId - * here, in case we are looking at a pg_class entry left over - * from a crashed backend that coincidentally had the same - * BackendId we're using. We should *not* consider such a - * table to be "ours"; this is why we need the separate - * rd_islocaltemp flag. The pg_class entry will get flushed - * if/when we clean out the corresponding temp table namespace - * in preparation for using it. + * Note: it's possible that rd_backend gets set to + * MyProcNumber here, in case we are looking at a pg_class + * entry left over from a crashed backend that coincidentally + * had the same ProcNumber we're using. We should *not* + * consider such a table to be "ours"; this is why we need the + * separate rd_islocaltemp flag. The pg_class entry will get + * flushed if/when we clean out the corresponding temp table + * namespace in preparation for using it. */ relation->rd_backend = - GetTempNamespaceBackendId(relation->rd_rel->relnamespace); - Assert(relation->rd_backend != InvalidBackendId); + GetTempNamespaceProcNumber(relation->rd_rel->relnamespace); + Assert(relation->rd_backend != INVALID_PROC_NUMBER); relation->rd_islocaltemp = false; } break; @@ -1896,7 +1896,7 @@ formrdesc(const char *relationName, Oid relationReltype, relation->rd_newRelfilelocatorSubid = InvalidSubTransactionId; relation->rd_firstRelfilelocatorSubid = InvalidSubTransactionId; relation->rd_droppedSubid = InvalidSubTransactionId; - relation->rd_backend = InvalidBackendId; + relation->rd_backend = INVALID_PROC_NUMBER; relation->rd_islocaltemp = false; /* @@ -3611,12 +3611,12 @@ RelationBuildLocalRelation(const char *relname, { case RELPERSISTENCE_UNLOGGED: case RELPERSISTENCE_PERMANENT: - rel->rd_backend = InvalidBackendId; + rel->rd_backend = INVALID_PROC_NUMBER; rel->rd_islocaltemp = false; break; case RELPERSISTENCE_TEMP: Assert(isTempOrTempToastNamespace(relnamespace)); - rel->rd_backend = BackendIdForTempRelations(); + rel->rd_backend = ProcNumberForTempRelations(); rel->rd_islocaltemp = true; break; default: -- cgit v1.2.3