File tree Expand file tree Collapse file tree 5 files changed +156
-0
lines changed Expand file tree Collapse file tree 5 files changed +156
-0
lines changed Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
+
Original file line number Diff line number Diff line change
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;
Original file line number Diff line number Diff line change
1
+ comment = 'Multimaster referee'
2
+ default_version = '1.0'
3
+ module_pathname = '$libdir/referee'
4
+ schema = referee
5
+ relocatable = false
Original file line number Diff line number Diff line change
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 ;
You can’t perform that action at this time.
0 commit comments