Merge "Drop cache interwiki"
[mediawiki.git] / tests / phpunit / data / db / sqlite / tables-1.38.sql
blob98ef3c7c15d098e0e3774098497cb7b55b20f933
1 CREATE TABLE /*_*/site_identifiers (
2   si_type BLOB NOT NULL,
3   si_key BLOB NOT NULL,
4   si_site INTEGER UNSIGNED NOT NULL,
5   PRIMARY KEY(si_type, si_key)
6 );
7 CREATE INDEX si_site ON /*_*/site_identifiers (si_site);
8 CREATE INDEX si_key ON /*_*/site_identifiers (si_key);
9 CREATE TABLE /*_*/updatelog (
10   ul_key VARCHAR(255) NOT NULL,
11   ul_value BLOB DEFAULT NULL,
12   PRIMARY KEY(ul_key)
14 CREATE TABLE /*_*/actor (
15   actor_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
16   actor_user INTEGER UNSIGNED DEFAULT NULL,
17   actor_name BLOB NOT NULL
19 CREATE UNIQUE INDEX actor_user ON /*_*/actor (actor_user);
20 CREATE UNIQUE INDEX actor_name ON /*_*/actor (actor_name);
21 CREATE TABLE /*_*/user_former_groups (
22   ufg_user INTEGER UNSIGNED DEFAULT 0 NOT NULL,
23   ufg_group BLOB DEFAULT '' NOT NULL,
24   PRIMARY KEY(ufg_user, ufg_group)
26 CREATE TABLE /*_*/bot_passwords (
27   bp_user INTEGER UNSIGNED NOT NULL,
28   bp_app_id BLOB NOT NULL,
29   bp_password BLOB NOT NULL,
30   bp_token BLOB DEFAULT '' NOT NULL,
31   bp_restrictions BLOB NOT NULL,
32   bp_grants BLOB NOT NULL,
33   PRIMARY KEY(bp_user, bp_app_id)
35 CREATE TABLE /*_*/comment (
36   comment_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
37   comment_hash INTEGER NOT NULL, comment_text BLOB NOT NULL,
38   comment_data BLOB DEFAULT NULL
40 CREATE INDEX comment_hash ON /*_*/comment (comment_hash);
41 CREATE TABLE /*_*/slots (
42   slot_revision_id BIGINT UNSIGNED NOT NULL,
43   slot_role_id SMALLINT UNSIGNED NOT NULL,
44   slot_content_id BIGINT UNSIGNED NOT NULL,
45   slot_origin BIGINT UNSIGNED NOT NULL,
46   PRIMARY KEY(slot_revision_id, slot_role_id)
48 CREATE INDEX slot_revision_origin_role ON /*_*/slots (
49   slot_revision_id, slot_origin, slot_role_id
51 CREATE TABLE /*_*/site_stats (
52   ss_row_id INTEGER UNSIGNED NOT NULL,
53   ss_total_edits BIGINT UNSIGNED DEFAULT NULL,
54   ss_good_articles BIGINT UNSIGNED DEFAULT NULL,
55   ss_total_pages BIGINT UNSIGNED DEFAULT NULL,
56   ss_users BIGINT UNSIGNED DEFAULT NULL,
57   ss_active_users BIGINT UNSIGNED DEFAULT NULL,
58   ss_images BIGINT UNSIGNED DEFAULT NULL,
59   PRIMARY KEY(ss_row_id)
61 CREATE TABLE /*_*/user_properties (
62   up_user INTEGER UNSIGNED NOT NULL,
63   up_property BLOB NOT NULL,
64   up_value BLOB DEFAULT NULL,
65   PRIMARY KEY(up_user, up_property)
67 CREATE INDEX up_property ON /*_*/user_properties (up_property);
68 CREATE TABLE /*_*/log_search (
69   ls_field BLOB NOT NULL,
70   ls_value VARCHAR(255) NOT NULL,
71   ls_log_id INTEGER UNSIGNED DEFAULT 0 NOT NULL,
72   PRIMARY KEY(ls_field, ls_value, ls_log_id)
74 CREATE INDEX ls_log_id ON /*_*/log_search (ls_log_id);
75 CREATE TABLE /*_*/change_tag (
76   ct_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
77   ct_rc_id INTEGER UNSIGNED DEFAULT NULL,
78   ct_log_id INTEGER UNSIGNED DEFAULT NULL,
79   ct_rev_id INTEGER UNSIGNED DEFAULT NULL,
80   ct_params BLOB DEFAULT NULL, ct_tag_id INTEGER UNSIGNED NOT NULL
82 CREATE UNIQUE INDEX ct_rc_tag_id ON /*_*/change_tag (ct_rc_id, ct_tag_id);
83 CREATE UNIQUE INDEX ct_log_tag_id ON /*_*/change_tag (ct_log_id, ct_tag_id);
84 CREATE UNIQUE INDEX ct_rev_tag_id ON /*_*/change_tag (ct_rev_id, ct_tag_id);
85 CREATE INDEX ct_tag_id_id ON /*_*/change_tag (
86   ct_tag_id, ct_rc_id, ct_rev_id, ct_log_id
88 CREATE TABLE /*_*/content (
89   content_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
90   content_size INTEGER UNSIGNED NOT NULL,
91   content_sha1 BLOB NOT NULL, content_model SMALLINT UNSIGNED NOT NULL,
92   content_address BLOB NOT NULL
94 CREATE TABLE /*_*/l10n_cache (
95   lc_lang BLOB NOT NULL,
96   lc_key VARCHAR(255) NOT NULL,
97   lc_value BLOB NOT NULL,
98   PRIMARY KEY(lc_lang, lc_key)
100 CREATE TABLE /*_*/module_deps (
101   md_module BLOB NOT NULL,
102   md_skin BLOB NOT NULL,
103   md_deps BLOB NOT NULL,
104   PRIMARY KEY(md_module, md_skin)
106 CREATE TABLE /*_*/redirect (
107   rd_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
108   rd_namespace INTEGER DEFAULT 0 NOT NULL,
109   rd_title BLOB DEFAULT '' NOT NULL,
110   rd_interwiki VARCHAR(32) DEFAULT NULL,
111   rd_fragment BLOB DEFAULT NULL,
112   PRIMARY KEY(rd_from)
114 CREATE INDEX rd_ns_title ON /*_*/redirect (rd_namespace, rd_title, rd_from);
115 CREATE TABLE /*_*/pagelinks (
116   pl_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
117   pl_namespace INTEGER DEFAULT 0 NOT NULL,
118   pl_title BLOB DEFAULT '' NOT NULL,
119   pl_from_namespace INTEGER DEFAULT 0 NOT NULL,
120   PRIMARY KEY(pl_from, pl_namespace, pl_title)
122 CREATE INDEX pl_namespace ON /*_*/pagelinks (pl_namespace, pl_title, pl_from);
123 CREATE INDEX pl_backlinks_namespace ON /*_*/pagelinks (
124   pl_from_namespace, pl_namespace,
125   pl_title, pl_from
127 CREATE TABLE /*_*/templatelinks (
128   tl_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
129   tl_namespace INTEGER DEFAULT 0 NOT NULL,
130   tl_title BLOB DEFAULT '' NOT NULL,
131   tl_from_namespace INTEGER DEFAULT 0 NOT NULL,
132   tl_target_id BIGINT UNSIGNED DEFAULT NULL,
133   PRIMARY KEY(tl_from, tl_namespace, tl_title)
135 CREATE INDEX tl_namespace ON /*_*/templatelinks (tl_namespace, tl_title, tl_from);
136 CREATE INDEX tl_backlinks_namespace ON /*_*/templatelinks (
137   tl_from_namespace, tl_namespace,
138   tl_title, tl_from
140 CREATE INDEX tl_target_id ON /*_*/templatelinks (tl_target_id, tl_from);
141 CREATE INDEX tl_backlinks_namespace_target_id ON /*_*/templatelinks (
142   tl_from_namespace, tl_target_id,
143   tl_from
145 CREATE TABLE /*_*/imagelinks (
146   il_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
147   il_to BLOB DEFAULT '' NOT NULL,
148   il_from_namespace INTEGER DEFAULT 0 NOT NULL,
149   PRIMARY KEY(il_from, il_to)
151 CREATE INDEX il_to ON /*_*/imagelinks (il_to, il_from);
152 CREATE INDEX il_backlinks_namespace ON /*_*/imagelinks (
153   il_from_namespace, il_to, il_from
155 CREATE TABLE /*_*/langlinks (
156   ll_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
157   ll_lang BLOB DEFAULT '' NOT NULL,
158   ll_title BLOB DEFAULT '' NOT NULL,
159   PRIMARY KEY(ll_from, ll_lang)
161 CREATE INDEX ll_lang ON /*_*/langlinks (ll_lang, ll_title);
162 CREATE TABLE /*_*/iwlinks (
163   iwl_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
164   iwl_prefix BLOB DEFAULT '' NOT NULL,
165   iwl_title BLOB DEFAULT '' NOT NULL,
166   PRIMARY KEY(iwl_from, iwl_prefix, iwl_title)
168 CREATE INDEX iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_title, iwl_from);
169 CREATE INDEX iwl_prefix_from_title ON /*_*/iwlinks (iwl_prefix, iwl_from, iwl_title);
170 CREATE TABLE /*_*/category (
171   cat_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
172   cat_title BLOB NOT NULL, cat_pages INTEGER DEFAULT 0 NOT NULL,
173   cat_subcats INTEGER DEFAULT 0 NOT NULL,
174   cat_files INTEGER DEFAULT 0 NOT NULL
176 CREATE UNIQUE INDEX cat_title ON /*_*/category (cat_title);
177 CREATE INDEX cat_pages ON /*_*/category (cat_pages);
178 CREATE TABLE /*_*/watchlist_expiry (
179   we_item INTEGER UNSIGNED NOT NULL,
180   we_expiry BLOB NOT NULL,
181   PRIMARY KEY(we_item)
183 CREATE INDEX we_expiry ON /*_*/watchlist_expiry (we_expiry);
184 CREATE TABLE /*_*/change_tag_def (
185   ctd_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
186   ctd_name BLOB NOT NULL, ctd_user_defined SMALLINT NOT NULL,
187   ctd_count BIGINT UNSIGNED DEFAULT 0 NOT NULL
189 CREATE UNIQUE INDEX ctd_name ON /*_*/change_tag_def (ctd_name);
190 CREATE INDEX ctd_count ON /*_*/change_tag_def (ctd_count);
191 CREATE INDEX ctd_user_defined ON /*_*/change_tag_def (ctd_user_defined);
192 CREATE TABLE /*_*/ipblocks_restrictions (
193   ir_ipb_id INTEGER NOT NULL,
194   ir_type SMALLINT NOT NULL,
195   ir_value INTEGER UNSIGNED NOT NULL,
196   PRIMARY KEY(ir_ipb_id, ir_type, ir_value)
198 CREATE INDEX ir_type_value ON /*_*/ipblocks_restrictions (ir_type, ir_value);
199 CREATE TABLE /*_*/querycache (
200   qc_type BLOB NOT NULL, qc_value INTEGER UNSIGNED DEFAULT 0 NOT NULL,
201   qc_namespace INTEGER DEFAULT 0 NOT NULL,
202   qc_title BLOB DEFAULT '' NOT NULL
204 CREATE INDEX qc_type ON /*_*/querycache (qc_type, qc_value);
205 CREATE TABLE /*_*/querycachetwo (
206   qcc_type BLOB NOT NULL, qcc_value INTEGER UNSIGNED DEFAULT 0 NOT NULL,
207   qcc_namespace INTEGER DEFAULT 0 NOT NULL,
208   qcc_title BLOB DEFAULT '' NOT NULL,
209   qcc_namespacetwo INTEGER DEFAULT 0 NOT NULL,
210   qcc_titletwo BLOB DEFAULT '' NOT NULL
212 CREATE INDEX qcc_type ON /*_*/querycachetwo (qcc_type, qcc_value);
213 CREATE INDEX qcc_title ON /*_*/querycachetwo (
214   qcc_type, qcc_namespace, qcc_title
216 CREATE INDEX qcc_titletwo ON /*_*/querycachetwo (
217   qcc_type, qcc_namespacetwo, qcc_titletwo
219 CREATE TABLE /*_*/page_restrictions (
220   pr_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
221   pr_page INTEGER UNSIGNED NOT NULL,
222   pr_type BLOB NOT NULL, pr_level BLOB NOT NULL,
223   pr_cascade SMALLINT NOT NULL, pr_expiry BLOB DEFAULT NULL
225 CREATE UNIQUE INDEX pr_pagetype ON /*_*/page_restrictions (pr_page, pr_type);
226 CREATE INDEX pr_typelevel ON /*_*/page_restrictions (pr_type, pr_level);
227 CREATE INDEX pr_level ON /*_*/page_restrictions (pr_level);
228 CREATE INDEX pr_cascade ON /*_*/page_restrictions (pr_cascade);
229 CREATE TABLE /*_*/user_groups (
230   ug_user INTEGER UNSIGNED DEFAULT 0 NOT NULL,
231   ug_group BLOB DEFAULT '' NOT NULL,
232   ug_expiry BLOB DEFAULT NULL,
233   PRIMARY KEY(ug_user, ug_group)
235 CREATE INDEX ug_group ON /*_*/user_groups (ug_group);
236 CREATE INDEX ug_expiry ON /*_*/user_groups (ug_expiry);
237 CREATE TABLE /*_*/querycache_info (
238   qci_type BLOB DEFAULT '' NOT NULL,
239   qci_timestamp BLOB DEFAULT '19700101000000' NOT NULL,
240   PRIMARY KEY(qci_type)
242 CREATE TABLE /*_*/watchlist (
243   wl_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
244   wl_user INTEGER UNSIGNED NOT NULL,
245   wl_namespace INTEGER DEFAULT 0 NOT NULL,
246   wl_title BLOB DEFAULT '' NOT NULL, wl_notificationtimestamp BLOB DEFAULT NULL
248 CREATE UNIQUE INDEX wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
249 CREATE INDEX wl_namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
250 CREATE INDEX wl_user_notificationtimestamp ON /*_*/watchlist (
251   wl_user, wl_notificationtimestamp
253 CREATE TABLE /*_*/sites (
254   site_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
255   site_global_key BLOB NOT NULL,
256   site_type BLOB NOT NULL,
257   site_group BLOB NOT NULL,
258   site_source BLOB NOT NULL,
259   site_language BLOB NOT NULL,
260   site_protocol BLOB NOT NULL,
261   site_domain VARCHAR(255) NOT NULL,
262   site_data BLOB NOT NULL,
263   site_forward SMALLINT NOT NULL,
264   site_config BLOB NOT NULL
266 CREATE UNIQUE INDEX site_global_key ON /*_*/sites (site_global_key);
267 CREATE INDEX site_type ON /*_*/sites (site_type);
268 CREATE INDEX site_group ON /*_*/sites (site_group);
269 CREATE INDEX site_source ON /*_*/sites (site_source);
270 CREATE INDEX site_language ON /*_*/sites (site_language);
271 CREATE INDEX site_protocol ON /*_*/sites (site_protocol);
272 CREATE INDEX site_domain ON /*_*/sites (site_domain);
273 CREATE INDEX site_forward ON /*_*/sites (site_forward);
274 CREATE TABLE /*_*/user_newtalk (
275   user_id INTEGER UNSIGNED DEFAULT 0 NOT NULL,
276   user_ip BLOB DEFAULT '' NOT NULL, user_last_timestamp BLOB DEFAULT NULL
278 CREATE INDEX un_user_id ON /*_*/user_newtalk (user_id);
279 CREATE INDEX un_user_ip ON /*_*/user_newtalk (user_ip);
280 CREATE TABLE /*_*/interwiki (
281   iw_prefix VARCHAR(32) NOT NULL,
282   iw_url BLOB NOT NULL,
283   iw_api BLOB NOT NULL,
284   iw_wikiid VARCHAR(64) NOT NULL,
285   iw_local SMALLINT NOT NULL,
286   iw_trans SMALLINT DEFAULT 0 NOT NULL,
287   PRIMARY KEY(iw_prefix)
289 CREATE TABLE /*_*/protected_titles (
290   pt_namespace INTEGER NOT NULL,
291   pt_title BLOB NOT NULL,
292   pt_user INTEGER UNSIGNED NOT NULL,
293   pt_reason_id BIGINT UNSIGNED NOT NULL,
294   pt_timestamp BLOB NOT NULL,
295   pt_expiry BLOB NOT NULL,
296   pt_create_perm BLOB NOT NULL,
297   PRIMARY KEY(pt_namespace, pt_title)
299 CREATE INDEX pt_timestamp ON /*_*/protected_titles (pt_timestamp);
300 CREATE TABLE /*_*/externallinks (
301   el_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
302   el_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
303   el_to BLOB NOT NULL, el_index BLOB NOT NULL,
304   el_index_60 BLOB NOT NULL
306 CREATE INDEX el_from ON /*_*/externallinks (el_from, el_to);
307 CREATE INDEX el_to ON /*_*/externallinks (el_to, el_from);
308 CREATE INDEX el_index ON /*_*/externallinks (el_index);
309 CREATE INDEX el_index_60 ON /*_*/externallinks (el_index_60, el_id);
310 CREATE INDEX el_from_index_60 ON /*_*/externallinks (el_from, el_index_60, el_id);
311 CREATE TABLE /*_*/ip_changes (
312   ipc_rev_id INTEGER UNSIGNED DEFAULT 0 NOT NULL,
313   ipc_rev_timestamp BLOB NOT NULL,
314   ipc_hex BLOB DEFAULT '' NOT NULL,
315   PRIMARY KEY(ipc_rev_id)
317 CREATE INDEX ipc_rev_timestamp ON /*_*/ip_changes (ipc_rev_timestamp);
318 CREATE INDEX ipc_hex_time ON /*_*/ip_changes (ipc_hex, ipc_rev_timestamp);
319 CREATE TABLE /*_*/revision_comment_temp (
320   revcomment_rev INTEGER UNSIGNED NOT NULL,
321   revcomment_comment_id BIGINT UNSIGNED NOT NULL,
322   PRIMARY KEY(
323     revcomment_rev, revcomment_comment_id
324   )
326 CREATE UNIQUE INDEX revcomment_rev ON /*_*/revision_comment_temp (revcomment_rev);
327 CREATE TABLE /*_*/revision_actor_temp (
328   revactor_rev INTEGER UNSIGNED NOT NULL,
329   revactor_actor BIGINT UNSIGNED NOT NULL,
330   revactor_timestamp BLOB NOT NULL,
331   revactor_page INTEGER UNSIGNED NOT NULL,
332   PRIMARY KEY(revactor_rev, revactor_actor)
334 CREATE UNIQUE INDEX revactor_rev ON /*_*/revision_actor_temp (revactor_rev);
335 CREATE INDEX actor_timestamp ON /*_*/revision_actor_temp (
336   revactor_actor, revactor_timestamp
338 CREATE INDEX page_actor_timestamp ON /*_*/revision_actor_temp (
339   revactor_page, revactor_actor, revactor_timestamp
341 CREATE TABLE /*_*/page_props (
342   pp_page INTEGER UNSIGNED NOT NULL,
343   pp_propname BLOB NOT NULL,
344   pp_value BLOB NOT NULL,
345   pp_sortkey DOUBLE PRECISION DEFAULT NULL,
346   PRIMARY KEY(pp_page, pp_propname)
348 CREATE UNIQUE INDEX pp_propname_page ON /*_*/page_props (pp_propname, pp_page);
349 CREATE UNIQUE INDEX pp_propname_sortkey_page ON /*_*/page_props (pp_propname, pp_sortkey, pp_page);
350 CREATE TABLE /*_*/job (
351   job_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
352   job_cmd BLOB DEFAULT '' NOT NULL, job_namespace INTEGER NOT NULL,
353   job_title BLOB NOT NULL, job_timestamp BLOB DEFAULT NULL,
354   job_params BLOB NOT NULL, job_random INTEGER UNSIGNED DEFAULT 0 NOT NULL,
355   job_attempts INTEGER UNSIGNED DEFAULT 0 NOT NULL,
356   job_token BLOB DEFAULT '' NOT NULL,
357   job_token_timestamp BLOB DEFAULT NULL,
358   job_sha1 BLOB DEFAULT '' NOT NULL
360 CREATE INDEX job_sha1 ON /*_*/job (job_sha1);
361 CREATE INDEX job_cmd_token ON /*_*/job (job_cmd, job_token, job_random);
362 CREATE INDEX job_cmd_token_id ON /*_*/job (job_cmd, job_token, job_id);
363 CREATE INDEX job_cmd ON /*_*/job (
364   job_cmd, job_namespace, job_title,
365   job_params
367 CREATE INDEX job_timestamp ON /*_*/job (job_timestamp);
368 CREATE TABLE /*_*/slot_roles (
369   role_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
370   role_name BLOB NOT NULL
372 CREATE UNIQUE INDEX role_name ON /*_*/slot_roles (role_name);
373 CREATE TABLE /*_*/content_models (
374   model_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
375   model_name BLOB NOT NULL
377 CREATE UNIQUE INDEX model_name ON /*_*/content_models (model_name);
378 CREATE TABLE /*_*/categorylinks (
379   cl_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
380   cl_to BLOB DEFAULT '' NOT NULL,
381   cl_sortkey BLOB DEFAULT '' NOT NULL,
382   cl_sortkey_prefix BLOB DEFAULT '' NOT NULL,
383   cl_timestamp DATETIME NOT NULL,
384   cl_collation BLOB DEFAULT '' NOT NULL,
385   cl_type TEXT DEFAULT 'page' NOT NULL,
386   PRIMARY KEY(cl_from, cl_to)
388 CREATE INDEX cl_sortkey ON /*_*/categorylinks (
389   cl_to, cl_type, cl_sortkey, cl_from
391 CREATE INDEX cl_timestamp ON /*_*/categorylinks (cl_to, cl_timestamp);
392 CREATE INDEX cl_collation_ext ON /*_*/categorylinks (
393   cl_collation, cl_to, cl_type, cl_from
395 CREATE TABLE /*_*/logging (
396   log_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
397   log_type BLOB DEFAULT '' NOT NULL, log_action BLOB DEFAULT '' NOT NULL,
398   log_timestamp BLOB DEFAULT '19700101000000' NOT NULL,
399   log_actor BIGINT UNSIGNED NOT NULL,
400   log_namespace INTEGER DEFAULT 0 NOT NULL,
401   log_title BLOB DEFAULT '' NOT NULL,
402   log_page INTEGER UNSIGNED DEFAULT NULL,
403   log_comment_id BIGINT UNSIGNED NOT NULL,
404   log_params BLOB NOT NULL, log_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL
406 CREATE INDEX log_type_time ON /*_*/logging (log_type, log_timestamp);
407 CREATE INDEX log_actor_time ON /*_*/logging (log_actor, log_timestamp);
408 CREATE INDEX log_page_time ON /*_*/logging (
409   log_namespace, log_title, log_timestamp
411 CREATE INDEX log_times ON /*_*/logging (log_timestamp);
412 CREATE INDEX log_actor_type_time ON /*_*/logging (
413   log_actor, log_type, log_timestamp
415 CREATE INDEX log_page_id_time ON /*_*/logging (log_page, log_timestamp);
416 CREATE INDEX log_type_action ON /*_*/logging (
417   log_type, log_action, log_timestamp
419 CREATE TABLE /*_*/uploadstash (
420   us_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
421   us_user INTEGER UNSIGNED NOT NULL,
422   us_key VARCHAR(255) NOT NULL,
423   us_orig_path VARCHAR(255) NOT NULL,
424   us_path VARCHAR(255) NOT NULL,
425   us_source_type VARCHAR(50) DEFAULT NULL,
426   us_timestamp BLOB NOT NULL,
427   us_status VARCHAR(50) NOT NULL,
428   us_chunk_inx INTEGER UNSIGNED DEFAULT NULL,
429   us_props BLOB DEFAULT NULL,
430   us_size INTEGER UNSIGNED NOT NULL,
431   us_sha1 VARCHAR(31) NOT NULL,
432   us_mime VARCHAR(255) DEFAULT NULL,
433   us_media_type TEXT DEFAULT NULL,
434   us_image_width INTEGER UNSIGNED DEFAULT NULL,
435   us_image_height INTEGER UNSIGNED DEFAULT NULL,
436   us_image_bits SMALLINT UNSIGNED DEFAULT NULL
438 CREATE INDEX us_user ON /*_*/uploadstash (us_user);
439 CREATE UNIQUE INDEX us_key ON /*_*/uploadstash (us_key);
440 CREATE INDEX us_timestamp ON /*_*/uploadstash (us_timestamp);
441 CREATE TABLE /*_*/filearchive (
442   fa_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
443   fa_name BLOB DEFAULT '' NOT NULL, fa_archive_name BLOB DEFAULT '',
444   fa_storage_group BLOB DEFAULT NULL,
445   fa_storage_key BLOB DEFAULT '', fa_deleted_user INTEGER DEFAULT NULL,
446   fa_deleted_timestamp BLOB DEFAULT NULL,
447   fa_deleted_reason_id BIGINT UNSIGNED NOT NULL,
448   fa_size INTEGER UNSIGNED DEFAULT 0,
449   fa_width INTEGER DEFAULT 0, fa_height INTEGER DEFAULT 0,
450   fa_metadata BLOB DEFAULT NULL, fa_bits INTEGER DEFAULT 0,
451   fa_media_type TEXT DEFAULT NULL, fa_major_mime TEXT DEFAULT 'unknown',
452   fa_minor_mime BLOB DEFAULT 'unknown',
453   fa_description_id BIGINT UNSIGNED NOT NULL,
454   fa_actor BIGINT UNSIGNED NOT NULL,
455   fa_timestamp BLOB DEFAULT NULL, fa_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
456   fa_sha1 BLOB DEFAULT '' NOT NULL
458 CREATE INDEX fa_name ON /*_*/filearchive (fa_name, fa_timestamp);
459 CREATE INDEX fa_storage_group ON /*_*/filearchive (
460   fa_storage_group, fa_storage_key
462 CREATE INDEX fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp);
463 CREATE INDEX fa_actor_timestamp ON /*_*/filearchive (fa_actor, fa_timestamp);
464 CREATE INDEX fa_sha1 ON /*_*/filearchive (fa_sha1);
465 CREATE TABLE /*_*/text (
466   old_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
467   old_text BLOB NOT NULL, old_flags BLOB NOT NULL
469 CREATE TABLE /*_*/oldimage (
470   oi_name BLOB DEFAULT '' NOT NULL, oi_archive_name BLOB DEFAULT '' NOT NULL,
471   oi_size INTEGER UNSIGNED DEFAULT 0 NOT NULL,
472   oi_width INTEGER DEFAULT 0 NOT NULL,
473   oi_height INTEGER DEFAULT 0 NOT NULL,
474   oi_bits INTEGER DEFAULT 0 NOT NULL,
475   oi_description_id BIGINT UNSIGNED NOT NULL,
476   oi_actor BIGINT UNSIGNED NOT NULL,
477   oi_timestamp BLOB NOT NULL, oi_metadata BLOB NOT NULL,
478   oi_media_type TEXT DEFAULT NULL, oi_major_mime TEXT DEFAULT 'unknown' NOT NULL,
479   oi_minor_mime BLOB DEFAULT 'unknown' NOT NULL,
480   oi_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
481   oi_sha1 BLOB DEFAULT '' NOT NULL
483 CREATE INDEX oi_actor_timestamp ON /*_*/oldimage (oi_actor, oi_timestamp);
484 CREATE INDEX oi_name_timestamp ON /*_*/oldimage (oi_name, oi_timestamp);
485 CREATE INDEX oi_name_archive_name ON /*_*/oldimage (oi_name, oi_archive_name);
486 CREATE INDEX oi_sha1 ON /*_*/oldimage (oi_sha1);
487 CREATE INDEX oi_timestamp ON /*_*/oldimage (oi_timestamp);
488 CREATE TABLE /*_*/objectcache (
489   keyname BLOB DEFAULT '' NOT NULL,
490   value BLOB DEFAULT NULL,
491   exptime BLOB NOT NULL,
492   modtoken VARCHAR(17) DEFAULT '00000000000000000' NOT NULL,
493   flags INTEGER UNSIGNED DEFAULT NULL,
494   PRIMARY KEY(keyname)
496 CREATE INDEX exptime ON /*_*/objectcache (exptime);
497 CREATE TABLE /*_*/ipblocks (
498   ipb_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
499   ipb_address BLOB NOT NULL, ipb_user INTEGER UNSIGNED DEFAULT 0 NOT NULL,
500   ipb_by_actor BIGINT UNSIGNED NOT NULL,
501   ipb_reason_id BIGINT UNSIGNED NOT NULL,
502   ipb_timestamp BLOB NOT NULL, ipb_auto SMALLINT DEFAULT 0 NOT NULL,
503   ipb_anon_only SMALLINT DEFAULT 0 NOT NULL,
504   ipb_create_account SMALLINT DEFAULT 1 NOT NULL,
505   ipb_enable_autoblock SMALLINT DEFAULT 1 NOT NULL,
506   ipb_expiry BLOB NOT NULL, ipb_range_start BLOB NOT NULL,
507   ipb_range_end BLOB NOT NULL, ipb_deleted SMALLINT DEFAULT 0 NOT NULL,
508   ipb_block_email SMALLINT DEFAULT 0 NOT NULL,
509   ipb_allow_usertalk SMALLINT DEFAULT 0 NOT NULL,
510   ipb_parent_block_id INTEGER DEFAULT NULL,
511   ipb_sitewide SMALLINT DEFAULT 1 NOT NULL
513 CREATE UNIQUE INDEX ipb_address_unique ON /*_*/ipblocks (ipb_address, ipb_user, ipb_auto);
514 CREATE INDEX ipb_user ON /*_*/ipblocks (ipb_user);
515 CREATE INDEX ipb_range ON /*_*/ipblocks (ipb_range_start, ipb_range_end);
516 CREATE INDEX ipb_timestamp ON /*_*/ipblocks (ipb_timestamp);
517 CREATE INDEX ipb_expiry ON /*_*/ipblocks (ipb_expiry);
518 CREATE INDEX ipb_parent_block_id ON /*_*/ipblocks (ipb_parent_block_id);
519 CREATE TABLE /*_*/image (
520   img_name BLOB DEFAULT '' NOT NULL,
521   img_size INTEGER UNSIGNED DEFAULT 0 NOT NULL,
522   img_width INTEGER DEFAULT 0 NOT NULL,
523   img_height INTEGER DEFAULT 0 NOT NULL,
524   img_metadata BLOB NOT NULL,
525   img_bits INTEGER DEFAULT 0 NOT NULL,
526   img_media_type TEXT DEFAULT NULL,
527   img_major_mime TEXT DEFAULT 'unknown' NOT NULL,
528   img_minor_mime BLOB DEFAULT 'unknown' NOT NULL,
529   img_description_id BIGINT UNSIGNED NOT NULL,
530   img_actor BIGINT UNSIGNED NOT NULL,
531   img_timestamp BLOB NOT NULL,
532   img_sha1 BLOB DEFAULT '' NOT NULL,
533   PRIMARY KEY(img_name)
535 CREATE INDEX img_actor_timestamp ON /*_*/image (img_actor, img_timestamp);
536 CREATE INDEX img_size ON /*_*/image (img_size);
537 CREATE INDEX img_timestamp ON /*_*/image (img_timestamp);
538 CREATE INDEX img_sha1 ON /*_*/image (img_sha1);
539 CREATE INDEX img_media_mime ON /*_*/image (
540   img_media_type, img_major_mime, img_minor_mime
542 CREATE TABLE /*_*/recentchanges (
543   rc_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
544   rc_timestamp BLOB NOT NULL, rc_actor BIGINT UNSIGNED NOT NULL,
545   rc_namespace INTEGER DEFAULT 0 NOT NULL,
546   rc_title BLOB DEFAULT '' NOT NULL, rc_comment_id BIGINT UNSIGNED NOT NULL,
547   rc_minor SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
548   rc_bot SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
549   rc_new SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
550   rc_cur_id INTEGER UNSIGNED DEFAULT 0 NOT NULL,
551   rc_this_oldid INTEGER UNSIGNED DEFAULT 0 NOT NULL,
552   rc_last_oldid INTEGER UNSIGNED DEFAULT 0 NOT NULL,
553   rc_type SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
554   rc_source BLOB DEFAULT '' NOT NULL,
555   rc_patrolled SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
556   rc_ip BLOB DEFAULT '' NOT NULL, rc_old_len INTEGER DEFAULT NULL,
557   rc_new_len INTEGER DEFAULT NULL, rc_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
558   rc_logid INTEGER UNSIGNED DEFAULT 0 NOT NULL,
559   rc_log_type BLOB DEFAULT NULL, rc_log_action BLOB DEFAULT NULL,
560   rc_params BLOB DEFAULT NULL
562 CREATE INDEX rc_timestamp ON /*_*/recentchanges (rc_timestamp);
563 CREATE INDEX rc_namespace_title_timestamp ON /*_*/recentchanges (
564   rc_namespace, rc_title, rc_timestamp
566 CREATE INDEX rc_cur_id ON /*_*/recentchanges (rc_cur_id);
567 CREATE INDEX rc_new_name_timestamp ON /*_*/recentchanges (
568   rc_new, rc_namespace, rc_timestamp
570 CREATE INDEX rc_ip ON /*_*/recentchanges (rc_ip);
571 CREATE INDEX rc_ns_actor ON /*_*/recentchanges (rc_namespace, rc_actor);
572 CREATE INDEX rc_actor ON /*_*/recentchanges (rc_actor, rc_timestamp);
573 CREATE INDEX rc_name_type_patrolled_timestamp ON /*_*/recentchanges (
574   rc_namespace, rc_type, rc_patrolled,
575   rc_timestamp
577 CREATE INDEX rc_this_oldid ON /*_*/recentchanges (rc_this_oldid);
578 CREATE TABLE /*_*/archive (
579   ar_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
580   ar_namespace INTEGER DEFAULT 0 NOT NULL,
581   ar_title BLOB DEFAULT '' NOT NULL, ar_comment_id BIGINT UNSIGNED NOT NULL,
582   ar_actor BIGINT UNSIGNED NOT NULL,
583   ar_timestamp BLOB NOT NULL, ar_minor_edit SMALLINT DEFAULT 0 NOT NULL,
584   ar_rev_id INTEGER UNSIGNED NOT NULL,
585   ar_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
586   ar_len INTEGER UNSIGNED DEFAULT NULL,
587   ar_page_id INTEGER UNSIGNED DEFAULT NULL,
588   ar_parent_id INTEGER UNSIGNED DEFAULT NULL,
589   ar_sha1 BLOB DEFAULT '' NOT NULL
591 CREATE INDEX ar_name_title_timestamp ON /*_*/archive (
592   ar_namespace, ar_title, ar_timestamp
594 CREATE INDEX ar_actor_timestamp ON /*_*/archive (ar_actor, ar_timestamp);
595 CREATE UNIQUE INDEX ar_revid_uniq ON /*_*/archive (ar_rev_id);
596 CREATE TABLE /*_*/page (
597   page_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
598   page_namespace INTEGER NOT NULL, page_title BLOB NOT NULL,
599   page_restrictions BLOB DEFAULT NULL,
600   page_is_redirect SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
601   page_is_new SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
602   page_random DOUBLE PRECISION NOT NULL,
603   page_touched BLOB NOT NULL, page_links_updated BLOB DEFAULT NULL,
604   page_latest INTEGER UNSIGNED NOT NULL,
605   page_len INTEGER UNSIGNED NOT NULL,
606   page_content_model BLOB DEFAULT NULL,
607   page_lang BLOB DEFAULT NULL
609 CREATE UNIQUE INDEX page_name_title ON /*_*/page (page_namespace, page_title);
610 CREATE INDEX page_random ON /*_*/page (page_random);
611 CREATE INDEX page_len ON /*_*/page (page_len);
612 CREATE INDEX page_redirect_namespace_len ON /*_*/page (
613   page_is_redirect, page_namespace,
614   page_len
616 CREATE TABLE /*_*/user (
617   user_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
618   user_name BLOB DEFAULT '' NOT NULL,
619   user_real_name BLOB DEFAULT '' NOT NULL,
620   user_password BLOB NOT NULL, user_newpassword BLOB NOT NULL,
621   user_newpass_time BLOB DEFAULT NULL,
622   user_email CLOB NOT NULL, user_touched BLOB NOT NULL,
623   user_token BLOB DEFAULT '' NOT NULL,
624   user_email_authenticated BLOB DEFAULT NULL,
625   user_email_token BLOB DEFAULT NULL,
626   user_email_token_expires BLOB DEFAULT NULL,
627   user_registration BLOB DEFAULT NULL,
628   user_editcount INTEGER DEFAULT NULL,
629   user_password_expires BLOB DEFAULT NULL
631 CREATE UNIQUE INDEX user_name ON /*_*/user (user_name);
632 CREATE INDEX user_email_token ON /*_*/user (user_email_token);
633 CREATE INDEX user_email ON /*_*/user (user_email);
634 CREATE TABLE /*_*/revision (
635   rev_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
636   rev_page INTEGER UNSIGNED NOT NULL,
637   rev_comment_id BIGINT UNSIGNED DEFAULT 0 NOT NULL,
638   rev_actor BIGINT UNSIGNED DEFAULT 0 NOT NULL,
639   rev_timestamp BLOB NOT NULL, rev_minor_edit SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
640   rev_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
641   rev_len INTEGER UNSIGNED DEFAULT NULL,
642   rev_parent_id INTEGER UNSIGNED DEFAULT NULL,
643   rev_sha1 BLOB DEFAULT '' NOT NULL
645 CREATE INDEX rev_timestamp ON /*_*/revision (rev_timestamp);
646 CREATE INDEX rev_page_timestamp ON /*_*/revision (rev_page, rev_timestamp);
647 CREATE INDEX rev_actor_timestamp ON /*_*/revision (rev_actor, rev_timestamp, rev_id);
648 CREATE INDEX rev_page_actor_timestamp ON /*_*/revision (
649   rev_page, rev_actor, rev_timestamp
651 CREATE TABLE /*_*/searchindex (
652   si_page INTEGER UNSIGNED NOT NULL,
653   si_title VARCHAR(255) DEFAULT '' NOT NULL,
654   si_text CLOB NOT NULL
656 CREATE UNIQUE INDEX si_page ON /*_*/searchindex (si_page);
657 CREATE INDEX si_title ON /*_*/searchindex (si_title);
658 CREATE INDEX si_text ON /*_*/searchindex (si_text);
659 CREATE TABLE /*_*/linktarget (
660   lt_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
661   lt_namespace INTEGER NOT NULL, lt_title BLOB NOT NULL
663 CREATE UNIQUE INDEX lt_namespace_title ON /*_*/linktarget (lt_namespace, lt_title);