
> Excessively long values are currently silently truncated when they are
> inserted into char or varchar fields.  This makes the entire notion of
> specifying a length limit for these types kind of useless, IMO.  Needless
> to say, it's also not in compliance with SQL.

To quote Tom "paragraph and verse please" :-)

> How do people feel about changing this to raise an error in this
> situation?

Can't do.

> Does anybody rely on silent truncation?

Yes, iirc the only thing you are allowed to do is issue a warning,
but the truncation is allowed and must succeed. 
(checked in Informix and Oracle)

The appropriate SQLSTATE is: "01004" String data, right truncation
note that class 01 is a "success with warning".

Andreas

Tue, 10 Apr 2001 12:46:55 +0200
Zeugswetter Andreas SB  <ZeugswetterA@wien.spardat.at>
AW: Truncation of char, varchar types
Zeugswetter Andreas SB wrote:

> Yes, iirc the only thing you are allowed to do is issue a warning,
> but the truncation is allowed and must succeed.
> (checked in Informix and Oracle)

? As much as I remember, Oracle raises an error. But it's been a few
years since I last touched it, so maybe I'm wrong.

-- 
Alessio F. Bragadini		alessio@albourne.com
APL Financial Services		http://village.albourne.com
Nicosia, Cyprus		 	phone: +357-2-755750

"It is more complicated than you think"
		-- The Eighth Networking Truth from RFC 1925

Tue, 10 Apr 2001 16:32:52 +0300
Alessio Bragadini <alessio@albourne.com>
Re: AW: Truncation of char, varchar types
Zeugswetter Andreas SB writes:

> > Excessively long values are currently silently truncated when they are
> > inserted into char or varchar fields.  This makes the entire notion of
> > specifying a length limit for these types kind of useless, IMO.  Needless
> > to say, it's also not in compliance with SQL.
>
> To quote Tom "paragraph and verse please" :-)

SQL 1992, 9.2 GR 3 e)

"""
If the data type of T is variable-length character string and
the length in characters M of V is greater than the maximum
length in characters L of T, then,

Case:

 i) If the rightmost M-L characters of V are all <space>s, then
    the value of T is set to the first L characters of V and
    the length in characters of T is set to L.

ii) If one or more of the rightmost M-L characters of V are
    not <space>s, then an exception condition is raised: data
                          ^^^^^^^^^
    exception-string data, right truncation.
"""

Similarly in SQL 1999 and for other data types.

> > How do people feel about changing this to raise an error in this
> > situation?
>
> Can't do.

Why not?

-- 
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/


Tue, 10 Apr 2001 18:07:03 +0200 (CEST)
Peter Eisentraut <peter_e@gmx.net>
Re: AW: Truncation of char, varchar types