agora inbox for [email protected]  
help / color / mirror / Atom feed
[PATCH] Add pg_tablespace_avail() functions
189+ messages / 2 participants
[nested] [flat]

* [PATCH] Add pg_tablespace_avail() functions
@ 2019-11-08 13:12 Christoph Berg <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Christoph Berg @ 2019-11-08 13:12 UTC (permalink / raw)

This exposes the f_avail value from statvfs() on tablespace directories
on the SQL level, allowing monitoring of free disk space from within the
server. On windows, GetDiskFreeSpaceEx() is used.

Permissions required match those from pg_tablespace_size.

In psql, include a new "Free" column in \db+ output.
---
 doc/src/sgml/func.sgml          | 21 ++++++++
 doc/src/sgml/ref/psql-ref.sgml  |  2 +-
 src/backend/utils/adt/dbsize.c  | 94 +++++++++++++++++++++++++++++++++
 src/bin/psql/describe.c         | 11 ++--
 src/include/catalog/pg_proc.dat |  8 +++
 5 files changed, 132 insertions(+), 4 deletions(-)

diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 51dd8ad6571..0b4456ad958 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -30093,6 +30093,27 @@ postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset
        </para></entry>
       </row>
 
+      <row>
+       <entry role="func_table_entry"><para role="func_signature">
+        <indexterm>
+         <primary>pg_tablespace_avail</primary>
+        </indexterm>
+        <function>pg_tablespace_avail</function> ( <type>name</type> )
+        <returnvalue>bigint</returnvalue>
+       </para>
+       <para role="func_signature">
+        <function>pg_tablespace_avail</function> ( <type>oid</type> )
+        <returnvalue>bigint</returnvalue>
+       </para>
+       <para>
+        Returns the available disk space in the tablespace with the
+        specified name or OID. To use this function, you must
+        have <literal>CREATE</literal> privilege on the specified tablespace
+        or have privileges of the <literal>pg_read_all_stats</literal> role,
+        unless it is the default tablespace for the current database.
+       </para></entry>
+      </row>
+
       <row>
        <entry role="func_table_entry"><para role="func_signature">
         <indexterm>
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index cedccc14129..9e1bec0b422 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1492,7 +1492,7 @@ SELECT $1 \parse stmt1
         If <literal>x</literal> is appended to the command name, the results
         are displayed in expanded mode.
         If <literal>+</literal> is appended to the command name, each tablespace
-        is listed with its associated options, on-disk size, permissions and
+        is listed with its associated options, on-disk size and free disk space, permissions and
         description.
         </para>
         </listitem>
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index 25865b660ef..3a2f47c50ec 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -12,6 +12,11 @@
 #include "postgres.h"
 
 #include <sys/stat.h>
+#ifdef WIN32
+#include <fileapi.h>
+#else
+#include <sys/statvfs.h>
+#endif
 
 #include "access/htup_details.h"
 #include "access/relation.h"
@@ -316,6 +321,95 @@ pg_tablespace_size_name(PG_FUNCTION_ARGS)
 }
 
 
+/*
+ * Return available disk space of tablespace. Returns -1 if the tablespace
+ * directory cannot be found.
+ */
+static int64
+calculate_tablespace_avail(Oid tblspcOid)
+{
+	char		tblspcPath[MAXPGPATH];
+	AclResult	aclresult;
+#ifdef WIN32
+	ULARGE_INTEGER lpFreeBytesAvailable;
+#else
+	struct statvfs fst;
+#endif
+
+	/*
+	 * User must have privileges of pg_read_all_stats or have CREATE privilege
+	 * for target tablespace, either explicitly granted or implicitly because
+	 * it is default for current database.
+	 */
+	if (tblspcOid != MyDatabaseTableSpace &&
+		!has_privs_of_role(GetUserId(), ROLE_PG_READ_ALL_STATS))
+	{
+		aclresult = object_aclcheck(TableSpaceRelationId, tblspcOid, GetUserId(), ACL_CREATE);
+		if (aclresult != ACLCHECK_OK)
+			aclcheck_error(aclresult, OBJECT_TABLESPACE,
+						   get_tablespace_name(tblspcOid));
+	}
+
+	if (tblspcOid == DEFAULTTABLESPACE_OID)
+		snprintf(tblspcPath, MAXPGPATH, "base");
+	else if (tblspcOid == GLOBALTABLESPACE_OID)
+		snprintf(tblspcPath, MAXPGPATH, "global");
+	else
+		snprintf(tblspcPath, MAXPGPATH, "%s/%u/%s", PG_TBLSPC_DIR, tblspcOid,
+				 TABLESPACE_VERSION_DIRECTORY);
+
+#ifdef WIN32
+	if (GetDiskFreeSpaceEx(tblspcPath, &lpFreeBytesAvailable, NULL, NULL) == false)
+		return -1;
+
+	return lpFreeBytesAvailable.QuadPart; /* ULONGLONG part of ULARGE_INTEGER */
+#else
+	if (statvfs(tblspcPath, &fst) < 0)
+		return -1;
+
+	return fst.f_bavail * fst.f_bsize; /* available blocks times block size */
+#endif
+}
+
+Datum
+pg_tablespace_avail_oid(PG_FUNCTION_ARGS)
+{
+	Oid			tblspcOid = PG_GETARG_OID(0);
+	int64		avail;
+
+	/*
+	 * Not needed for correctness, but avoid non-user-facing error message
+	 * later if the tablespace doesn't exist.
+	 */
+	if (!SearchSysCacheExists1(TABLESPACEOID, ObjectIdGetDatum(tblspcOid)))
+		ereport(ERROR,
+				errcode(ERRCODE_UNDEFINED_OBJECT),
+				errmsg("tablespace with OID %u does not exist", tblspcOid));
+
+	avail = calculate_tablespace_avail(tblspcOid);
+
+	if (avail < 0)
+		PG_RETURN_NULL();
+
+	PG_RETURN_INT64(avail);
+}
+
+Datum
+pg_tablespace_avail_name(PG_FUNCTION_ARGS)
+{
+	Name		tblspcName = PG_GETARG_NAME(0);
+	Oid			tblspcOid = get_tablespace_oid(NameStr(*tblspcName), false);
+	int64		avail;
+
+	avail = calculate_tablespace_avail(tblspcOid);
+
+	if (avail < 0)
+		PG_RETURN_NULL();
+
+	PG_RETURN_INT64(avail);
+}
+
+
 /*
  * calculate size of (one fork of) a relation
  *
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index e6cf468ac9e..8c52a126ac1 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -241,10 +241,15 @@ describeTablespaces(const char *pattern, bool verbose)
 		printACLColumn(&buf, "spcacl");
 		appendPQExpBuffer(&buf,
 						  ",\n  spcoptions AS \"%s\""
-						  ",\n  pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS \"%s\""
-						  ",\n  pg_catalog.shobj_description(oid, 'pg_tablespace') AS \"%s\"",
+						  ",\n  pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS \"%s\"",
 						  gettext_noop("Options"),
-						  gettext_noop("Size"),
+						  gettext_noop("Size"));
+		if (pset.sversion >= 180000)
+			appendPQExpBuffer(&buf,
+							  ",\n  pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_avail(oid)) AS \"%s\"",
+							  gettext_noop("Free"));
+		appendPQExpBuffer(&buf,
+						  ",\n  pg_catalog.shobj_description(oid, 'pg_tablespace') AS \"%s\"",
 						  gettext_noop("Description"));
 	}
 
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 42e427f8fe8..9d64da6bfb8 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -7680,6 +7680,14 @@
   descr => 'total disk space usage for the specified tablespace',
   proname => 'pg_tablespace_size', provolatile => 'v', prorettype => 'int8',
   proargtypes => 'name', prosrc => 'pg_tablespace_size_name' },
+{ oid => '6015',
+  descr => 'disk stats for the specified tablespace',
+  proname => 'pg_tablespace_avail', provolatile => 'v', prorettype => 'int8',
+  proargtypes => 'oid', prosrc => 'pg_tablespace_avail_oid' },
+{ oid => '6016',
+  descr => 'disk stats for the specified tablespace',
+  proname => 'pg_tablespace_avail', provolatile => 'v', prorettype => 'int8',
+  proargtypes => 'name', prosrc => 'pg_tablespace_avail_name' },
 { oid => '2324', descr => 'total disk space usage for the specified database',
   proname => 'pg_database_size', provolatile => 'v', prorettype => 'int8',
   proargtypes => 'oid', prosrc => 'pg_database_size_oid' },
-- 
2.47.2


--vqKhBUYnSUFh3RIa--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread

* [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared.
@ 2026-04-13 09:36 Antonin Houska <[email protected]>
  0 siblings, 0 replies; 189+ messages in thread

From: Antonin Houska @ 2026-04-13 09:36 UTC (permalink / raw)

The value is only needed by te worker, so there is no need to store it in
shared memory.
---
 src/backend/commands/repack_worker.c   | 5 +++--
 src/include/commands/repack_internal.h | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index 5bd020e0184..a594d6db25f 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -51,6 +51,7 @@ static XLogSegNo repack_current_segment = 0;
 static RelFileLocator repacked_rel_locator = {.relNumber = InvalidOid};
 static RelFileLocator repacked_rel_toast_locator = {.relNumber = InvalidOid};
 
+static dsm_segment	*worker_dsm_segment = NULL;
 
 /* REPACK decoding worker entry point */
 void
@@ -78,9 +79,9 @@ RepackWorkerMain(Datum main_arg)
 		ereport(ERROR,
 				errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 				errmsg("could not map dynamic shared memory segment"));
+	worker_dsm_segment = seg;
 
 	shared = (DecodingWorkerShared *) dsm_segment_address(seg);
-	shared->dsm_seg = seg;
 
 	/* Arrange to signal the leader if we exit. */
 	before_shmem_exit(RepackWorkerShutdown, PointerGetDatum(shared));
@@ -176,7 +177,7 @@ RepackWorkerShutdown(int code, Datum arg)
 				   PROCSIG_REPACK_MESSAGE,
 				   shared->backend_proc_number);
 
-	dsm_detach(shared->dsm_seg);
+	dsm_detach(worker_dsm_segment);
 }
 
 bool
diff --git a/src/include/commands/repack_internal.h b/src/include/commands/repack_internal.h
index 3ff64444351..6a85cee8910 100644
--- a/src/include/commands/repack_internal.h
+++ b/src/include/commands/repack_internal.h
@@ -107,7 +107,6 @@ typedef struct DecodingWorkerShared
 	PGPROC	   *backend_proc;
 	pid_t		backend_pid;
 	ProcNumber	backend_proc_number;
-	dsm_segment *dsm_seg;
 
 	/*
 	 * Memory the queue is located in.
-- 
2.47.3


--=-=-=--





^ permalink  raw  reply  [nested|flat] 189+ messages in thread


end of thread, other threads:[~2026-04-13 09:36 UTC | newest]

Thread overview: 189+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2019-11-08 13:12 [PATCH] Add pg_tablespace_avail() functions Christoph Berg <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>
2026-04-13 09:36 [PATCH 2/2] Remove dsm_seg from DecodingWorkerShared. Antonin Houska <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox