mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Remove some unused and seldom used fields from RelationAmInfo.
This saves some memory from each index relcache entry. At least on a 64-bit machine, it saves just enough to shrink a typical relcache entry's memory usage from 2k to 1k. That's nice if you have a lot of backends and a lot of indexes.
This commit is contained in:
@ -114,6 +114,13 @@ do { \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define GET_UNCACHED_REL_PROCEDURE(pname) \
|
||||
do { \
|
||||
if (!RegProcedureIsValid(indexRelation->rd_am->pname)) \
|
||||
elog(ERROR, "invalid %s regproc", CppAsString(pname)); \
|
||||
fmgr_info(indexRelation->rd_am->pname, &procedure); \
|
||||
} while(0)
|
||||
|
||||
#define GET_SCAN_PROCEDURE(pname) \
|
||||
do { \
|
||||
procedure = &scan->indexRelation->rd_aminfo->pname; \
|
||||
@ -671,14 +678,14 @@ index_bulk_delete(IndexVacuumInfo *info,
|
||||
void *callback_state)
|
||||
{
|
||||
Relation indexRelation = info->index;
|
||||
FmgrInfo *procedure;
|
||||
FmgrInfo procedure;
|
||||
IndexBulkDeleteResult *result;
|
||||
|
||||
RELATION_CHECKS;
|
||||
GET_REL_PROCEDURE(ambulkdelete);
|
||||
GET_UNCACHED_REL_PROCEDURE(ambulkdelete);
|
||||
|
||||
result = (IndexBulkDeleteResult *)
|
||||
DatumGetPointer(FunctionCall4(procedure,
|
||||
DatumGetPointer(FunctionCall4(&procedure,
|
||||
PointerGetDatum(info),
|
||||
PointerGetDatum(stats),
|
||||
PointerGetDatum((Pointer) callback),
|
||||
@ -698,14 +705,14 @@ index_vacuum_cleanup(IndexVacuumInfo *info,
|
||||
IndexBulkDeleteResult *stats)
|
||||
{
|
||||
Relation indexRelation = info->index;
|
||||
FmgrInfo *procedure;
|
||||
FmgrInfo procedure;
|
||||
IndexBulkDeleteResult *result;
|
||||
|
||||
RELATION_CHECKS;
|
||||
GET_REL_PROCEDURE(amvacuumcleanup);
|
||||
GET_UNCACHED_REL_PROCEDURE(amvacuumcleanup);
|
||||
|
||||
result = (IndexBulkDeleteResult *)
|
||||
DatumGetPointer(FunctionCall2(procedure,
|
||||
DatumGetPointer(FunctionCall2(&procedure,
|
||||
PointerGetDatum(info),
|
||||
PointerGetDatum(stats)));
|
||||
|
||||
|
Reference in New Issue
Block a user