diff options
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/command.c | 7 | ||||
-rw-r--r-- | src/backend/commands/creatinh.c | 15 | ||||
-rw-r--r-- | src/backend/commands/vacuum.c | 6 |
3 files changed, 16 insertions, 12 deletions
diff --git a/src/backend/commands/command.c b/src/backend/commands/command.c index 78a3d5e1a75..035967f9209 100644 --- a/src/backend/commands/command.c +++ b/src/backend/commands/command.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.113 2000/12/05 19:57:55 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.114 2000/12/22 23:12:05 tgl Exp $ * * NOTES * The PerformAddAttribute() code, like most of the relation @@ -1237,10 +1237,9 @@ AlterTableAddConstraint(char *relationName, int i; bool found = false; - if (get_temp_rel_by_username(fkconstraint->pktable_name)!=NULL && - get_temp_rel_by_username(relationName)==NULL) { + if (is_temp_rel_name(fkconstraint->pktable_name) && + !is_temp_rel_name(relationName)) elog(ERROR, "ALTER TABLE / ADD CONSTRAINT: Unable to reference temporary table from permanent table constraint."); - } /* * Grab an exclusive lock on the pk table, so that someone diff --git a/src/backend/commands/creatinh.c b/src/backend/commands/creatinh.c index 33022515cb6..38e2c3a418e 100644 --- a/src/backend/commands/creatinh.c +++ b/src/backend/commands/creatinh.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.68 2000/12/14 00:41:09 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.69 2000/12/22 23:12:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -24,8 +24,9 @@ #include "catalog/pg_type.h" #include "commands/creatinh.h" #include "miscadmin.h" -#include "utils/syscache.h" #include "optimizer/clauses.h" +#include "utils/syscache.h" +#include "utils/temprel.h" /* ---------------- * local stuff @@ -34,7 +35,7 @@ static int checkAttrExists(const char *attributeName, const char *attributeType, List *schema); -static List *MergeAttributes(List *schema, List *supers, +static List *MergeAttributes(List *schema, List *supers, bool istemp, List **supOids, List **supconstr); static void StoreCatalogInheritance(Oid relationId, List *supers); static void setRelhassubclassInRelation(Oid relationId, bool relhassubclass); @@ -71,7 +72,7 @@ DefineRelation(CreateStmt *stmt, char relkind) * including inherited attributes. * ---------------- */ - schema = MergeAttributes(schema, stmt->inhRelnames, + schema = MergeAttributes(schema, stmt->inhRelnames, stmt->istemp, &inheritOids, &old_constraints); numberOfAttributes = length(schema); @@ -283,6 +284,7 @@ change_varattnos_of_a_node(Node *node, const AttrNumber *newattno) * 'schema' is the column/attribute definition for the table. (It's a list * of ColumnDef's.) It is destructively changed. * 'supers' is a list of names (as Value objects) of parent relations. + * 'istemp' is TRUE if we are creating a temp relation. * * Output arguments: * 'supOids' receives an integer list of the OIDs of the parent relations. @@ -311,7 +313,7 @@ change_varattnos_of_a_node(Node *node, const AttrNumber *newattno) * stud_emp {7:percent} */ static List * -MergeAttributes(List *schema, List *supers, +MergeAttributes(List *schema, List *supers, bool istemp, List **supOids, List **supconstr) { List *entry; @@ -378,6 +380,9 @@ MergeAttributes(List *schema, List *supers, if (relation->rd_rel->relkind != RELKIND_RELATION) elog(ERROR, "CREATE TABLE: inherited relation \"%s\" is not a table", name); + /* Permanent rels cannot inherit from temporary ones */ + if (!istemp && is_temp_rel_name(name)) + elog(ERROR, "CREATE TABLE: cannot inherit from temp relation \"%s\"", name); parentOids = lappendi(parentOids, relation->rd_id); setRelhassubclassInRelation(relation->rd_id, true); diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 0d4984cde6a..909c9cea732 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.178 2000/12/22 00:51:53 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.179 2000/12/22 23:12:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -274,8 +274,8 @@ getrels(NameData *VacRelP) char *nontemp_relname; /* We must re-map temp table names bjm 2000-04-06 */ - if ((nontemp_relname = - get_temp_rel_by_username(NameStr(*VacRelP))) == NULL) + nontemp_relname = get_temp_rel_by_username(NameStr(*VacRelP)); + if (nontemp_relname == NULL) nontemp_relname = NameStr(*VacRelP); ScanKeyEntryInitialize(&key, 0x0, Anum_pg_class_relname, |