RE: Enhance 'pg_createsubscriber' to retrieve databases automatically when no database is provided.
Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>
From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Shubham Khanna' <khannashubham1197@gmail.com>
Cc: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Peter Smith <smithpb2250@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, PostgreSQL
Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-02-28T13:03:42Z
Lists: pgsql-hackers
Attachments
- kuroda_fix.diffs (application/octet-stream)
Dear Shubham,
Thanks for updating the patch.
I think the modification [1] is not correct - the loop is meaningless because the same
query would be executed every time. How about idea like attached? Here, instead of
try escaping dbname, dbname is directly obtained from the instance and they are compared.
How do you think?
[1]:
```
+# Verify that only user databases got subscriptions (not template databases)
+my @user_dbs = ('postgres', $db1, $db2);
+foreach my $dbname (@user_dbs)
+{
+ $result = $node_s2->safe_psql('postgres',
+ "SELECT count(*) FROM pg_subscription, pg_database WHERE subdbid = pg_database.oid and datistemplate = 'f';"
+ );
+ is($result, '3', "Subscription created successfully for $dbname");
+ $result = $node_s2->safe_psql('postgres',
+ "SELECT count(*) FROM pg_subscription, pg_database WHERE subdbid = pg_database.oid and datistemplate = 't';"
+ );
+ is($result, '0', "Subscription created successfully for $dbname");
+}
```
Best regards,
Hayato Kuroda
FUJITSU LIMITED
Commits
-
Cosmetic fixes for pg_createsubscriber's -all option.
- d438515c29c3 18.0 landed
-
pg_createsubscriber: Add '--all' option.
- fb2ea12f42b9 18.0 landed