On 29.03.23 16:28, Tomas Vondra wrote:
Perhaps it'd be reasonable to tie the "protocol version" to subscriber capabilities, so that a protocol version guarantees what message types the subscriber understands. So we could increment the protocol version, check it in pgoutput_startup and then error-out in the sequence callback if the subscriber version is too old.
That would make sense.
That'd be nicer in the sense that we'd generate nicer error message on the publisher, not an "unknown message type" on the subscriber. That's doable, the main problem being it'd be inconsistent with the TRUNCATE behavior. OTOH that was introduced in PG11, which is the oldest version still under support ...
I think at the time TRUNCATE support was added, we didn't have a strong sense of how the protocol versioning would work or whether it would work at all, so doing nothing was the easiest way out.