~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to src/include/storage/freespace.h

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*-------------------------------------------------------------------------
 
2
 *
 
3
 * freespace.h
 
4
 *        POSTGRES free space map for quickly finding free space in relations
 
5
 *
 
6
 *
 
7
 * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
 
8
 * Portions Copyright (c) 1994, Regents of the University of California
 
9
 *
 
10
 * $PostgreSQL: pgsql/src/include/storage/freespace.h,v 1.17 2004-12-31 22:03:42 pgsql Exp $
 
11
 *
 
12
 *-------------------------------------------------------------------------
 
13
 */
 
14
#ifndef FREESPACE_H_
 
15
#define FREESPACE_H_
 
16
 
 
17
#include "storage/block.h"
 
18
#include "storage/relfilenode.h"
 
19
 
 
20
 
 
21
/*
 
22
 * exported types
 
23
 */
 
24
typedef struct PageFreeSpaceInfo
 
25
{
 
26
        BlockNumber blkno;                      /* which page in relation */
 
27
        Size            avail;                  /* space available on this page */
 
28
} PageFreeSpaceInfo;
 
29
 
 
30
 
 
31
/* GUC variables */
 
32
extern int      MaxFSMRelations;
 
33
extern int      MaxFSMPages;
 
34
 
 
35
 
 
36
/*
 
37
 * function prototypes
 
38
 */
 
39
extern void InitFreeSpaceMap(void);
 
40
extern int      FreeSpaceShmemSize(void);
 
41
 
 
42
extern BlockNumber GetPageWithFreeSpace(RelFileNode *rel, Size spaceNeeded);
 
43
extern BlockNumber RecordAndGetPageWithFreeSpace(RelFileNode *rel,
 
44
                                                          BlockNumber oldPage,
 
45
                                                          Size oldSpaceAvail,
 
46
                                                          Size spaceNeeded);
 
47
extern Size GetAvgFSMRequestSize(RelFileNode *rel);
 
48
extern void RecordRelationFreeSpace(RelFileNode *rel,
 
49
                                                int nPages,
 
50
                                                PageFreeSpaceInfo *pageSpaces);
 
51
 
 
52
extern BlockNumber GetFreeIndexPage(RelFileNode *rel);
 
53
extern void RecordIndexFreeSpace(RelFileNode *rel,
 
54
                                         int nPages,
 
55
                                         BlockNumber *pages);
 
56
 
 
57
extern void FreeSpaceMapTruncateRel(RelFileNode *rel, BlockNumber nblocks);
 
58
extern void FreeSpaceMapForgetRel(RelFileNode *rel);
 
59
extern void FreeSpaceMapForgetDatabase(Oid dbid);
 
60
 
 
61
extern void PrintFreeSpaceMapStatistics(int elevel);
 
62
 
 
63
extern void DumpFreeSpaceMap(int code, Datum arg);
 
64
extern void LoadFreeSpaceMap(void);
 
65
 
 
66
#ifdef FREESPACE_DEBUG
 
67
extern void DumpFreeSpace(void);
 
68
#endif
 
69
 
 
70
#endif   /* FREESPACE_H */