Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 82fd21e

Browse files
committed
peek referee extension
1 parent eea8c8e commit 82fd21e

File tree

5 files changed

+156
-0
lines changed

5 files changed

+156
-0
lines changed

contrib/referee/Makefile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
EXTENSION = referee
2+
DATA = referee--1.0.sql
3+
REGRESS = referee
4+
5+
ifdef USE_PGXS
6+
PG_CONFIG = pg_config
7+
PGXS := $(shell $(PG_CONFIG) --pgxs)
8+
include $(PGXS)
9+
else
10+
subdir = contrib/referee
11+
top_builddir = ../..
12+
include $(top_builddir)/src/Makefile.global
13+
include $(top_srcdir)/contrib/contrib-global.mk
14+
endif

contrib/referee/expected/referee.out

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
CREATE EXTENSION referee;
2+
SELECT * FROM referee.decision;
3+
key | node_id
4+
-----+---------
5+
(0 rows)
6+
7+
SELECT referee.get_winner(1);
8+
get_winner
9+
------------
10+
1
11+
(1 row)
12+
13+
SELECT referee.get_winner(2);
14+
get_winner
15+
------------
16+
1
17+
(1 row)
18+
19+
SELECT referee.get_winner(4);
20+
get_winner
21+
------------
22+
1
23+
(1 row)
24+
25+
SELECT referee.get_winner(1);
26+
get_winner
27+
------------
28+
1
29+
(1 row)
30+
31+
SELECT * FROM referee.decision;
32+
key | node_id
33+
--------+---------
34+
winner | 1
35+
(1 row)
36+
37+
SELECT referee.clean();
38+
clean
39+
-------
40+
t
41+
(1 row)
42+
43+
SELECT referee.get_winner(4);
44+
get_winner
45+
------------
46+
4
47+
(1 row)
48+
49+
SELECT referee.get_winner(2);
50+
get_winner
51+
------------
52+
4
53+
(1 row)
54+
55+
SELECT referee.get_winner(1);
56+
get_winner
57+
------------
58+
4
59+
(1 row)
60+
61+
SELECT referee.get_winner(4);
62+
get_winner
63+
------------
64+
4
65+
(1 row)
66+
67+
SELECT * FROM referee.decision;
68+
key | node_id
69+
--------+---------
70+
winner | 4
71+
(1 row)
72+
73+
SELECT referee.clean();
74+
clean
75+
-------
76+
t
77+
(1 row)
78+
79+
SELECT referee.clean();
80+
clean
81+
-------
82+
t
83+
(1 row)
84+
85+
SELECT * FROM referee.decision;
86+
key | node_id
87+
-----+---------
88+
(0 rows)
89+

contrib/referee/referee--1.0.sql

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
2+
\echo Use "CREATE EXTENSION referee" to load this file. \quit
3+
4+
CREATE TABLE IF NOT EXISTS referee.decision(key text primary key not null, node_id int);
5+
6+
CREATE OR REPLACE FUNCTION referee.get_winner(applicant_id int) RETURNS int AS
7+
$$
8+
DECLARE
9+
winner_id int;
10+
BEGIN
11+
insert into referee.decision values ('winner', applicant_id);
12+
select node_id into winner_id from referee.decision where key = 'winner';
13+
return winner_id;
14+
EXCEPTION WHEN others THEN
15+
select node_id into winner_id from referee.decision where key = 'winner';
16+
return winner_id;
17+
END
18+
$$
19+
LANGUAGE plpgsql;
20+
21+
CREATE OR REPLACE FUNCTION referee.clean() RETURNS bool AS
22+
$$
23+
BEGIN
24+
delete from referee.decision where key = 'winner';
25+
return 'true';
26+
END
27+
$$
28+
LANGUAGE plpgsql;

contrib/referee/referee.control

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
comment = 'Multimaster referee'
2+
default_version = '1.0'
3+
module_pathname = '$libdir/referee'
4+
schema = referee
5+
relocatable = false

contrib/referee/sql/referee.sql

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
CREATE EXTENSION referee;
2+
3+
SELECT * FROM referee.decision;
4+
5+
SELECT referee.get_winner(1);
6+
SELECT referee.get_winner(2);
7+
SELECT referee.get_winner(4);
8+
SELECT referee.get_winner(1);
9+
SELECT * FROM referee.decision;
10+
11+
SELECT referee.clean();
12+
SELECT referee.get_winner(4);
13+
SELECT referee.get_winner(2);
14+
SELECT referee.get_winner(1);
15+
SELECT referee.get_winner(4);
16+
SELECT * FROM referee.decision;
17+
18+
SELECT referee.clean();
19+
SELECT referee.clean();
20+
SELECT * FROM referee.decision;

0 commit comments

Comments
 (0)