diff options
| author | Bruce Momjian <bruce@momjian.us> | 1998-08-19 02:04:17 +0000 |
|---|---|---|
| committer | Bruce Momjian <bruce@momjian.us> | 1998-08-19 02:04:17 +0000 |
| commit | 7971539020a344dce3a8b3b9b93ff4f10e2f823a (patch) | |
| tree | 8dca0af0d3ac8d431bff8c0dec793fe9733a1ee9 /src/backend/bootstrap | |
| parent | 31de2c9461dff3284ad61084c73eba093fa3f68e (diff) | |
| download | postgresql-7971539020a344dce3a8b3b9b93ff4f10e2f823a.tar.gz | |
heap_fetch requires buffer pointer, must be released; heap_getnext
no longer returns buffer pointer, can be gotten from scan;
descriptor; bootstrap can create multi-key indexes;
pg_procname index now is multi-key index; oidint2, oidint4, oidname
are gone (must be removed from regression tests); use System Cache
rather than sequential scan in many places; heap_modifytuple no
longer takes buffer parameter; remove unused buffer parameter in
a few other functions; oid8 is not index-able; remove some use of
single-character variable names; cleanup Buffer variables usage
and scan descriptor looping; cleaned up allocation and freeing of
tuples; 18k lines of diff;
Diffstat (limited to 'src/backend/bootstrap')
| -rw-r--r-- | src/backend/bootstrap/bootparse.y | 43 | ||||
| -rw-r--r-- | src/backend/bootstrap/bootstrap.c | 50 |
2 files changed, 37 insertions, 56 deletions
diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y index 3e16196d33..393434ebc4 100644 --- a/src/backend/bootstrap/bootparse.y +++ b/src/backend/bootstrap/bootparse.y @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.19 1998/08/06 05:12:16 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.20 1998/08/19 02:01:23 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -78,8 +78,8 @@ static Oid objectid; int ival; } -%type <list> boot_arg_list -%type <ielem> boot_index_params boot_index_on +%type <list> boot_index_params +%type <ielem> boot_index_param %type <ival> boot_const boot_ident %type <ival> optbootstrap optoideq boot_tuple boot_tuplelist @@ -225,15 +225,12 @@ Boot_InsertStmt: Boot_DeclareIndexStmt: XDECLARE INDEX boot_ident ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN { - List *params; - DO_START; - params = lappend(NIL, (List*)$9); DefineIndex(LexIDStr($5), LexIDStr($3), LexIDStr($7), - params, NIL, 0, 0, NIL); + $9, NIL, 0, 0, NIL); DO_END; } ; @@ -241,39 +238,21 @@ Boot_DeclareIndexStmt: Boot_BuildIndsStmt: XBUILD INDICES { build_indices(); } + boot_index_params: - boot_index_on boot_ident - { - IndexElem *n = (IndexElem*)$1; - n->class = LexIDStr($2); - $$ = n; - } + boot_index_params COMMA boot_index_param { $$ = lappend($1, $3); } + | boot_index_param { $$ = lcons($1, NIL); } + ; -boot_index_on: - boot_ident - { - IndexElem *n = makeNode(IndexElem); - n->name = LexIDStr($1); - $$ = n; - } - | boot_ident LPAREN boot_arg_list RPAREN +boot_index_param: + boot_ident boot_ident { IndexElem *n = makeNode(IndexElem); n->name = LexIDStr($1); - n->args = (List*)$3; + n->class = LexIDStr($2); $$ = n; } -boot_arg_list: - boot_ident - { - $$ = lappend(NIL, makeString(LexIDStr($1))); - } - | boot_arg_list COMMA boot_ident - { - $$ = lappend((List*)$1, makeString(LexIDStr($3))); - } - optbootstrap: XBOOTSTRAP { $$ = 1; } | { $$ = 0; } diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c index aab6a82f78..bab7d219db 100644 --- a/src/backend/bootstrap/bootstrap.c +++ b/src/backend/bootstrap/bootstrap.c @@ -7,7 +7,7 @@ * Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.47 1998/07/27 19:37:43 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.48 1998/08/19 02:01:26 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -448,8 +448,8 @@ boot_openrel(char *relname) { int i; struct typmap **app; - Relation rdesc; - HeapScanDesc sdesc; + Relation rel; + HeapScanDesc scan; HeapTuple tup; if (strlen(relname) >= NAMEDATALEN - 1) @@ -458,25 +458,27 @@ boot_openrel(char *relname) if (Typ == (struct typmap **) NULL) { StartPortalAllocMode(DefaultAllocMode, 0); - rdesc = heap_openr(TypeRelationName); - sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 0, (ScanKey) NULL); - for (i = 0; PointerIsValid(tup = heap_getnext(sdesc, 0, (Buffer *) NULL)); ++i); - heap_endscan(sdesc); + rel = heap_openr(TypeRelationName); + scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL); + i = 0; + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) + ++i; + heap_endscan(scan); app = Typ = ALLOC(struct typmap *, i + 1); while (i-- > 0) *app++ = ALLOC(struct typmap, 1); *app = (struct typmap *) NULL; - sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 0, (ScanKey) NULL); + scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL); app = Typ; - while (PointerIsValid(tup = heap_getnext(sdesc, 0, (Buffer *) NULL))) + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) { (*app)->am_oid = tup->t_oid; memmove((char *) &(*app++)->am_typ, (char *) GETSTRUCT(tup), sizeof((*app)->am_typ)); } - heap_endscan(sdesc); - heap_close(rdesc); + heap_endscan(scan); + heap_close(rel); EndPortalAllocMode(); } @@ -505,7 +507,7 @@ boot_openrel(char *relname) * defined yet. */ if (namestrcmp(&attrtypes[i]->attname, "attisset") == 0) - attrtypes[i]->attisset = get_attisset(reldesc->rd_id, + attrtypes[i]->attisset = get_attisset(RelationGetRelid(reldesc), attrtypes[i]->attname.data); else attrtypes[i]->attisset = false; @@ -786,8 +788,8 @@ static int gettype(char *type) { int i; - Relation rdesc; - HeapScanDesc sdesc; + Relation rel; + HeapScanDesc scan; HeapTuple tup; struct typmap **app; @@ -811,27 +813,27 @@ gettype(char *type) } if (DebugMode) printf("bootstrap.c: External Type: %s\n", type); - rdesc = heap_openr(TypeRelationName); - sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 0, (ScanKey) NULL); + rel = heap_openr(TypeRelationName); + scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL); i = 0; - while (PointerIsValid(tup = heap_getnext(sdesc, 0, (Buffer *) NULL))) + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) ++i; - heap_endscan(sdesc); + heap_endscan(scan); app = Typ = ALLOC(struct typmap *, i + 1); while (i-- > 0) *app++ = ALLOC(struct typmap, 1); *app = (struct typmap *) NULL; - sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 0, (ScanKey) NULL); + scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL); app = Typ; - while (PointerIsValid(tup = heap_getnext(sdesc, 0, (Buffer *) NULL))) + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) { (*app)->am_oid = tup->t_oid; memmove((char *) &(*app++)->am_typ, (char *) GETSTRUCT(tup), sizeof((*app)->am_typ)); } - heap_endscan(sdesc); - heap_close(rdesc); + heap_endscan(scan); + heap_close(rel); return (gettype(type)); } elog(ERROR, "Error: unknown type '%s'.\n", type); @@ -1167,7 +1169,7 @@ build_indices() */ heap = heap_openr(ILHead->il_heap); - if (!BootstrapAlreadySeen(heap->rd_id)) - UpdateStats(heap->rd_id, 0, true); + if (!BootstrapAlreadySeen(RelationGetRelid(heap))) + UpdateStats(RelationGetRelid(heap), 0, true); } } |
