1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-06 13:46:51 +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

@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.132 2005/02/06 20:19:08 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.133 2005/03/20 22:00:52 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -709,8 +709,7 @@ copy_heap_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex)
void
swap_relation_files(Oid r1, Oid r2)
{
Relation relRelation,
rel;
Relation relRelation;
HeapTuple reltup1,
reltup2;
Form_pg_class relform1,
@@ -735,20 +734,6 @@ swap_relation_files(Oid r1, Oid r2)
elog(ERROR, "cache lookup failed for relation %u", r2);
relform2 = (Form_pg_class) GETSTRUCT(reltup2);
/*
* The buffer manager gets confused if we swap relfilenodes for
* relations that are not both local or non-local to this transaction.
* Flush the buffers on both relations so the buffer manager can
* forget about'em. (XXX this might not be necessary anymore?)
*/
rel = relation_open(r1, NoLock);
FlushRelationBuffers(rel, 0);
relation_close(rel, NoLock);
rel = relation_open(r2, NoLock);
FlushRelationBuffers(rel, 0);
relation_close(rel, NoLock);
/*
* Actually swap the fields in the two tuples
*/