Skip to content
Snippets Groups Projects
Commit 9b73210f authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Fix bootstrap so it properly defines alignment of attributes.

parent f821eece
No related branches found
No related tags found
No related merge requests found
......@@ -7,7 +7,7 @@
* Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.48 1998/08/19 02:01:26 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.49 1998/08/24 19:04:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -90,7 +90,7 @@ static AttributeTupleForm AllocateAttribute(void);
static bool BootstrapAlreadySeen(Oid id);
static int CompHash(char *str, int len);
static hashnode *FindStr(char *str, int length, hashnode *mderef);
static int gettype(char *type);
static Oid gettype(char *type);
static void cleanup(void);
/* ----------------
......@@ -571,7 +571,7 @@ void
DefineAttr(char *name, char *type, int attnum)
{
int attlen;
int t;
Oid typeoid;
if (reldesc != NULL)
{
......@@ -579,7 +579,7 @@ DefineAttr(char *name, char *type, int attnum)
closerel(relname);
}
t = gettype(type);
typeoid = gettype(type);
if (attrtypes[attnum] == (AttributeTupleForm) NULL)
attrtypes[attnum] = AllocateAttribute();
if (Typ != (struct typmap **) NULL)
......@@ -591,16 +591,18 @@ DefineAttr(char *name, char *type, int attnum)
attrtypes[attnum]->attnum = 1 + attnum; /* fillatt */
attlen = attrtypes[attnum]->attlen = Ap->am_typ.typlen;
attrtypes[attnum]->attbyval = Ap->am_typ.typbyval;
attrtypes[attnum]->attalign = Ap->am_typ.typalign;
}
else
{
attrtypes[attnum]->atttypid = Procid[t].oid;
attrtypes[attnum]->atttypid = Procid[typeoid].oid;
namestrcpy(&attrtypes[attnum]->attname, name);
if (!Quiet)
printf("<%s %s> ", attrtypes[attnum]->attname.data, type);
attrtypes[attnum]->attnum = 1 + attnum; /* fillatt */
attlen = attrtypes[attnum]->attlen = Procid[t].len;
attrtypes[attnum]->attbyval = (attlen == 1) || (attlen == 2) || (attlen == 4);
attlen = attrtypes[attnum]->attlen = Procid[typeoid].len;
attrtypes[attnum]->attbyval = (attlen == 1) || (attlen == 2) ||(attlen == 4);
attrtypes[attnum]->attalign = 'i';
}
attrtypes[attnum]->attcacheoff = -1;
attrtypes[attnum]->atttypmod = -1;
......@@ -784,7 +786,7 @@ cleanup()
* gettype
* ----------------
*/
static int
static Oid
gettype(char *type)
{
int i;
......
......@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.52 1998/08/21 23:22:34 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.53 1998/08/24 19:04:04 momjian Exp $
*
*
* INTERFACE ROUTINES
......@@ -279,6 +279,7 @@ BuildFuncTupleDesc(FuncIndexInfo *funcInfo)
funcTupDesc->attrs[0]->attbyval = ((TypeTupleForm) GETSTRUCT(tuple))->typbyval;
funcTupDesc->attrs[0]->attcacheoff = -1;
funcTupDesc->attrs[0]->atttypmod = -1;
funcTupDesc->attrs[0]->attalign = ((TypeTupleForm) GETSTRUCT(tuple))->typalign;
/*
* make the attributes name the same as the functions
......@@ -378,7 +379,6 @@ ConstructTupleDescriptor(Oid heapoid,
* here we are indexing on a normal attribute (1...n)
* ----------------
*/
heapTupDesc = RelationGetTupleDescriptor(heapRelation);
atind = AttrNumberGetAttrOffset(atnum);
......@@ -400,6 +400,7 @@ ConstructTupleDescriptor(Oid heapoid,
((AttributeTupleForm) to)->atthasdef = false;
((AttributeTupleForm) to)->attcacheoff = -1;
((AttributeTupleForm) to)->atttypmod = -1;
((AttributeTupleForm) to)->attalign = 'i';
/*
* if the keytype is defined, we need to change the tuple form's
......@@ -417,11 +418,11 @@ ConstructTupleDescriptor(Oid heapoid,
IndexKeyType->name);
((AttributeTupleForm) to)->atttypid = tup->t_oid;
((AttributeTupleForm) to)->attbyval =
((TypeTupleForm) ((char *) tup + tup->t_hoff))->typbyval;
((TypeTupleForm) GETSTRUCT(tup))->typbyval;
((AttributeTupleForm) to)->attlen =
((TypeTupleForm) ((char *) tup + tup->t_hoff))->typlen;
((TypeTupleForm) GETSTRUCT(tup))->typlen;
((AttributeTupleForm) to)->attalign =
((TypeTupleForm) GETSTRUCT(tup))->typalign;
((AttributeTupleForm) to)->atttypmod = IndexKeyType->typmod;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment