Implement IF NOT EXISTS for CREATE PUBLICATION AND CREATE SUBSCRIPTION

Started by vignesh Cover 3 years ago2 messageshackers
Beta feature

Hackorum builds and tests every patch posted to the lists, not only commitfest submissions. This is Hackorum's own CI rather than the PostgreSQL project's, and it is still under testing - please report anything that looks wrong.

won't retrysuccessCI history

You can run a PostgreSQL built from this patch straight from Docker, with no checkout and no build:

docker run --rm -p 5432:5432 ghcr.io/hackorum-dev/postgres-patch:t47592
psql -h localhost -U postgres

Built from patchset v1 (message #1), July 28, 2026 at 12:52 AM.

Every patchset is also pushed to a branch of our PostgreSQL fork, so you can check out the same tree CI built. Without a PostgreSQL checkout:

git clone --branch t47592_1 https://github.com/hackorum-dev/postgres.git

In a checkout you already have, add the fork once:

git remote add hackorum https://github.com/hackorum-dev/postgres.git

then, for this patchset and every later one:

git fetch hackorum t47592_1 && git checkout t47592_1

Patchset v1 (message #1) is on t47592_1

Jump to latest
#1vignesh C
vignesh21@gmail.com

Hi,

Currently we don't support "IF NOT EXISTS" for Create publication and
Create subscription, I felt it would be useful to add this "IF NOT
EXISTS" which will create publication/subscription only if the object
does not exist.
Attached patch for handling the same.
Thoughts?

Regards,
Vignesh

Attachments:

t47592_1
v1-0001-Implement-IF-NOT-EXISTS-for-CREATE-PUBLICATION-AN.patchtext/x-patch; charset=US-ASCII; name=v1-0001-Implement-IF-NOT-EXISTS-for-CREATE-PUBLICATION-AN.patchDownload+109-11
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: vignesh C (#1)
Re: Implement IF NOT EXISTS for CREATE PUBLICATION AND CREATE SUBSCRIPTION

vignesh C <vignesh21@gmail.com> writes:

Currently we don't support "IF NOT EXISTS" for Create publication and
Create subscription, I felt it would be useful to add this "IF NOT
EXISTS" which will create publication/subscription only if the object
does not exist.
Attached patch for handling the same.
Thoughts?

I generally dislike IF NOT EXISTS options, because they are so
semantically squishy: when the command is over, you cannot make any
assumptions whatsoever about the properties of the object, beyond
the bare fact that it exists. I do not think we should implement
such options without a pretty compelling argument that there is a
use-case for them. "I felt it would be useful" doesn't meet the
bar IMO.

CREATE OR REPLACE doesn't have this semantic problem, but I'm not
sure whether it's a useful approach for these types of objects.

regards, tom lane