Commit be926474 authored by Magnus Hagander's avatar Magnus Hagander

Make pg_dump exclude unlogged table data on hot standby slaves

Noted by Joe Van Dyk
parent 760f3c04
...@@ -713,7 +713,8 @@ PostgreSQL documentation ...@@ -713,7 +713,8 @@ PostgreSQL documentation
<para> <para>
Do not dump the contents of unlogged tables. This option has no Do not dump the contents of unlogged tables. This option has no
effect on whether or not the table definitions (schema) are dumped; 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> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
......
...@@ -605,6 +605,24 @@ main(int argc, char **argv) ...@@ -605,6 +605,24 @@ main(int argc, char **argv)
if (fout->remoteVersion < 90100) if (fout->remoteVersion < 90100)
no_security_labels = 1; 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. * Start transaction-snapshot mode transaction to dump consistent data.
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment