diff options
author | Bruce Momjian <bruce@momjian.us> | 1998-01-16 23:21:07 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1998-01-16 23:21:07 +0000 |
commit | c65ea0e040f08b59407cd74f8f0f0dd190169d46 (patch) | |
tree | 5d46c03cb5ddd61ed5e0693b261965cb2fae8b95 /src/backend/parser/parse_relation.c | |
parent | d7427e4802fd4d7108e37544115cab83c13172ab (diff) | |
download | postgresql-c65ea0e040f08b59407cd74f8f0f0dd190169d46.tar.gz |
New pg_attribute.atttypmod for type-specific information like
varchar length.
Cleans up code so attlen is always length.
Removed varchar() hack added earlier.
Will fix bug in selecting varchar() fields, and varchar() can be
variable length.
Diffstat (limited to 'src/backend/parser/parse_relation.c')
-rw-r--r-- | src/backend/parser/parse_relation.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index dc5a11a8df..692b1eb116 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.5 1998/01/05 03:32:30 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.6 1998/01/16 23:20:21 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -430,10 +430,15 @@ checkTargetTypes(ParseState *pstate, char *target_colname, elog(ERROR, "Type of %s does not match target column %s", colname, target_colname); - if ((attrtype_id == BPCHAROID || attrtype_id == VARCHAROID) && - rd->rd_att->attrs[resdomno_id - 1]->attlen != - pstate->p_target_relation->rd_att->attrs[resdomno_target - 1]->attlen) - elog(ERROR, "Length of %s does not match length of target column %s", + if (attrtype_id == BPCHAROID && + rd->rd_att->attrs[resdomno_id - 1]->atttypmod != + pstate->p_target_relation->rd_att->attrs[resdomno_target - 1]->atttypmod) + elog(ERROR, "Length of %s is longer than length of target column %s", + colname, target_colname); + if (attrtype_id == VARCHAROID && + rd->rd_att->attrs[resdomno_id - 1]->atttypmod > + pstate->p_target_relation->rd_att->attrs[resdomno_target - 1]->atttypmod) + elog(ERROR, "Length of %s is longer than length of target column %s", colname, target_colname); heap_close(rd); |