File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11EXTENSION = pg_os
22DATA = pg_os--1.0.sql
33PG_CONFIG ?= pg_config
4- REGRESS = pg_os_basic create_user lock_file create_process load_unload_module
4+
5+ REGRESS = pg_os_basic create_user lock_file create_process load_unload_module modules
6+ REGRESS_OPTS = --outputdir=/tmp/pg_os_regress
7+
58PGXS := $(shell $(PG_CONFIG ) --pgxs)
69include $(PGXS )
Original file line number Diff line number Diff line change 1+ -- tests for load_module and unload_module
2+ \set ECHO none
3+ SELECT module_name, loaded FROM modules ORDER BY id;
4+ module_name | loaded
5+ -------------+--------
6+ mod1 | f
7+ mod2 | f
8+ (2 rows)
9+
10+ SELECT load_module('mod1');
11+ load_module
12+ -------------
13+
14+ (1 row)
15+
16+ SELECT module_name, loaded FROM modules ORDER BY id;
17+ module_name | loaded
18+ -------------+--------
19+ mod1 | t
20+ mod2 | f
21+ (2 rows)
22+
23+ SELECT unload_module('mod1');
24+ unload_module
25+ ---------------
26+
27+ (1 row)
28+
29+ SELECT module_name, loaded FROM modules ORDER BY id;
30+ module_name | loaded
31+ -------------+--------
32+ mod1 | f
33+ mod2 | f
34+ (2 rows)
35+
36+ SELECT load_module('mod3');
37+ load_module
38+ -------------
39+
40+ (1 row)
41+
42+ SELECT module_name, loaded FROM modules ORDER BY id;
43+ module_name | loaded
44+ -------------+--------
45+ mod1 | f
46+ mod2 | f
47+ (2 rows)
48+
49+ SELECT load_module('mod2');
50+ load_module
51+ -------------
52+
53+ (1 row)
54+
55+ SELECT module_name, loaded FROM modules ORDER BY id;
56+ module_name | loaded
57+ -------------+--------
58+ mod1 | f
59+ mod2 | t
60+ (2 rows)
61+
Original file line number Diff line number Diff line change 1+ -- tests for load_module and unload_module
2+ \set ECHO none
3+ SET client_min_messages TO warning;
4+
5+ DROP TABLE IF EXISTS modules CASCADE;
6+
7+ CREATE TABLE modules (
8+ id SERIAL PRIMARY KEY ,
9+ module_name TEXT UNIQUE NOT NULL ,
10+ loaded BOOLEAN DEFAULT FALSE,
11+ code TEXT ,
12+ created_at TIMESTAMP DEFAULT now()
13+ );
14+
15+ CREATE OR REPLACE FUNCTION load_module (module_name TEXT ) RETURNS VOID AS $$
16+ BEGIN
17+ UPDATE modules
18+ SET loaded = TRUE
19+ WHERE modules .module_name = load_module .module_name ;
20+ END;
21+ $$ LANGUAGE plpgsql;
22+
23+ CREATE OR REPLACE FUNCTION unload_module (module_name TEXT ) RETURNS VOID AS $$
24+ BEGIN
25+ UPDATE modules
26+ SET loaded = FALSE
27+ WHERE modules .module_name = unload_module .module_name ;
28+ END;
29+ $$ LANGUAGE plpgsql;
30+
31+ INSERT INTO modules (module_name) VALUES (' mod1' ), (' mod2' );
32+
33+ \set ECHO queries
34+ \set VERBOSITY terse
35+
36+ -- initial state
37+ SELECT module_name, loaded FROM modules ORDER BY id;
38+
39+ -- load mod1
40+ SELECT load_module(' mod1' );
41+ SELECT module_name, loaded FROM modules ORDER BY id;
42+
43+ -- unload mod1
44+ SELECT unload_module(' mod1' );
45+ SELECT module_name, loaded FROM modules ORDER BY id;
46+
47+ -- load non-existent module
48+ SELECT load_module(' mod3' );
49+ SELECT module_name, loaded FROM modules ORDER BY id;
50+
51+ -- load mod2
52+ SELECT load_module(' mod2' );
53+ SELECT module_name, loaded FROM modules ORDER BY id;
You can’t perform that action at this time.
0 commit comments