Skip to content

Commit d451fa5

Browse files
authored
Merge branch 'main' into codex/add-integration-tests
2 parents 76f77d6 + ae7da5f commit d451fa5

3 files changed

Lines changed: 118 additions & 1 deletion

File tree

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
EXTENSION = pg_os
22
DATA = pg_os--1.0.sql
33
PG_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+
58
PGXS := $(shell $(PG_CONFIG) --pgxs)
69
include $(PGXS)

expected/modules.out

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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+

sql/modules.sql

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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;

0 commit comments

Comments
 (0)