Hi Experts
I noticed this problem when creating a backup on Postgres 13 and restoring it on Postgres 15. CREATE FUNCTION sync.show_pg_subscription1() RETURNS SETOF pg_subscription LANGUAGE sql AS $$ SELECT * from pg_subscription; $$; The Postgres backup creates the view syntax with " FROM sync.show_pg_subscription1() show_pg_subscription1(oid, subdbid, subname, subowner, subenabled, subconninfo, subslotname,
subsynccommit, subpublications);" The original syntax just had FROM sync.show_pg_subscription1() . CREATE OR REPLACE VIEW sync.pg_subscription_view1 AS SELECT show_pg_subscription1.oid, show_pg_subscription1.subdbid, show_pg_subscription1.subname, show_pg_subscription1.subowner, show_pg_subscription1.subenabled, show_pg_subscription1.subconninfo, show_pg_subscription1.subslotname, show_pg_subscription1.subsynccommit, show_pg_subscription1.subpublications FROM sync.show_pg_subscription1()
show_pg_subscription1(oid, subdbid, subname, subowner, subenabled, subconninfo, subslotname, subsynccommit, subpublications); We get an error: ERROR: column reference "subconninfo" is ambiguous LINE 8: show_pg_subscription1.subconninfo, If we remove the part generated by Postgres backup " show_pg_subscription1(oid, subdbid, subname, subowner, subenabled, subconninfo, subslotname, subsynccommit, subpublications);"
it works. What can be done so backups will be able to restore correctly? I have a not so elegant solution, but I hope to hear a better solution than creating additional view: create view abc as SELECT
oid, subdbid, subname, subowner, subenabled, subconninfo, subslotname, subsynccommit, subpublications
from pg_subscription p; CREATE FUNCTION sync.show_pg_subscription1() RETURNS SETOF abc LANGUAGE sql AS $$ SELECT * from abc; $$; SELECT show_pg_subscription1.oid, show_pg_subscription1.subdbid, show_pg_subscription1.subname, show_pg_subscription1.subowner, show_pg_subscription1.subenabled, show_pg_subscription1.subconninfo, show_pg_subscription1.subslotname, show_pg_subscription1.subsynccommit, show_pg_subscription1.subpublications FROM sync.show_pg_subscription1()
show_pg_subscription1(oid, subdbid, subname, subowner, subenabled, subconninfo, subslotname, subsynccommit, subpublications); This works also with the additional part generated by Postgres backup Thanks! |