);
CREATE TABLE contests (
- id TEXT PRIMARY KEY,
- name TEXT NOT NULL,
- start INT NOT NULL,
- stop INT NOT NULL,
- owner TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
- CONSTRAINT positive_duration CHECK (stop > start)
+ id TEXT PRIMARY KEY,
+ name TEXT NOT NULL,
+ editorial TEXT,
+ description TEXT,
+ start INT NOT NULL,
+ stop INT NOT NULL,
+ owner TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
+ CONSTRAINT positive_duration CHECK (stop > start)
);
CREATE TABLE contest_status (
format TEXT NOT NULL,
private BOOLEAN NOT NULL DEFAULT FALSE,
problem TEXT NOT NULL REFERENCES problems ON DELETE CASCADE,
+ reference INT,
result INT,
result_text TEXT,
results TEXT,
PRIMARY KEY (contest, problem, owner)
);
+CREATE TABLE limits (
+ problem TEXT NOT NULL REFERENCES problems ON DELETE CASCADE,
+ format TEXT NOT NULL,
+ timeout REAL NOT NULL,
+ PRIMARY KEY (problem, format)
+);
+
CREATE TABLE table_comments (
table_name TEXT NOT NULL PRIMARY KEY,
comment_text TEXT NOT NULL
INSERT INTO table_comments VALUES ('jobs', 'List of jobs');
INSERT INTO table_comments VALUES ('problem_status', 'List of (problem, user, result)');
INSERT INTO table_comments VALUES ('opens', 'List of (contest, problem, user, time when user opened problem)');
+INSERT INTO table_comments VALUES ('limits', 'Time limit overrides for certain problem/format pairs');
INSERT INTO column_comments VALUES ('users', 'passphrase', 'RFC2307-encoded passphrase');
INSERT INTO column_comments VALUES ('users', 'name', 'Full name of user');
INSERT INTO column_comments VALUES ('contests', 'start', 'Unix time when contest starts');
INSERT INTO column_comments VALUES ('contests', 'stop', 'Unix time when contest ends');
+INSERT INTO column_comments VALUES ('contests', 'editorial', 'HTML fragment placed before the editorial');
+INSERT INTO column_comments VALUES ('contests', 'description', 'HTML fragment placed on contest page');
INSERT INTO column_comments VALUES ('problems', 'author', 'Full name(s) of problem author(s)/problemsetter(s)/tester(s)/etc');
INSERT INTO column_comments VALUES ('problems', 'writer', 'Full name(s) of statement writer(s) (DEPRECATED)');
INSERT INTO column_comments VALUES ('jobs', 'errors', 'Compiler errors');
INSERT INTO column_comments VALUES ('jobs', 'extension', 'File extension of submitted program, without a leading dot');
INSERT INTO column_comments VALUES ('jobs', 'format', 'Format (programming language) of submitted program');
+INSERT INTO column_comments VALUES ('jobs', 'reference', 'If not null, this is a reference solution that should get this result. For example, set reference=0 on jobs that should be accepted, reference=3 on jobs that should get TLE, etc');
INSERT INTO column_comments VALUES ('jobs', 'result', 'Job result (integer constant from Gruntmaster::Daemon::Constants)');
INSERT INTO column_comments VALUES ('jobs', 'result_text', 'Job result (human-readable text)');
INSERT INTO column_comments VALUES ('jobs', 'results', 'Per-test results (JSON array of hashes with keys id (test number, counting from 1), result (integer constant from Gruntmaster::Daemon::Constants), result_text (human-readable text), time (execution time in decimal seconds))');