diff --git a/src/test/regress/create_schedule b/src/test/regress/create_schedule index 4a4688468..7484f1172 100644 --- a/src/test/regress/create_schedule +++ b/src/test/regress/create_schedule @@ -4,5 +4,6 @@ test: dropped_columns_create_load distributed_planning_create_load test: local_dist_join_load test: partitioned_indexes_create test: connectivity_checks +test: views_create test: sequences_create test: index_create diff --git a/src/test/regress/expected/views_create.out b/src/test/regress/expected/views_create.out new file mode 100644 index 000000000..acc8f002f --- /dev/null +++ b/src/test/regress/expected/views_create.out @@ -0,0 +1,75 @@ +CREATE SCHEMA views_create; +SET search_path TO views_create; +CREATE TABLE view_test_table(a INT NOT NULL PRIMARY KEY, b BIGINT, c text); +CREATE OR REPLACE VIEW select_filtered_view AS + SELECT * FROM view_test_table WHERE c = 'testing' + WITH CASCADED CHECK OPTION; +CREATE OR REPLACE VIEW select_all_view AS + SELECT * FROM view_test_table + WITH LOCAL CHECK OPTION; +CREATE OR REPLACE VIEW count_view AS + SELECT COUNT(*) FROM view_test_table; +SELECT create_distributed_table('view_test_table', 'a'); + create_distributed_table +--------------------------------------------------------------------- + +(1 row) + +INSERT INTO view_test_table VALUES (1,1,'testing'), (2,1,'views'); +SELECT * FROM count_view; + count +--------------------------------------------------------------------- + 2 +(1 row) + +SELECT COUNT(*) FROM count_view; + count +--------------------------------------------------------------------- + 1 +(1 row) + +SELECT COUNT(*) FROM select_all_view; + count +--------------------------------------------------------------------- + 2 +(1 row) + +SELECT * FROM select_filtered_view; + a | b | c +--------------------------------------------------------------------- + 1 | 1 | testing +(1 row) + +-- dummy temp recursive view +CREATE TEMP RECURSIVE VIEW recursive_defined_non_recursive_view(c) AS (SELECT 1); +CREATE MATERIALIZED VIEW select_all_matview AS + SELECT * FROM view_test_table + WITH DATA; +CREATE MATERIALIZED VIEW IF NOT EXISTS select_filtered_matview AS + SELECT * FROM view_test_table WHERE c = 'views' + WITH NO DATA; +REFRESH MATERIALIZED VIEW select_filtered_matview; +SELECT COUNT(*) FROM select_all_matview; + count +--------------------------------------------------------------------- + 2 +(1 row) + +SELECT * FROM select_filtered_matview; + a | b | c +--------------------------------------------------------------------- + 2 | 1 | views +(1 row) + +SELECT COUNT(*) FROM select_all_view a JOIN select_filtered_matview b ON a.c=b.c; + count +--------------------------------------------------------------------- + 1 +(1 row) + +SELECT COUNT(*) FROM select_all_view a JOIN view_test_table b ON a.c=b.c; + count +--------------------------------------------------------------------- + 2 +(1 row) + diff --git a/src/test/regress/sql/views_create.sql b/src/test/regress/sql/views_create.sql new file mode 100644 index 000000000..d30676c42 --- /dev/null +++ b/src/test/regress/sql/views_create.sql @@ -0,0 +1,39 @@ +CREATE SCHEMA views_create; +SET search_path TO views_create; + +CREATE TABLE view_test_table(a INT NOT NULL PRIMARY KEY, b BIGINT, c text); +CREATE OR REPLACE VIEW select_filtered_view AS + SELECT * FROM view_test_table WHERE c = 'testing' + WITH CASCADED CHECK OPTION; +CREATE OR REPLACE VIEW select_all_view AS + SELECT * FROM view_test_table + WITH LOCAL CHECK OPTION; +CREATE OR REPLACE VIEW count_view AS + SELECT COUNT(*) FROM view_test_table; +SELECT create_distributed_table('view_test_table', 'a'); + +INSERT INTO view_test_table VALUES (1,1,'testing'), (2,1,'views'); +SELECT * FROM count_view; +SELECT COUNT(*) FROM count_view; +SELECT COUNT(*) FROM select_all_view; + +SELECT * FROM select_filtered_view; + +-- dummy temp recursive view +CREATE TEMP RECURSIVE VIEW recursive_defined_non_recursive_view(c) AS (SELECT 1); + +CREATE MATERIALIZED VIEW select_all_matview AS + SELECT * FROM view_test_table + WITH DATA; + +CREATE MATERIALIZED VIEW IF NOT EXISTS select_filtered_matview AS + SELECT * FROM view_test_table WHERE c = 'views' + WITH NO DATA; + +REFRESH MATERIALIZED VIEW select_filtered_matview; + +SELECT COUNT(*) FROM select_all_matview; +SELECT * FROM select_filtered_matview; + +SELECT COUNT(*) FROM select_all_view a JOIN select_filtered_matview b ON a.c=b.c; +SELECT COUNT(*) FROM select_all_view a JOIN view_test_table b ON a.c=b.c;