Prevent use of invalidated logical slot in CreateDecodingContext()
authorAndres Freund <andres@anarazel.de>
Sat, 8 Apr 2023 05:19:05 +0000 (22:19 -0700)
committerAndres Freund <andres@anarazel.de>
Sat, 8 Apr 2023 05:19:05 +0000 (22:19 -0700)
commit4397abd0a2af955326c0608d63f3716ce5901004
treeed9a7a022b746da014567065db69e66e8a88edae
parent15f8203a5975d6b9b78e2c64e213ed964b50c044
Prevent use of invalidated logical slot in CreateDecodingContext()

Previously we had checks for this in multiple places. Support for logical
decoding on standbys will add other forms of invalidation, making it worth
while to centralize the checks.

This slightly changes the error message for both the walsender and SQL
interface. Particularly the SQL interface error was inaccurate, as the "This
slot has never previously reserved WAL" portion was unreachable.

Reviewed-by: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com>
Reviewed-by: Melanie Plageman <melanieplageman@gmail.com>
Discussion: https://postgr.es/m/20230407075009.igg7be27ha2htkbt@awork3.anarazel.de
src/backend/replication/logical/logical.c
src/backend/replication/logical/logicalfuncs.c
src/backend/replication/walsender.c