From 922e53e6ea6bf1baa2917c05e18539763e987821 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 25 Nov 1999 00:15:57 +0000 Subject: [PATCH] Enable pg_statistic cache use. --- src/backend/catalog/indexing.c | 4 +++- src/backend/commands/rename.c | 14 ++++++++------ src/backend/commands/vacuum.c | 10 +++++++++- src/backend/utils/adt/selfuncs.c | 18 +++++------------- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c index 0815fce3c4..20e2f2d5e6 100644 --- a/src/backend/catalog/indexing.c +++ b/src/backend/catalog/indexing.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.52 1999/11/24 16:52:31 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.53 1999/11/25 00:15:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -63,6 +63,8 @@ char *Name_pg_rewrite_indices[Num_pg_rewrite_indices] = {RewriteOidIndex, RewriteRulenameIndex}; char *Name_pg_shadow_indices[Num_pg_shadow_indices] = {ShadowNameIndex, ShadowSysidIndex}; +char *Name_pg_statistic_indices[Num_pg_statistic_indices] = + {StatisticRelidAttnumOpIndex}; char *Name_pg_trigger_indices[Num_pg_trigger_indices] = {TriggerRelidIndex, TriggerConstrNameIndex, TriggerConstrRelidIndex}; char *Name_pg_type_indices[Num_pg_type_indices] = diff --git a/src/backend/commands/rename.c b/src/backend/commands/rename.c index 288c9404c1..cf2c1a1bd0 100644 --- a/src/backend/commands/rename.c +++ b/src/backend/commands/rename.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.36 1999/11/24 00:44:30 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.37 1999/11/25 00:15:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -56,7 +56,6 @@ renameatt(char *relname, HeapTuple reltup, oldatttup, newatttup; - Relation irelations[Num_pg_attr_indices]; Oid relid; /* @@ -159,10 +158,13 @@ renameatt(char *relname, heap_update(attrelation, &oldatttup->t_self, oldatttup, NULL); /* keep system catalog indices current */ - CatalogOpenIndices(Num_pg_attr_indices, Name_pg_attr_indices, irelations); - CatalogIndexInsert(irelations, Num_pg_attr_indices, attrelation, oldatttup); - CatalogCloseIndices(Num_pg_attr_indices, irelations); - + { + Relation irelations[Num_pg_attr_indices]; + CatalogOpenIndices(Num_pg_attr_indices, Name_pg_attr_indices, irelations); + CatalogIndexInsert(irelations, Num_pg_attr_indices, attrelation, oldatttup); + CatalogCloseIndices(Num_pg_attr_indices, irelations); + } + pfree(oldatttup); heap_close(attrelation, RowExclusiveLock); } diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index f80a07f388..aa57eef655 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.125 1999/11/22 17:56:02 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.126 1999/11/25 00:15:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -24,6 +24,7 @@ #include "catalog/catalog.h" #include "catalog/catname.h" #include "catalog/index.h" +#include "catalog/indexing.h" #include "catalog/pg_operator.h" #include "catalog/pg_statistic.h" #include "catalog/pg_type.h" @@ -2446,6 +2447,13 @@ vc_updstats(Oid relid, int num_pages, int num_tuples, bool hasindex, VRelStats * */ heap_insert(sd, stup); + { + Relation irelations[Num_pg_statistic_indices]; + CatalogOpenIndices(Num_pg_statistic_indices, Name_pg_statistic_indices, irelations); + CatalogIndexInsert(irelations, Num_pg_statistic_indices, sd, stup); + CatalogCloseIndices(Num_pg_statistic_indices, irelations); + } + /* release allocated space */ pfree(DatumGetPointer(values[Anum_pg_statistic_stacommonval-1])); pfree(DatumGetPointer(values[Anum_pg_statistic_staloval-1])); diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index 3e2d123df1..ee00e1dd79 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.42 1999/11/22 17:56:30 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.43 1999/11/25 00:15:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -588,11 +588,6 @@ getattstatistics(Oid relid, AttrNumber attnum, Oid typid, int32 typmod, Datum *hival) { Relation rel; - HeapScanDesc scan; - static ScanKeyData key[2] = { - {0, Anum_pg_statistic_starelid, F_OIDEQ, {0, 0, F_OIDEQ}}, - {0, Anum_pg_statistic_staattnum, F_INT2EQ, {0, 0, F_INT2EQ}} - }; bool isnull; HeapTuple tuple; HeapTuple typeTuple; @@ -600,15 +595,13 @@ getattstatistics(Oid relid, AttrNumber attnum, Oid typid, int32 typmod, rel = heap_openr(StatisticRelationName, AccessShareLock); - key[0].sk_argument = ObjectIdGetDatum(relid); - key[1].sk_argument = Int16GetDatum((int16) attnum); - - scan = heap_beginscan(rel, 0, SnapshotNow, 2, key); - tuple = heap_getnext(scan, 0); + tuple = SearchSysCacheTuple(STATRELID, + ObjectIdGetDatum(relid), + Int16GetDatum((int16) attnum), + 0, 0); /* staop is currently 0 */ if (!HeapTupleIsValid(tuple)) { /* no such stats entry */ - heap_endscan(scan); heap_close(rel, AccessShareLock); return false; } @@ -693,7 +686,6 @@ getattstatistics(Oid relid, AttrNumber attnum, Oid typid, int32 typmod, } } - heap_endscan(scan); heap_close(rel, AccessShareLock); return true; } -- 2.40.0