diff options
author | Amit Kapila <akapila@postgresql.org> | 2023-12-19 09:53:33 +0530 |
---|---|---|
committer | Amit Kapila <akapila@postgresql.org> | 2023-12-19 09:53:33 +0530 |
commit | c8bc807cf8bc741c83bc74553326856affee5a4f (patch) | |
tree | 2bd1a06aa03aaad0e86c61bcbf9eee348a6c4091 /src/backend/replication/pgoutput/pgoutput.c | |
parent | 8b965c549dc8753be8a38c4a1b9fabdb535a4338 (diff) | |
download | postgresql-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.c | 15 |
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 |