diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2020-03-11 11:04:59 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2020-03-11 11:04:59 -0300 |
commit | 73b31e784d64a4f24644de11d02fa632fe97bfab (patch) | |
tree | 2257cdf020b6d6942ad6c96724a83f5775b03a49 /src/test | |
parent | fab5456356c24fa36cab455e7d4275393d175654 (diff) |
Avoid duplicates in ALTER ... DEPENDS ON EXTENSION
If the command is attempted for an extension that the object already
depends on, silently do nothing.
In particular, this means that if a database containing multiple such
entries is dumped, the restore will silently do the right thing and
record just the first one. (At least, in a world where pg_dump does
dump such entries -- which it doesn't currently, but it will.)
Backpatch to 9.6, where this kind of dependency was introduced.
Reviewed-by: Ibrar Ahmed, Tom Lane (offlist)
Discussion: https://postgr.es/m/20200217225333.GA30974@alvherre.pgsql
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/modules/test_extensions/expected/test_extdepend.out | 2 | ||||
-rw-r--r-- | src/test/modules/test_extensions/sql/test_extdepend.sql | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/test/modules/test_extensions/expected/test_extdepend.out b/src/test/modules/test_extensions/expected/test_extdepend.out index 11e441ddd37..40533e90de3 100644 --- a/src/test/modules/test_extensions/expected/test_extdepend.out +++ b/src/test/modules/test_extensions/expected/test_extdepend.out @@ -47,6 +47,8 @@ SELECT * FROM test_extdep_commands \gexec CREATE INDEX e ON a (a1) ALTER INDEX e DEPENDS ON EXTENSION test_ext5 RESET search_path +-- A dependent object made dependent again has no effect +ALTER FUNCTION test_ext.b() DEPENDS ON EXTENSION test_ext5; -- make sure we have the right dependencies on the extension SELECT deptype, p.* FROM pg_depend, pg_identify_object(classid, objid, objsubid) AS p diff --git a/src/test/modules/test_extensions/sql/test_extdepend.sql b/src/test/modules/test_extensions/sql/test_extdepend.sql index cf44145dcb3..cc170ab7097 100644 --- a/src/test/modules/test_extensions/sql/test_extdepend.sql +++ b/src/test/modules/test_extensions/sql/test_extdepend.sql @@ -27,6 +27,8 @@ COPY test_extdep_commands FROM stdin; SELECT * FROM test_extdep_commands; -- First, test that dependent objects go away when the extension is dropped. SELECT * FROM test_extdep_commands \gexec +-- A dependent object made dependent again has no effect +ALTER FUNCTION test_ext.b() DEPENDS ON EXTENSION test_ext5; -- make sure we have the right dependencies on the extension SELECT deptype, p.* FROM pg_depend, pg_identify_object(classid, objid, objsubid) AS p |