|
7 | 7 | * Copyright (c) 1994, Regents of the University of California
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.75 2000/01/10 16:13:11 momjian Exp $ |
| 10 | + * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.76 2000/01/11 04:00:30 tgl Exp $ |
11 | 11 | *
|
12 | 12 | *-------------------------------------------------------------------------
|
13 | 13 | */
|
|
37 | 37 | #include"utils/portal.h"
|
38 | 38 |
|
39 | 39 | #defineALLOC(t,c)(t *)calloc((unsigned)(c), sizeof(t))
|
40 |
| -#defineFIRST_TYPE_OID 16/* OID of the first type */ |
41 | 40 |
|
42 | 41 | externvoidBaseInit(void);
|
43 | 42 | externvoidStartupXLOG(void);
|
@@ -102,24 +101,22 @@ struct typinfo
|
102 | 101 | };
|
103 | 102 |
|
104 | 103 | staticstructtypinfoProcid[]= {
|
105 |
| -{"bool",16,0,1,F_BOOLIN,F_BOOLOUT}, |
106 |
| -{"bytea",17,0,-1,F_BYTEAIN,F_BYTEAOUT}, |
107 |
| -{"char",18,0,1,F_CHARIN,F_CHAROUT}, |
108 |
| -{"name",19,0,NAMEDATALEN,F_NAMEIN,F_NAMEOUT}, |
109 |
| -{"dummy",20,0,16,0,0}, |
110 |
| -/* { "dt", 20, 0, 4, F_DTIN,F_DTOUT}, */ |
111 |
| -{"int2",21,0,2,F_INT2IN,F_INT2OUT}, |
112 |
| -{"int2vector",22,0,16,F_INT2VECTORIN,F_INT2VECTOROUT}, |
113 |
| -{"int4",23,0,4,F_INT4IN,F_INT4OUT}, |
114 |
| -{"regproc",24,0,4,F_REGPROCIN,F_REGPROCOUT}, |
115 |
| -{"text",25,0,-1,F_TEXTIN,F_TEXTOUT}, |
116 |
| -{"oid",26,0,4,F_INT4IN,F_INT4OUT}, |
117 |
| -{"tid",27,0,6,F_TIDIN,F_TIDOUT}, |
118 |
| -{"xid",28,0,5,F_XIDIN,F_XIDOUT}, |
119 |
| -{"iid",29,0,1,F_CIDIN,F_CIDOUT}, |
120 |
| -{"oidvector",30,0,32,F_OIDVECTORIN,F_OIDVECTOROUT}, |
| 104 | +{"bool",BOOLOID,0,1,F_BOOLIN,F_BOOLOUT}, |
| 105 | +{"bytea",BYTEAOID,0,-1,F_BYTEAIN,F_BYTEAOUT}, |
| 106 | +{"char",CHAROID,0,1,F_CHARIN,F_CHAROUT}, |
| 107 | +{"name",NAMEOID,0,NAMEDATALEN,F_NAMEIN,F_NAMEOUT}, |
| 108 | +{"int2",INT2OID,0,2,F_INT2IN,F_INT2OUT}, |
| 109 | +{"int2vector",INT2VECTOROID,0,INDEX_MAX_KEYS*2,F_INT2VECTORIN,F_INT2VECTOROUT}, |
| 110 | +{"int4",INT4OID,0,4,F_INT4IN,F_INT4OUT}, |
| 111 | +{"regproc",REGPROCOID,0,4,F_REGPROCIN,F_REGPROCOUT}, |
| 112 | +{"text",TEXTOID,0,-1,F_TEXTIN,F_TEXTOUT}, |
| 113 | +{"oid",OIDOID,0,4,F_INT4IN,F_INT4OUT}, |
| 114 | +{"tid",TIDOID,0,6,F_TIDIN,F_TIDOUT}, |
| 115 | +{"xid",XIDOID,0,4,F_XIDIN,F_XIDOUT}, |
| 116 | +{"cid",CIDOID,0,4,F_CIDIN,F_CIDOUT}, |
| 117 | +{"oidvector",30,0,INDEX_MAX_KEYS*4,F_OIDVECTORIN,F_OIDVECTOROUT}, |
121 | 118 | {"smgr",210,0,2,F_SMGRIN,F_SMGROUT},
|
122 |
| -{"_int4",1007,23,-1,F_ARRAY_IN,F_ARRAY_OUT}, |
| 119 | +{"_int4",1007,INT4OID,-1,F_ARRAY_IN,F_ARRAY_OUT}, |
123 | 120 | {"_aclitem",1034,1033,-1,F_ARRAY_IN,F_ARRAY_OUT}
|
124 | 121 | };
|
125 | 122 |
|
@@ -694,7 +691,13 @@ InsertOneValue(Oid objectid, char *value, int i)
|
694 | 691 | }
|
695 | 692 | else
|
696 | 693 | {
|
697 |
| -typeindex=attrtypes[i]->atttypid-FIRST_TYPE_OID; |
| 694 | +for (typeindex=0;typeindex<n_types;typeindex++) |
| 695 | +{ |
| 696 | +if (Procid[typeindex].oid==attrtypes[i]->atttypid) |
| 697 | +break; |
| 698 | +} |
| 699 | +if (typeindex >=n_types) |
| 700 | +elog(ERROR,"can't find type OID %u",attrtypes[i]->atttypid); |
698 | 701 | if (DebugMode)
|
699 | 702 | printf("Typ == NULL, typeindex = %u idx = %d\n",typeindex,i);
|
700 | 703 | values[i]=fmgr(Procid[typeindex].inproc,value,
|
|