Currently, pg_dump dumps foreign options in a single line, for example
CREATE SERVER cluster FOREIGN DATA WRAPPER plproxy OPTIONS (p0 'host=host0', p1
'host=host1', p2 'host=host2', p3 'host=host3');
I think it would be nicer if it looked more like this:
CREATE SERVER cluster FOREIGN DATA WRAPPER plproxy OPTIONS (
p0 'host=host0',
p1 'host=host1',
p2 'host=host2',
p3 'host=host3'
);
Attached is a patch to implement that, and a test file to play around
with.
diff --git i/src/bin/pg_dump/pg_dump.c w/src/bin/pg_dump/pg_dump.c
index afeae6f..6dd4895 100644
--- i/src/bin/pg_dump/pg_dump.c
+++ w/src/bin/pg_dump/pg_dump.c
@@ -5671,7 +5671,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
"SELECT pg_catalog.quote_ident(option_name) || "
"' ' || pg_catalog.quote_literal(option_value) "
"FROM pg_catalog.pg_options_to_table(attfdwoptions)"
- "), ', ') AS attfdwoptions "
+ "), E',\n ') AS attfdwoptions "
"FROM pg_catalog.pg_attribute a LEFT JOIN pg_catalog.pg_type t "
"ON a.atttypid = t.oid "
"WHERE a.attrelid = '%u'::pg_catalog.oid "
@@ -6488,7 +6488,7 @@ getForeignDataWrappers(int *numForeignDataWrappers)
"SELECT quote_ident(option_name) || ' ' || "
"quote_literal(option_value) "
"FROM pg_options_to_table(fdwoptions)"
- "), ', ') AS fdwoptions "
+ "), E',\n ') AS fdwoptions "
"FROM pg_foreign_data_wrapper",
username_subquery);
}
@@ -6502,7 +6502,7 @@ getForeignDataWrappers(int *numForeignDataWrappers)
"SELECT quote_ident(option_name) || ' ' || "
"quote_literal(option_value) "
"FROM pg_options_to_table(fdwoptions)"
- "), ', ') AS fdwoptions "
+ "), E',\n ') AS fdwoptions "
"FROM pg_foreign_data_wrapper",
username_subquery);
}
@@ -6591,7 +6591,7 @@ getForeignServers(int *numForeignServers)
"SELECT quote_ident(option_name) || ' ' || "
"quote_literal(option_value) "
"FROM pg_options_to_table(srvoptions)"
- "), ', ') AS srvoptions "
+ "), E',\n ') AS srvoptions "
"FROM pg_foreign_server",
username_subquery);
@@ -11484,7 +11484,7 @@ dumpForeignDataWrapper(Archive *fout, FdwInfo *fdwinfo)
appendPQExpBuffer(q, " VALIDATOR %s", fdwinfo->fdwvalidator);
if (strlen(fdwinfo->fdwoptions) > 0)
- appendPQExpBuffer(q, " OPTIONS (%s)", fdwinfo->fdwoptions);
+ appendPQExpBuffer(q, " OPTIONS (\n %s\n)", fdwinfo->fdwoptions);
appendPQExpBuffer(q, ";\n");
@@ -11588,7 +11588,7 @@ dumpForeignServer(Archive *fout, ForeignServerInfo *srvinfo)
appendPQExpBuffer(q, "%s", fmtId(fdwname));
if (srvinfo->srvoptions && strlen(srvinfo->srvoptions) > 0)
- appendPQExpBuffer(q, " OPTIONS (%s)", srvinfo->srvoptions);
+ appendPQExpBuffer(q, " OPTIONS (\n %s\n)", srvinfo->srvoptions);
appendPQExpBuffer(q, ";\n");
@@ -11679,7 +11679,7 @@ dumpUserMappings(Archive *fout,
"SELECT quote_ident(option_name) || ' ' || "
"quote_literal(option_value) "
"FROM pg_options_to_table(umoptions)"
- "), ', ') AS umoptions "
+ "), E',\n ') AS umoptions "
"FROM pg_user_mappings "
"WHERE srvid = '%u'",
catalogId.oid);
@@ -11704,7 +11704,7 @@ dumpUserMappings(Archive *fout,
appendPQExpBuffer(q, " SERVER %s", fmtId(servername));
if (umoptions && strlen(umoptions) > 0)
- appendPQExpBuffer(q, " OPTIONS (%s)", umoptions);
+ appendPQExpBuffer(q, " OPTIONS (\n %s\n)", umoptions);
appendPQExpBuffer(q, ";\n");
@@ -12337,7 +12337,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
"SELECT pg_catalog.quote_ident(option_name) || "
"' ' || pg_catalog.quote_literal(option_value) "
"FROM pg_catalog.pg_options_to_table(ftoptions)"
- "), ', ') AS ftoptions "
+ "), E',\n ') AS ftoptions "
"FROM pg_catalog.pg_foreign_table ft "
"JOIN pg_catalog.pg_foreign_server fs "
"ON (fs.oid = ft.ftserver) "
@@ -12566,7 +12566,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
/* Dump generic options if any */
if (ftoptions && ftoptions[0])
- appendPQExpBuffer(q, "\nOPTIONS (%s)", ftoptions);
+ appendPQExpBuffer(q, "\nOPTIONS (\n %s\n)", ftoptions);
appendPQExpBuffer(q, ";\n");
@@ -12766,7 +12766,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
fmtId(tbinfo->dobj.name));
appendPQExpBuffer(q, "ALTER COLUMN %s ",
fmtId(tbinfo->attnames[j]));
- appendPQExpBuffer(q, "OPTIONS (%s);\n",
+ appendPQExpBuffer(q, "OPTIONS (\n %s\n);\n",
tbinfo->attfdwoptions[j]);
}
}
CREATE FOREIGN DATA WRAPPER plproxy OPTIONS (
query_timeout '1800'
);
CREATE SERVER cluster FOREIGN DATA WRAPPER plproxy OPTIONS (
p0 'host=host0',
p1 'host=host1',
p2 'host=host2',
p3 'host=host3'
);
CREATE USER MAPPING FOR peter SERVER cluster OPTIONS (
user 'peter',
password 'sekret'
);
CREATE FOREIGN DATA WRAPPER foo;
CREATE SERVER foo FOREIGN DATA WRAPPER foo;
CREATE FOREIGN TABLE foobar (a int, b text) SERVER foo OPTIONS (
bar 'bar',
baz 'baz'
);
ALTER FOREIGN TABLE foobar ALTER COLUMN a OPTIONS (abc 'def');
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers