Skip to content

Commit c2fa275

Browse files
committed
Correct hardwired type information in bootstrap.
1 parent 7bc1fbe commit c2fa275

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/backend/bootstrap/bootstrap.c

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Copyright (c) 1994, Regents of the University of California
88
*
99
* 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 $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -37,7 +37,6 @@
3737
#include "utils/portal.h"
3838

3939
#define ALLOC(t, c) (t *)calloc((unsigned)(c), sizeof(t))
40-
#define FIRST_TYPE_OID 16 /* OID of the first type */
4140

4241
extern void BaseInit(void);
4342
extern void StartupXLOG(void);
@@ -102,24 +101,22 @@ struct typinfo
102101
};
103102

104103
static struct typinfo Procid[] = {
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},
121118
{"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},
123120
{"_aclitem", 1034, 1033, -1, F_ARRAY_IN, F_ARRAY_OUT}
124121
};
125122

@@ -694,7 +691,13 @@ InsertOneValue(Oid objectid, char *value, int i)
694691
}
695692
else
696693
{
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);
698701
if (DebugMode)
699702
printf("Typ == NULL, typeindex = %u idx = %d\n", typeindex, i);
700703
values[i] = fmgr(Procid[typeindex].inproc, value,

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy