提交 be926474 编写于 作者: M Magnus Hagander

Make pg_dump exclude unlogged table data on hot standby slaves

Noted by Joe Van Dyk
上级 760f3c04
......@@ -713,7 +713,8 @@ PostgreSQL documentation
<para>
Do not dump the contents of unlogged tables. This option has no
effect on whether or not the table definitions (schema) are dumped;
it only suppresses dumping the table data.
it only suppresses dumping the table data. Data in unlogged tables
is always excluded when dumping from a standby server.
</para>
</listitem>
</varlistentry>
......
......@@ -605,6 +605,24 @@ main(int argc, char **argv)
if (fout->remoteVersion < 90100)
no_security_labels = 1;
/*
* When running against 9.0 or later, check if we are in recovery mode,
* which means we are on a hot standby.
*/
if (fout->remoteVersion >= 90000)
{
PGresult *res = ExecuteSqlQueryForSingleRow(fout, "SELECT pg_catalog.pg_is_in_recovery()");
if (strcmp(PQgetvalue(res, 0, 0), "t") == 0)
{
/*
* On hot standby slaves, never try to dump unlogged table data,
* since it will just throw an error.
*/
no_unlogged_table_data = true;
}
PQclear(res);
}
/*
* Start transaction-snapshot mode transaction to dump consistent data.
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册