1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-31 10:30:33 +03:00

NOT NULL implementation (submitted by Robson Paniago de Miranda).

This commit is contained in:
Vadim B. Mikheev
1997-08-19 04:46:15 +00:00
parent b99c63cfc0
commit b992e200b8
16 changed files with 453 additions and 337 deletions

View File

@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.13 1997/08/18 20:51:31 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.14 1997/08/19 04:42:31 vadim Exp $
*
* NOTES
* some of the executor utility code such as "ExecTypeFromTL" should be
@@ -60,6 +60,7 @@ CreateTemplateTupleDesc(int natts)
size = natts * sizeof (AttributeTupleForm);
desc = (TupleDesc) palloc(sizeof(struct tupleDesc));
desc->attrs = (AttributeTupleForm*) palloc(size);
desc->constr = NULL;
memset(desc->attrs, 0, size);
desc->natts = natts;
@@ -87,7 +88,7 @@ CreateTupleDesc(int natts, AttributeTupleForm* attrs)
desc = (TupleDesc) palloc(sizeof(struct tupleDesc));
desc->attrs = attrs;
desc->natts = natts;
desc->constr = NULL;
return (desc);
}
@@ -117,6 +118,11 @@ CreateTupleDescCopy(TupleDesc tupdesc)
tupdesc->attrs[i],
ATTRIBUTE_TUPLE_SIZE);
}
if (tupdesc->constr) {
desc->constr = (AttrConstr *) palloc(sizeof(struct attrConstr));
memmove(desc->constr, tupdesc->constr, sizeof(struct attrConstr));
} else
desc->constr = NULL;
return desc;
}
@@ -379,6 +385,15 @@ BuildDescForRelation(List *schema, char *relname)
if (entry->typename->typlen > 0) {
desc->attrs[attnum - 1]->attlen = entry->typename->typlen;
}
/* This is for constraints */
if (entry->is_not_null) {
if (!desc->constr)
desc->constr = (AttrConstr *) palloc(sizeof(struct attrConstr));
desc->constr->has_not_null = true;
}
desc->attrs[attnum-1]->attnotnull = entry->is_not_null;
}
return desc;
}