aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-10-02 14:31:28 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-10-02 14:31:28 -0400
commite8bdee2770ff52aab208bc6f8965a4a01979d0aa (patch)
treee2f4c66b456019913b6fd8161412d3387150ed6a /src
parent728ceba938dfadb204a4854bb76ae3b11b635401 (diff)
downloadpostgresql-e8bdee2770ff52aab208bc6f8965a4a01979d0aa.tar.gz
postgresql-e8bdee2770ff52aab208bc6f8965a4a01979d0aa.zip
Add ALTER EXTENSION ADD/DROP ACCESS METHOD, and use it in pg_upgrade.
Without this, an extension containing an access method is not properly dumped/restored during pg_upgrade --- the AM ends up not being a member of the extension after upgrading. Another oversight in commit 473b93287, reported by Andrew Dunstan. Report: <f7ac29f3-515c-2a44-21c5-ec925053265f@dunslane.net>
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/gram.y11
-rw-r--r--src/bin/pg_dump/pg_dump.c3
2 files changed, 13 insertions, 1 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 1526c73a1c5..5547fc86586 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -3931,7 +3931,16 @@ alter_extension_opt_item:
*****************************************************************************/
AlterExtensionContentsStmt:
- ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args
+ ALTER EXTENSION name add_drop ACCESS METHOD name
+ {
+ AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
+ n->extname = $3;
+ n->action = $4;
+ n->objtype = OBJECT_ACCESS_METHOD;
+ n->objname = list_make1(makeString($7));
+ $$ = (Node *)n;
+ }
+ | ALTER EXTENSION name add_drop AGGREGATE func_name aggr_args
{
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
n->extname = $3;
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 51b8a1a6225..299e88788e1 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -12505,6 +12505,9 @@ dumpAccessMethod(Archive *fout, AccessMethodInfo *aminfo)
appendPQExpBuffer(labelq, "ACCESS METHOD %s",
qamname);
+ if (dopt->binary_upgrade)
+ binary_upgrade_extension_member(q, &aminfo->dobj, labelq->data);
+
if (aminfo->dobj.dump & DUMP_COMPONENT_DEFINITION)
ArchiveEntry(fout, aminfo->dobj.catId, aminfo->dobj.dumpId,
aminfo->dobj.name,