1 | /* $Id: pgsql_objects.sql,v 1.18 2009/06/23 21:51:22 sbajic Exp $ */ |
---|
2 | |
---|
3 | CREATE TABLE dspam_token_data ( |
---|
4 | uid INT, |
---|
5 | token BIGINT, |
---|
6 | spam_hits INT, |
---|
7 | innocent_hits INT, |
---|
8 | last_hit DATE, |
---|
9 | UNIQUE (uid, token) |
---|
10 | ) WITHOUT OIDS; |
---|
11 | |
---|
12 | CREATE TABLE dspam_signature_data ( |
---|
13 | uid INT, |
---|
14 | signature varchar(128), |
---|
15 | data BYTEA, |
---|
16 | length INT, |
---|
17 | created_on DATE, |
---|
18 | UNIQUE (uid, signature) |
---|
19 | ) WITHOUT OIDS; |
---|
20 | |
---|
21 | CREATE TABLE dspam_stats ( |
---|
22 | uid INT PRIMARY KEY, |
---|
23 | spam_learned INT, |
---|
24 | innocent_learned INT, |
---|
25 | spam_misclassified INT, |
---|
26 | innocent_misclassified INT, |
---|
27 | spam_corpusfed INT, |
---|
28 | innocent_corpusfed INT, |
---|
29 | spam_classified INT, |
---|
30 | innocent_classified int |
---|
31 | ) WITHOUT OIDS; |
---|
32 | |
---|
33 | CREATE TABLE dspam_preferences ( |
---|
34 | uid INT, |
---|
35 | preference VARCHAR(128), |
---|
36 | value VARCHAR(128), |
---|
37 | UNIQUE (uid, preference) |
---|
38 | ) WITHOUT OIDS; |
---|
39 | |
---|
40 | create function lookup_tokens(integer,bigint[]) |
---|
41 | returns setof dspam_token_data |
---|
42 | language plpgsql stable |
---|
43 | as ' |
---|
44 | declare |
---|
45 | v_rec record; |
---|
46 | begin |
---|
47 | for v_rec in select * from dspam_token_data |
---|
48 | where uid=$1 |
---|
49 | and token in (select $2[i] |
---|
50 | from generate_series(array_lower($2,1),array_upper($2,1)) s(i)) |
---|
51 | loop |
---|
52 | return next v_rec; |
---|
53 | end loop; |
---|
54 | return; |
---|
55 | end;'; |
---|
56 | |
---|
57 | create function lookup_tokens(integer,integer,bigint[]) |
---|
58 | returns setof dspam_token_data |
---|
59 | language plpgsql stable |
---|
60 | as ' |
---|
61 | declare |
---|
62 | v_rec record; |
---|
63 | begin |
---|
64 | for v_rec in select * from dspam_token_data |
---|
65 | where uid=$1 |
---|
66 | and token in (select $3[i] |
---|
67 | from generate_series(array_lower($3,1),array_upper($3,1)) s(i)) |
---|
68 | loop |
---|
69 | return next v_rec; |
---|
70 | end loop; |
---|
71 | for v_rec in select * from dspam_token_data |
---|
72 | where uid=$2 |
---|
73 | and token in (select $3[i] |
---|
74 | from generate_series(array_lower($3,1),array_upper($3,1)) s(i)) |
---|
75 | loop |
---|
76 | return next v_rec; |
---|
77 | end loop; |
---|
78 | return; |
---|
79 | end;'; |
---|
80 | |
---|
81 | /* For much better performance |
---|
82 | * see http://archives.postgresql.org/pgsql-performance/2004-11/msg00416.php |
---|
83 | * and http://archives.postgresql.org/pgsql-performance/2004-11/msg00417.php |
---|
84 | * for details |
---|
85 | */ |
---|
86 | ALTER TABLE dspam_token_data ALTER token SET STATISTICS 200; |
---|
87 | ALTER TABLE dspam_signature_data ALTER signature SET STATISTICS 200; |
---|
88 | ALTER TABLE dspam_token_data ALTER innocent_hits SET STATISTICS 200; |
---|
89 | ALTER TABLE dspam_token_data ALTER spam_hits SET STATISTICS 200; |
---|
90 | ANALYZE; |
---|