source: npl/mailserver/dspam/dspam-3.10.2/src/tools.pgsql_drv/pgsql_objects.sql

Last change on this file was c5c522c, checked in by Edwin Eefting <edwin@datux.nl>, 8 years ago

initial commit, transferred from cleaned syn3 svn tree

  • Property mode set to 100644
File size: 2.2 KB
Line 
1/* $Id: pgsql_objects.sql,v 1.18 2009/06/23 21:51:22 sbajic Exp $ */
2
3CREATE 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
12CREATE 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
21CREATE 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
33CREATE TABLE dspam_preferences (
34  uid INT,
35  preference VARCHAR(128),
36  value VARCHAR(128),
37  UNIQUE (uid, preference)
38) WITHOUT OIDS;
39
40create function lookup_tokens(integer,bigint[])
41  returns setof dspam_token_data
42  language plpgsql stable
43  as '
44declare
45  v_rec record;
46begin
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;
55end;';
56
57create function lookup_tokens(integer,integer,bigint[])
58  returns setof dspam_token_data
59  language plpgsql stable
60  as '
61declare
62  v_rec record;
63begin
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;
79end;';
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 */
86ALTER TABLE dspam_token_data ALTER token SET STATISTICS 200;
87ALTER TABLE dspam_signature_data ALTER signature SET STATISTICS 200;
88ALTER TABLE dspam_token_data ALTER innocent_hits SET STATISTICS 200;
89ALTER TABLE dspam_token_data ALTER spam_hits SET STATISTICS 200;
90ANALYZE;
Note: See TracBrowser for help on using the repository browser.