boinc/db/schema.sql

449 lines
16 KiB
SQL

/* If you add/change anything, update
boinc_db.C,h
and if needed:
py/Boinc/
database.py
html/
inc/
host.inc (host)
ops/
db_ops.inc
user/
create_account_action.php (user)
team_create_action.php (team)
sched/
db_dump.C (host, user, team)
db_purge.C (workunit, result)
*/
/* Fields are documented in boinc_db.h */
/* Do not replace this with an automatically generated schema */
/* type is specified as InnoDB for most tables.
Supposedly this gives better performance.
The others (post, thread, profile) are myISAM
because it supports fulltext index
*/
/* fields ending with id (but not _id) are treated specially
by the Python code (db_base.py)
*/
create table platform (
id integer not null auto_increment,
create_time integer not null,
name varchar(254) not null,
user_friendly_name varchar(254) not null,
deprecated integer not null,
primary key (id)
) type=InnoDB;
create table core_version (
id integer not null auto_increment,
create_time integer not null,
version_num integer not null,
platformid integer not null,
xml_doc blob,
message varchar(254),
deprecated smallint not null,
primary key (id)
) type=InnoDB;
create table app (
id integer not null auto_increment,
create_time integer not null,
name varchar(254) not null,
min_version integer not null,
deprecated smallint not null,
user_friendly_name varchar(254) not null,
homogeneous_redundancy smallint not null,
weight double not null,
beta smallint not null,
primary key (id)
) type=InnoDB;
create table app_version (
id integer not null auto_increment,
create_time integer not null,
appid integer not null,
version_num integer not null,
platformid integer not null,
xml_doc blob,
min_core_version integer not null,
max_core_version integer not null,
deprecated integer not null,
primary key (id)
) type=InnoDB;
create table user (
id integer not null auto_increment,
create_time integer not null,
email_addr varchar(254) not null,
name varchar(254),
authenticator varchar(254),
country varchar(254),
postal_code varchar(254),
total_credit double not null,
expavg_credit double not null,
expavg_time double not null,
global_prefs blob,
project_prefs blob,
teamid integer not null,
venue varchar(254) not null,
url varchar(254),
send_email smallint not null,
show_hosts smallint not null,
posts smallint not null,
seti_id integer not null,
seti_nresults integer not null,
seti_last_result_time integer not null,
seti_total_cpu double not null,
signature varchar(254),
has_profile smallint not null,
cross_project_id varchar(254) not null,
passwd_hash varchar(254) not null,
email_validated smallint not null,
donated smallint not null,
primary key (id)
) type=InnoDB;
create table team (
id integer not null auto_increment,
create_time integer not null,
userid integer not null,
name varchar(254) not null,
name_lc varchar(254),
url varchar(254),
type integer not null,
name_html varchar(254),
description blob,
nusers integer not null, /* temp */
country varchar(254),
total_credit double not null, /* temp */
expavg_credit double not null, /* temp */
expavg_time double not null,
seti_id integer not null,
ping_user integer unsigned not null default 0,
ping_time integer unsigned not null default 0,
primary key (id)
) type=InnoDB;
create table host (
id integer not null auto_increment,
create_time integer not null,
userid integer not null,
rpc_seqno integer not null,
rpc_time integer not null,
total_credit double not null,
expavg_credit double not null,
expavg_time double not null,
timezone integer not null,
domain_name varchar(254),
serialnum varchar(254),
last_ip_addr varchar(254),
nsame_ip_addr integer not null,
on_frac double not null,
connected_frac double not null,
active_frac double not null,
cpu_efficiency double not null,
duration_correction_factor double not null,
p_ncpus integer not null,
p_vendor varchar(254),
p_model varchar(254),
p_fpops double not null,
p_iops double not null,
p_membw double not null,
os_name varchar(254),
os_version varchar(254),
m_nbytes double not null,
m_cache double not null,
m_swap double not null,
d_total double not null,
d_free double not null,
d_boinc_used_total double not null,
d_boinc_used_project double not null,
d_boinc_max double not null,
n_bwup double not null,
n_bwdown double not null,
credit_per_cpu_sec double not null,
venue varchar(254) not null,
nresults_today integer not null,
avg_turnaround double not null,
host_cpid varchar(254),
external_ip_addr varchar(254),
max_results_day integer not null,
primary key (id)
) type=InnoDB;
/*
* Only information needed by the server or other backend components
* is broken out into separate fields.
* Other info, i.e. that needed by the client (files, etc.)
* is stored in the XML doc
*/
create table workunit (
id integer not null auto_increment,
create_time integer not null,
appid integer not null,
name varchar(254) not null,
xml_doc blob,
batch integer not null,
rsc_fpops_est double not null,
rsc_fpops_bound double not null,
rsc_memory_bound double not null,
rsc_disk_bound double not null,
need_validate smallint not null,
canonical_resultid integer not null,
canonical_credit double not null,
transition_time integer not null,
delay_bound integer not null,
error_mask integer not null,
file_delete_state integer not null,
assimilate_state integer not null,
hr_class integer not null,
opaque double not null,
min_quorum integer not null,
target_nresults integer not null,
max_error_results integer not null,
max_total_results integer not null,
max_success_results integer not null,
result_template_file varchar(63) not null,
priority integer not null,
mod_time timestamp,
primary key (id)
) type=InnoDB;
create table result (
id integer not null auto_increment,
create_time integer not null,
workunitid integer not null,
server_state integer not null,
outcome integer not null,
client_state integer not null,
hostid integer not null,
userid integer not null,
report_deadline integer not null,
sent_time integer not null,
received_time integer not null,
name varchar(254) not null,
cpu_time double not null,
xml_doc_in blob,
xml_doc_out blob,
stderr_out blob,
batch integer not null,
file_delete_state integer not null,
validate_state integer not null,
claimed_credit double not null,
granted_credit double not null,
opaque double not null,
random integer not null,
app_version_num integer not null,
appid integer not null,
exit_status integer not null,
teamid integer not null,
priority integer not null,
mod_time timestamp,
primary key (id)
) type=InnoDB;
create table msg_from_host (
id integer not null auto_increment,
create_time integer not null,
hostid integer not null,
variety varchar(254) not null,
handled smallint not null,
xml mediumtext,
primary key (id)
) type=InnoDB;
create table msg_to_host (
id integer not null auto_increment,
create_time integer not null,
hostid integer not null,
variety varchar(254) not null,
handled smallint not null,
xml mediumtext,
primary key (id)
) type=InnoDB;
create table workseq (
id integer not null auto_increment,
create_time integer not null,
state integer not null,
hostid integer not null,
wuid_last_done integer not null,
wuid_last_sent integer not null,
workseqid_master integer not null,
primary key (id)
) type=InnoDB;
-- EVERYTHING FROM HERE ON IS USED ONLY FROM PHP,
-- SO NOT IN BOINC_DB.H ETC.
-- represents a language (so can have message boards in different languages)
--
create table lang (
id integer not null auto_increment,
name varchar(254) not null,
charset varchar(254) not null,
primary key (id)
) type=InnoDB;
-- user profile (description, pictures)
--
create table profile (
userid integer not null,
language varchar(254),
response1 text,
response2 text,
has_picture smallint not null,
recommend integer not null,
reject integer not null,
posts integer not null,
uotd_time integer,
verification integer not null,
-- UOD screening status: -1 denied, 0 unrated, 1 approved
primary key (userid)
);
-- message board category
-- help desk is a group of categories that are handled separately
--
create table category (
id integer not null auto_increment,
orderID integer not null,
-- order in which to display
lang integer not null,
name varchar(254) binary,
is_helpdesk smallint not null,
primary key (id)
) type=InnoDB;
-- message board topic
--
create table forum (
id integer not null auto_increment,
category integer not null,
orderID integer not null,
title varchar(254) not null,
description varchar(254) not null,
timestamp integer not null,
-- time of last new or modified thread or post
threads integer not null,
posts integer not null,
rate_min_expavg_credit integer not null,
rate_min_total_credit integer not null,
post_min_interval integer not null,
post_min_expavg_credit integer not null,
post_min_total_credit integer not null,
primary key (id)
) type=InnoDB;
-- threads in a topic (or questions)
--
create table thread (
id integer not null auto_increment,
forum integer not null,
owner integer not null,
status integer not null,
title varchar(254) not null,
timestamp integer not null,
-- time of last new or modified post
views integer not null,
-- number of times this has been viewed
replies integer not null,
-- number of postings in thread
activity double not null,
-- for questions: number of askers / time since asked
-- (set periodically by update_forum_activity.php)
sufferers integer not null,
-- in help desk: # people who indicated they had same problem
score double not null,
votes integer not null,
create_time integer not null,
-- when this record was created
hidden integer not null,
-- nonzero if hidden by moderators
sticky tinyint unsigned not null default 0,
primary key (id)
);
-- postings in a thread (or answers)
-- Each thread has an initial post
--
create table post (
id integer not null auto_increment,
thread integer not null,
user integer not null,
timestamp integer not null,
-- create time
content text not null,
modified integer not null,
-- when last modified
parent_post integer not null,
-- post that was replied to, if any
score double not null,
votes integer not null,
signature tinyint(1) unsigned not null default 0,
hidden integer not null,
-- nonzero if hidden by moderators
primary key (id)
);
-- subscription to a thread
--
create table subscriptions (
userid integer not null,
threadid integer not null,
notified_time integer not null default 0
) type=InnoDB;
create table forum_preferences (
userid integer not null default 0,
signature varchar(254) not null default '',
posts integer not null default 0,
last_post integer not null,
avatar varchar(254) not null default '',
hide_avatars tinyint(1) unsigned not null default 0,
forum_sorting integer not null,
thread_sorting integer not null,
no_signature_by_default tinyint(1) unsigned not null default 1,
images_as_links tinyint(1) unsigned not null default 0,
link_popup tinyint(1) unsigned not null default 0,
mark_as_read_timestamp integer not null default 0,
special_user char(12) not null default '0',
jump_to_unread tinyint(1) unsigned not null default 1,
hide_signatures tinyint(1) unsigned not null default 0,
rated_posts varchar(254) not null,
low_rating_threshold integer not null default -25,
high_rating_threshold integer not null default 5,
minimum_wrap_postcount INT DEFAULT 100 NOT NULL,
display_wrap_postcount INT DEFAULT 75 NOT NULL,
ignorelist varchar(254) not null,
ignore_sticky_posts tinyint(1) unsigned not null,
banished_until integer not null default 0,
primary key (userid)
) type=MyISAM;
create table forum_logging (
userid integer not null default 0,
threadid integer not null default 0,
timestamp integer not null default 0,
primary key (userid,threadid)
) TYPE=MyISAM;
create table post_ratings (
post integer not null,
user integer not null,
rating tinyint not null,
primary key(post, user)
) TYPE=MyISAM;