Skip to content

Latest commit

 

History

History
1406 lines (1273 loc) · 27.4 KB

db.rst

File metadata and controls

1406 lines (1273 loc) · 27.4 KB

CMC DB Structure




admins

(This table stores the names and tokens of administrators)

Idx Field Name Data Type Description
PK id int4 Autogenerated unique ID value
  name varchar Full name of administrator, free-type field
  username varchar Unique username of administrator, free-type field
  authentication varchar Authentification token
  enabled bool Account state: enabled or disabled, binary field
  permission_all bool Superuser permissions: true or false, binary field
  permission_messaging bool Messaging privilege: true or false, binary field
Constraints & Indexes
Name On field
admins_pkey id
admins_username_key username



announcements

(This table stores the announcements made during the contests)

Idx Field Name Data Type Description
PK id int4 Autogenerated unique ID value
  timestamp timestamp Timestamp of the announcement
  subject varchar Subject of the announcement
  text varchar Text of the body of the announcement
FK contest_id int4 Unique ID of the contest announcement pretains to, child of contests table
FK admin_id int4 Unique ID of the administrator publishing the announcement, child of admins table
Constraints & Indexes
Name On field
announcement_pkey id



attachments

(This table stores the attachements for the tasks)

Idx Field Name Data Type Description
PK id int4 Autogenerated unique ID value
FK task_id int4 Unique indentifier of the task this attachment belongs to, child of tasks
  filename varchar Name of the attachement, free-type field
  digest varchar Stores the hash (digest of hash function) of the attachement
Constraints & Indexes
Name On field
attachments_pkey id
attachments_task_id_filename_key task_id + filename



contests

(This table stores the contests)

Idx Field Name Data Type Description
PK id int4 Autogenerated unique ID value
  name varchar Name of the contest
  description varchar Description of the contest
  allowed_localizations varchar Lists localization available within this contest
  languages varchar Lists programming languages allowed within this contest
  submissions_download_allowed bool Can submission be downloaded: true or false, binary field
  allow_questions bool Are questions allowed: true or false, binary field
  allow_user_tests bool Are user tests allowed: true or false, binary field
  block_hidden_participations bool Are hidden participations allowed: true or false, binary field
  allow_password_authentication bool Are authentication via password allowed: true or false, binary field
  ip_restriction bool Is IP restriction enforced: true or false, binary field
  ip_autologin bool Is autologin by IP allowed: true or false, binary field
  token_mode token_mode This field is of special datatype and regulates whether this contest uses tokens. Can be "disabled", "infinite" or "finite"
  token_max_number int4 If token mode is set to "finite", this field sets the maximum number of tokens available in this contest, otherwise left empty
  token_min_interval interval If token mode is used and the token has been used, this field defines the minimum amount of time contestant has to wait before another token can be used
  token_gen_initial int4 If token mode is set to "finite", this field defines the amount of tokens available when contest begins. Counter decrements by 1 each time contestant uses a token
  token_gen_number int4 If token mode is set to "finite", this field defines the amount of tokens added every selected interval to the contestants.
  token_gen_interval interval If token mode is set to "finite", this field defines the interval between new tokens generation.
  token_gen_max int4 If token mode is set to "finite", this field defines the maximum amount of tokens that can be generated in this contest
  start timestamp Timestamp of the contest start
  stop timestamp Timestamp of the contest finish
  analysis_enabled bool Is contest analysis enabled: true or false, binary field
  analysis_start timestamp Timestamp of the analysis start
  analysis_stop timestamp Timestamp of the analysis finish
  timezone varchar Timezone of the contest
  per_user_time interval If set to non-null value, this fields regulate the amount of time contestant can participate in the timeframe of the contest
  max_submission_number int4 This field sets the maximum number of submission each participant can make per contest
  max_user_test_number int4 This field sets the maximum number of tests each participant can make
  min_submission_interval interval The minimum amount of time, in seconds, the user is required to wait after a submission has been submitted before next one can be submitted
  min_user_test_interval interval The minimum amount of time, in seconds, the user is required to wait after a test has been submitted before next one can be submitted
  score_precision int4 This field sets the precision of the score showed to participants in amount of decimals in float number
Constraints & Indexes
Name On field
contests_pkey id
contests_name_key name

Table datasets

(This table stores the datasets) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK task_id int4 Unique indentifier of the task this dataset belongs to, child of tasks description varchar Description of the dataset autojudge bool Is auto judging enabled for this dataset: true or false, binary field time_limit float8 If used, sets the time limit on dataset availability memory_limit int8 Limits the size of the dataset task_type varchar Stores the type of task this dataset is associated with task_type_parameters jsonb Stores a json of task parameters score_type varchar Type of scoring associated with this dataset score_type_parameters jsonb Stores a json of scoring parameters Indexes datasets_id_task_id_key ON id + task_id datasets_pkey ON id datasets_task_id_description_key ON task_id + description

Table evaluations

(This table stores the evaluations) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK submission_id int4 Unique ID of the submission, child of submissions FK dataset_id int4 Unique ID of the dataset, child of datasets FK testcase_id int4 Unique ID of the testcase, child of testcases outcome varchar Stores the outcome of the evaluation text varchar The text of the evaluation, expanding on outcome execution_time float8 The amount of CPU time it took to execute the subject of evaluation execution_wall_clock_time float8 The total amount of time it took to execute the subject of evaluation execution_memory int8 The amount of memory used during evaluation evaluation_shard int4 The amount of shards used evaluation_sandbox varchar Sandbox used in evaluation Indexes evaluations_pkey ON id evaluations_submission_id_dataset_id_testcase_id_key ON submission_id + dataset_id + testcase_id

Table executables

(This table stores the executables submitted by contestants) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK submission_id int4 Unique ID of the submission, child of submissions FK dataset_id int4 Unique ID of the dataset, child of datasets filename varchar Filename of the executable digest varchar Stores the hash (digest of hash function) of the executable Indexes executables_pkey ON id executables_submission_id_dataset_id_filename_key ON submission_id + dataset_id + filename

Table files

(This table stores the files submitted by contestants) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK submission_id int4 Unique ID of the submission, child of submissions filename varchar Name of the file digest varchar Stores the hash (digest of hash function) of the file Indexes files_pkey ON id files_submission_id_filename_key ON submission_id + filename

Table fsobjects

(This table stores the log of object-related events) Idx

Field Name Data Type Description PK digest varchar Stores the hash (digest of hash function) of the event loid oid Unique object ID description varchar Decription of the event Indexes fsobjects_pkey ON digest

Table managers

(This table stores the so-called managers, grading scripts for allowed languages per dataset) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK dataset_id int4 Unique ID of the dataset, child of datasets filename varchar The filename of the manager digest varchar Stores the hash (digest of hash function) of the manager Indexes managers_pkey ON id managers_dataset_id_filename_key ON dataset_id + filename

Table messages

(This table stores direct messages sent to contestants) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value timestamp timestamp Timestamp of when the message was sent subject varchar Subject of the message text varchar Text of the message FK participation_id int4 Unique ID of the participant to whom the message was sent, child of participants FK admin_id int4 Unique ID of the administrator who sent the message, child of administrators. Can be null Indexes messages_pkey ON id

Table participations

(This table stores the access of users to the contests) Idx

Field Name Data Type Description PK id int4 A unique ID of each participation ip varchar If access is login based, then the IP or mask is stored here starting_time varchar the start time of the access delay_time varchar If participation of contestant was delayed, the delay time is stored here extra_time varchar an extension time for the particular user password varchar a password (plan or encrypted) for accessing a contests hidden bool if '1', then the scores of the user will not be shown in Ranking unrestricted bool If '1', then participation is not restricted FK contest_id int4 Unique ID of the contest, child of contests FK user_id int4 Unique ID of the user, child of users FK team_id int4 Unique ID of the user's team, child of teams Indexes participations_pkey ON id participations_contest_id_user_id_key ON contest_id + user_id

Table print jobs

(This table stores the print jobs log) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK participation_id int4 Unique participation ID, child of participations timestamp timestamp Timestamp of the print job filename varchar Printed filename digest varchar Stores the hash (digest of hash function) of the printjob done bool Is the print job done: true or false, binary field status varchar Status of the job Indexes printjobs_pkey ON id

Table questions

(This table stores requests and questions from the participants during the contest) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value question_timestamp timestamp Precise timestamp of the request subject varchar Subject of the request or question text varchar The body of the request or question reply_timestamp timestamp Timestamp of the reply by staff ignored bool Is question ignored: true or false, binary field reply_subject varchar The subject of the reply to the question or request reply_text varchar The body of the reply FK participation_id int4 Unique ID of participant, child of participations FK admin_id int4 Unique ID of administrator, child of admins. Can be null Indexes questions_pkey ON id

Table statements

(This table stores task statements in different languages) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK task_id int4 Unique task ID, child of tasks language varchar Language code of the statement digest varchar Stores the hash (digest of hash function) of the statement Indexes statements_pkey ON id statements_task_id_language_key ON task_id + language

Table submission_results

(This table stores the result of each submission) Idx

Field Name Data Type Description FK | PK id int4 Unique ID of the submission, child of submissions, part of Primary Key FK | PK dataset_id int4 Unique ID of the dataset, child of datasets, part of Primary Key compilation_outcome compilation_outcome Stores the compilation outcome in a special datatype: can be ok or fail compilation_text varchar Stores the status of the compilation compilation_tries int4 Stores the compilation tries count compilation_stdout varchar Stores the output of the compilator compilation_stderr varchar Stores the error produced by the compilator compilation_time float8 The amount of CPU time spent on compilation compilation_wall_clock_time float8 Total amount of time spent on compilation compilation_memory int8 The amount of memory used by the compilator compilation_shard int4 Shards split by the compilator compilation_sandbox varchar Stores the location of the sandbox used in compilation evaluation_outcome evaluation_outcome Stores the outcome of the evaluation in a special datatype, can be either OK or null evaluation_tries int4 Amount of [additional] evaluation tries score float8 Score of the evaluation score_details jsonb Stores json object with scoring details public_score float8 Score of the evaluation, available to public public_score_details jsonb Stores json object with public scoring details ranking_score_details varchar Details and ranks Indexes submission_results_pkey ON submission_id + dataset_id

Table submissions

(This table stores submission details) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK participation_id int4 Unique ID of the participation, child of participations FK task_id int4 Unique ID of the task, child of tasks timestamp timestamp Precise timestamp of the submission language varchar Programming language of the submission comment varchar Free type field for comments official bool Is the submission official: true or false, binary field Indexes submissions_pkey ON participation_id

Table tasks

(This table stores tasks information) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value num int4 Order of this task in the contest FK contest_id int4 Unique ID of the contest this task belongs to, child of contests name varchar Name of the task title varchar Title of the task submission_format varchar Format, in which submissions will be accepted primary_statements varchar Associated primary statement, if available. Most likely to be referring to the language of the statement token_mode token_mode This field is of special datatype and regulates whether this task uses tokens. Can be "disabled", "infinite" or "finite" token_max_number int4 If token mode is set to "finite", this field sets the maximum number of tokens available for this task, otherwise left empty token_min_interval interval If token mode is used and the token has been used, this field defines the minimum amount of time contestant has to wait before another token can be used token_gen_initial int4 If token mode is set to "finite", this field defines the amount of tokens available when task begins. Counter decrements by 1 each time contestant uses a token token_gen_number int4 If token mode is set to "finite", this field defines the amount of tokens added every selected interval to the contestants. token_gen_interval interval If token mode is set to "finite", this field defines the interval between new tokens generation. token_gen_max int4 If token mode is set to "finite", this field defines the maximum amount of tokens that can be generated for this task max_submission_number int4 This field sets the maximum number of submission each participant can make per task max_user_test_number int4 This field sets the maximum number of tests each participant can make per task min_submission_interval interval The minimum amount of time, in seconds, the user is required to wait after a submission has been submitted before next one can be submitted min_user_test_interval interval The minimum amount of time, in seconds, the user is required to wait after a test has been submitted before next one can be submitted feedback_level varchar Level of feedback for this task score_precision int4 Scoring precision for this task score_mode score_mode This field is of special datatype and regulates how this task will be scored FK dataset_id int4 Unique ID of the dataset used for this task, child of datasets Indexes tasks_pkey ON id tasks_contest_id_name_key ON contest_id + name tasks_contest_id_num_key ON contest_id + num tasks_name_key ON name

Table teams

(Stores the list of teams, like 'AZE', 'FRA' and 'USA') Idx

Field Name Data Type Description PK id int4 The unique ID of the team code varchar A short description of the team. In IOI, it's a country code in ISO 3166-1 alpha-3 code format name varchar Full description of the team. In IOI, the name of the country. Indexes teams_pkey ON id teams_code_key ON code

Table testcases

(Stores the details of testcases) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK dataset_id int4 Unique ID of the dataset used for this testcase, child of datasets codename varchar Codename given to the testcase public bool Is this testcase public: true or false, binary field input varchar Input for the testcase output varchar Output of the testcase Indexes testcases_pkey ON id testcases_dataset_id_codename_key ON dataset_id + codename

Table tokens

(Stores tokens given or used if token_mode is enabled) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK submission_id int4 Unique value of the submission that used this token, child of submissions timestamp timestamp Timestamp of consumption Indexes tokens_pkey ON id tokens_submission_id_key ON submission_id

Table users

(This table stores the list of all entered users. Adding a user to CMS does not guarantee the access to the contests. To grant an access to the contests, user shall exists in a participation table) Idx

Field Name Data Type Description PK id int4 A unique ID of the user first_name varchar First name last_name varchar Last name username varchar Login name of the user. In IOI, it's usually associated with the country code. Example: 'AZE1', 'ITA3' and 'SWE2'. Caution: avoid using "-" sign in logins, like 'SGP-4'. password varchar A password of the user is stored here. It can be plain or encrypted text email varchar Email of the user timezone varchar Timezone of the user preferred_languages varchar Indexes users_pkey ON id users_username_key ON username

Table user test executables

(This table stores the test executables information ) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK user_test_id int4 Unique ID of the user test, child of user_tests FK dataset_id int4 Unique ID of the dataset used, child of datasets filename varchar Filename of the test executable digest varchar Stores the hash (digest of hash function) of the test executable Indexes user_test_executables_pkey ON id user_test_executables_user_test_id_dataset_id_filename_key ON user_test_id + dataset_id + filename

Table user test files

(This table stores the test files information ) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK user_test_id int4 Unique ID of the user test, child of user_tests filename varchar The name of the test file digest varchar Stores the hash (digest of hash function) of the test file Indexes user_test_files_pkey ON id user_test_files_user_test_id_filename_key ON user_test_id + filename

Table user test managers

(This table stores the so-called test managers, grading scripts for allowed languages per dataset ) Idx

Field Name Data Type Description PK id int4 Autogenerated unique ID value FK user_test_id int4 Unique ID of the user test, child of user_tests filename varchar Name of the file containing test manager digest varchar Stores the hash (digest of hash function) of the test manager file Indexes user_test_managers_pkey ON id user_test_managers_user_test_id_filename_key ON user_test_id + filename

Table user test results

(This table stores the results of test evaluations ) Idx

Field Name Data Type Description PK | FK user_test_id int4 Unique ID of the user test, child of user_tests, part of the primary key PK | FK dataset_id int4 Unique ID of the dataset, child of datasets, part of the primary key output varchar Output of the test compilation_outcome varchar Compilation outcome of the test compilation compilation_text varchar Text of the compilation compilation_tries int4 Amount of times compilation was attempted compilation_stdout varchar Output of the compiler compilation_stderr varchar Error output of the compiler compilation_time float8 Amount of CPU time used during compilation compilation_wall_clock_time float8 Total amount of time used during compilation compilation_memory int8 Amount of memory used during compilation compilation_shard int4 Shards used during compilation compilation_sandbox varchar Address of the sandbox used for compilation evaluation_outcome varchar The outcome of the test evaluation evaluation_text varchar Text of the evaluation evaluation_tries int4 Amount of tries evaluation was attempted execution_time float8 Amount of CPU time used during execution execution_wall_clock_time float8 Total amount of time used during execution execution_memory int8 Amount of memory used during execution evaluation_shard int4 Amount of shards evaluation_sandbox varchar Address of the sandbox used for evaluation Indexes user_test_results_pkey ON user_test_id + dataset_id

Table user tests

(This table stores the user tests details ) Idx

Field Name Data Type Description PK id int4 FK participation_id int4 Unique ID of the participation, child of participations FK task_id int4 Unique ID of the task, child of tasks timestamp timestamp Precise timestamp of the test language varchar Programming language used input varchar Input for the test Indexes ix_user_tests_participation_id ON participation_id user_tests_pkey ON id