Enable pg_statistic cache use.
This commit is contained in:
parent
8f401e8042
commit
922e53e6ea
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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};
|
{RewriteOidIndex, RewriteRulenameIndex};
|
||||||
char *Name_pg_shadow_indices[Num_pg_shadow_indices] =
|
char *Name_pg_shadow_indices[Num_pg_shadow_indices] =
|
||||||
{ShadowNameIndex, ShadowSysidIndex};
|
{ShadowNameIndex, ShadowSysidIndex};
|
||||||
|
char *Name_pg_statistic_indices[Num_pg_statistic_indices] =
|
||||||
|
{StatisticRelidAttnumOpIndex};
|
||||||
char *Name_pg_trigger_indices[Num_pg_trigger_indices] =
|
char *Name_pg_trigger_indices[Num_pg_trigger_indices] =
|
||||||
{TriggerRelidIndex, TriggerConstrNameIndex, TriggerConstrRelidIndex};
|
{TriggerRelidIndex, TriggerConstrNameIndex, TriggerConstrRelidIndex};
|
||||||
char *Name_pg_type_indices[Num_pg_type_indices] =
|
char *Name_pg_type_indices[Num_pg_type_indices] =
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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,
|
HeapTuple reltup,
|
||||||
oldatttup,
|
oldatttup,
|
||||||
newatttup;
|
newatttup;
|
||||||
Relation irelations[Num_pg_attr_indices];
|
|
||||||
Oid relid;
|
Oid relid;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -159,10 +158,13 @@ renameatt(char *relname,
|
|||||||
heap_update(attrelation, &oldatttup->t_self, oldatttup, NULL);
|
heap_update(attrelation, &oldatttup->t_self, oldatttup, NULL);
|
||||||
|
|
||||||
/* keep system catalog indices current */
|
/* keep system catalog indices current */
|
||||||
CatalogOpenIndices(Num_pg_attr_indices, Name_pg_attr_indices, irelations);
|
{
|
||||||
CatalogIndexInsert(irelations, Num_pg_attr_indices, attrelation, oldatttup);
|
Relation irelations[Num_pg_attr_indices];
|
||||||
CatalogCloseIndices(Num_pg_attr_indices, irelations);
|
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);
|
pfree(oldatttup);
|
||||||
heap_close(attrelation, RowExclusiveLock);
|
heap_close(attrelation, RowExclusiveLock);
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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/catalog.h"
|
||||||
#include "catalog/catname.h"
|
#include "catalog/catname.h"
|
||||||
#include "catalog/index.h"
|
#include "catalog/index.h"
|
||||||
|
#include "catalog/indexing.h"
|
||||||
#include "catalog/pg_operator.h"
|
#include "catalog/pg_operator.h"
|
||||||
#include "catalog/pg_statistic.h"
|
#include "catalog/pg_statistic.h"
|
||||||
#include "catalog/pg_type.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);
|
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 */
|
/* release allocated space */
|
||||||
pfree(DatumGetPointer(values[Anum_pg_statistic_stacommonval-1]));
|
pfree(DatumGetPointer(values[Anum_pg_statistic_stacommonval-1]));
|
||||||
pfree(DatumGetPointer(values[Anum_pg_statistic_staloval-1]));
|
pfree(DatumGetPointer(values[Anum_pg_statistic_staloval-1]));
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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)
|
Datum *hival)
|
||||||
{
|
{
|
||||||
Relation rel;
|
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;
|
bool isnull;
|
||||||
HeapTuple tuple;
|
HeapTuple tuple;
|
||||||
HeapTuple typeTuple;
|
HeapTuple typeTuple;
|
||||||
@ -600,15 +595,13 @@ getattstatistics(Oid relid, AttrNumber attnum, Oid typid, int32 typmod,
|
|||||||
|
|
||||||
rel = heap_openr(StatisticRelationName, AccessShareLock);
|
rel = heap_openr(StatisticRelationName, AccessShareLock);
|
||||||
|
|
||||||
key[0].sk_argument = ObjectIdGetDatum(relid);
|
tuple = SearchSysCacheTuple(STATRELID,
|
||||||
key[1].sk_argument = Int16GetDatum((int16) attnum);
|
ObjectIdGetDatum(relid),
|
||||||
|
Int16GetDatum((int16) attnum),
|
||||||
scan = heap_beginscan(rel, 0, SnapshotNow, 2, key);
|
0, 0); /* staop is currently 0 */
|
||||||
tuple = heap_getnext(scan, 0);
|
|
||||||
if (!HeapTupleIsValid(tuple))
|
if (!HeapTupleIsValid(tuple))
|
||||||
{
|
{
|
||||||
/* no such stats entry */
|
/* no such stats entry */
|
||||||
heap_endscan(scan);
|
|
||||||
heap_close(rel, AccessShareLock);
|
heap_close(rel, AccessShareLock);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -693,7 +686,6 @@ getattstatistics(Oid relid, AttrNumber attnum, Oid typid, int32 typmod,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
heap_endscan(scan);
|
|
||||||
heap_close(rel, AccessShareLock);
|
heap_close(rel, AccessShareLock);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user