aboutsummaryrefslogtreecommitdiff
path: root/src/backend/replication/pgoutput/pgoutput.c
diff options
context:
space:
mode:
authorAmit Kapila <akapila@postgresql.org>2023-12-19 09:53:33 +0530
committerAmit Kapila <akapila@postgresql.org>2023-12-19 09:53:33 +0530
commitc8bc807cf8bc741c83bc74553326856affee5a4f (patch)
tree2bd1a06aa03aaad0e86c61bcbf9eee348a6c4091 /src/backend/replication/pgoutput/pgoutput.c
parent8b965c549dc8753be8a38c4a1b9fabdb535a4338 (diff)
downloadpostgresql-c8bc807cf8bc741c83bc74553326856affee5a4f.tar.gz
postgresql-c8bc807cf8bc741c83bc74553326856affee5a4f.zip
pgoutput: Raise an error for missing protocol version parameter.
Currently, we give a misleading error if the user omits to pass the required parameter 'proto_version' in SQL API pg_logical_slot_get_changes() or during START_REPLICATION protocol message. The error raised is as follows which indicates that the wrong version is passed. ERROR: client sent proto_version=0 but server only supports protocol 1 or higher Author: Emre Hasegeli Reviewed-by: Peter Smith, Amit Kapila Discussion: https://postgr.es/m/CAE2gYzwdwtUbs-tPSV-QBwgTubiyGD2ZGsSnAVsDfAGGLDrGOA@mail.gmail.com
Diffstat (limited to 'src/backend/replication/pgoutput/pgoutput.c')
-rw-r--r--src/backend/replication/pgoutput/pgoutput.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c
index f9ed1083df7..25a95076cf7 100644
--- a/src/backend/replication/pgoutput/pgoutput.c
+++ b/src/backend/replication/pgoutput/pgoutput.c
@@ -400,6 +400,16 @@ parse_output_parameters(List *options, PGOutputData *data)
else
elog(ERROR, "unrecognized pgoutput option: %s", defel->defname);
}
+
+ /* Check required options */
+ if (!protocol_version_given)
+ ereport(ERROR,
+ errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("proto_version option missing"));
+ if (!publication_names_given)
+ ereport(ERROR,
+ errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("publication_names option missing"));
}
/*
@@ -449,11 +459,6 @@ pgoutput_startup(LogicalDecodingContext *ctx, OutputPluginOptions *opt,
errmsg("client sent proto_version=%d but server only supports protocol %d or higher",
data->protocol_version, LOGICALREP_PROTO_MIN_VERSION_NUM)));
- if (data->publication_names == NIL)
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("publication_names parameter missing")));
-
/*
* Decide whether to enable streaming. It is disabled by default, in
* which case we just update the flag in decoding context. Otherwise