Files
openGauss-server/src/test/regress/sql/create_view5.sql
2023-06-03 11:15:59 +08:00

83 lines
3.4 KiB
SQL

--
-- CREATE_VIEW3
--
-- Enforce use of COMMIT instead of 2PC for temporary objects
--test COMMENT ON view's column
create table test_comment_normal_view_column_t(id1 int,id2 int);
create or replace view test_comment_normal_view_column_v as select * from test_comment_normal_view_column_t;
create temp table test_comment_temp_view_column_t(id1 int,id2 int);
create or replace temp view test_comment_temp_view_column_v as select * from test_comment_temp_view_column_t;
comment on column test_comment_normal_view_column_t.id1 is 'this is normal table';
comment on column test_comment_normal_view_column_v.id1 is 'this is normal view';
comment on column test_comment_temp_view_column_t.id1 is 'this is temp table';
comment on column test_comment_temp_view_column_v.id1 is 'this is temp view';
\d+ test_comment_normal_view_column_t
\d+ test_comment_normal_view_column_v
\d+ test_comment_temp_view_column_t
\d+ test_comment_temp_view_column_v
comment on column test_comment_normal_view_column_t.id1 is 'this is normal table too';
comment on column test_comment_normal_view_column_v.id1 is 'this is normal view too';
comment on column test_comment_temp_view_column_t.id1 is 'this is temp table too';
comment on column test_comment_temp_view_column_v.id1 is 'this is temp view too';
\d+ test_comment_normal_view_column_t
\d+ test_comment_normal_view_column_v
\d+ test_comment_temp_view_column_t
\d+ test_comment_temp_view_column_v
drop view test_comment_normal_view_column_v;
drop table test_comment_normal_view_column_t;
-- check display of ScalarArrayOp with a sub-select
select 'foo'::text = any(array['abc','def','foo']::text[]);
select 'foo'::text = any((select array['abc','def','foo']::text[])); -- fail
select 'foo'::text = any((select array['abc','def','foo']::text[])::text[]);
create view tt19v as
select 'foo'::text = any(array['abc','def','foo']::text[]) c1,
'foo'::text = any((select array['abc','def','foo']::text[])::text[]) c2;
select pg_get_viewdef('tt19v', true);
drop view tt19v;
-- This test checks that proper typmods are assigned in a multi-row VALUES
CREATE VIEW tt1 AS
SELECT * FROM (
VALUES
('abc'::varchar(3), '0123456789', 42, 'abcd'::varchar(4)),
('0123456789', 'abc'::varchar(3), 42.12, 'abc'::varchar(4))
) vv(a,b,c,d);
\d+ tt1
SELECT * FROM tt1;
SELECT a::varchar(3) FROM tt1;
DROP VIEW tt1;
-- check handling of views with immediately-renamed columns
create view tt23v (col_a, col_b) as
select q1 as other_name1, q2 as other_name2 from int8_tbl
union
select 42, 43;
select pg_get_viewdef('tt23v', true);
select pg_get_ruledef(oid, true) from pg_rewrite
where ev_class = 'tt23v'::regclass and ev_type = '1';
DROP VIEW tt23v;
-- check display of assorted RTE_FUNCTION expressions
create view tt20v as
select * from
coalesce(1,2) as c,
collation for ('x'::text) col,
current_date as d,
cast(1+2 as int4) as i4,
cast(1+2 as int8) as i8;
select pg_get_viewdef('tt20v', true);
drop view tt20v;
create table test_view_for_update_tbl (a int, b int);
create view test_view_for_update_view1 as select * from test_view_for_update_tbl for key share;
create view test_view_for_update_view2 as select * from test_view_for_update_tbl for share;
create view test_view_for_update_view3 as select * from test_view_for_update_tbl for no key update;
create view test_view_for_update_view4 as select * from test_view_for_update_tbl for update;
drop table test_view_for_update_tbl cascade;