Make pg_dump exclude unlogged table data on hot standby slaves
Noted by Joe Van Dyk
This commit is contained in:
parent
760f3c043a
commit
be926474be
@ -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)
|
|||||||
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.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user