1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-16 06:01:02 +03:00

Remove unnecessary calls of FlushRelationBuffers: there is no need

to write out data that we are about to tell the filesystem to drop.
smgr_internal_unlink already had a DropRelFileNodeBuffers call to
get rid of dead buffers without a write after it's no longer possible
to roll back the deleting transaction.  Adding a similar call in
smgrtruncate simplifies callers and makes the overall division of
labor clearer.  This patch removes the former behavior that VACUUM
would write all dirty buffers of a relation unconditionally.
This commit is contained in:
Tom Lane
2005-03-20 22:00:54 +00:00
parent 683f60da3d
commit 354049c709
10 changed files with 91 additions and 236 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.147 2005/03/16 21:38:05 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.148 2005/03/20 22:00:52 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -5628,13 +5628,12 @@ copy_relation_data(Relation rel, SMgrRelation dst)
Page page = (Page) buf;
/*
* Since we copy the data directly without looking at the shared
* Since we copy the file directly without looking at the shared
* buffers, we'd better first flush out any pages of the source
* relation that are in shared buffers. We assume no new pages will
* get loaded into buffers while we are holding exclusive lock on the
* rel.
* relation that are in shared buffers. We assume no new changes
* will be made while we are holding exclusive lock on the rel.
*/
FlushRelationBuffers(rel, 0);
FlushRelationBuffers(rel);
/*
* We need to log the copied data in WAL iff WAL archiving is enabled