Add new test
This commit is contained in:
parent
f76a76ed9e
commit
c4a5ed7fd4
3 changed files with 175 additions and 1 deletions
2
Makefile
2
Makefile
|
|
@ -20,7 +20,7 @@ DATA = pg_ivm--1.0.sql \
|
|||
pg_ivm--1.9--1.10.sql \
|
||||
pg_ivm--1.10.sql
|
||||
|
||||
REGRESS = pg_ivm create_immv refresh_immv
|
||||
REGRESS = pg_ivm create_immv refresh_immv preload_libraries_warning
|
||||
|
||||
PGVER = $(shell $(PG_CONFIG) --version | sed "s/^[^ ]* \([0-9]*\).*$$/\1/" 2>/dev/null)
|
||||
|
||||
|
|
|
|||
123
expected/preload_libraries_warning.out
Normal file
123
expected/preload_libraries_warning.out
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
-- SQL tests to validate that the session_preload_libraries warning is emitted
|
||||
-- whenever pg_ivm is not in session_preload_libraries.
|
||||
DROP EXTENSION IF EXISTS pg_ivm CASCADE;
|
||||
NOTICE: drop cascades to 12 other objects
|
||||
DETAIL: drop cascades to trigger IVM_trigger_ins_before_17637 on table t
|
||||
drop cascades to trigger IVM_trigger_del_before_17638 on table t
|
||||
drop cascades to trigger IVM_trigger_upd_before_17639 on table t
|
||||
drop cascades to trigger IVM_trigger_truncate_before_17640 on table t
|
||||
drop cascades to trigger IVM_trigger_ins_after_17641 on table t
|
||||
drop cascades to trigger IVM_trigger_del_after_17642 on table t
|
||||
drop cascades to trigger IVM_trigger_upd_after_17643 on table t
|
||||
drop cascades to trigger IVM_trigger_truncate_after_17644 on table t
|
||||
drop cascades to trigger IVM_prevent_immv_change_17621 on table mv
|
||||
drop cascades to trigger IVM_prevent_immv_change_17622 on table mv
|
||||
drop cascades to trigger IVM_prevent_immv_change_17623 on table mv
|
||||
drop cascades to trigger IVM_prevent_immv_change_17624 on table mv
|
||||
-- Validate that pg_ivm 1.10 cannot be created if pg_ivm is not in
|
||||
-- session_preload_libraries.
|
||||
ALTER SYSTEM RESET session_preload_libraries;
|
||||
SELECT pg_reload_conf();
|
||||
pg_reload_conf
|
||||
----------------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
\c -
|
||||
CREATE EXTENSION pg_ivm VERSION '1.9'; -- expect success
|
||||
ALTER EXTENSION pg_ivm UPDATE; -- expect failure
|
||||
ERROR: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries
|
||||
HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres.
|
||||
CONTEXT: PL/pgSQL function inline_code_block line 13 at RAISE
|
||||
DROP EXTENSION pg_ivm;
|
||||
CREATE EXTENSION pg_ivm; -- expect failure
|
||||
ERROR: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries
|
||||
HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres.
|
||||
CONTEXT: PL/pgSQL function inline_code_block line 13 at RAISE
|
||||
-- Validate that pg_ivm 1.10 can be created if pg_ivm is in
|
||||
-- session_preload_libraries.
|
||||
ALTER SYSTEM SET session_preload_libraries = pg_ivm;
|
||||
SELECT pg_reload_conf();
|
||||
pg_reload_conf
|
||||
----------------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
\c -
|
||||
CREATE EXTENSION pg_ivm VERSION '1.9'; -- expect success
|
||||
ALTER EXTENSION pg_ivm UPDATE; -- expect success
|
||||
DROP EXTENSION pg_ivm;
|
||||
CREATE EXTENSION pg_ivm; -- expect success
|
||||
-- Verify that the warning is emitted when each SQL function is called.
|
||||
ALTER SYSTEM RESET session_preload_libraries;
|
||||
SELECT pg_reload_conf();
|
||||
pg_reload_conf
|
||||
----------------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
\c -
|
||||
CREATE TABLE mytab (i int primary key, a text);
|
||||
SELECT pgivm.create_immv('myview', 'SELECT i, reverse(a) FROM mytab');
|
||||
WARNING: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries
|
||||
HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres.
|
||||
NOTICE: created index "myview_index" on immv "myview"
|
||||
create_immv
|
||||
-------------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT pgivm.refresh_immv('myview', true);
|
||||
WARNING: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries
|
||||
HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres.
|
||||
refresh_immv
|
||||
--------------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT pgivm.get_immv_def('myview');
|
||||
WARNING: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries
|
||||
HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres.
|
||||
get_immv_def
|
||||
---------------------------
|
||||
SELECT i, +
|
||||
reverse(a) AS reverse+
|
||||
FROM mytab
|
||||
(1 row)
|
||||
|
||||
-- Verify that the warning is emitted by the maintenance triggers.
|
||||
INSERT INTO mytab VALUES (1, 'asdf');
|
||||
WARNING: pg_ivm is not loaded in shared_preload_libraries or session_preload_libraries
|
||||
HINT: Add pg_ivm to session_preload_libraries and restart the session. Or, add pg_ivm to shared_preload_libraries and restart Postgres.
|
||||
-- Verify that the warning is not emitted after pg_ivm is added to
|
||||
-- session_preload_libraries.
|
||||
ALTER SYSTEM SET session_preload_libraries = pg_ivm;
|
||||
SELECT pg_reload_conf();
|
||||
pg_reload_conf
|
||||
----------------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
\c -
|
||||
SELECT pgivm.create_immv('myview2', 'SELECT i, reverse(a) FROM mytab');
|
||||
NOTICE: created index "myview2_index" on immv "myview2"
|
||||
create_immv
|
||||
-------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT pgivm.refresh_immv('myview2', true);
|
||||
refresh_immv
|
||||
--------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT pgivm.get_immv_def('myview2');
|
||||
get_immv_def
|
||||
---------------------------
|
||||
SELECT i, +
|
||||
reverse(a) AS reverse+
|
||||
FROM mytab
|
||||
(1 row)
|
||||
|
||||
INSERT INTO mytab VALUES (2, 'qwer');
|
||||
51
sql/preload_libraries_warning.sql
Normal file
51
sql/preload_libraries_warning.sql
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
-- SQL tests to validate that the session_preload_libraries warning is emitted
|
||||
-- whenever pg_ivm is not in session_preload_libraries.
|
||||
|
||||
DROP EXTENSION IF EXISTS pg_ivm CASCADE;
|
||||
|
||||
-- Validate that pg_ivm 1.10 cannot be created if pg_ivm is not in
|
||||
-- session_preload_libraries.
|
||||
ALTER SYSTEM RESET session_preload_libraries;
|
||||
SELECT pg_reload_conf();
|
||||
\c -
|
||||
|
||||
CREATE EXTENSION pg_ivm VERSION '1.9'; -- expect success
|
||||
ALTER EXTENSION pg_ivm UPDATE; -- expect failure
|
||||
DROP EXTENSION pg_ivm;
|
||||
CREATE EXTENSION pg_ivm; -- expect failure
|
||||
|
||||
-- Validate that pg_ivm 1.10 can be created if pg_ivm is in
|
||||
-- session_preload_libraries.
|
||||
ALTER SYSTEM SET session_preload_libraries = pg_ivm;
|
||||
SELECT pg_reload_conf();
|
||||
\c -
|
||||
|
||||
CREATE EXTENSION pg_ivm VERSION '1.9'; -- expect success
|
||||
ALTER EXTENSION pg_ivm UPDATE; -- expect success
|
||||
DROP EXTENSION pg_ivm;
|
||||
CREATE EXTENSION pg_ivm; -- expect success
|
||||
|
||||
-- Verify that the warning is emitted when each SQL function is called.
|
||||
ALTER SYSTEM RESET session_preload_libraries;
|
||||
SELECT pg_reload_conf();
|
||||
\c -
|
||||
|
||||
CREATE TABLE mytab (i int primary key, a text);
|
||||
SELECT pgivm.create_immv('myview', 'SELECT i, reverse(a) FROM mytab');
|
||||
SELECT pgivm.refresh_immv('myview', true);
|
||||
SELECT pgivm.get_immv_def('myview');
|
||||
|
||||
-- Verify that the warning is emitted by the maintenance triggers.
|
||||
INSERT INTO mytab VALUES (1, 'asdf');
|
||||
|
||||
-- Verify that the warning is not emitted after pg_ivm is added to
|
||||
-- session_preload_libraries.
|
||||
ALTER SYSTEM SET session_preload_libraries = pg_ivm;
|
||||
SELECT pg_reload_conf();
|
||||
\c -
|
||||
|
||||
SELECT pgivm.create_immv('myview2', 'SELECT i, reverse(a) FROM mytab');
|
||||
SELECT pgivm.refresh_immv('myview2', true);
|
||||
SELECT pgivm.get_immv_def('myview2');
|
||||
INSERT INTO mytab VALUES (2, 'qwer');
|
||||
|
||||
Loading…
Reference in a new issue