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
|