validate-slot_name-in-parse_subscription_options.patch
text/x-patch
Filename: validate-slot_name-in-parse_subscription_options.patch
Type: text/x-patch
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/commands/subscriptioncmds.c | 2 | 0 |
| src/test/regress/expected/subscription.out | 2 | 0 |
| src/test/regress/sql/subscription.sql | 1 | 0 |
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index eb88d877a5..fa07203b03 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -173,6 +173,8 @@ parse_subscription_options(List *stmt_options, bits32 supported_opts, SubOpts *o opts->specified_opts |= SUBOPT_SLOT_NAME; opts->slot_name = defGetString(defel); + ReplicationSlotValidateName(opts->slot_name, ERROR); + /* Setting slot_name = NONE is treated as no slot name. */ if (strcmp(opts->slot_name, "none") == 0) opts->slot_name = NULL; diff --git a/src/test/regress/expected/subscription.out b/src/test/regress/expected/subscription.out index 57f7dd9b0a..d1ff3531a4 100644 --- a/src/test/regress/expected/subscription.out +++ b/src/test/regress/expected/subscription.out @@ -85,6 +85,8 @@ ERROR: invalid connection string syntax: missing "=" after "foobar" in connecti ALTER SUBSCRIPTION regress_testsub SET PUBLICATION testpub2, testpub3 WITH (refresh = false); ALTER SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist2'; ALTER SUBSCRIPTION regress_testsub SET (slot_name = 'newname'); +ALTER SUBSCRIPTION regress_testsub SET (slot_name = ''); +ERROR: replication slot name "" is too short -- fail ALTER SUBSCRIPTION regress_doesnotexist CONNECTION 'dbname=regress_doesnotexist2'; ERROR: subscription "regress_doesnotexist" does not exist diff --git a/src/test/regress/sql/subscription.sql b/src/test/regress/sql/subscription.sql index 308c098c14..1500a96e2b 100644 --- a/src/test/regress/sql/subscription.sql +++ b/src/test/regress/sql/subscription.sql @@ -64,6 +64,7 @@ ALTER SUBSCRIPTION regress_testsub CONNECTION 'foobar'; ALTER SUBSCRIPTION regress_testsub SET PUBLICATION testpub2, testpub3 WITH (refresh = false); ALTER SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist2'; ALTER SUBSCRIPTION regress_testsub SET (slot_name = 'newname'); +ALTER SUBSCRIPTION regress_testsub SET (slot_name = ''); -- fail ALTER SUBSCRIPTION regress_doesnotexist CONNECTION 'dbname=regress_doesnotexist2';