mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Further tweaking of pg_dump's handling of default_toast_compression.
As committed in bbe0a81db
, pg_dump from a pre-v14 server effectively
acts as though you'd said --no-toast-compression. I think the right
thing is for it to act as though default_toast_compression is set to
"pglz", instead, so that the tables' toast compression behavior is
preserved. You can always get the other behavior, if you want that,
by giving the switch.
Discussion: https://postgr.es/m/1112852.1616609702@sss.pgh.pa.us
This commit is contained in:
parent
ed934d4fa3
commit
54bb91c30e
@ -3333,18 +3333,28 @@ dumpSearchPath(Archive *AH)
|
|||||||
static void
|
static void
|
||||||
dumpToastCompression(Archive *AH)
|
dumpToastCompression(Archive *AH)
|
||||||
{
|
{
|
||||||
const char *toast_compression;
|
char *toast_compression;
|
||||||
PQExpBuffer qry;
|
PQExpBuffer qry;
|
||||||
PGresult *res;
|
|
||||||
|
|
||||||
if (AH->remoteVersion < 140000 || AH->dopt->no_toast_compression)
|
if (AH->dopt->no_toast_compression)
|
||||||
{
|
{
|
||||||
/* server doesn't support compression, or we don't care */
|
/* we don't intend to dump the info, so no need to fetch it either */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = ExecuteSqlQueryForSingleRow(AH, "SHOW default_toast_compression");
|
if (AH->remoteVersion < 140000)
|
||||||
toast_compression = PQgetvalue(res, 0, 0);
|
{
|
||||||
|
/* pre-v14, the only method was pglz */
|
||||||
|
toast_compression = pg_strdup("pglz");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PGresult *res;
|
||||||
|
|
||||||
|
res = ExecuteSqlQueryForSingleRow(AH, "SHOW default_toast_compression");
|
||||||
|
toast_compression = pg_strdup(PQgetvalue(res, 0, 0));
|
||||||
|
PQclear(res);
|
||||||
|
}
|
||||||
|
|
||||||
qry = createPQExpBuffer();
|
qry = createPQExpBuffer();
|
||||||
appendPQExpBufferStr(qry, "SET default_toast_compression = ");
|
appendPQExpBufferStr(qry, "SET default_toast_compression = ");
|
||||||
@ -3363,9 +3373,8 @@ dumpToastCompression(Archive *AH)
|
|||||||
* Also save it in AH->default_toast_compression, in case we're doing
|
* Also save it in AH->default_toast_compression, in case we're doing
|
||||||
* plain text dump.
|
* plain text dump.
|
||||||
*/
|
*/
|
||||||
AH->default_toast_compression = pg_strdup(toast_compression);
|
AH->default_toast_compression = toast_compression;
|
||||||
|
|
||||||
PQclear(res);
|
|
||||||
destroyPQExpBuffer(qry);
|
destroyPQExpBuffer(qry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user