Expression of check constraint

Поиск
Список
Период
Сортировка
От Dirk Mika
Тема Expression of check constraint
Дата
Msg-id DDD8FEB9-CCE9-4951-9022-A58DCC2998C4@mikatiming.de
обсуждение исходный текст
Ответы Re: Expression of check constraint  (rob stone <floriparob@gmail.com>)
Re: Expression of check constraint  (Laurenz Albe <laurenz.albe@cybertec.at>)
Re: Expression of check constraint  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general

Hi,

 

if I add the following check constraint to a table:

 

ALTER TABLE public.times_places

   ADD CONSTRAINT ck_tp_ratified CHECK

          (ratified IS NULL OR (ratified IN ('Y', 'N')));

 

It becomes the following when describing the table in psql:

 

Check constraints:

    "ck_tp_ratified" CHECK (ratified IS NULL OR (ratified::text = ANY (ARRAY['Y'::character varying, 'N'::character varying]::text[])))

 

The behavior of the check constraint is logically identical and this seems plausible to me, but I still wonder why:

1.    does the expression x in (a, b) become the expression x = any(array(a, b)?

2.    why is the array expression casted so wildly? First to character varying and then to text[]?

3.    The column ratified is of type character varying(1).  Why is it casted to text?

 

Dirk

--
Dirk Mika
Software Developer



mika:timing GmbH
Strundepark - Kürtener Str. 11b
51465 Bergisch Gladbach
Germany

fon +49 2202 2401-1197
dirk.mika@mikatiming.de
www.mikatiming.de

AG Köln HRB 47509 * WEEE-Reg.-Nr. DE 90029884
Geschäftsführer: Harald Mika, Jörg Mika


 
Вложения

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

Предыдущее
От: Souvik Bhattacherjee
Дата:
Сообщение: Re: Allocating shared memory in Postgres
Следующее
От: rob stone
Дата:
Сообщение: Re: Expression of check constraint