author | Pascal Volk <neverseen@users.sourceforge.net> |
Sun, 13 Feb 2011 03:32:31 +0000 | |
branch | v0.6.x |
changeset 402 | 8984b1f4e6e3 |
parent 391 | 8217ddd5220d |
child 437 | 9823548b2717 |
permissions | -rw-r--r-- |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
1 |
SET client_encoding = 'UTF8'; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
2 |
SET client_min_messages = warning; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
3 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
4 |
|
6
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
5 |
CREATE SEQUENCE transport_id; |
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
6 |
|
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
7 |
CREATE SEQUENCE mailboxformat_id; |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
8 |
|
8
7e3ce56f49e6
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
7
diff
changeset
|
9 |
CREATE SEQUENCE maillocation_id; |
6
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
10 |
|
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
11 |
CREATE SEQUENCE quotalimit_id; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
12 |
|
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
13 |
CREATE SEQUENCE domain_gid |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
14 |
START WITH 70000 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
15 |
INCREMENT BY 1 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
16 |
MINVALUE 70000 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
17 |
MAXVALUE 4294967294 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
18 |
NO CYCLE; |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
19 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
20 |
CREATE SEQUENCE users_uid |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
21 |
START WITH 70000 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
22 |
INCREMENT BY 1 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
23 |
MINVALUE 70000 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
24 |
MAXVALUE 4294967294 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
25 |
NO CYCLE; |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
26 |
|
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
27 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
28 |
CREATE TABLE transport ( |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
29 |
tid bigint NOT NULL DEFAULT nextval('transport_id'), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
30 |
transport varchar(270) NOT NULL, -- smtps:[255-char.host.name:50025] |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
31 |
CONSTRAINT pkey_transport PRIMARY KEY (tid), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
32 |
CONSTRAINT ukey_transport UNIQUE (transport) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
33 |
); |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
34 |
-- Insert default transport |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
35 |
INSERT INTO transport(transport) VALUES ('dovecot:'); |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
36 |
|
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
37 |
CREATE TABLE mailboxformat ( |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
38 |
fid bigint NOT NULL DEFAULT nextval('mailboxformat_id'), |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
39 |
format varchar(20) NOT NULL, |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
40 |
CONSTRAINT pkey_mailboxformat PRIMARY KEY (fid), |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
41 |
CONSTRAINT ukey_mailboxformat UNIQUE (format) |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
42 |
); |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
43 |
-- Insert supported mailbox formats |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
44 |
INSERT INTO mailboxformat(format) VALUES ('maildir'); |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
45 |
INSERT INTO mailboxformat(format) VALUES ('mdbox'); |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
46 |
INSERT INTO mailboxformat(format) VALUES ('sdbox'); |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
47 |
|
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
48 |
CREATE TABLE maillocation ( |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
49 |
mid bigint NOT NULL DEFAULT nextval('maillocation_id'), |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
50 |
fid bigint NOT NULL DEFAULT 1, |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
51 |
directory varchar(20) NOT NULL, |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
52 |
extra varchar(1024), |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
53 |
CONSTRAINT pkey_maillocation PRIMARY KEY (mid), |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
54 |
CONSTRAINT fkey_maillocation_fid_mailboxformat FOREIGN KEY (fid) |
368
be4bd77dbe57
pgsql/create_tables{,-dovecot-1.2.x}.pgsql: Fixed syntax errors
Tobias Berling <t-obi@users.sourceforge.net>
parents:
297
diff
changeset
|
55 |
REFERENCES mailboxformat (fid) |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
56 |
); |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
57 |
-- Insert default Maildir-folder name |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
58 |
INSERT INTO maillocation(directory) VALUES ('Maildir'); |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
59 |
|
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
60 |
CREATE TABLE quotalimit ( |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
61 |
qid bigint NOT NULL DEFAULT nextval('quotalimit_id'), |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
62 |
bytes bigint NOT NULL, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
63 |
messages integer NOT NULL DEFAULT 0, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
64 |
CONSTRAINT pkey_quotalimit PRIMARY KEY (qid), |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
65 |
CONSTRAINT ukey_quotalimit UNIQUE (bytes, messages) |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
66 |
); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
67 |
-- Insert default (non) quota limit |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
68 |
INSERT INTO quotalimit(bytes, messages) VALUES (0, 0); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
69 |
|
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
70 |
CREATE TABLE domain_data ( |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
71 |
gid bigint NOT NULL DEFAULT nextval('domain_gid'), |
257
5b8fde01e4f0
VMM/Alias.py: Replaced some %r with '%s'.
Tobias Berling <mail@tobiasberling.de>
parents:
160
diff
changeset
|
72 |
tid bigint NOT NULL DEFAULT 1, -- default transport |
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
73 |
qid bigint NOT NULL DEFAULT 1, -- default quota limit |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
74 |
domaindir varchar(40) NOT NULL, --/srv/mail/$RAND/4294967294 |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
75 |
CONSTRAINT pkey_domain_data PRIMARY KEY (gid), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
76 |
CONSTRAINT fkey_domain_data_tid_transport FOREIGN KEY (tid) |
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
77 |
REFERENCES transport (tid), |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
78 |
CONSTRAINT fkey_domain_data_qid_quotalimit FOREIGN KEY (qid) |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
79 |
REFERENCES quotalimit (qid) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
80 |
); |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
81 |
|
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
82 |
CREATE TABLE domain_name ( |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
83 |
domainname varchar(255) NOT NULL, |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
84 |
gid bigint NOT NULL, |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
85 |
is_primary boolean NOT NULL, |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
86 |
CONSTRAINT pkey_domain_name PRIMARY KEY (domainname), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
87 |
CONSTRAINT fkey_domain_name_gid_domain_data FOREIGN KEY (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
88 |
REFERENCES domain_data (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
89 |
); |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
90 |
|
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
91 |
CREATE TABLE users ( |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
92 |
local_part varchar(64) NOT NULL,-- only localpart w/o '@' |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
93 |
passwd varchar(270) NOT NULL, |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
94 |
name varchar(128) NULL, |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
95 |
uid bigint NOT NULL DEFAULT nextval('users_uid'), |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
96 |
gid bigint NOT NULL, |
6
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
97 |
mid bigint NOT NULL DEFAULT 1, |
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
98 |
tid bigint NOT NULL DEFAULT 1, |
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
99 |
qid bigint NOT NULL DEFAULT 1, |
29
9653d4f5d97f
fixed typo in CREATE TABLE users
Pascal Volk <neverseen@users.sourceforge.net>
parents:
20
diff
changeset
|
100 |
smtp boolean NOT NULL DEFAULT TRUE, |
20
55146c78b3fb
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
15
diff
changeset
|
101 |
pop3 boolean NOT NULL DEFAULT TRUE, |
55146c78b3fb
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
15
diff
changeset
|
102 |
imap boolean NOT NULL DEFAULT TRUE, |
124
68af38212ff5
Added create SQL scripts for Dovecot v1.2.x
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
103 |
sieve boolean NOT NULL DEFAULT TRUE, |
71
4c94ba297698
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
67
diff
changeset
|
104 |
CONSTRAINT pkey_users PRIMARY KEY (local_part, gid), |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
105 |
CONSTRAINT ukey_users_uid UNIQUE (uid), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
106 |
CONSTRAINT fkey_users_gid_domain_data FOREIGN KEY (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
107 |
REFERENCES domain_data (gid), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
108 |
CONSTRAINT fkey_users_mid_maillocation FOREIGN KEY (mid) |
8
7e3ce56f49e6
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
7
diff
changeset
|
109 |
REFERENCES maillocation (mid), |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
110 |
CONSTRAINT fkey_users_tid_transport FOREIGN KEY (tid) |
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
111 |
REFERENCES transport (tid), |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
112 |
CONSTRAINT fkey_users_qid_quotalimit FOREIGN KEY (qid) |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
113 |
REFERENCES quotalimit (qid) |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
114 |
); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
115 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
116 |
CREATE TABLE userquota ( |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
117 |
uid bigint NOT NULL, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
118 |
bytes bigint NOT NULL DEFAULT 0, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
119 |
messages integer NOT NULL DEFAULT 0, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
120 |
CONSTRAINT pkey_userquota PRIMARY KEY (uid), |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
121 |
CONSTRAINT fkey_userquota_uid_users FOREIGN KEY (uid) |
387
05dc4e1f8dff
pgsql/{create,update}_tables*: Added the ON DELETE CASCADE clause
Pascal Volk <neverseen@users.sourceforge.net>
parents:
382
diff
changeset
|
122 |
REFERENCES users (uid) ON DELETE CASCADE |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
123 |
); |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
124 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
125 |
CREATE TABLE alias ( |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
126 |
gid bigint NOT NULL, |
67
e4d25f50164d
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
63
diff
changeset
|
127 |
address varchar(64) NOT NULL,-- only localpart w/o '@' |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
128 |
destination varchar(320) NOT NULL, |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
129 |
CONSTRAINT pkey_alias PRIMARY KEY (gid, address, destination), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
130 |
CONSTRAINT fkey_alias_gid_domain_data FOREIGN KEY (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
131 |
REFERENCES domain_data (gid) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
132 |
); |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
133 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
134 |
CREATE TABLE relocated ( |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
135 |
gid bigint NOT NULL, |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
136 |
address varchar(64) NOT NULL, |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
137 |
destination varchar(320) NOT NULL, |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
138 |
CONSTRAINT pkey_relocated PRIMARY KEY (gid, address), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
139 |
CONSTRAINT fkey_relocated_gid_domain_data FOREIGN KEY (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
140 |
REFERENCES domain_data (gid) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
141 |
); |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
142 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
143 |
CREATE OR REPLACE VIEW dovecot_password AS |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
144 |
SELECT local_part || '@' || domain_name.domainname AS "user", |
124
68af38212ff5
Added create SQL scripts for Dovecot v1.2.x
Pascal Volk <neverseen@users.sourceforge.net>
parents:
102
diff
changeset
|
145 |
passwd AS "password", smtp, pop3, imap, sieve |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
146 |
FROM users |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
147 |
LEFT JOIN domain_name USING (gid); |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
148 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
149 |
CREATE OR REPLACE VIEW dovecot_user AS |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
150 |
SELECT local_part || '@' || domain_name.domainname AS userid, |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
151 |
uid, gid, domain_data.domaindir || '/' || uid AS home, |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
152 |
mailboxformat.format || ':~/' || maillocation.directory AS mail |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
153 |
FROM users |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
154 |
LEFT JOIN domain_data USING (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
155 |
LEFT JOIN domain_name USING (gid) |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
156 |
LEFT JOIN maillocation USING (mid) |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
157 |
LEFT JOIN mailboxformat USING (fid); |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
158 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
159 |
CREATE OR REPLACE VIEW postfix_gid AS |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
160 |
SELECT gid, domainname |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
161 |
FROM domain_name; |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
162 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
163 |
CREATE OR REPLACE VIEW postfix_uid AS |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
164 |
SELECT local_part || '@' || domain_name.domainname AS address, uid |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
165 |
FROM users |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
166 |
LEFT JOIN domain_name USING (gid); |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
167 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
168 |
CREATE OR REPLACE VIEW postfix_maildir AS |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
169 |
SELECT local_part || '@' || domain_name.domainname AS address, |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
170 |
domain_data.domaindir||'/'||uid||'/'||maillocation.directory||'/' |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
171 |
AS maildir |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
172 |
FROM users |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
173 |
LEFT JOIN domain_data USING (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
174 |
LEFT JOIN domain_name USING (gid) |
8
7e3ce56f49e6
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
7
diff
changeset
|
175 |
LEFT JOIN maillocation USING (mid); |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
176 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
177 |
CREATE OR REPLACE VIEW postfix_relocated AS |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
178 |
SELECT address || '@' || domain_name.domainname AS address, destination |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
179 |
FROM relocated |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
180 |
LEFT JOIN domain_name USING (gid); |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
181 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
182 |
CREATE OR REPLACE VIEW postfix_alias AS |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
183 |
SELECT address || '@' || domain_name.domainname AS address, destination, gid |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
184 |
FROM alias |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
185 |
LEFT JOIN domain_name USING (gid); |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
186 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
187 |
CREATE OR REPLACE VIEW postfix_transport AS |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
188 |
SELECT local_part || '@' || domain_name.domainname AS address, |
6
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
189 |
transport.transport |
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
190 |
FROM users |
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
191 |
LEFT JOIN transport USING (tid) |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
192 |
LEFT JOIN domain_name USING (gid); |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
193 |
|
9
e3d3dbeb5b84
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
8
diff
changeset
|
194 |
CREATE OR REPLACE VIEW vmm_domain_info AS |
391
8217ddd5220d
pgsql: Updated view vmm_domain_info. No longer select data we have already.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
388
diff
changeset
|
195 |
SELECT gid, count(uid) AS accounts, |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
196 |
(SELECT count(DISTINCT address) |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
197 |
FROM alias |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
198 |
WHERE alias.gid = domain_data.gid) AS aliases, |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
199 |
(SELECT count(gid) |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
200 |
FROM relocated |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
201 |
WHERE relocated.gid = domain_data.gid) AS relocated, |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
202 |
(SELECT count(gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
203 |
FROM domain_name |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
204 |
WHERE domain_name.gid = domain_data.gid |
391
8217ddd5220d
pgsql: Updated view vmm_domain_info. No longer select data we have already.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
388
diff
changeset
|
205 |
AND NOT domain_name.is_primary) AS aliasdomains |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
206 |
FROM domain_data |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
207 |
LEFT JOIN domain_name USING (gid) |
9
e3d3dbeb5b84
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
8
diff
changeset
|
208 |
LEFT JOIN users USING (gid) |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
209 |
WHERE domain_name.is_primary |
391
8217ddd5220d
pgsql: Updated view vmm_domain_info. No longer select data we have already.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
388
diff
changeset
|
210 |
GROUP BY gid; |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
211 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
212 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
213 |
CREATE LANGUAGE plpgsql; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
214 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
215 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
216 |
CREATE OR REPLACE FUNCTION domain_primary_trigger() RETURNS TRIGGER AS $$ |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
217 |
DECLARE |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
218 |
primary_count bigint; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
219 |
BEGIN |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
220 |
SELECT INTO primary_count count(gid) + NEW.is_primary::integer |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
221 |
FROM domain_name |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
222 |
WHERE domain_name.gid = NEW.gid |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
223 |
AND is_primary; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
224 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
225 |
IF (primary_count > 1) THEN |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
226 |
RAISE EXCEPTION 'There can only be one domain marked as primary.'; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
227 |
END IF; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
228 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
229 |
RETURN NEW; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
230 |
END; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
231 |
$$ LANGUAGE plpgsql STABLE; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
232 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
233 |
|
63
9b627307f4a8
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
42
diff
changeset
|
234 |
CREATE TRIGGER primary_count_ins BEFORE INSERT ON domain_name |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
235 |
FOR EACH ROW EXECUTE PROCEDURE domain_primary_trigger(); |
63
9b627307f4a8
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
42
diff
changeset
|
236 |
|
9b627307f4a8
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
42
diff
changeset
|
237 |
CREATE TRIGGER primary_count_upd AFTER UPDATE ON domain_name |
9b627307f4a8
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
42
diff
changeset
|
238 |
FOR EACH ROW EXECUTE PROCEDURE domain_primary_trigger(); |
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
239 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
240 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
241 |
CREATE OR REPLACE FUNCTION merge_userquota() RETURNS TRIGGER AS $$ |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
242 |
BEGIN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
243 |
IF NEW.messages < 0 OR NEW.messages IS NULL THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
244 |
IF NEW.messages IS NULL THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
245 |
NEW.messages = 0; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
246 |
ELSE |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
247 |
NEW.messages = -NEW.messages; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
248 |
END IF; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
249 |
RETURN NEW; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
250 |
END IF; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
251 |
LOOP |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
252 |
UPDATE userquota |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
253 |
SET bytes = bytes + NEW.bytes, messages = messages + NEW.messages |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
254 |
WHERE uid = NEW.uid; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
255 |
IF found THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
256 |
RETURN NULL; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
257 |
END IF; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
258 |
BEGIN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
259 |
IF NEW.messages = 0 THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
260 |
INSERT INTO userquota VALUES (NEW.uid, NEW.bytes, NULL); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
261 |
ELSE |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
262 |
INSERT INTO userquota VALUES (NEW.uid, NEW.bytes, -NEW.messages); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
263 |
END IF; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
264 |
RETURN NULL; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
265 |
EXCEPTION |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
266 |
WHEN unique_violation THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
267 |
-- do nothing, and loop to try the UPDATE again |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
268 |
WHEN foreign_key_violation THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
269 |
-- break the loop: a non matching uid means no such user |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
270 |
RETURN NULL; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
271 |
END; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
272 |
END LOOP; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
273 |
END; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
274 |
$$ LANGUAGE plpgsql; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
275 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
276 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
277 |
CREATE TRIGGER mergeuserquota BEFORE INSERT ON userquota |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
278 |
FOR EACH ROW EXECUTE PROCEDURE merge_userquota(); |