1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-23 14:01:44 +03:00

Get rid of IndexIsUniqueNoCache() kluge by the simple expedient of

passing the index-is-unique flag to index build routines (duh! ...
why wasn't it done this way to begin with?).  Aside from eliminating
an eyesore, this should save a few milliseconds in btree index creation
because a full scan of pg_index is not needed any more.
This commit is contained in:
Tom Lane
2000-06-17 23:41:51 +00:00
parent d03a933ec5
commit edf0b5f0db
13 changed files with 89 additions and 160 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.30 2000/06/17 21:48:42 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.31 2000/06/17 23:41:36 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -90,11 +90,9 @@ DefineIndex(char *heapRelationName,
int numberOfAttributes;
AttrNumber *attributeNumberA;
HeapTuple tuple;
uint16 parameterCount = 0;
Datum *parameterA = NULL;
FuncIndexInfo fInfo;
List *cnfPred = NULL;
bool lossy = FALSE;
bool lossy = false;
List *pl;
/*
@ -198,7 +196,7 @@ DefineIndex(char *heapRelationName,
index_create(heapRelationName, indexRelationName,
&fInfo, NULL,
accessMethodId, numberOfAttributes, attributeNumberA,
classObjectId, parameterCount, parameterA,
classObjectId,
(Node *) cnfPred,
lossy, unique, primary);
}
@ -216,7 +214,7 @@ DefineIndex(char *heapRelationName,
index_create(heapRelationName, indexRelationName,
NULL, attributeList,
accessMethodId, numberOfAttributes, attributeNumberA,
classObjectId, parameterCount, parameterA,
classObjectId,
(Node *) cnfPred,
lossy, unique, primary);
}
@ -252,6 +250,7 @@ ExtendIndex(char *indexRelationName, Expr *predicate, List *rangetable)
HeapTuple tuple;
FuncIndexInfo fInfo;
FuncIndexInfo *funcInfo = NULL;
bool unique;
Form_pg_index index;
Node *oldPred = NULL;
List *cnfPred = NULL;
@ -293,6 +292,7 @@ ExtendIndex(char *indexRelationName, Expr *predicate, List *rangetable)
Assert(index->indexrelid == indexId);
relationId = index->indrelid;
indproc = index->indproc;
unique = index->indisunique;
for (i = 0; i < INDEX_MAX_KEYS; i++)
{
@ -366,7 +366,7 @@ ExtendIndex(char *indexRelationName, Expr *predicate, List *rangetable)
InitIndexStrategy(numberOfAttributes, indexRelation, accessMethodId);
index_build(heapRelation, indexRelation, numberOfAttributes,
attributeNumberA, 0, NULL, funcInfo, predInfo);
attributeNumberA, funcInfo, predInfo, unique);
/* heap and index rels are closed as a side-effect of index_build */
}