1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +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

@ -12,7 +12,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.58 2000/06/15 04:09:36 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.59 2000/06/17 23:41:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -47,13 +47,12 @@ btbuild(PG_FUNCTION_ARGS)
Relation index = (Relation) PG_GETARG_POINTER(1);
int32 natts = PG_GETARG_INT32(2);
AttrNumber *attnum = (AttrNumber *) PG_GETARG_POINTER(3);
FuncIndexInfo *finfo = (FuncIndexInfo *) PG_GETARG_POINTER(4);
PredInfo *predInfo = (PredInfo *) PG_GETARG_POINTER(5);
bool unique = PG_GETARG_BOOL(6);
#ifdef NOT_USED
IndexStrategy istrat = (IndexStrategy) PG_GETARG_POINTER(4);
uint16 pcount = PG_GETARG_UINT16(5);
Datum *params = (Datum *) PG_GETARG_POINTER(6);
IndexStrategy istrat = (IndexStrategy) PG_GETARG_POINTER(7);
#endif
FuncIndexInfo *finfo = (FuncIndexInfo *) PG_GETARG_POINTER(7);
PredInfo *predInfo = (PredInfo *) PG_GETARG_POINTER(8);
HeapScanDesc hscan;
HeapTuple htup;
IndexTuple itup;
@ -76,7 +75,6 @@ btbuild(PG_FUNCTION_ARGS)
Node *pred,
*oldPred;
BTSpool *spool = NULL;
bool isunique;
bool usefast;
/* note that this is a new btree */
@ -98,9 +96,6 @@ btbuild(PG_FUNCTION_ARGS)
ResetUsage();
#endif /* BTREE_BUILD_STATS */
/* see if index is unique */
isunique = IndexIsUniqueNoCache(RelationGetRelid(index));
/* initialize the btree index metadata page (if this is a new index) */
if (oldPred == NULL)
_bt_metapinit(index);
@ -146,7 +141,7 @@ btbuild(PG_FUNCTION_ARGS)
if (usefast)
{
spool = _bt_spoolinit(index, isunique);
spool = _bt_spoolinit(index, unique);
res = (InsertIndexResult) NULL;
}
@ -254,7 +249,7 @@ btbuild(PG_FUNCTION_ARGS)
if (usefast)
_bt_spool(btitem, spool);
else
res = _bt_doinsert(index, btitem, isunique, heap);
res = _bt_doinsert(index, btitem, unique, heap);
pfree(btitem);
pfree(itup);