aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_utilcmd.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2011-08-05 13:24:03 -0400
committerRobert Haas <rhaas@postgresql.org>2011-08-05 13:24:03 -0400
commitc4096c76399ad99dce35cd62f60599ea8748a3dd (patch)
tree01116ffd1816868c388f84afc3b5ecca72b05192 /src/backend/parser/parse_utilcmd.c
parent68cbb9f4e70b7b7ed515b5c63bafbe47d9617bf0 (diff)
downloadpostgresql-c4096c76399ad99dce35cd62f60599ea8748a3dd.tar.gz
postgresql-c4096c76399ad99dce35cd62f60599ea8748a3dd.zip
Allow per-column foreign data wrapper options.
Shigeru Hanada, with fairly minor editing by me.
Diffstat (limited to 'src/backend/parser/parse_utilcmd.c')
-rw-r--r--src/backend/parser/parse_utilcmd.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 1be2ac68a58..21b54f7f153 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -559,6 +559,31 @@ transformColumnDefinition(CreateStmtContext *cxt, ColumnDef *column)
break;
}
}
+
+ /*
+ * Generate ALTER FOREIGN TABLE ALTER COLUMN statement which adds
+ * per-column foreign data wrapper options for this column.
+ */
+ if (column->fdwoptions != NIL)
+ {
+ AlterTableStmt *stmt;
+ AlterTableCmd *cmd;
+
+ cmd = makeNode(AlterTableCmd);
+ cmd->subtype = AT_AlterColumnGenericOptions;
+ cmd->name = column->colname;
+ cmd->def = (Node *) column->fdwoptions;
+ cmd->behavior = DROP_RESTRICT;
+ cmd->missing_ok = false;
+
+ stmt = makeNode(AlterTableStmt);
+ stmt->relation = cxt->relation;
+ stmt->cmds = NIL;
+ stmt->relkind = OBJECT_FOREIGN_TABLE;
+ stmt->cmds = lappend(stmt->cmds, cmd);
+
+ cxt->alist = lappend(cxt->alist, stmt);
+ }
}
/*