-
Notifications
You must be signed in to change notification settings - Fork 461
/
Copy pathconstraints.sql
200 lines (153 loc) · 5.32 KB
/
constraints.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
alter table platform
add unique(name);
alter table app
add unique(name);
alter table app_version
add unique apvp (appid, platformid, version_num, plan_class);
alter table user
add unique(email_addr),
add unique(authenticator),
add index ind_tid (teamid),
add unique(name),
add index user_tot (total_credit desc),
-- db_dump.C
add index user_avg (expavg_credit desc),
-- db_dump.C
add index user_email_time (email_addr_change_time);
alter table team
add unique(name),
add fulltext index team_name_desc(name, description),
add index team_avg (expavg_credit desc),
-- db_dump.C
add index team_tot (total_credit desc),
-- db_dump.C
add index team_userid (userid);
alter table workunit
add unique(name),
-- not currently used but good invariant
add index wu_val (appid, need_validate),
-- validator
add index wu_timeout (transition_time),
-- transitioner
add index wu_filedel (file_delete_state),
-- file_deleter, db_purge
add index wu_assim (appid, assimilate_state);
-- assimilator
alter table result
add unique(name),
-- the scheduler looks up results by name
add index res_wuid (workunitid),
-- transitioner
-- NOTE res_wu_user may suffice, could try dropping this one
add index ind_res_st (server_state, priority),
-- feeder
add index res_app_state(appid, server_state),
-- to get count of unsent results for given app (e.g. in work generator)
add index res_filedel (file_delete_state),
-- file_deleter
add index res_userid_id(userid, id desc),
-- html_user/results.php
add index res_userid_val(userid, validate_state),
-- to show pending credit
add index res_hostid_id (hostid, id desc),
-- html_user/results.php
add index res_wu_user (workunitid, userid);
-- scheduler (avoid sending mult results of same WU to one user)
alter table msg_from_host
add index message_handled (handled),
-- for message handler
add index message_hostid(hostid);
-- for delete account
alter table msg_to_host
add index msg_to_host(hostid, handled);
-- for scheduler
alter table host
add index host_userid_cpid (userid, host_cpid),
-- html_user/host_user.php
-- sched/handle_request.cpp for user with many hosts
add index host_domain_name (domain_name),
-- sched/handle_request.cpp for user with many hosts
add index host_avg (expavg_credit desc),
-- db_dump.C
add index host_tot (total_credit desc);
-- db_dump.C
alter table profile
add fulltext index profile_reponse(response1, response2),
add index pro_uotd (uotd_time desc),
add unique profile_userid(userid);
alter table subscriptions
add unique sub_unique(userid, threadid);
alter table category
add unique cat1(name, is_helpdesk);
alter table forum
add unique pct (parent_type, category, title);
alter table thread
add fulltext index thread_title(title);
alter table post
add index post_user (user),
add index post_thread (thread),
add fulltext index post_content(content);
alter table credited_job
add index credited_job_user (userid),
add index credited_job_wu (workunitid),
add unique credited_job_user_wu (userid, workunitid);
alter table team_delta
add index team_delta_teamid (teamid, timestamp),
add index team_delta_userid (userid);
-- for delete account
alter table team_admin
add unique (teamid, userid);
alter table friend
add unique friend_u (user_src, user_dest);
alter table notify
add unique notify_un (userid, type, opaque);
alter table host_app_version
add unique hap(host_id, app_version_id);
alter table assignment
add index asgn_target(target_type, target_id);
alter table job_file
add unique jf_name(name);
alter table badge_user
add unique (user_id, badge_id);
alter table badge_team
add unique (team_id, badge_id);
alter table credit_user
add index cu_total(appid, total),
add index cu_avg(appid, expavg);
alter table credit_team
add index ct_total(appid, total),
add index ct_avg(appid, expavg);
alter table token
add index token_userid(userid);
alter table user_deleted
add index user_deleted_create(create_time);
-- for delete account
alter table host_deleted
add index host_deleted_create(create_time);
-- for delete account
alter table donation_paypal
-- for delete account
add index donation_paypal_userid(userid);
alter table banishment_vote
add index banishment_vote_userid(userid);
-- for delete account
alter table post_ratings
add index post_ratings_user(user);
-- for delete account
alter table sent_email
add index sent_email_userid(userid);
-- for delete account
alter table private_messages
add index userid(userid);
alter table consent
add index userid_ctid_timestamp(userid, consent_type_id, consent_time),
add index consent_timestamp(consent_time),
add index flag_ctid(consent_flag, consent_type_id);
alter table consent
add foreign key(consent_type_id)
references consent_type(id)
on update cascade
on delete restrict;
-- explicit delete restrict on this foreign key
alter table consent_type
add index consent_name(shortname);