server: add tests for track_table of a materialized view (#4155)

* server: add tests for track_table of a materialized view

In the context of #91, we discovered that materialized views were
already "automagically" supported; to ensure we don't regress on this
accidental but welcome change, this patch adds simple tests.

This is basically just a copy of `track_untrack_table`, but for
materialized views.

* Expand abbreviations

Co-authored-by: Alexis King <lexi.lambda@gmail.com>
This commit is contained in:
Antoine Leblanc 2020-03-24 07:05:34 +00:00 committed by GitHub
parent d9fa299750
commit eb81d6947a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 95 additions and 0 deletions

View File

@ -30,14 +30,27 @@ args:
age INTEGER NOT NULL age INTEGER NOT NULL
); );
INSERT INTO author (name) VALUES INSERT INTO author (name) VALUES
('Author 1'), ('Author 1'),
('Author 2'); ('Author 2');
INSERT INTO article (title, author_id) VALUES
('Lorem ipsum dolor sit amet', 1),
('lolcats: an anthology', 2),
('consectetur adipiscing elit', 1);
INSERT INTO hge_tests.resident (name, age) VALUES INSERT INTO hge_tests.resident (name, age) VALUES
('Resident 1', 23), ('Resident 1', 23),
('Resident 2', 31); ('Resident 2', 31);
CREATE MATERIALIZED VIEW articles AS
SELECT article.title, author.name
FROM article
LEFT JOIN author ON author.id = article.author_id
;
CREATE OR REPLACE FUNCTION test1() CREATE OR REPLACE FUNCTION test1()
RETURNS SETOF test2 AS $$ RETURNS SETOF test2 AS $$
SELECT * FROM test2 SELECT * FROM test2

View File

@ -4,6 +4,7 @@ args:
- type: run_sql - type: run_sql
args: args:
sql: | sql: |
DROP MATERIALIZED VIEW articles;
DROP TABLE hge_tests.resident; DROP TABLE hge_tests.resident;
DROP TABLE article; DROP TABLE article;
DROP TABLE author; DROP TABLE author;

View File

@ -0,0 +1,77 @@
- description: Track materialized view
url: /v1/query
status: 200
response:
message: success
query:
type: track_table
args:
name: articles
- description: Track already untracked materialized view
url: /v1/query
status: 400
response:
path: $.args
error: 'view/table already tracked : "articles"'
code: already-tracked
query:
type: track_table
args:
name: articles
- description: Select query
url: /v1/query
status: 200
response:
- title: "Lorem ipsum dolor sit amet"
name: Author 1
- title: "lolcats: an anthology"
name: Author 2
- title: "consectetur adipiscing elit"
name: Author 1
query:
type: select
args:
table: articles
columns:
- title
- name
- description: Untrack materialized view
url: /v1/query
status: 200
response:
message: success
query:
type: untrack_table
args:
table: articles
- description: Untrack materialized view
url: /v1/query
status: 400
response:
path: $.args
error: 'view/table already untracked : "articles"'
code: already-untracked
query:
type: untrack_table
args:
table: articles
- description: Select query error
url: /v1/query
status: 400
response:
path: $.args.table
error: table "articles" does not exist
code: not-exists
query:
type: select
args:
table: articles
columns:
- title
- name

View File

@ -629,6 +629,10 @@ class TestTrackTables:
check_query_f(hge_ctx, self.dir() + '/track_untrack_table.yaml') check_query_f(hge_ctx, self.dir() + '/track_untrack_table.yaml')
hge_ctx.may_skip_test_teardown = True hge_ctx.may_skip_test_teardown = True
def test_track_untrack_materialized_view(self, hge_ctx):
check_query_f(hge_ctx, self.dir() + '/track_untrack_materialized_view.yaml')
hge_ctx.may_skip_test_teardown = True
def test_track_untrack_table_with_deps(self, hge_ctx): def test_track_untrack_table_with_deps(self, hge_ctx):
check_query_f(hge_ctx, self.dir() + '/track_untrack_table_deps.yaml') check_query_f(hge_ctx, self.dir() + '/track_untrack_table_deps.yaml')
hge_ctx.may_skip_test_teardown = True hge_ctx.may_skip_test_teardown = True