diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 1996-11-27 07:24:02 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 1996-11-27 07:24:02 +0000 |
commit | a2a33e1344e9c9b7fb72c1ec0457f87692bd599c (patch) | |
tree | 057fad7bcaceba123597d1de3bf4507ef49417d0 /src | |
parent | 3643248ae2d8c2030616f7de15d6eff6136e3a03 (diff) | |
download | postgresql-a2a33e1344e9c9b7fb72c1ec0457f87692bd599c.tar.gz postgresql-a2a33e1344e9c9b7fb72c1ec0457f87692bd599c.zip |
New mdtruncate() func for single segment relations (< 2Gb).
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/storage/smgr/md.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index a1515fd58f9..3bab0bbc687 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.9 1996/11/25 06:33:51 bryanh Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.10 1996/11/27 07:24:02 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -529,6 +529,36 @@ mdnblocks(Relation reln) } /* + * mdtruncate() -- Truncate relation to specified number of blocks. + * + * Returns # of blocks or -1 on error. + */ +int +mdtruncate (Relation reln, int nblocks) +{ + int fd; + MdfdVec *v; + int curnblk; + + curnblk = mdnblocks (reln); + if ( curnblk / RELSEG_SIZE > 0 ) + { + elog (NOTICE, "Can't truncate multi-segments relation %.*s", + NAMEDATALEN, &(reln->rd_rel->relname.data[0])); + return (curnblk); + } + + fd = RelationGetFile(reln); + v = &Md_fdvec[fd]; + + if ( FileTruncate (v->mdfd_vfd, nblocks * BLCKSZ) < 0 ) + return (-1); + + return (nblocks); + +} /* mdtruncate */ + +/* * mdcommit() -- Commit a transaction. * * All changes to magnetic disk relations must be forced to stable |