Thread: AW: Truncation of char, varchar types

AW: Truncation of char, varchar types

From
Zeugswetter Andreas SB
Date:
> 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


Re: AW: Truncation of char, varchar types

From
Peter Eisentraut
Date:
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/



Re: AW: Truncation of char, varchar types

From
Alessio Bragadini
Date:
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