1
0
mirror of https://github.com/postgres/postgres.git synced 2026-10-23 13:29:09 +03:00

Clarify logic in CreateSubscription().

No bug found in previous code, but it unnecessarily relied on grammar
rules. Per complaint from Coverity.

Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/1787286.1786328153@sss.pgh.pa.us
Backpatch-through: 19
This commit is contained in:
Jeff Davis
2026-08-15 09:42:23 -07:00
parent 4d85fd59c7
commit 3d00537feb

View File

@@ -871,11 +871,17 @@ CreateSubscription(ParseState *pstate, CreateSubscriptionStmt *stmt,
values[Anum_pg_subscription_subretentionactive - 1] =
BoolGetDatum(opts.retaindeadtuples);
values[Anum_pg_subscription_subserver - 1] = ObjectIdGetDatum(serverid);
if (!OidIsValid(serverid))
if (stmt->conninfo)
{
Assert(stmt->conninfo == conninfo && !OidIsValid(serverid));
values[Anum_pg_subscription_subconninfo - 1] =
CStringGetTextDatum(conninfo);
CStringGetTextDatum(stmt->conninfo);
}
else
{
Assert(OidIsValid(serverid));
nulls[Anum_pg_subscription_subconninfo - 1] = true;
}
if (opts.slot_name)
values[Anum_pg_subscription_subslotname - 1] =
DirectFunctionCall1(namein, CStringGetDatum(opts.slot_name));