1CREATE TABLE /*_*/user (
2  user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
3  user_name varchar(255) binary NOT NULL default '',
4  user_real_name varchar(255) binary NOT NULL default '',
5  user_password tinyblob NOT NULL,
6  user_newpassword tinyblob NOT NULL,
7  user_newpass_time binary(14),
8  user_email tinytext NOT NULL,
9  user_touched binary(14) NOT NULL default '',
10  user_token binary(32) NOT NULL default '',
11  user_email_authenticated binary(14),
12  user_email_token binary(32),
13  user_email_token_expires binary(14),
14  user_registration binary(14),
15  user_editcount int,
16  user_password_expires varbinary(14) DEFAULT NULL
17
18) /*$wgDBTableOptions*/;
19
20CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user (user_name);
21CREATE INDEX /*i*/user_email_token ON /*_*/user (user_email_token);
22CREATE INDEX /*i*/user_email ON /*_*/user (user_email(50));
23CREATE TABLE /*_*/user_groups (
24  ug_user int unsigned NOT NULL default 0,
25  ug_group varbinary(255) NOT NULL default ''
26) /*$wgDBTableOptions*/;
27
28CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group);
29CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group);
30CREATE TABLE /*_*/user_former_groups (
31  ufg_user int unsigned NOT NULL default 0,
32  ufg_group varbinary(255) NOT NULL default ''
33) /*$wgDBTableOptions*/;
34
35CREATE UNIQUE INDEX /*i*/ufg_user_group ON /*_*/user_former_groups (ufg_user,ufg_group);
36CREATE TABLE /*_*/user_newtalk (
37  user_id int unsigned NOT NULL default 0,
38  user_ip varbinary(40) NOT NULL default '',
39  user_last_timestamp varbinary(14) NULL default NULL
40) /*$wgDBTableOptions*/;
41CREATE INDEX /*i*/un_user_id ON /*_*/user_newtalk (user_id);
42CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip);
43CREATE TABLE /*_*/user_properties (
44  up_user int NOT NULL,
45  up_property varbinary(255) NOT NULL,
46  up_value blob
47) /*$wgDBTableOptions*/;
48
49CREATE UNIQUE INDEX /*i*/user_properties_user_property ON /*_*/user_properties (up_user,up_property);
50CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property);
51CREATE TABLE /*_*/bot_passwords (
52  bp_user int NOT NULL,
53  bp_app_id varbinary(32) NOT NULL,
54  bp_password tinyblob NOT NULL,
55  bp_token binary(32) NOT NULL default '',
56  bp_restrictions blob NOT NULL,
57  bp_grants blob NOT NULL,
58
59  PRIMARY KEY ( bp_user, bp_app_id )
60) /*$wgDBTableOptions*/;
61CREATE TABLE /*_*/page (
62  page_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
63  page_namespace int NOT NULL,
64  page_title varchar(255) binary NOT NULL,
65  page_restrictions tinyblob NOT NULL,
66  page_is_redirect tinyint unsigned NOT NULL default 0,
67  page_is_new tinyint unsigned NOT NULL default 0,
68  page_random real unsigned NOT NULL,
69  page_touched binary(14) NOT NULL default '',
70  page_links_updated varbinary(14) NULL default NULL,
71  page_latest int unsigned NOT NULL,
72  page_len int unsigned NOT NULL,
73  page_content_model varbinary(32) DEFAULT NULL,
74  page_lang varbinary(35) DEFAULT NULL
75) /*$wgDBTableOptions*/;
76
77CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title);
78CREATE INDEX /*i*/page_random ON /*_*/page (page_random);
79CREATE INDEX /*i*/page_len ON /*_*/page (page_len);
80CREATE INDEX /*i*/page_redirect_namespace_len ON /*_*/page (page_is_redirect, page_namespace, page_len);
81CREATE TABLE /*_*/revision (
82  rev_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
83  rev_page int unsigned NOT NULL,
84  rev_text_id int unsigned NOT NULL,
85  rev_comment varbinary(767) NOT NULL,
86  rev_user int unsigned NOT NULL default 0,
87  rev_user_text varchar(255) binary NOT NULL default '',
88  rev_timestamp binary(14) NOT NULL default '',
89  rev_minor_edit tinyint unsigned NOT NULL default 0,
90  rev_deleted tinyint unsigned NOT NULL default 0,
91  rev_len int unsigned,
92  rev_parent_id int unsigned default NULL,
93  rev_sha1 varbinary(32) NOT NULL default '',
94  rev_content_model varbinary(32) DEFAULT NULL,
95  rev_content_format varbinary(64) DEFAULT NULL
96
97) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
98
99CREATE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
100CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp);
101CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp);
102CREATE INDEX /*i*/user_timestamp ON /*_*/revision (rev_user,rev_timestamp);
103CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp);
104CREATE INDEX /*i*/page_user_timestamp ON /*_*/revision (rev_page,rev_user,rev_timestamp);
105CREATE TABLE /*_*/text (
106  old_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
107  old_text mediumblob NOT NULL,
108  old_flags tinyblob NOT NULL
109) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
110CREATE TABLE /*_*/archive (
111  ar_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
112  ar_namespace int NOT NULL default 0,
113  ar_title varchar(255) binary NOT NULL default '',
114  ar_text mediumblob NOT NULL,
115  ar_comment varbinary(767) NOT NULL,
116  ar_user int unsigned NOT NULL default 0,
117  ar_user_text varchar(255) binary NOT NULL,
118  ar_timestamp binary(14) NOT NULL default '',
119  ar_minor_edit tinyint NOT NULL default 0,
120  ar_flags tinyblob NOT NULL,
121  ar_rev_id int unsigned,
122  ar_text_id int unsigned,
123  ar_deleted tinyint unsigned NOT NULL default 0,
124  ar_len int unsigned,
125  ar_page_id int unsigned,
126  ar_parent_id int unsigned default NULL,
127  ar_sha1 varbinary(32) NOT NULL default '',
128  ar_content_model varbinary(32) DEFAULT NULL,
129  ar_content_format varbinary(64) DEFAULT NULL
130) /*$wgDBTableOptions*/;
131
132CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);
133CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);
134CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
135CREATE TABLE /*_*/pagelinks (
136  pl_from int unsigned NOT NULL default 0,
137  pl_from_namespace int NOT NULL default 0,
138  pl_namespace int NOT NULL default 0,
139  pl_title varchar(255) binary NOT NULL default ''
140) /*$wgDBTableOptions*/;
141
142CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
143CREATE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
144CREATE INDEX /*i*/pl_backlinks_namespace ON /*_*/pagelinks (pl_from_namespace,pl_namespace,pl_title,pl_from);
145CREATE TABLE /*_*/templatelinks (
146  tl_from int unsigned NOT NULL default 0,
147  tl_from_namespace int NOT NULL default 0,
148  tl_namespace int NOT NULL default 0,
149  tl_title varchar(255) binary NOT NULL default ''
150) /*$wgDBTableOptions*/;
151
152CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
153CREATE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
154CREATE INDEX /*i*/tl_backlinks_namespace ON /*_*/templatelinks (tl_from_namespace,tl_namespace,tl_title,tl_from);
155CREATE TABLE /*_*/imagelinks (
156  il_from int unsigned NOT NULL default 0,
157  il_from_namespace int NOT NULL default 0,
158  il_to varchar(255) binary NOT NULL default ''
159) /*$wgDBTableOptions*/;
160
161CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
162CREATE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
163CREATE INDEX /*i*/il_backlinks_namespace ON /*_*/imagelinks (il_from_namespace,il_to,il_from);
164CREATE TABLE /*_*/categorylinks (
165  cl_from int unsigned NOT NULL default 0,
166  cl_to varchar(255) binary NOT NULL default '',
167  cl_sortkey varbinary(230) NOT NULL default '',
168  cl_sortkey_prefix varchar(255) binary NOT NULL default '',
169  cl_timestamp timestamp NOT NULL,
170  cl_collation varbinary(32) NOT NULL default '',
171  cl_type ENUM('page', 'subcat', 'file') NOT NULL default 'page'
172) /*$wgDBTableOptions*/;
173
174CREATE UNIQUE INDEX /*i*/cl_from ON /*_*/categorylinks (cl_from,cl_to);
175CREATE INDEX /*i*/cl_sortkey ON /*_*/categorylinks (cl_to,cl_type,cl_sortkey,cl_from);
176CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp);
177CREATE INDEX /*i*/cl_collation_ext ON /*_*/categorylinks (cl_collation, cl_to, cl_type, cl_from);
178CREATE TABLE /*_*/category (
179  cat_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
180  cat_title varchar(255) binary NOT NULL,
181  cat_pages int signed NOT NULL default 0,
182  cat_subcats int signed NOT NULL default 0,
183  cat_files int signed NOT NULL default 0
184) /*$wgDBTableOptions*/;
185
186CREATE UNIQUE INDEX /*i*/cat_title ON /*_*/category (cat_title);
187CREATE INDEX /*i*/cat_pages ON /*_*/category (cat_pages);
188CREATE TABLE /*_*/externallinks (
189  el_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
190  el_from int unsigned NOT NULL default 0,
191  el_to blob NOT NULL,
192  el_index blob NOT NULL
193) /*$wgDBTableOptions*/;
194
195CREATE INDEX /*i*/el_from ON /*_*/externallinks (el_from, el_to(40));
196CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from);
197CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60));
198CREATE TABLE /*_*/langlinks (
199  ll_from int unsigned NOT NULL default 0,
200  ll_lang varbinary(20) NOT NULL default '',
201  ll_title varchar(255) binary NOT NULL default ''
202) /*$wgDBTableOptions*/;
203
204CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang);
205CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title);
206CREATE TABLE /*_*/iwlinks (
207  iwl_from int unsigned NOT NULL default 0,
208  iwl_prefix varbinary(20) NOT NULL default '',
209  iwl_title varchar(255) binary NOT NULL default ''
210) /*$wgDBTableOptions*/;
211
212CREATE UNIQUE INDEX /*i*/iwl_from ON /*_*/iwlinks (iwl_from, iwl_prefix, iwl_title);
213CREATE INDEX /*i*/iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_title, iwl_from);
214CREATE INDEX /*i*/iwl_prefix_from_title ON /*_*/iwlinks (iwl_prefix, iwl_from, iwl_title);
215CREATE TABLE /*_*/site_stats (
216  ss_row_id int unsigned NOT NULL,
217  ss_total_edits bigint unsigned default 0,
218  ss_good_articles bigint unsigned default 0,
219  ss_total_pages bigint default '-1',
220  ss_users bigint default '-1',
221  ss_active_users bigint default '-1',
222  ss_images int default 0
223) /*$wgDBTableOptions*/;
224CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats (ss_row_id);
225CREATE TABLE /*_*/ipblocks (
226  ipb_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
227  ipb_address tinyblob NOT NULL,
228  ipb_user int unsigned NOT NULL default 0,
229  ipb_by int unsigned NOT NULL default 0,
230  ipb_by_text varchar(255) binary NOT NULL default '',
231  ipb_reason varbinary(767) NOT NULL,
232  ipb_timestamp binary(14) NOT NULL default '',
233  ipb_auto bool NOT NULL default 0,
234  ipb_anon_only bool NOT NULL default 0,
235  ipb_create_account bool NOT NULL default 1,
236  ipb_enable_autoblock bool NOT NULL default '1',
237  ipb_expiry varbinary(14) NOT NULL default '',
238  ipb_range_start tinyblob NOT NULL,
239  ipb_range_end tinyblob NOT NULL,
240  ipb_deleted bool NOT NULL default 0,
241  ipb_block_email bool NOT NULL default 0,
242  ipb_allow_usertalk bool NOT NULL default 0,
243  ipb_parent_block_id int default NULL
244
245) /*$wgDBTableOptions*/;
246CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only);
247
248CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks (ipb_user);
249CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8));
250CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks (ipb_timestamp);
251CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks (ipb_expiry);
252CREATE INDEX /*i*/ipb_parent_block_id ON /*_*/ipblocks (ipb_parent_block_id);
253CREATE TABLE /*_*/image (
254  img_name varchar(255) binary NOT NULL default '' PRIMARY KEY,
255  img_size int unsigned NOT NULL default 0,
256  img_width int NOT NULL default 0,
257  img_height int NOT NULL default 0,
258  img_metadata mediumblob NOT NULL,
259  img_bits int NOT NULL default 0,
260  img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
261  img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown",
262  img_minor_mime varbinary(100) NOT NULL default "unknown",
263  img_description varbinary(767) NOT NULL,
264  img_user int unsigned NOT NULL default 0,
265  img_user_text varchar(255) binary NOT NULL,
266  img_timestamp varbinary(14) NOT NULL default '',
267  img_sha1 varbinary(32) NOT NULL default ''
268) /*$wgDBTableOptions*/;
269
270CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp);
271CREATE INDEX /*i*/img_size ON /*_*/image (img_size);
272CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp);
273CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1(10));
274CREATE INDEX /*i*/img_media_mime ON /*_*/image (img_media_type,img_major_mime,img_minor_mime);
275CREATE TABLE /*_*/oldimage (
276  oi_name varchar(255) binary NOT NULL default '',
277  oi_archive_name varchar(255) binary NOT NULL default '',
278  oi_size int unsigned NOT NULL default 0,
279  oi_width int NOT NULL default 0,
280  oi_height int NOT NULL default 0,
281  oi_bits int NOT NULL default 0,
282  oi_description varbinary(767) NOT NULL,
283  oi_user int unsigned NOT NULL default 0,
284  oi_user_text varchar(255) binary NOT NULL,
285  oi_timestamp binary(14) NOT NULL default '',
286
287  oi_metadata mediumblob NOT NULL,
288  oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
289  oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown",
290  oi_minor_mime varbinary(100) NOT NULL default "unknown",
291  oi_deleted tinyint unsigned NOT NULL default 0,
292  oi_sha1 varbinary(32) NOT NULL default ''
293) /*$wgDBTableOptions*/;
294
295CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp);
296CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp);
297CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14));
298CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1(10));
299CREATE TABLE /*_*/filearchive (
300  fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
301  fa_name varchar(255) binary NOT NULL default '',
302  fa_archive_name varchar(255) binary default '',
303  fa_storage_group varbinary(16),
304  fa_storage_key varbinary(64) default '',
305  fa_deleted_user int,
306  fa_deleted_timestamp binary(14) default '',
307  fa_deleted_reason varbinary(767) default '',
308  fa_size int unsigned default 0,
309  fa_width int default 0,
310  fa_height int default 0,
311  fa_metadata mediumblob,
312  fa_bits int default 0,
313  fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
314  fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") default "unknown",
315  fa_minor_mime varbinary(100) default "unknown",
316  fa_description varbinary(767),
317  fa_user int unsigned default 0,
318  fa_user_text varchar(255) binary,
319  fa_timestamp binary(14) default '',
320  fa_deleted tinyint unsigned NOT NULL default 0,
321  fa_sha1 varbinary(32) NOT NULL default ''
322) /*$wgDBTableOptions*/;
323CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp);
324CREATE INDEX /*i*/fa_storage_group ON /*_*/filearchive (fa_storage_group, fa_storage_key);
325CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp);
326CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp);
327CREATE INDEX /*i*/fa_sha1 ON /*_*/filearchive (fa_sha1(10));
328CREATE TABLE /*_*/uploadstash (
329  us_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
330  us_user int unsigned NOT NULL,
331  us_key varchar(255) NOT NULL,
332  us_orig_path varchar(255) NOT NULL,
333  us_path varchar(255) NOT NULL,
334  us_source_type varchar(50),
335  us_timestamp varbinary(14) NOT NULL,
336
337  us_status varchar(50) NOT NULL,
338  us_chunk_inx int unsigned NULL,
339  us_props blob,
340  us_size int unsigned NOT NULL,
341  us_sha1 varchar(31) NOT NULL,
342  us_mime varchar(255),
343  us_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
344  us_image_width int unsigned,
345  us_image_height int unsigned,
346  us_image_bits smallint unsigned
347
348) /*$wgDBTableOptions*/;
349CREATE INDEX /*i*/us_user ON /*_*/uploadstash (us_user);
350CREATE UNIQUE INDEX /*i*/us_key ON /*_*/uploadstash (us_key);
351CREATE INDEX /*i*/us_timestamp ON /*_*/uploadstash (us_timestamp);
352CREATE TABLE /*_*/recentchanges (
353  rc_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
354  rc_timestamp varbinary(14) NOT NULL default '',
355  rc_user int unsigned NOT NULL default 0,
356  rc_user_text varchar(255) binary NOT NULL,
357  rc_namespace int NOT NULL default 0,
358  rc_title varchar(255) binary NOT NULL default '',
359  rc_comment varbinary(767) NOT NULL default '',
360  rc_minor tinyint unsigned NOT NULL default 0,
361  rc_bot tinyint unsigned NOT NULL default 0,
362  rc_new tinyint unsigned NOT NULL default 0,
363  rc_cur_id int unsigned NOT NULL default 0,
364  rc_this_oldid int unsigned NOT NULL default 0,
365  rc_last_oldid int unsigned NOT NULL default 0,
366  rc_type tinyint unsigned NOT NULL default 0,
367  rc_source varchar(16) binary not null default '',
368  rc_patrolled tinyint unsigned NOT NULL default 0,
369  rc_ip varbinary(40) NOT NULL default '',
370  rc_old_len int,
371  rc_new_len int,
372  rc_deleted tinyint unsigned NOT NULL default 0,
373  rc_logid int unsigned NOT NULL default 0,
374  rc_log_type varbinary(255) NULL default NULL,
375  rc_log_action varbinary(255) NULL default NULL,
376  rc_params blob NULL
377) /*$wgDBTableOptions*/;
378
379CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp);
380CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title);
381CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id);
382CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp);
383CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip);
384CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text);
385CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp);
386CREATE INDEX /*i*/rc_name_type_patrolled_timestamp ON /*_*/recentchanges (rc_namespace, rc_type, rc_patrolled, rc_timestamp);
387
388
389CREATE TABLE /*_*/watchlist (
390  wl_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
391  wl_user int unsigned NOT NULL,
392  wl_namespace int NOT NULL default 0,
393  wl_title varchar(255) binary NOT NULL default '',
394  wl_notificationtimestamp varbinary(14)
395
396) /*$wgDBTableOptions*/;
397
398CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
399CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
400CREATE INDEX /*i*/wl_user_notificationtimestamp ON /*_*/watchlist (wl_user, wl_notificationtimestamp);
401CREATE TABLE /*_*/searchindex (
402  si_page int unsigned NOT NULL,
403  si_title varchar(255) NOT NULL default '',
404  si_text mediumtext NOT NULL
405) ENGINE=MyISAM DEFAULT CHARSET=utf8;
406
407CREATE UNIQUE INDEX /*i*/si_page ON /*_*/searchindex (si_page);
408CREATE FULLTEXT INDEX /*i*/si_title ON /*_*/searchindex (si_title);
409CREATE FULLTEXT INDEX /*i*/si_text ON /*_*/searchindex (si_text);
410CREATE TABLE /*_*/interwiki (
411  iw_prefix varchar(32) NOT NULL,
412  iw_url blob NOT NULL,
413  iw_api blob NOT NULL,
414  iw_wikiid varchar(64) NOT NULL,
415  iw_local bool NOT NULL,
416  iw_trans tinyint NOT NULL default 0
417) /*$wgDBTableOptions*/;
418
419CREATE UNIQUE INDEX /*i*/iw_prefix ON /*_*/interwiki (iw_prefix);
420CREATE TABLE /*_*/querycache (
421  qc_type varbinary(32) NOT NULL,
422  qc_value int unsigned NOT NULL default 0,
423  qc_namespace int NOT NULL default 0,
424  qc_title varchar(255) binary NOT NULL default ''
425) /*$wgDBTableOptions*/;
426
427CREATE INDEX /*i*/qc_type ON /*_*/querycache (qc_type,qc_value);
428CREATE TABLE /*_*/objectcache (
429  keyname varbinary(255) NOT NULL default '' PRIMARY KEY,
430  value mediumblob,
431  exptime datetime
432) /*$wgDBTableOptions*/;
433CREATE INDEX /*i*/exptime ON /*_*/objectcache (exptime);
434CREATE TABLE /*_*/transcache (
435  tc_url varbinary(255) NOT NULL,
436  tc_contents text,
437  tc_time binary(14) NOT NULL
438) /*$wgDBTableOptions*/;
439
440CREATE UNIQUE INDEX /*i*/tc_url_idx ON /*_*/transcache (tc_url);
441
442
443CREATE TABLE /*_*/logging (
444  log_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
445  log_type varbinary(32) NOT NULL default '',
446  log_action varbinary(32) NOT NULL default '',
447  log_timestamp binary(14) NOT NULL default '19700101000000',
448  log_user int unsigned NOT NULL default 0,
449  log_user_text varchar(255) binary NOT NULL default '',
450  log_namespace int NOT NULL default 0,
451  log_title varchar(255) binary NOT NULL default '',
452  log_page int unsigned NULL,
453  log_comment varbinary(767) NOT NULL default '',
454  log_params blob NOT NULL,
455  log_deleted tinyint unsigned NOT NULL default 0
456) /*$wgDBTableOptions*/;
457
458CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp);
459CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp);
460CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp);
461CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
462CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
463CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
464CREATE INDEX /*i*/type_action ON /*_*/logging (log_type, log_action, log_timestamp);
465CREATE INDEX /*i*/log_user_text_type_time ON /*_*/logging (log_user_text, log_type, log_timestamp);
466CREATE INDEX /*i*/log_user_text_time ON /*_*/logging (log_user_text, log_timestamp);
467
468
469CREATE TABLE /*_*/log_search (
470  ls_field varbinary(32) NOT NULL,
471  ls_value varchar(255) NOT NULL,
472  ls_log_id int unsigned NOT NULL default 0
473) /*$wgDBTableOptions*/;
474CREATE UNIQUE INDEX /*i*/ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_log_id);
475CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id);
476CREATE TABLE /*_*/job (
477  job_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
478  job_cmd varbinary(60) NOT NULL default '',
479  job_namespace int NOT NULL,
480  job_title varchar(255) binary NOT NULL,
481  job_timestamp varbinary(14) NULL default NULL,
482  job_params blob NOT NULL,
483  job_random integer unsigned NOT NULL default 0,
484  job_attempts integer unsigned NOT NULL default 0,
485  job_token varbinary(32) NOT NULL default '',
486  job_token_timestamp varbinary(14) NULL default NULL,
487  job_sha1 varbinary(32) NOT NULL default ''
488) /*$wgDBTableOptions*/;
489
490CREATE INDEX /*i*/job_sha1 ON /*_*/job (job_sha1);
491CREATE INDEX /*i*/job_cmd_token ON /*_*/job (job_cmd,job_token,job_random);
492CREATE INDEX /*i*/job_cmd_token_id ON /*_*/job (job_cmd,job_token,job_id);
493CREATE INDEX /*i*/job_cmd ON /*_*/job (job_cmd, job_namespace, job_title, job_params(128));
494CREATE INDEX /*i*/job_timestamp ON /*_*/job (job_timestamp);
495CREATE TABLE /*_*/querycache_info (
496  qci_type varbinary(32) NOT NULL default '',
497  qci_timestamp binary(14) NOT NULL default '19700101000000'
498) /*$wgDBTableOptions*/;
499
500CREATE UNIQUE INDEX /*i*/qci_type ON /*_*/querycache_info (qci_type);
501CREATE TABLE /*_*/redirect (
502  rd_from int unsigned NOT NULL default 0 PRIMARY KEY,
503  rd_namespace int NOT NULL default 0,
504  rd_title varchar(255) binary NOT NULL default '',
505  rd_interwiki varchar(32) default NULL,
506  rd_fragment varchar(255) binary default NULL
507) /*$wgDBTableOptions*/;
508
509CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from);
510CREATE TABLE /*_*/querycachetwo (
511  qcc_type varbinary(32) NOT NULL,
512  qcc_value int unsigned NOT NULL default 0,
513  qcc_namespace int NOT NULL default 0,
514  qcc_title varchar(255) binary NOT NULL default '',
515  qcc_namespacetwo int NOT NULL default 0,
516  qcc_titletwo varchar(255) binary NOT NULL default ''
517) /*$wgDBTableOptions*/;
518
519CREATE INDEX /*i*/qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value);
520CREATE INDEX /*i*/qcc_title ON /*_*/querycachetwo (qcc_type,qcc_namespace,qcc_title);
521CREATE INDEX /*i*/qcc_titletwo ON /*_*/querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo);
522CREATE TABLE /*_*/page_restrictions (
523  pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
524  pr_page int NOT NULL,
525  pr_type varbinary(60) NOT NULL,
526  pr_level varbinary(60) NOT NULL,
527  pr_cascade tinyint NOT NULL,
528  pr_user int NULL,
529  pr_expiry varbinary(14) NULL
530) /*$wgDBTableOptions*/;
531
532CREATE UNIQUE INDEX /*i*/pr_pagetype ON /*_*/page_restrictions (pr_page,pr_type);
533CREATE INDEX /*i*/pr_typelevel ON /*_*/page_restrictions (pr_type,pr_level);
534CREATE INDEX /*i*/pr_level ON /*_*/page_restrictions (pr_level);
535CREATE INDEX /*i*/pr_cascade ON /*_*/page_restrictions (pr_cascade);
536CREATE TABLE /*_*/protected_titles (
537  pt_namespace int NOT NULL,
538  pt_title varchar(255) binary NOT NULL,
539  pt_user int unsigned NOT NULL,
540  pt_reason varbinary(767),
541  pt_timestamp binary(14) NOT NULL,
542  pt_expiry varbinary(14) NOT NULL default '',
543  pt_create_perm varbinary(60) NOT NULL
544) /*$wgDBTableOptions*/;
545
546CREATE UNIQUE INDEX /*i*/pt_namespace_title ON /*_*/protected_titles (pt_namespace,pt_title);
547CREATE INDEX /*i*/pt_timestamp ON /*_*/protected_titles (pt_timestamp);
548CREATE TABLE /*_*/page_props (
549  pp_page int NOT NULL,
550  pp_propname varbinary(60) NOT NULL,
551  pp_value blob NOT NULL,
552  pp_sortkey float DEFAULT NULL
553) /*$wgDBTableOptions*/;
554
555CREATE UNIQUE INDEX /*i*/pp_page_propname ON /*_*/page_props (pp_page,pp_propname);
556CREATE UNIQUE INDEX /*i*/pp_propname_page ON /*_*/page_props (pp_propname,pp_page);
557CREATE UNIQUE INDEX /*i*/pp_propname_sortkey_page ON /*_*/page_props (pp_propname,pp_sortkey,pp_page);
558CREATE TABLE /*_*/updatelog (
559  ul_key varchar(255) NOT NULL PRIMARY KEY,
560  ul_value blob
561) /*$wgDBTableOptions*/;
562CREATE TABLE /*_*/change_tag (
563  ct_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
564  ct_rc_id int NULL,
565  ct_log_id int NULL,
566  ct_rev_id int NULL,
567  ct_tag varchar(255) NOT NULL,
568  ct_params blob NULL
569) /*$wgDBTableOptions*/;
570
571CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
572CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
573CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
574CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
575CREATE TABLE /*_*/tag_summary (
576  ts_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
577  ts_rc_id int NULL,
578  ts_log_id int NULL,
579  ts_rev_id int NULL,
580  ts_tags blob NOT NULL
581) /*$wgDBTableOptions*/;
582
583CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
584CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
585CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
586
587
588CREATE TABLE /*_*/valid_tag (
589  vt_tag varchar(255) NOT NULL PRIMARY KEY
590) /*$wgDBTableOptions*/;
591CREATE TABLE /*_*/l10n_cache (
592  lc_lang varbinary(32) NOT NULL,
593  lc_key varchar(255) NOT NULL,
594  lc_value mediumblob NOT NULL
595) /*$wgDBTableOptions*/;
596CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key);
597CREATE TABLE /*_*/module_deps (
598  md_module varbinary(255) NOT NULL,
599  md_skin varbinary(32) NOT NULL,
600  md_deps mediumblob NOT NULL
601) /*$wgDBTableOptions*/;
602CREATE UNIQUE INDEX /*i*/md_module_skin ON /*_*/module_deps (md_module, md_skin);
603CREATE TABLE /*_*/sites (
604  site_id                    INT UNSIGNED        NOT NULL PRIMARY KEY AUTO_INCREMENT,
605  site_global_key            varbinary(32)       NOT NULL,
606  site_type                  varbinary(32)       NOT NULL,
607  site_group                 varbinary(32)       NOT NULL,
608  site_source                varbinary(32)       NOT NULL,
609  site_language              varbinary(32)       NOT NULL,
610  site_protocol              varbinary(32)       NOT NULL,
611  site_domain                VARCHAR(255)        NOT NULL,
612  site_data                  BLOB                NOT NULL,
613  site_forward              bool                NOT NULL,
614  site_config               BLOB                NOT NULL
615) /*$wgDBTableOptions*/;
616
617CREATE UNIQUE INDEX /*i*/sites_global_key ON /*_*/sites (site_global_key);
618CREATE INDEX /*i*/sites_type ON /*_*/sites (site_type);
619CREATE INDEX /*i*/sites_group ON /*_*/sites (site_group);
620CREATE INDEX /*i*/sites_source ON /*_*/sites (site_source);
621CREATE INDEX /*i*/sites_language ON /*_*/sites (site_language);
622CREATE INDEX /*i*/sites_protocol ON /*_*/sites (site_protocol);
623CREATE INDEX /*i*/sites_domain ON /*_*/sites (site_domain);
624CREATE INDEX /*i*/sites_forward ON /*_*/sites (site_forward);
625CREATE TABLE /*_*/site_identifiers (
626  si_site                    INT UNSIGNED        NOT NULL,
627  si_type                    varbinary(32)       NOT NULL,
628  si_key                     varbinary(32)       NOT NULL
629) /*$wgDBTableOptions*/;
630
631CREATE UNIQUE INDEX /*i*/site_ids_type ON /*_*/site_identifiers (si_type, si_key);
632CREATE INDEX /*i*/site_ids_site ON /*_*/site_identifiers (si_site);
633CREATE INDEX /*i*/site_ids_key ON /*_*/site_identifiers (si_key);
634