Hi hackers,
When I define a view relevant with `char varying`, it shows the type is casted to text. See,
gpadmin=# CREATE TABLE foobar (a character varying);
CREATE TABLE
gpadmin=# CREATE VIEW fooview AS SELECT * FROM foobar WHERE a::character varying = ANY(ARRAY['foo'::character varying, 'bar'::character varying]);
CREATE VIEW
gpadmin=# \d+ fooview
View "public.fooview"
Column | Type | Collation | Nullable | Default | Storage | Description
--------+-------------------+-----------+----------+---------+----------+-------------
a | character varying | | | | extended |
View definition:
SELECT foobar.a
FROM foobar
WHERE foobar.a::text = ANY (ARRAY['foo'::character varying, 'bar'::character varying]::text[]);
gpadmin=# create view barview as select * from foobar where a=any(array['foo','bar']);
CREATE VIEW
gpadmin=# \d+ barview
View "public.barview"
Column | Type | Collation | Nullable | Default | Storage | Description
--------+-------------------+-----------+----------+---------+----------+-------------
a | character varying | | | | extended |
View definition:
SELECT foobar.a
FROM foobar
WHERE foobar.a::text = ANY (ARRAY['foo'::text, 'bar'::text]);
My question is that is it an expected behavior or not?
Thank you.
Regards,
Hao Wu