Fix atttypmod alignment again, and re-enable ecpg.

This commit is contained in:
Bruce Momjian 1998-08-26 16:43:54 +00:00
parent e2b0911564
commit d394d06d7a
6 changed files with 43 additions and 26 deletions

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/defind.c,v 1.23 1998/08/26 05:22:36 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/defind.c,v 1.24 1998/08/26 16:43:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -468,7 +468,7 @@ NormIndexAttrs(List *attList, /* list of IndexElem's */
Oid relId)
{
List *rest;
HeapTuple tuple;
HeapTuple atttuple, tuple;
/*
* process attributeList
@ -484,20 +484,34 @@ NormIndexAttrs(List *attList, /* list of IndexElem's */
if (attribute->name == NULL)
elog(ERROR, "missing attribute for define index");
tuple = SearchSysCacheTuple(ATTNAME,
atttuple = SearchSysCacheTupleCopy(ATTNAME,
ObjectIdGetDatum(relId),
PointerGetDatum(attribute->name),
0, 0);
if (!HeapTupleIsValid(tuple))
if (!HeapTupleIsValid(atttuple))
{
elog(ERROR,
"DefineIndex: attribute \"%s\" not found",
attribute->name);
}
attform = (AttributeTupleForm) GETSTRUCT(tuple);
attform = (AttributeTupleForm) GETSTRUCT(atttuple);
*attNumP++ = attform->attnum;
/* we want the type so we can set the proper alignment, etc. */
if (attribute->typename == NULL)
{
tuple = SearchSysCacheTuple(TYPOID,
ObjectIdGetDatum(attform->atttypid),
0, 0, 0);
if (!HeapTupleIsValid(tuple))
elog(ERROR, "create index: type for attribute '%s' undefined",
attribute->name);
/* we just set the type name because that is all we need */
attribute->typename = makeNode(TypeName);
attribute->typename->name = nameout(&((TypeTupleForm) GETSTRUCT(tuple))->typname);
}
if (attribute->class == NULL)
{
/* no operator class specified, so find the default */
@ -520,21 +534,7 @@ NormIndexAttrs(List *attList, /* list of IndexElem's */
attribute->class);
}
*classOidP++ = tuple->t_oid;
/* we want the type so we can set the proper alignment, etc. */
if (attribute->typename == NULL)
{
Oid typoid = ((Form_pg_opclass) GETSTRUCT(tuple))->opcdeftype;
tuple = SearchSysCacheTuple(TYPOID,
ObjectIdGetDatum(typoid),
0, 0, 0);
if (!HeapTupleIsValid(tuple))
elog(ERROR, "create index: type for class '%s' undefined",
attribute->class);
/* we just set the name because that is all we need */
attribute->typename = makeNode(TypeName);
attribute->typename->name = nameout(&((TypeTupleForm) GETSTRUCT(tuple))->typname);
}
pfree(atttuple);
}
}

View File

@ -221,7 +221,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.30 1998/08/26 05:22:43 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.31 1998/08/26 16:43:43 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT

View File

@ -7,7 +7,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_attribute.h,v 1.37 1998/08/26 05:51:24 momjian Exp $
* $Id: pg_attribute.h,v 1.38 1998/08/26 16:43:48 momjian Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@ -339,7 +339,7 @@ DATA(insert OID = 0 ( 1249 attlen 21 0 2 5 0 -1 -1 t f s f f));
DATA(insert OID = 0 ( 1249 attnum 21 0 2 6 0 -1 -1 t f s f f));
DATA(insert OID = 0 ( 1249 attnelems 23 0 4 7 0 -1 -1 t f i f f));
DATA(insert OID = 0 ( 1249 attcacheoff 23 0 4 8 0 -1 -1 t f i f f));
DATA(insert OID = 0 ( 1249 atttypmod 21 0 4 9 0 -1 -1 t f s f f));
DATA(insert OID = 0 ( 1249 atttypmod 23 0 4 9 0 -1 -1 t f i f f));
DATA(insert OID = 0 ( 1249 attbyval 16 0 1 10 0 -1 -1 t f c f f));
DATA(insert OID = 0 ( 1249 attisset 16 0 1 11 0 -1 -1 t f c f f));
DATA(insert OID = 0 ( 1249 attalign 18 0 1 12 0 -1 -1 t f c f f));

View File

@ -0,0 +1,17 @@
-- This makes sure the pg_attribute columns match the type's columns
-- bjm 1998/08/26
-- check lengths
SELECT pg_attribute.oid, relname, attname
FROM pg_class, pg_attribute, pg_type
WHERE pg_class.oid = attrelid AND
atttypid = pg_type.oid AND
attlen != typlen;
-- check alignment
SELECT pg_attribute.oid, relname, attname
FROM pg_class, pg_attribute, pg_type
WHERE pg_class.oid = attrelid AND
atttypid = pg_type.oid AND
attalign != typalign;

View File

@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/interfaces/Makefile,v 1.14 1998/08/26 05:22:58 momjian Exp $
# $Header: /cvsroot/pgsql/src/interfaces/Makefile,v 1.15 1998/08/26 16:43:51 momjian Exp $
#
#-------------------------------------------------------------------------
@ -23,7 +23,7 @@ endif
.DEFAULT all install clean dep depend distclean: $(perl-makefile-dep)
$(MAKE) -C libpq $@
# $(MAKE) -C ecpg $@
$(MAKE) -C ecpg $@
ifeq ($(HAVE_Cplusplus), true)
$(MAKE) -C libpq++ $@
else

View File

@ -641,7 +641,7 @@ output_statement(char * stmt, int mode)
%type <str> join_using where_clause relation_expr row_op sub_type
%type <str> opt_column_list insert_rest InsertStmt OptimizableStmt
%type <str> columnList DeleteStmt LockStmt UpdateStmt CursorStmt
%type <str> NotifyStmt columnElem copy_dirn SubUnion c_expr
%type <str> NotifyStmt columnElem copy_dirn SubUnion c_expr UnlistenStmt
%type <str> copy_delimiter ListenStmt CopyStmt copy_file_name opt_binary
%type <str> opt_with_copy FetchStmt opt_direction fetch_how_many opt_portal_name
%type <str> ClosePortalStmt DestroyStmt VacuumStmt opt_verbose