diff options
Diffstat (limited to 'src/backend/bootstrap/bootstrap.c')
-rw-r--r-- | src/backend/bootstrap/bootstrap.c | 67 |
1 files changed, 14 insertions, 53 deletions
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c index 1c52d098a1a..c3cf9371724 100644 --- a/src/backend/bootstrap/bootstrap.c +++ b/src/backend/bootstrap/bootstrap.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.90 2000/07/03 23:09:23 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.91 2000/07/14 22:17:38 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -160,20 +160,12 @@ typedef struct _IndexList { char *il_heap; char *il_ind; - int il_natts; - AttrNumber *il_attnos; - FuncIndexInfo *il_finfo; - PredInfo *il_predInfo; - bool il_unique; + IndexInfo *il_info; struct _IndexList *il_next; } IndexList; static IndexList *ILHead = (IndexList *) NULL; -typedef void (*sig_func) (); - - - /* ---------------------------------------------------------------- * misc functions @@ -334,9 +326,9 @@ BootstrapMain(int argc, char *argv[]) if (!IsUnderPostmaster) { - pqsignal(SIGINT, (sig_func) die); - pqsignal(SIGHUP, (sig_func) die); - pqsignal(SIGTERM, (sig_func) die); + pqsignal(SIGINT, (pqsigfunc) die); + pqsignal(SIGHUP, (pqsigfunc) die); + pqsignal(SIGTERM, (pqsigfunc) die); } /* @@ -1080,14 +1072,9 @@ AddStr(char *str, int strlength, int mderef) void index_register(char *heap, char *ind, - int natts, - AttrNumber *attnos, - FuncIndexInfo *finfo, - PredInfo *predInfo, - bool unique) + IndexInfo *indexInfo) { IndexList *newind; - int len; MemoryContext oldcxt; /* @@ -1108,37 +1095,13 @@ index_register(char *heap, newind = (IndexList *) palloc(sizeof(IndexList)); newind->il_heap = pstrdup(heap); newind->il_ind = pstrdup(ind); - newind->il_natts = natts; - - if (PointerIsValid(finfo)) - len = FIgetnArgs(finfo) * sizeof(AttrNumber); - else - len = natts * sizeof(AttrNumber); - - newind->il_attnos = (AttrNumber *) palloc(len); - memcpy(newind->il_attnos, attnos, len); - - if (PointerIsValid(finfo)) - { - newind->il_finfo = (FuncIndexInfo *) palloc(sizeof(FuncIndexInfo)); - memcpy(newind->il_finfo, finfo, sizeof(FuncIndexInfo)); - } - else - newind->il_finfo = (FuncIndexInfo *) NULL; + newind->il_info = (IndexInfo *) palloc(sizeof(IndexInfo)); - if (predInfo != NULL) - { - newind->il_predInfo = (PredInfo *) palloc(sizeof(PredInfo)); - newind->il_predInfo->pred = predInfo->pred; - newind->il_predInfo->oldPred = predInfo->oldPred; - } - else - newind->il_predInfo = NULL; - - newind->il_unique = unique; + memcpy(newind->il_info, indexInfo, sizeof(IndexInfo)); + /* predicate will likely be null anyway, but may as well copy it */ + newind->il_info->ii_Predicate = copyObject(indexInfo->ii_Predicate); newind->il_next = ILHead; - ILHead = newind; MemoryContextSwitchTo(oldcxt); @@ -1147,18 +1110,16 @@ index_register(char *heap, void build_indices() { - Relation heap; - Relation ind; - for (; ILHead != (IndexList *) NULL; ILHead = ILHead->il_next) { + Relation heap; + Relation ind; + heap = heap_openr(ILHead->il_heap, NoLock); Assert(heap); ind = index_openr(ILHead->il_ind); Assert(ind); - index_build(heap, ind, ILHead->il_natts, ILHead->il_attnos, - ILHead->il_finfo, ILHead->il_predInfo, - ILHead->il_unique); + index_build(heap, ind, ILHead->il_info, NULL); /* * In normal processing mode, index_build would close the heap and |