From 296efd806576392c50fa8ce32f56b5b36f2227e8 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 9 Jul 1999 03:28:53 +0000 Subject: [PATCH] Fix for ACL length problem on different platforms. --- doc/TODO | 28 +++++++++++++++------------- src/backend/utils/adt/acl.c | 6 +++++- src/include/catalog/pg_type.h | 9 +++++++-- src/include/utils/acl.h | 7 ++++++- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/doc/TODO b/doc/TODO index 384163174b..885cde5122 100644 --- a/doc/TODO +++ b/doc/TODO @@ -29,7 +29,7 @@ PARSER * Select a[1] FROM test fails, it needs test.a[1] * Array index references without table name cause problems * Update table SET table.value = 3 fails -* Creating index of TIMESTAMP & RELTIME fails, rename to DATETIME(Thomas) +* Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas) * SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo * INSERT ... SELECT ... GROUP BY groups by target columns not source columns * CREATE TABLE test (a char(5) DEFAULT text '', b int4) fails on INSERT @@ -50,18 +50,11 @@ ENHANCEMENTS URGENT -* Add referential integrity -* Add OUTER joins, left and right(Thomas) +* Add referential integrity(Jan?) +* Add OUTER joins, left and right(Thomas, Bruce) * Allow long tuples by chaining or auto-storing outside db (chaining,large objs) * Eliminate limits on query length -* Fix memory leak for expressions?, aggregates? - -EXOTIC FEATURES - -* Add sql3 recursive unions -* Add the concept of dataspaces -* Add replication of distributed databases -* Allow queries across multiple databases +* Fix memory leak for expressions?, aggregates?(Tom?) ADMIN @@ -85,6 +78,7 @@ TYPES o Allow large text type to use large objects(Peter) o Not to stuff everything as files in a single directory, hash dirs o Allow large object vacuuming + o Tables that start with xinv confused to be large objects * Allow pg_descriptions when creating types, tables, columns, and functions * Add IPv6 capability to INET/CIDR types * Make a separate SERIAL type? @@ -129,6 +123,7 @@ COMMANDS * Rewrite the LIKE handling by rewriting the user string with the supplied ESCAPE * Move LIKE index optimization handling to the optimizer +* Allow RULE recomplation CLIENTS @@ -141,6 +136,13 @@ CLIENTS * Allow psql to print nulls as distinct from ""(?) * PQrequestCancel() be able to terminate backend waiting for lock +EXOTIC FEATURES + +* Add sql3 recursive unions +* Add the concept of dataspaces +* Add replication of distributed databases +* Allow queries across multiple databases + MISC * Increase identifier length(NAMEDATALEN) if small performance hit @@ -167,8 +169,8 @@ MISC * Missing optimizer selectivities for date, r-tree, etc. * Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup * Overhaul bufmgr/lockmgr/transaction manager -* Tables that start with xinv confused to be large objects * Add PL/Perl(Mark Hollomon) +* Make postgres user have a password by default PERFORMANCE @@ -223,7 +225,7 @@ MISC * improve dynamic memory allocation by introducing tuple-context memory allocation * fix memory leak in cache code when non-existant table is referenced -* In WHERE x=3 AND x=y, add y=3 +* In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3 * pass atttypmod through parser in more cases(Bruce) * remove duplicate type in/out functions for disk and net diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index b1fc557498..b456a5f6c7 100644 --- a/src/backend/utils/adt/acl.c +++ b/src/backend/utils/adt/acl.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.36 1999/05/25 16:11:49 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.37 1999/07/09 03:28:51 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -20,6 +20,7 @@ #include "utils/syscache.h" #include "catalog/catalog.h" #include "catalog/pg_shadow.h" +#include "catalog/pg_type.h" #include "miscadmin.h" static char *getid(char *s, char *n); @@ -682,6 +683,9 @@ makeAclStmt(char *privileges, List *rel_list, char *grantee, ChangeACLStmt *n = makeNode(ChangeACLStmt); char str[MAX_PARSE_BUFFER]; + /* see comment in pg_type.h */ + Assert(ACLITEMSIZE == sizeof(AclItem)); + n->aclitem = (AclItem *) palloc(sizeof(AclItem)); /* the grantee string is "G ", "U ", or "ALL" */ diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h index 0bd12530c9..d60bc86201 100644 --- a/src/include/catalog/pg_type.h +++ b/src/include/catalog/pg_type.h @@ -7,7 +7,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: pg_type.h,v 1.62 1999/05/25 16:13:48 momjian Exp $ + * $Id: pg_type.h,v 1.63 1999/07/09 03:28:52 momjian Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -341,7 +341,12 @@ DATA(insert OID = 1024 ( _reltime PGUID -1 -1 f b t \054 0 703 array_in array DATA(insert OID = 1025 ( _tinterval PGUID -1 -1 f b t \054 0 704 array_in array_out array_in array_out i _null_ )); DATA(insert OID = 1026 ( _filename PGUID -1 -1 f b t \054 0 605 array_in array_out array_in array_out i _null_ )); DATA(insert OID = 1027 ( _polygon PGUID -1 -1 f b t \054 0 604 array_in array_out array_in array_out d _null_ )); -/* Note: the size of an aclitem needs to match sizeof(AclItem) in acl.h */ +/* + * Note: the size of aclitem needs to match sizeof(AclItem) in acl.h. + * Thanks to some padding, this will be 8 on all platforms. + * We also have an Assert to make sure. + */ +#define ACLITEMSIZE 8 DATA(insert OID = 1033 ( aclitem PGUID 8 -1 f b t \054 0 0 aclitemin aclitemout aclitemin aclitemout i _null_ )); DESCR("access control list"); DATA(insert OID = 1034 ( _aclitem PGUID -1 -1 f b t \054 0 1033 array_in array_out array_in array_out i _null_ )); diff --git a/src/include/utils/acl.h b/src/include/utils/acl.h index 6dc4502efd..95e68fdf07 100644 --- a/src/include/utils/acl.h +++ b/src/include/utils/acl.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: acl.h,v 1.19 1999/02/13 23:22:14 momjian Exp $ + * $Id: acl.h,v 1.20 1999/07/09 03:28:53 momjian Exp $ * * NOTES * For backward-compatability purposes we have to allow there @@ -74,6 +74,11 @@ typedef struct AclItem AclId ai_id; AclIdType ai_idtype; AclMode ai_mode; + /* + * This is actually type 'aclitem', and we want a fixed size for + * for all platforms, so we pad this with dummies. + */ + char dummy1, dummy2; } AclItem; /* Note: if the size of AclItem changes, -- 2.11.0