Re: BUG #2390: check constraint

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: BUG #2390: check constraint
Дата
Msg-id 20060413100546.W83930@megazone.bigpanda.com
обсуждение исходный текст
Ответ на Re: BUG #2390: check constraint  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
On Thu, 13 Apr 2006, Tom Lane wrote:

> Stephan Szabo <sszabo@megazone.bigpanda.com> writes:
> > On Wed, 12 Apr 2006, Andreas Kretschmer wrote:
> >> i want to add a check constraint like:
> >> create table foo (i char(7) CHECK (i ~ '^[0-9]{6,7}$'));
> >>
> >> i doesn't work, but if works, if i change the type for i to varchar(7).
>
> > Well, the regex doesn't entirely make sense for char(n) data.  It's not
> > possible to have 6 characters between beginning and end because it's a
> > fixed length 7 character string. If you try to insert '000000' into i,
> > you're actually inserting '000000 ' which is invalid by the constraint.
>
> You could argue that since we consider trailing spaces not to be
> semantically significant in char(n), it would be more consistent to
> strip those spaces before performing the regex match.

Possibly, although I'm not sure that the particulars of how we treat
spaces in char(n) are precisely right either. :)

AFAIR, the spec doesn't talk about stripping spaces, it talks about
padding shorter values.  That's usually the same, but for cases like this
one, I think it's different.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #2391: "Similar to" pattern matching does not operate as documented
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Permission denied on fsync / Win32 (was right sibling is not next child)