Thread: No length checking for "name" input

No length checking for "name" input

From
"Donald Fraser"
Date:
PostgreSQL versions: 7.4.x and 8.0.x
(I don't have a 8.1.x installation to test against)

There appears to be no length checking for data types of "name".

For example:
template1=3D# SELECT length('rpt_cisx_total_principal_amount_of_security_ty=
pe_between_dates('::name) AS name_len;
 name_len
----------
       63
(1 row)

I get exactly the same result for this query which is obviously not the sam=
e length and yet I get no error?

template1=3D# SELECT length('rpt_cisx_total_principal_amount_of_security_ty=
pe_between_dates(date,date)'::name) AS name_len;
 name_len
----------
       63
(1 row)

I don't know whether you consider this a bug, certainly most of the other d=
ata types appear to have range checking as part of the input.

Regards
Donald Fraser=

Re: No length checking for "name" input

From
Tom Lane
Date:
"Donald Fraser" <postgres@kiwi-fraser.net> writes:
> There appears to be no length checking for data types of "name".

What there is is automatic truncation to the maximum allowed length (63
by default).  This is the same behavior specified for identifiers in the
SQL standard, and it's also the same behavior as for, say, casting to
varchar(63).  So I don't see why you'd expect something different.

            regards, tom lane