sql/schéma.sql
author František Kučera <franta-hg@frantovo.cz>
Sun May 10 18:18:04 2009 +0200 (2009-05-10)
changeset 14 c830b05699ba
parent 12 38aadc7c6386
child 15 ad391f838b9d
permissions -rw-r--r--
Normalizace tabulky aliasů – zvláštní sloupeček pro jméno a doménu v cílové e-mailové adrese.
V pohledu používaném Postfixem se nic nemění – ten vypadá pořád stejně
franta-hg@0
     1
--
franta-hg@0
     2
-- PostgreSQL database dump
franta-hg@0
     3
--
franta-hg@0
     4
franta-hg@14
     5
-- Started on 2009-05-10 17:40:57 CEST
franta-hg@0
     6
franta-hg@0
     7
SET client_encoding = 'UTF8';
franta-hg@0
     8
SET standard_conforming_strings = off;
franta-hg@0
     9
SET check_function_bodies = false;
franta-hg@0
    10
SET client_min_messages = warning;
franta-hg@0
    11
SET escape_string_warning = off;
franta-hg@0
    12
franta-hg@0
    13
--
franta-hg@12
    14
-- TOC entry 8 (class 2615 OID 16387)
franta-hg@0
    15
-- Name: posta; Type: SCHEMA; Schema: -; Owner: -
franta-hg@0
    16
--
franta-hg@0
    17
franta-hg@0
    18
CREATE SCHEMA posta;
franta-hg@0
    19
franta-hg@0
    20
franta-hg@0
    21
SET search_path = posta, pg_catalog;
franta-hg@0
    22
franta-hg@0
    23
--
franta-hg@12
    24
-- TOC entry 55 (class 1255 OID 16694)
franta-hg@12
    25
-- Dependencies: 364 8
franta-hg@0
    26
-- Name: zmen_heslo(character varying, character varying, character varying, character varying); Type: FUNCTION; Schema: posta; Owner: -
franta-hg@0
    27
--
franta-hg@0
    28
franta-hg@12
    29
CREATE FUNCTION zmen_heslo(login character varying, domena character varying, stare_heslo character varying, nove_heslo character varying) RETURNS text
franta-hg@12
    30
    AS $_$DECLARE pocet integer;
franta-hg@12
    31
BEGIN
franta-hg@12
    32
UPDATE uzivatel
franta-hg@0
    33
 SET heslo = md5($4)
franta-hg@0
    34
 WHERE 	login = $1
franta-hg@0
    35
	AND domena = $2
franta-hg@12
    36
	AND heslo = md5($3);
franta-hg@12
    37
	GET DIAGNOSTICS pocet = ROW_COUNT;
franta-hg@12
    38
	IF pocet = 1 THEN
franta-hg@12
    39
		RETURN 'Změna hesla pro ' || $1 || '@' || $2 || ' proběhla úspěšně.';
franta-hg@12
    40
	ELSE
franta-hg@12
    41
		RAISE EXCEPTION 'Nesprávné heslo, nebo uživatel % neexistuje', $1 || '@' || $2;
franta-hg@12
    42
	END IF;
franta-hg@12
    43
END;
franta-hg@12
    44
	$_$
franta-hg@12
    45
    LANGUAGE plpgsql SECURITY DEFINER;
franta-hg@0
    46
franta-hg@0
    47
franta-hg@0
    48
--
franta-hg@12
    49
-- TOC entry 1835 (class 0 OID 0)
franta-hg@12
    50
-- Dependencies: 55
franta-hg@0
    51
-- Name: FUNCTION zmen_heslo(login character varying, domena character varying, stare_heslo character varying, nove_heslo character varying); Type: COMMENT; Schema: posta; Owner: -
franta-hg@0
    52
--
franta-hg@0
    53
franta-hg@0
    54
COMMENT ON FUNCTION zmen_heslo(login character varying, domena character varying, stare_heslo character varying, nove_heslo character varying) IS 'Změní heslo uživatele.';
franta-hg@0
    55
franta-hg@0
    56
franta-hg@0
    57
SET default_tablespace = '';
franta-hg@0
    58
franta-hg@0
    59
SET default_with_oids = false;
franta-hg@0
    60
franta-hg@0
    61
--
franta-hg@12
    62
-- TOC entry 1549 (class 1259 OID 16550)
franta-hg@12
    63
-- Dependencies: 8
franta-hg@0
    64
-- Name: alias; Type: TABLE; Schema: posta; Owner: -; Tablespace: 
franta-hg@0
    65
--
franta-hg@0
    66
franta-hg@0
    67
CREATE TABLE alias (
franta-hg@14
    68
    zdroj_jmeno character varying(255) NOT NULL,
franta-hg@14
    69
    zdroj_domena character varying(255) NOT NULL,
franta-hg@14
    70
    cil_jmeno character varying(255) NOT NULL,
franta-hg@14
    71
    cil_domena character varying(255)
franta-hg@0
    72
);
franta-hg@0
    73
franta-hg@0
    74
franta-hg@0
    75
--
franta-hg@14
    76
-- TOC entry 1837 (class 0 OID 0)
franta-hg@14
    77
-- Dependencies: 1549
franta-hg@14
    78
-- Name: COLUMN alias.zdroj_jmeno; Type: COMMENT; Schema: posta; Owner: -
franta-hg@14
    79
--
franta-hg@14
    80
franta-hg@14
    81
COMMENT ON COLUMN alias.zdroj_jmeno IS 'Část zdrojové adresy před zavináčem';
franta-hg@14
    82
franta-hg@14
    83
franta-hg@14
    84
--
franta-hg@14
    85
-- TOC entry 1838 (class 0 OID 0)
franta-hg@14
    86
-- Dependencies: 1549
franta-hg@14
    87
-- Name: COLUMN alias.zdroj_domena; Type: COMMENT; Schema: posta; Owner: -
franta-hg@14
    88
--
franta-hg@14
    89
franta-hg@14
    90
COMMENT ON COLUMN alias.zdroj_domena IS 'Část zdrojové adresy za zavináčem';
franta-hg@14
    91
franta-hg@14
    92
franta-hg@14
    93
--
franta-hg@14
    94
-- TOC entry 1839 (class 0 OID 0)
franta-hg@14
    95
-- Dependencies: 1549
franta-hg@14
    96
-- Name: COLUMN alias.cil_jmeno; Type: COMMENT; Schema: posta; Owner: -
franta-hg@14
    97
--
franta-hg@14
    98
franta-hg@14
    99
COMMENT ON COLUMN alias.cil_jmeno IS 'Část cílové adresy před zavináčem
franta-hg@14
   100
(sem zprávu předáme)';
franta-hg@14
   101
franta-hg@14
   102
franta-hg@14
   103
--
franta-hg@14
   104
-- TOC entry 1840 (class 0 OID 0)
franta-hg@14
   105
-- Dependencies: 1549
franta-hg@14
   106
-- Name: COLUMN alias.cil_domena; Type: COMMENT; Schema: posta; Owner: -
franta-hg@14
   107
--
franta-hg@14
   108
franta-hg@14
   109
COMMENT ON COLUMN alias.cil_domena IS 'Část cílové adresy za zavináčem
franta-hg@14
   110
(sem zprávu předáme)';
franta-hg@14
   111
franta-hg@14
   112
franta-hg@14
   113
--
franta-hg@12
   114
-- TOC entry 1536 (class 1259 OID 16396)
franta-hg@12
   115
-- Dependencies: 8
franta-hg@0
   116
-- Name: domena; Type: TABLE; Schema: posta; Owner: -; Tablespace: 
franta-hg@0
   117
--
franta-hg@0
   118
franta-hg@0
   119
CREATE TABLE domena (
franta-hg@0
   120
    domena character varying(255) NOT NULL
franta-hg@0
   121
);
franta-hg@0
   122
franta-hg@0
   123
franta-hg@0
   124
--
franta-hg@12
   125
-- TOC entry 1537 (class 1259 OID 16409)
franta-hg@12
   126
-- Dependencies: 8
franta-hg@0
   127
-- Name: uzivatel; Type: TABLE; Schema: posta; Owner: -; Tablespace: 
franta-hg@0
   128
--
franta-hg@0
   129
franta-hg@0
   130
CREATE TABLE uzivatel (
franta-hg@0
   131
    login character varying(255) NOT NULL,
franta-hg@0
   132
    heslo character varying(512),
franta-hg@0
   133
    domena character varying(255) NOT NULL
franta-hg@0
   134
);
franta-hg@0
   135
franta-hg@0
   136
franta-hg@0
   137
--
franta-hg@14
   138
-- TOC entry 1550 (class 1259 OID 16602)
franta-hg@14
   139
-- Dependencies: 1629 8
franta-hg@0
   140
-- Name: dovecot_heslo; Type: VIEW; Schema: posta; Owner: -
franta-hg@0
   141
--
franta-hg@0
   142
franta-hg@0
   143
CREATE VIEW dovecot_heslo AS
franta-hg@0
   144
    SELECT (((uzivatel.login)::text || '@'::text) || (uzivatel.domena)::text) AS "user", uzivatel.heslo AS password, uzivatel.login, uzivatel.domena FROM uzivatel;
franta-hg@0
   145
franta-hg@0
   146
franta-hg@0
   147
--
franta-hg@14
   148
-- TOC entry 1552 (class 1259 OID 16631)
franta-hg@14
   149
-- Dependencies: 1631 8
franta-hg@0
   150
-- Name: dovecot_uzivatel; Type: VIEW; Schema: posta; Owner: -
franta-hg@0
   151
--
franta-hg@0
   152
franta-hg@0
   153
CREATE VIEW dovecot_uzivatel AS
franta-hg@0
   154
    SELECT 5000 AS uid, 5000 AS gid, ((('/var/mail/virtualniposta/'::text || (uzivatel.domena)::text) || '/'::text) || (uzivatel.login)::text) AS home, (((('maildir:/var/mail/virtualniposta/'::text || (uzivatel.domena)::text) || '/'::text) || (uzivatel.login)::text) || '/Maildir'::text) AS mail, 'maildir:storage=524288'::text AS quota, uzivatel.login, uzivatel.domena FROM uzivatel;
franta-hg@0
   155
franta-hg@0
   156
franta-hg@0
   157
--
franta-hg@14
   158
-- TOC entry 1553 (class 1259 OID 16695)
franta-hg@14
   159
-- Dependencies: 1632 8
franta-hg@0
   160
-- Name: postfix_alias; Type: VIEW; Schema: posta; Owner: -
franta-hg@0
   161
--
franta-hg@0
   162
franta-hg@0
   163
CREATE VIEW postfix_alias AS
franta-hg@14
   164
    SELECT (((alias.zdroj_jmeno)::text || '@'::text) || (alias.zdroj_domena)::text) AS zdroj, (((alias.cil_jmeno)::text || '@'::text) || (alias.cil_domena)::text) AS cil FROM alias;
franta-hg@0
   165
franta-hg@0
   166
franta-hg@0
   167
--
franta-hg@14
   168
-- TOC entry 1551 (class 1259 OID 16607)
franta-hg@14
   169
-- Dependencies: 1630 8
franta-hg@0
   170
-- Name: postfix_uzivatel; Type: VIEW; Schema: posta; Owner: -
franta-hg@0
   171
--
franta-hg@0
   172
franta-hg@0
   173
CREATE VIEW postfix_uzivatel AS
franta-hg@0
   174
    SELECT ((((uzivatel.domena)::text || '/'::text) || (uzivatel.login)::text) || '/Maildir/'::text) AS cesta, uzivatel.login, uzivatel.domena FROM uzivatel;
franta-hg@0
   175
franta-hg@0
   176
franta-hg@0
   177
--
franta-hg@12
   178
-- TOC entry 1829 (class 2606 OID 16557)
franta-hg@12
   179
-- Dependencies: 1549 1549 1549 1549
franta-hg@0
   180
-- Name: aliasy_pk; Type: CONSTRAINT; Schema: posta; Owner: -; Tablespace: 
franta-hg@0
   181
--
franta-hg@0
   182
franta-hg@0
   183
ALTER TABLE ONLY alias
franta-hg@14
   184
    ADD CONSTRAINT aliasy_pk PRIMARY KEY (zdroj_jmeno, zdroj_domena, cil_jmeno);
franta-hg@0
   185
franta-hg@0
   186
franta-hg@0
   187
--
franta-hg@12
   188
-- TOC entry 1825 (class 2606 OID 16400)
franta-hg@12
   189
-- Dependencies: 1536 1536
franta-hg@0
   190
-- Name: domena_pk; Type: CONSTRAINT; Schema: posta; Owner: -; Tablespace: 
franta-hg@0
   191
--
franta-hg@0
   192
franta-hg@0
   193
ALTER TABLE ONLY domena
franta-hg@0
   194
    ADD CONSTRAINT domena_pk PRIMARY KEY (domena);
franta-hg@0
   195
franta-hg@0
   196
franta-hg@0
   197
--
franta-hg@12
   198
-- TOC entry 1827 (class 2606 OID 16416)
franta-hg@12
   199
-- Dependencies: 1537 1537 1537
franta-hg@0
   200
-- Name: uzivatel_pk; Type: CONSTRAINT; Schema: posta; Owner: -; Tablespace: 
franta-hg@0
   201
--
franta-hg@0
   202
franta-hg@0
   203
ALTER TABLE ONLY uzivatel
franta-hg@0
   204
    ADD CONSTRAINT uzivatel_pk PRIMARY KEY (login, domena);
franta-hg@0
   205
franta-hg@0
   206
franta-hg@0
   207
--
franta-hg@12
   208
-- TOC entry 1831 (class 2606 OID 16558)
franta-hg@14
   209
-- Dependencies: 1536 1549 1824
franta-hg@0
   210
-- Name: alias_domena_fk; Type: FK CONSTRAINT; Schema: posta; Owner: -
franta-hg@0
   211
--
franta-hg@0
   212
franta-hg@0
   213
ALTER TABLE ONLY alias
franta-hg@14
   214
    ADD CONSTRAINT alias_domena_fk FOREIGN KEY (zdroj_domena) REFERENCES domena(domena);
franta-hg@0
   215
franta-hg@0
   216
franta-hg@0
   217
--
franta-hg@12
   218
-- TOC entry 1830 (class 2606 OID 16417)
franta-hg@14
   219
-- Dependencies: 1536 1824 1537
franta-hg@0
   220
-- Name: uzivatel_domena_fk; Type: FK CONSTRAINT; Schema: posta; Owner: -
franta-hg@0
   221
--
franta-hg@0
   222
franta-hg@0
   223
ALTER TABLE ONLY uzivatel
franta-hg@0
   224
    ADD CONSTRAINT uzivatel_domena_fk FOREIGN KEY (domena) REFERENCES domena(domena);
franta-hg@0
   225
franta-hg@0
   226
franta-hg@0
   227
--
franta-hg@12
   228
-- TOC entry 1834 (class 0 OID 0)
franta-hg@12
   229
-- Dependencies: 8
franta-hg@0
   230
-- Name: posta; Type: ACL; Schema: -; Owner: -
franta-hg@0
   231
--
franta-hg@0
   232
franta-hg@0
   233
REVOKE ALL ON SCHEMA posta FROM PUBLIC;
franta-hg@0
   234
REVOKE ALL ON SCHEMA posta FROM posta;
franta-hg@0
   235
GRANT ALL ON SCHEMA posta TO posta;
franta-hg@0
   236
GRANT USAGE ON SCHEMA posta TO posta_cteni;
franta-hg@12
   237
GRANT USAGE ON SCHEMA posta TO posta_zmena_hesla;
franta-hg@0
   238
franta-hg@0
   239
franta-hg@0
   240
--
franta-hg@12
   241
-- TOC entry 1836 (class 0 OID 0)
franta-hg@12
   242
-- Dependencies: 55
franta-hg@12
   243
-- Name: zmen_heslo(character varying, character varying, character varying, character varying); Type: ACL; Schema: posta; Owner: -
franta-hg@12
   244
--
franta-hg@12
   245
franta-hg@12
   246
REVOKE ALL ON FUNCTION zmen_heslo(login character varying, domena character varying, stare_heslo character varying, nove_heslo character varying) FROM PUBLIC;
franta-hg@12
   247
REVOKE ALL ON FUNCTION zmen_heslo(login character varying, domena character varying, stare_heslo character varying, nove_heslo character varying) FROM posta;
franta-hg@12
   248
GRANT ALL ON FUNCTION zmen_heslo(login character varying, domena character varying, stare_heslo character varying, nove_heslo character varying) TO posta;
franta-hg@12
   249
GRANT ALL ON FUNCTION zmen_heslo(login character varying, domena character varying, stare_heslo character varying, nove_heslo character varying) TO PUBLIC;
franta-hg@12
   250
GRANT ALL ON FUNCTION zmen_heslo(login character varying, domena character varying, stare_heslo character varying, nove_heslo character varying) TO posta_zmena_hesla;
franta-hg@12
   251
franta-hg@12
   252
franta-hg@12
   253
--
franta-hg@14
   254
-- TOC entry 1841 (class 0 OID 0)
franta-hg@12
   255
-- Dependencies: 1549
franta-hg@0
   256
-- Name: alias; Type: ACL; Schema: posta; Owner: -
franta-hg@0
   257
--
franta-hg@0
   258
franta-hg@0
   259
REVOKE ALL ON TABLE alias FROM PUBLIC;
franta-hg@0
   260
REVOKE ALL ON TABLE alias FROM posta;
franta-hg@0
   261
GRANT ALL ON TABLE alias TO posta;
franta-hg@0
   262
franta-hg@0
   263
franta-hg@0
   264
--
franta-hg@14
   265
-- TOC entry 1842 (class 0 OID 0)
franta-hg@12
   266
-- Dependencies: 1536
franta-hg@0
   267
-- Name: domena; Type: ACL; Schema: posta; Owner: -
franta-hg@0
   268
--
franta-hg@0
   269
franta-hg@0
   270
REVOKE ALL ON TABLE domena FROM PUBLIC;
franta-hg@0
   271
REVOKE ALL ON TABLE domena FROM posta;
franta-hg@0
   272
GRANT ALL ON TABLE domena TO posta;
franta-hg@0
   273
GRANT SELECT ON TABLE domena TO posta_cteni;
franta-hg@0
   274
franta-hg@0
   275
franta-hg@0
   276
--
franta-hg@14
   277
-- TOC entry 1843 (class 0 OID 0)
franta-hg@12
   278
-- Dependencies: 1537
franta-hg@0
   279
-- Name: uzivatel; Type: ACL; Schema: posta; Owner: -
franta-hg@0
   280
--
franta-hg@0
   281
franta-hg@0
   282
REVOKE ALL ON TABLE uzivatel FROM PUBLIC;
franta-hg@0
   283
REVOKE ALL ON TABLE uzivatel FROM posta;
franta-hg@0
   284
GRANT ALL ON TABLE uzivatel TO posta;
franta-hg@0
   285
GRANT SELECT ON TABLE uzivatel TO posta_cteni;
franta-hg@0
   286
franta-hg@0
   287
franta-hg@0
   288
--
franta-hg@14
   289
-- TOC entry 1844 (class 0 OID 0)
franta-hg@14
   290
-- Dependencies: 1550
franta-hg@0
   291
-- Name: dovecot_heslo; Type: ACL; Schema: posta; Owner: -
franta-hg@0
   292
--
franta-hg@0
   293
franta-hg@0
   294
REVOKE ALL ON TABLE dovecot_heslo FROM PUBLIC;
franta-hg@0
   295
REVOKE ALL ON TABLE dovecot_heslo FROM posta;
franta-hg@0
   296
GRANT ALL ON TABLE dovecot_heslo TO posta;
franta-hg@0
   297
GRANT SELECT ON TABLE dovecot_heslo TO posta_cteni;
franta-hg@0
   298
franta-hg@0
   299
franta-hg@0
   300
--
franta-hg@14
   301
-- TOC entry 1845 (class 0 OID 0)
franta-hg@14
   302
-- Dependencies: 1552
franta-hg@0
   303
-- Name: dovecot_uzivatel; Type: ACL; Schema: posta; Owner: -
franta-hg@0
   304
--
franta-hg@0
   305
franta-hg@0
   306
REVOKE ALL ON TABLE dovecot_uzivatel FROM PUBLIC;
franta-hg@0
   307
REVOKE ALL ON TABLE dovecot_uzivatel FROM posta;
franta-hg@0
   308
GRANT ALL ON TABLE dovecot_uzivatel TO posta;
franta-hg@0
   309
GRANT SELECT ON TABLE dovecot_uzivatel TO posta_cteni;
franta-hg@0
   310
franta-hg@0
   311
franta-hg@0
   312
--
franta-hg@14
   313
-- TOC entry 1846 (class 0 OID 0)
franta-hg@14
   314
-- Dependencies: 1553
franta-hg@0
   315
-- Name: postfix_alias; Type: ACL; Schema: posta; Owner: -
franta-hg@0
   316
--
franta-hg@0
   317
franta-hg@0
   318
REVOKE ALL ON TABLE postfix_alias FROM PUBLIC;
franta-hg@0
   319
REVOKE ALL ON TABLE postfix_alias FROM posta;
franta-hg@0
   320
GRANT ALL ON TABLE postfix_alias TO posta;
franta-hg@0
   321
GRANT SELECT ON TABLE postfix_alias TO posta_cteni;
franta-hg@0
   322
franta-hg@0
   323
franta-hg@0
   324
--
franta-hg@14
   325
-- TOC entry 1847 (class 0 OID 0)
franta-hg@14
   326
-- Dependencies: 1551
franta-hg@0
   327
-- Name: postfix_uzivatel; Type: ACL; Schema: posta; Owner: -
franta-hg@0
   328
--
franta-hg@0
   329
franta-hg@0
   330
REVOKE ALL ON TABLE postfix_uzivatel FROM PUBLIC;
franta-hg@0
   331
REVOKE ALL ON TABLE postfix_uzivatel FROM posta;
franta-hg@0
   332
GRANT ALL ON TABLE postfix_uzivatel TO posta;
franta-hg@0
   333
GRANT SELECT ON TABLE postfix_uzivatel TO posta_cteni;
franta-hg@0
   334
franta-hg@0
   335
franta-hg@14
   336
-- Completed on 2009-05-10 17:41:05 CEST
franta-hg@0
   337
franta-hg@0
   338
--
franta-hg@0
   339
-- PostgreSQL database dump complete
franta-hg@0
   340
--
franta-hg@0
   341