Re: PG 7.2 varchar change - Mailing list pgsql-admin

From Tom Lane
Subject Re: PG 7.2 varchar change
Date
Msg-id 17798.1092369431@sss.pgh.pa.us
Whole thread Raw
In response to PG 7.2 varchar change  (slane <slane@moyergroup.com>)
Responses Re: PG 7.2 varchar change  (Steve Lane <slane@soliantconsulting.com>)
List pgsql-admin
slane <slane@moyergroup.com> writes:
> Here�s the currently most alarming, a change that is recorded for 7.2:
> CHAR(), VARCHAR() now reject strings that are too long (Peter E)
> What does this mean? Or how do I find out what it means?

If in doubt, experiment.

In 7.1:

regression=# create table foo(f1 varchar(5));
CREATE
regression=# insert into foo values('1234567890');
INSERT 2913462 1
regression=# select * from foo;
  f1
-------
 12345
(1 row)

In 7.4:

regression=# create table foo(f1 varchar(5));
CREATE TABLE
regression=# insert into foo values('1234567890');
ERROR:  value too long for type character varying(5)

7.4 follows the SQL spec (or our current understanding of it anyway):
strings will not be silently truncated.  If you want to force truncation
to a particular length you can cast the string explicitly:

regression=# select 'way too long'::varchar(5);
 varchar
---------
 way t
(1 row)

That works the same in either version.

            regards, tom lane

pgsql-admin by date:

Previous
From: slane
Date:
Subject: PG 7.2 varchar change
Next
From: Christopher Browne
Date:
Subject: Re: PG 7.2 varchar change