aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2012-12-20 16:30:59 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2012-12-20 16:31:42 -0500
commit343c2a865bc6c0a03358709df854ce1eac52ca45 (patch)
tree5b9043684467c64b43a2e3b074699d6124d21453 /doc/src
parent343ee00b730e9c422082160718b9785f0cb7f8f6 (diff)
downloadpostgresql-343c2a865bc6c0a03358709df854ce1eac52ca45.tar.gz
postgresql-343c2a865bc6c0a03358709df854ce1eac52ca45.zip
Fix pg_extension_config_dump() to handle update cases more sanely.
If pg_extension_config_dump() is executed again for a table already listed in the extension's extconfig, the code was blindly making a new array entry. This does not seem useful. Fix it to replace the existing array entry instead, so that it's possible for extension update scripts to alter the filter conditions for configuration tables. In addition, teach ALTER EXTENSION DROP TABLE to check for an extconfig entry for the target table, and remove it if present. This is not a 100% solution because it's allowed for an extension update script to just summarily DROP a member table, and that code path doesn't go through ExecAlterExtensionContentsStmt. We could probably make that case clean things up if we had to, but it would involve sticking a very ugly wart somewhere in the guts of dependency.c. Since on the whole it seems quite unlikely that extension updates would want to remove pre-existing configuration tables, making the case possible with an explicit command seems sufficient. Per bug #7756 from Regina Obe. Back-patch to 9.1 where extensions were introduced.
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/extend.sgml12
1 files changed, 12 insertions, 0 deletions
diff --git a/doc/src/sgml/extend.sgml b/doc/src/sgml/extend.sgml
index 8d5b9d0c836..672d0df13cf 100644
--- a/doc/src/sgml/extend.sgml
+++ b/doc/src/sgml/extend.sgml
@@ -665,6 +665,10 @@ SET LOCAL search_path TO @extschema@;
and reload.
</para>
+ <indexterm>
+ <primary>pg_extension_config_dump</primary>
+ </indexterm>
+
<para>
To solve this problem, an extension's script file can mark a table
it has created as a configuration table, which will cause
@@ -703,6 +707,14 @@ SELECT pg_catalog.pg_extension_config_dump('my_config', 'WHERE NOT standard_entr
be modified by users, can be handled by creating triggers on the
configuration table to ensure that modified rows are marked correctly.
</para>
+
+ <para>
+ You can alter the filter condition associated with a configuration table
+ by calling <function>pg_extension_config_dump</> again. (This would
+ typically be useful in an extension update script.) The only way to mark
+ a table as no longer a configuration table is to dissociate it from the
+ extension with <command>ALTER EXTENSION ... DROP TABLE</>.
+ </para>
</sect2>
<sect2>