Обсуждение: No length checking for "name" input

Поиск
Список
Период
Сортировка

No length checking for "name" input

От
"Donald Fraser"
Дата:
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

От
Tom Lane
Дата:
"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