create database drop_view_database with dbcompatibility = 'B';
\c drop_view_database
create table test(id int, name varchar(20));
insert into test values(1, 'test1'), (2, 'test2'), (3, 'test3');
create view view1 as select * from test;
create view view2 as select id from test;
create view view3 as select name from test;
create view view4 as select v1.id as id1, v1.name as name1, v2.id from view1 as v1 cross join view2 as v2;
create view view5 as select * from test;
create view view6 as select id from test;
select * from view4;
id1 | name1 | id
-----+-------+----
1 | test1 | 1
1 | test1 | 2
1 | test1 | 3
2 | test2 | 1
2 | test2 | 2
2 | test2 | 3
3 | test3 | 1
3 | test3 | 2
3 | test3 | 3
(9 rows)
create table table_view1 as select * from view1;
select * from table_view1;
id | name
----+-------
1 | test1
2 | test2
3 | test3
(3 rows)
drop view if exists view1;
select * from view4;
ERROR: The view view4 is invalid, please make it valid before operation.
HINT: Please re-add missing table fields.
create view view1 as select * from test;
select * from view4;
id1 | name1 | id
-----+-------+----
1 | test1 | 1
1 | test1 | 2
1 | test1 | 3
2 | test2 | 1
2 | test2 | 2
2 | test2 | 3
3 | test3 | 1
3 | test3 | 2
3 | test3 | 3
(9 rows)
drop view if exists view2, view3;
create view view2 as select id from test;
create view view3 as select name from test;
drop view if exists view5, view6;
create view view5 as select * from test;
create view view6 as select id from test;
drop view if exists view1 restrict;
select * from view4;
ERROR: The view view4 is invalid, please make it valid before operation.
HINT: Please re-add missing table fields.
create view view1 as select * from test;
select * from view4;
id1 | name1 | id
-----+-------+----
1 | test1 | 1
1 | test1 | 2
1 | test1 | 3
2 | test2 | 1
2 | test2 | 2
2 | test2 | 3
3 | test3 | 1
3 | test3 | 2
3 | test3 | 3
(9 rows)
drop view if exists view2, view3 restrict;
create view view2 as select id from test;
create view view3 as select name from test;
drop view if exists view5, view6 restrict;
create view view5 as select * from test;
create view view6 as select id from test;
drop view view1 restrict;
select * from view4;
ERROR: The view view4 is invalid, please make it valid before operation.
HINT: Please re-add missing table fields.
create view view1 as select * from test;
select * from view4;
id1 | name1 | id
-----+-------+----
1 | test1 | 1
1 | test1 | 2
1 | test1 | 3
2 | test2 | 1
2 | test2 | 2
2 | test2 | 3
3 | test3 | 1
3 | test3 | 2
3 | test3 | 3
(9 rows)
drop view view2, view3 restrict;
create view view2 as select id from test;
create view view3 as select name from test;
drop view view5, view6 restrict;
create view view5 as select * from test;
create view view6 as select id from test;
drop view if exists view1 cascade;
NOTICE: drop cascades to view view4
select * from view4;
ERROR: relation "view4" does not exist on datanode1
LINE 1: select * from view4;
^
create view view1 as select * from test;
-- mysql can query view4, but openGauss error for view4 does not exist
select * from view4;
ERROR: relation "view4" does not exist on datanode1
LINE 1: select * from view4;
^
drop view if exists view2, view3 cascade;
create view view2 as select id from test;
create view view3 as select name from test;
drop view if exists view5, view6 cascade;
create view view5 as select * from test;
create view view6 as select id from test;
drop view view1 cascade;
select * from view4;
ERROR: relation "view4" does not exist on datanode1
LINE 1: select * from view4;
^
create view view1 as select * from test;
-- mysql can query view4, but openGauss error for view4 does not exist
select * from view4;
ERROR: relation "view4" does not exist on datanode1
LINE 1: select * from view4;
^
drop view view2, view3 cascade;
create view view2 as select id from test;
create view view3 as select name from test;
drop view view5, view6 cascade;
create view view5 as select * from test;
create view view6 as select id from test;
truncate table test;
select * from test;
id | name
----+------
(0 rows)
insert into test values(1, 'test1'), (2, 'test2'), (3, 'test3');
truncate test;
select * from test;
id | name
----+------
(0 rows)
\c postgres
drop database drop_view_database;