<feed xmlns='http://www.w3.org/2005/Atom'>
<title>postgresql.git/src/backend/commands/tablespace.c, branch REL_19_STABLE</title>
<subtitle>This is the main PostgreSQL git repository.</subtitle>
<id>http://git.postgresql.org/cgit/postgresql.git/atom?h=REL_19_STABLE</id>
<link rel='self' href='http://git.postgresql.org/cgit/postgresql.git/atom?h=REL_19_STABLE'/>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/'/>
<updated>2026-09-09T15:06:47Z</updated>
<entry>
<title>Fix concurrency issues with DROP TABLESPACE</title>
<updated>2026-09-09T15:06:47Z</updated>
<author>
<name>Andrew Dunstan</name>
</author>
<published>2026-09-09T14:50:09Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=5dec175fb4c537947faaba504cda394b4ca6b726'/>
<id>urn:sha1:5dec175fb4c537947faaba504cda394b4ca6b726</id>
<content type='text'>
DROP TABLESPACE checked pg_shdepend for dependent objects without
first locking the tablespace.  A concurrent command that recorded a
shared dependency on the tablespace right after that check could still
commit, leaving an object whose pg_shdepend entry (or, for a relation,
pg_class.reltablespace) pointed to a tablespace that no longer existed.

Close the race by having DropTableSpace() take an AccessExclusiveLock
on the tablespace before calling checkSharedDependencies().  That
conflicts with the AccessShareLock shdepLockAndCheckObject() takes when
recording a new dependency, so the loser of the race blocks and
rechecks once the winner commits.

That AccessExclusiveLock creates a new deadlock: ALTER TABLESPACE
RENAME/SET and the internal ACL/owner updates in DROP OWNED and
REASSIGN OWNED touched the catalog tuple without locking the
tablespace, risking a lock-order cycle with DROP.  Fix by taking an
AccessShareLock first in all four paths, rechecking pg_shdepend after
any wait in the DROP OWNED and REASSIGN OWNED cases.  GRANT, REVOKE,
and ALTER TABLESPACE ... OWNER TO already lock the object.

Add isolation tests covering both orderings of the original race
(dependency-first and drop-first) and all four previously-unlocked
update paths.

Author: Ayush Tiwari &lt;ayushtiwari.slg01@gmail.com&gt;
Reviewed-by: Andrew Dunstan &lt;andrew@dunslane.net&gt;
Discussion: https://postgr.es/m/CAJTYsWXjAQFnGKzXsht3XK8KHhyhontwFJw4JAHsUSfs_ptR4g@mail.gmail.com
Backpatch-through: 14
</content>
</entry>
<entry>
<title>Don't include storage/lock.h in so many headers</title>
<updated>2026-03-24T16:11:12Z</updated>
<author>
<name>Álvaro Herrera</name>
</author>
<published>2026-03-24T16:11:12Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=2102ebb1953fe656a46819e11ff4204e2f918dda'/>
<id>urn:sha1:2102ebb1953fe656a46819e11ff4204e2f918dda</id>
<content type='text'>
Since storage/locktags.h was added by commit 322bab79744d, many headers
can be made leaner by depending on that instead of on storage/lock.h,
which has many other dependencies.

(In fact, some of these changes were possible even before that.)

Author: Álvaro Herrera &lt;alvherre@kurilemu.de&gt;
Reviewed-by: Bertrand Drouvot &lt;bertranddrouvot.pg@gmail.com&gt;
Discussion: https://postgr.es/m/abvrRZo52Yx9ZzWQ@ip-10-97-1-34.eu-west-3.compute.internal
</content>
</entry>
<entry>
<title>Disallow CR and LF in database, role, and tablespace names</title>
<updated>2026-02-23T16:19:13Z</updated>
<author>
<name>Andrew Dunstan</name>
</author>
<published>2026-02-21T22:17:48Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=b380a56a3f9556588a89013b765d67947d54f7d0'/>
<id>urn:sha1:b380a56a3f9556588a89013b765d67947d54f7d0</id>
<content type='text'>
Previously, these characters could cause problems when passed through
shell commands, and were flagged with a comment in string_utils.c
suggesting they be rejected in a future major release.

The affected commands are CREATE DATABASE, CREATE ROLE, CREATE TABLESPACE,
ALTER DATABASE RENAME, ALTER ROLE RENAME, and ALTER TABLESPACE RENAME.

Also add a pg_upgrade check to detect these invalid names in clusters
being upgraded from pre-v19 versions, producing a report file listing
any offending objects that must be renamed before upgrading.

Tests have been modified accordingly.

Author: Mahendra Singh Thalor &lt;mahi6run@gmail.com&gt;
Reviewed-By: Álvaro Herrera &lt;alvherre@alvh.no-ip.org&gt;
Reviewed-By: Andrew Dunstan &lt;andrew@dunslane.net&gt;
Reviewed-By: Tom Lane &lt;tgl@sss.pgh.pa.us&gt;
Reviewed-By: Nathan Bossart &lt;nathandbossart@gmail.com&gt;
Reviewed-By: Srinath Reddy &lt;srinath2133@gmail.com&gt;

Discussion: https://postgr.es/m/CAKYtNApkOi4FY0S7+3jpTqnHVyyZ6Tbzhtbah-NBbY-mGsiKAQ@mail.gmail.com
</content>
</entry>
<entry>
<title>Separate RecoveryConflictReasons from procsignals</title>
<updated>2026-02-10T14:23:08Z</updated>
<author>
<name>Heikki Linnakangas</name>
</author>
<published>2026-02-10T14:23:08Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=17f51ea818753093f929b4c235f3b89ebcc7c5fb'/>
<id>urn:sha1:17f51ea818753093f929b4c235f3b89ebcc7c5fb</id>
<content type='text'>
Share the same PROCSIG_RECOVERY_CONFLICT flag for all recovery
conflict reasons. To distinguish, have a bitmask in PGPROC to indicate
the reason(s).

Reviewed-by: Chao Li &lt;li.evan.chao@gmail.com&gt;
Discussion: https://www.postgresql.org/message-id/4cc13ba1-4248-4884-b6ba-4805349e7f39@iki.fi
</content>
</entry>
<entry>
<title>Update copyright for 2026</title>
<updated>2026-01-01T18:24:10Z</updated>
<author>
<name>Bruce Momjian</name>
</author>
<published>2026-01-01T18:24:10Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=451c43974f8e199097d97624a4952ad0973cea61'/>
<id>urn:sha1:451c43974f8e199097d97624a4952ad0973cea61</id>
<content type='text'>
Backpatch-through: 14
</content>
</entry>
<entry>
<title>Rename CHECKPOINT_IMMEDIATE to CHECKPOINT_FAST.</title>
<updated>2025-07-11T16:51:25Z</updated>
<author>
<name>Nathan Bossart</name>
</author>
<published>2025-07-11T16:51:25Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=bb938e2c3c7a955090f8b68b5bf75d064f6a36a0'/>
<id>urn:sha1:bb938e2c3c7a955090f8b68b5bf75d064f6a36a0</id>
<content type='text'>
The new name more accurately reflects the effects of this flag on a
requested checkpoint.  Checkpoint-related log messages (i.e., those
controlled by the log_checkpoints configuration parameter) will now
say "fast" instead of "immediate", too.  Likewise, references to
"immediate" checkpoints in the documentation have been updated to
say "fast".  This is preparatory work for a follow-up commit that
will add a MODE option to the CHECKPOINT command.

Author: Christoph Berg &lt;myon@debian.org&gt;
Discussion: https://postgr.es/m/aDnaKTEf-0dLiEfz%40msg.df7cb.de
</content>
</entry>
<entry>
<title>Remove unnecessary (char *) casts [xlog]</title>
<updated>2025-02-13T09:57:07Z</updated>
<author>
<name>Peter Eisentraut</name>
</author>
<published>2025-02-11T21:03:29Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=ed5e5f071033c8bdaabc8d9cd015f89aa3ccfeef'/>
<id>urn:sha1:ed5e5f071033c8bdaabc8d9cd015f89aa3ccfeef</id>
<content type='text'>
Remove (char *) casts no longer needed after XLogRegisterData() and
XLogRegisterBufData() argument type change.

Reviewed-by: Dagfinn Ilmari Mannsåker &lt;ilmari@ilmari.org&gt;
Discussion: https://www.postgresql.org/message-id/flat/fd1fcedb-3492-4fc8-9e3e-74b97f2db6c7%40eisentraut.org
</content>
</entry>
<entry>
<title>Update copyright for 2025</title>
<updated>2025-01-01T16:21:55Z</updated>
<author>
<name>Bruce Momjian</name>
</author>
<published>2025-01-01T16:21:55Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=50e6eb731d98ab6d0e625a0b87fb327b172bbebd'/>
<id>urn:sha1:50e6eb731d98ab6d0e625a0b87fb327b172bbebd</id>
<content type='text'>
Backpatch-through: 13
</content>
</entry>
<entry>
<title>Remove useless casts to (void *)</title>
<updated>2024-11-28T07:27:20Z</updated>
<author>
<name>Peter Eisentraut</name>
</author>
<published>2024-11-28T07:19:22Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=7f798aca1d5df290aafad41180baea0ae311b4ee'/>
<id>urn:sha1:7f798aca1d5df290aafad41180baea0ae311b4ee</id>
<content type='text'>
Many of them just seem to have been copied around for no real reason.
Their presence causes (small) risks of hiding actual type mismatches
or silently discarding qualifiers

Discussion: https://www.postgresql.org/message-id/flat/461ea37c-8b58-43b4-9736-52884e862820@eisentraut.org
</content>
</entry>
<entry>
<title>Define PG_TBLSPC_DIR for path pg_tblspc/ in data folder</title>
<updated>2024-09-03T00:11:54Z</updated>
<author>
<name>Michael Paquier</name>
</author>
<published>2024-09-03T00:11:54Z</published>
<link rel='alternate' type='text/html' href='http://git.postgresql.org/cgit/postgresql.git/commit/?id=c7cd2d6ed082a4638172acece33ed6f36da96263'/>
<id>urn:sha1:c7cd2d6ed082a4638172acece33ed6f36da96263</id>
<content type='text'>
Similarly to 2065ddf5e34c, this introduces a define for "pg_tblspc".
This makes the style more consistent with the existing PG_STAT_TMP_DIR,
for example.

There is a difference with the other cases with the introduction of
PG_TBLSPC_DIR_SLASH, required in two places for recovery and backups.

Author: Bertrand Drouvot
Reviewed-by: Ashutosh Bapat, Álvaro Herrera, Yugo Nagata, Michael
Paquier
Discussion: https://postgr.es/m/ZryVvjqS9SnV1GPP@ip-10-97-1-34.eu-west-3.compute.internal
</content>
</entry>
</feed>
