On 2/16/23 2:38 PM, Alvaro Herrera wrote:
On 2023-Feb-16, Jonathan S. Katz wrote:On 2/16/23 12:53 PM, Alvaro Herrera wrote:I don't think this is the fault of logical replication. Consider that for the backend server, the function source code is just an opaque string that is given to the plpgsql engine to interpret. So there's no way for the logical DDL replication engine to turn this into runnable code if the table name is not qualified.Sure, that's fair. That said, the example above would fall under a "typical use case", i.e. I'm replicating functions that call tables without schema qualification. This is pretty common, and as logical replication becomes used for more types of workloads (e.g. high availability), we'll definitely see this.Hmm, I think you're saying that replay should turn check_function_bodies off, and I think I agree with that.
Yes, exactly. +1 The docs seem to think that is the correct approach too:"Set this parameter to off before loading functions on behalf of other users"[1].
[1] https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-CHECK-FUNCTION-BODIES
OpenPGP_signature
Description: OpenPGP digital signature