Merge "Drop cache interwiki"
[mediawiki.git] / tests / phpunit / data / db / sqlite / tables-1.42.sql
blob908d424360c16b4e3c0bc182e71e91cc0d92580f
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   pl_target_id BIGINT UNSIGNED DEFAULT NULL,
121   PRIMARY KEY(pl_from, pl_namespace, pl_title)
123 CREATE INDEX pl_namespace ON /*_*/pagelinks (pl_namespace, pl_title, pl_from);
124 CREATE INDEX pl_backlinks_namespace ON /*_*/pagelinks (
125   pl_from_namespace, pl_namespace,
126   pl_title, pl_from
128 CREATE INDEX pl_target_id ON /*_*/pagelinks (pl_target_id, pl_from);
129 CREATE INDEX pl_backlinks_namespace_target_id ON /*_*/pagelinks (
130   pl_from_namespace, pl_target_id,
131   pl_from
133 CREATE TABLE /*_*/templatelinks (
134   tl_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
135   tl_target_id BIGINT UNSIGNED NOT NULL,
136   tl_from_namespace INTEGER DEFAULT 0 NOT NULL,
137   PRIMARY KEY(tl_from, tl_target_id)
139 CREATE INDEX tl_target_id ON /*_*/templatelinks (tl_target_id, tl_from);
140 CREATE INDEX tl_backlinks_namespace_target_id ON /*_*/templatelinks (
141   tl_from_namespace, tl_target_id,
142   tl_from
144 CREATE TABLE /*_*/imagelinks (
145   il_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
146   il_to BLOB DEFAULT '' NOT NULL,
147   il_from_namespace INTEGER DEFAULT 0 NOT NULL,
148   PRIMARY KEY(il_from, il_to)
150 CREATE INDEX il_to ON /*_*/imagelinks (il_to, il_from);
151 CREATE INDEX il_backlinks_namespace ON /*_*/imagelinks (
152   il_from_namespace, il_to, il_from
154 CREATE TABLE /*_*/langlinks (
155   ll_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
156   ll_lang BLOB DEFAULT '' NOT NULL,
157   ll_title BLOB DEFAULT '' NOT NULL,
158   PRIMARY KEY(ll_from, ll_lang)
160 CREATE INDEX ll_lang ON /*_*/langlinks (ll_lang, ll_title);
161 CREATE TABLE /*_*/iwlinks (
162   iwl_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
163   iwl_prefix BLOB DEFAULT '' NOT NULL,
164   iwl_title BLOB DEFAULT '' NOT NULL,
165   PRIMARY KEY(iwl_from, iwl_prefix, iwl_title)
167 CREATE INDEX iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_title, iwl_from);
168 CREATE TABLE /*_*/category (
169   cat_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
170   cat_title BLOB NOT NULL, cat_pages INTEGER DEFAULT 0 NOT NULL,
171   cat_subcats INTEGER DEFAULT 0 NOT NULL,
172   cat_files INTEGER DEFAULT 0 NOT NULL
174 CREATE UNIQUE INDEX cat_title ON /*_*/category (cat_title);
175 CREATE INDEX cat_pages ON /*_*/category (cat_pages);
176 CREATE TABLE /*_*/watchlist_expiry (
177   we_item INTEGER UNSIGNED NOT NULL,
178   we_expiry BLOB NOT NULL,
179   PRIMARY KEY(we_item)
181 CREATE INDEX we_expiry ON /*_*/watchlist_expiry (we_expiry);
182 CREATE TABLE /*_*/change_tag_def (
183   ctd_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
184   ctd_name BLOB NOT NULL, ctd_user_defined SMALLINT NOT NULL,
185   ctd_count BIGINT UNSIGNED DEFAULT 0 NOT NULL
187 CREATE UNIQUE INDEX ctd_name ON /*_*/change_tag_def (ctd_name);
188 CREATE INDEX ctd_count ON /*_*/change_tag_def (ctd_count);
189 CREATE INDEX ctd_user_defined ON /*_*/change_tag_def (ctd_user_defined);
190 CREATE TABLE /*_*/ipblocks_restrictions (
191   ir_ipb_id INTEGER UNSIGNED NOT NULL,
192   ir_type SMALLINT NOT NULL,
193   ir_value INTEGER UNSIGNED NOT NULL,
194   PRIMARY KEY(ir_ipb_id, ir_type, ir_value)
196 CREATE INDEX ir_type_value ON /*_*/ipblocks_restrictions (ir_type, ir_value);
197 CREATE TABLE /*_*/querycache (
198   qc_type BLOB NOT NULL, qc_value INTEGER UNSIGNED DEFAULT 0 NOT NULL,
199   qc_namespace INTEGER DEFAULT 0 NOT NULL,
200   qc_title BLOB DEFAULT '' NOT NULL
202 CREATE INDEX qc_type ON /*_*/querycache (qc_type, qc_value);
203 CREATE TABLE /*_*/querycachetwo (
204   qcc_type BLOB NOT NULL, qcc_value INTEGER UNSIGNED DEFAULT 0 NOT NULL,
205   qcc_namespace INTEGER DEFAULT 0 NOT NULL,
206   qcc_title BLOB DEFAULT '' NOT NULL,
207   qcc_namespacetwo INTEGER DEFAULT 0 NOT NULL,
208   qcc_titletwo BLOB DEFAULT '' NOT NULL
210 CREATE INDEX qcc_type ON /*_*/querycachetwo (qcc_type, qcc_value);
211 CREATE INDEX qcc_title ON /*_*/querycachetwo (
212   qcc_type, qcc_namespace, qcc_title
214 CREATE INDEX qcc_titletwo ON /*_*/querycachetwo (
215   qcc_type, qcc_namespacetwo, qcc_titletwo
217 CREATE TABLE /*_*/page_restrictions (
218   pr_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
219   pr_page INTEGER UNSIGNED NOT NULL,
220   pr_type BLOB NOT NULL, pr_level BLOB NOT NULL,
221   pr_cascade SMALLINT NOT NULL, pr_expiry BLOB DEFAULT NULL
223 CREATE UNIQUE INDEX pr_pagetype ON /*_*/page_restrictions (pr_page, pr_type);
224 CREATE INDEX pr_typelevel ON /*_*/page_restrictions (pr_type, pr_level);
225 CREATE INDEX pr_level ON /*_*/page_restrictions (pr_level);
226 CREATE INDEX pr_cascade ON /*_*/page_restrictions (pr_cascade);
227 CREATE TABLE /*_*/user_groups (
228   ug_user INTEGER UNSIGNED DEFAULT 0 NOT NULL,
229   ug_group BLOB DEFAULT '' NOT NULL,
230   ug_expiry BLOB DEFAULT NULL,
231   PRIMARY KEY(ug_user, ug_group)
233 CREATE INDEX ug_group ON /*_*/user_groups (ug_group);
234 CREATE INDEX ug_expiry ON /*_*/user_groups (ug_expiry);
235 CREATE TABLE /*_*/querycache_info (
236   qci_type BLOB DEFAULT '' NOT NULL,
237   qci_timestamp BLOB DEFAULT '19700101000000' NOT NULL,
238   PRIMARY KEY(qci_type)
240 CREATE TABLE /*_*/watchlist (
241   wl_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
242   wl_user INTEGER UNSIGNED NOT NULL,
243   wl_namespace INTEGER DEFAULT 0 NOT NULL,
244   wl_title BLOB DEFAULT '' NOT NULL, wl_notificationtimestamp BLOB DEFAULT NULL
246 CREATE UNIQUE INDEX wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
247 CREATE INDEX wl_namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
248 CREATE INDEX wl_user_notificationtimestamp ON /*_*/watchlist (
249   wl_user, wl_notificationtimestamp
251 CREATE TABLE /*_*/sites (
252   site_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
253   site_global_key BLOB NOT NULL,
254   site_type BLOB NOT NULL,
255   site_group BLOB NOT NULL,
256   site_source BLOB NOT NULL,
257   site_language BLOB NOT NULL,
258   site_protocol BLOB NOT NULL,
259   site_domain VARCHAR(255) NOT NULL,
260   site_data BLOB NOT NULL,
261   site_forward SMALLINT NOT NULL,
262   site_config BLOB NOT NULL
264 CREATE UNIQUE INDEX site_global_key ON /*_*/sites (site_global_key);
265 CREATE TABLE /*_*/user_newtalk (
266   user_id INTEGER UNSIGNED DEFAULT 0 NOT NULL,
267   user_ip BLOB DEFAULT '' NOT NULL, user_last_timestamp BLOB DEFAULT NULL
269 CREATE INDEX un_user_id ON /*_*/user_newtalk (user_id);
270 CREATE INDEX un_user_ip ON /*_*/user_newtalk (user_ip);
271 CREATE TABLE /*_*/interwiki (
272   iw_prefix VARCHAR(32) NOT NULL,
273   iw_url BLOB NOT NULL,
274   iw_api BLOB NOT NULL,
275   iw_wikiid VARCHAR(64) NOT NULL,
276   iw_local SMALLINT NOT NULL,
277   iw_trans SMALLINT DEFAULT 0 NOT NULL,
278   PRIMARY KEY(iw_prefix)
280 CREATE TABLE /*_*/protected_titles (
281   pt_namespace INTEGER NOT NULL,
282   pt_title BLOB NOT NULL,
283   pt_user INTEGER UNSIGNED NOT NULL,
284   pt_reason_id BIGINT UNSIGNED NOT NULL,
285   pt_timestamp BLOB NOT NULL,
286   pt_expiry BLOB NOT NULL,
287   pt_create_perm BLOB NOT NULL,
288   PRIMARY KEY(pt_namespace, pt_title)
290 CREATE INDEX pt_timestamp ON /*_*/protected_titles (pt_timestamp);
291 CREATE TABLE /*_*/externallinks (
292   el_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
293   el_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
294   el_to_domain_index BLOB DEFAULT '' NOT NULL,
295   el_to_path BLOB DEFAULT NULL
297 CREATE INDEX el_from ON /*_*/externallinks (el_from);
298 CREATE INDEX el_to_domain_index_to_path ON /*_*/externallinks (el_to_domain_index, el_to_path);
299 CREATE TABLE /*_*/ip_changes (
300   ipc_rev_id INTEGER UNSIGNED DEFAULT 0 NOT NULL,
301   ipc_rev_timestamp BLOB NOT NULL,
302   ipc_hex BLOB DEFAULT '' NOT NULL,
303   PRIMARY KEY(ipc_rev_id)
305 CREATE INDEX ipc_rev_timestamp ON /*_*/ip_changes (ipc_rev_timestamp);
306 CREATE INDEX ipc_hex_time ON /*_*/ip_changes (ipc_hex, ipc_rev_timestamp);
307 CREATE TABLE /*_*/page_props (
308   pp_page INTEGER UNSIGNED NOT NULL,
309   pp_propname BLOB NOT NULL,
310   pp_value BLOB NOT NULL,
311   pp_sortkey DOUBLE PRECISION DEFAULT NULL,
312   PRIMARY KEY(pp_page, pp_propname)
314 CREATE UNIQUE INDEX pp_propname_page ON /*_*/page_props (pp_propname, pp_page);
315 CREATE UNIQUE INDEX pp_propname_sortkey_page ON /*_*/page_props (pp_propname, pp_sortkey, pp_page);
316 CREATE TABLE /*_*/job (
317   job_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
318   job_cmd BLOB DEFAULT '' NOT NULL, job_namespace INTEGER NOT NULL,
319   job_title BLOB NOT NULL, job_timestamp BLOB DEFAULT NULL,
320   job_params BLOB NOT NULL, job_random INTEGER UNSIGNED DEFAULT 0 NOT NULL,
321   job_attempts INTEGER UNSIGNED DEFAULT 0 NOT NULL,
322   job_token BLOB DEFAULT '' NOT NULL,
323   job_token_timestamp BLOB DEFAULT NULL,
324   job_sha1 BLOB DEFAULT '' NOT NULL
326 CREATE INDEX job_sha1 ON /*_*/job (job_sha1);
327 CREATE INDEX job_cmd_token ON /*_*/job (job_cmd, job_token, job_random);
328 CREATE INDEX job_cmd_token_id ON /*_*/job (job_cmd, job_token, job_id);
329 CREATE INDEX job_cmd ON /*_*/job (
330   job_cmd, job_namespace, job_title,
331   job_params
333 CREATE INDEX job_timestamp ON /*_*/job (job_timestamp);
334 CREATE TABLE /*_*/slot_roles (
335   role_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
336   role_name BLOB NOT NULL
338 CREATE UNIQUE INDEX role_name ON /*_*/slot_roles (role_name);
339 CREATE TABLE /*_*/content_models (
340   model_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
341   model_name BLOB NOT NULL
343 CREATE UNIQUE INDEX model_name ON /*_*/content_models (model_name);
344 CREATE TABLE /*_*/categorylinks (
345   cl_from INTEGER UNSIGNED DEFAULT 0 NOT NULL,
346   cl_to BLOB DEFAULT '' NOT NULL,
347   cl_sortkey BLOB DEFAULT '' NOT NULL,
348   cl_sortkey_prefix BLOB DEFAULT '' NOT NULL,
349   cl_timestamp DATETIME NOT NULL,
350   cl_collation BLOB DEFAULT '' NOT NULL,
351   cl_type TEXT DEFAULT 'page' NOT NULL,
352   PRIMARY KEY(cl_from, cl_to)
354 CREATE INDEX cl_sortkey ON /*_*/categorylinks (
355   cl_to, cl_type, cl_sortkey, cl_from
357 CREATE INDEX cl_timestamp ON /*_*/categorylinks (cl_to, cl_timestamp);
358 CREATE TABLE /*_*/logging (
359   log_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
360   log_type BLOB DEFAULT '' NOT NULL, log_action BLOB DEFAULT '' NOT NULL,
361   log_timestamp BLOB DEFAULT '19700101000000' NOT NULL,
362   log_actor BIGINT UNSIGNED NOT NULL,
363   log_namespace INTEGER DEFAULT 0 NOT NULL,
364   log_title BLOB DEFAULT '' NOT NULL,
365   log_page INTEGER UNSIGNED DEFAULT NULL,
366   log_comment_id BIGINT UNSIGNED NOT NULL,
367   log_params BLOB NOT NULL, log_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL
369 CREATE INDEX log_type_time ON /*_*/logging (log_type, log_timestamp);
370 CREATE INDEX log_actor_time ON /*_*/logging (log_actor, log_timestamp);
371 CREATE INDEX log_page_time ON /*_*/logging (
372   log_namespace, log_title, log_timestamp
374 CREATE INDEX log_times ON /*_*/logging (log_timestamp);
375 CREATE INDEX log_actor_type_time ON /*_*/logging (
376   log_actor, log_type, log_timestamp
378 CREATE INDEX log_page_id_time ON /*_*/logging (log_page, log_timestamp);
379 CREATE INDEX log_type_action ON /*_*/logging (
380   log_type, log_action, log_timestamp
382 CREATE TABLE /*_*/uploadstash (
383   us_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
384   us_user INTEGER UNSIGNED NOT NULL,
385   us_key VARCHAR(255) NOT NULL,
386   us_orig_path VARCHAR(255) NOT NULL,
387   us_path VARCHAR(255) NOT NULL,
388   us_source_type VARCHAR(50) DEFAULT NULL,
389   us_timestamp BLOB NOT NULL,
390   us_status VARCHAR(50) NOT NULL,
391   us_chunk_inx INTEGER UNSIGNED DEFAULT NULL,
392   us_props BLOB DEFAULT NULL,
393   us_size BIGINT UNSIGNED NOT NULL,
394   us_sha1 VARCHAR(31) NOT NULL,
395   us_mime VARCHAR(255) DEFAULT NULL,
396   us_media_type TEXT DEFAULT NULL,
397   us_image_width INTEGER UNSIGNED DEFAULT NULL,
398   us_image_height INTEGER UNSIGNED DEFAULT NULL,
399   us_image_bits SMALLINT UNSIGNED DEFAULT NULL
401 CREATE INDEX us_user ON /*_*/uploadstash (us_user);
402 CREATE UNIQUE INDEX us_key ON /*_*/uploadstash (us_key);
403 CREATE INDEX us_timestamp ON /*_*/uploadstash (us_timestamp);
404 CREATE TABLE /*_*/filearchive (
405   fa_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
406   fa_name BLOB DEFAULT '' NOT NULL, fa_archive_name BLOB DEFAULT '',
407   fa_storage_group BLOB DEFAULT NULL,
408   fa_storage_key BLOB DEFAULT '', fa_deleted_user INTEGER DEFAULT NULL,
409   fa_deleted_timestamp BLOB DEFAULT NULL,
410   fa_deleted_reason_id BIGINT UNSIGNED NOT NULL,
411   fa_size BIGINT UNSIGNED DEFAULT 0,
412   fa_width INTEGER DEFAULT 0, fa_height INTEGER DEFAULT 0,
413   fa_metadata BLOB DEFAULT NULL, fa_bits INTEGER DEFAULT 0,
414   fa_media_type TEXT DEFAULT NULL, fa_major_mime TEXT DEFAULT 'unknown',
415   fa_minor_mime BLOB DEFAULT 'unknown',
416   fa_description_id BIGINT UNSIGNED NOT NULL,
417   fa_actor BIGINT UNSIGNED NOT NULL,
418   fa_timestamp BLOB DEFAULT NULL, fa_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
419   fa_sha1 BLOB DEFAULT '' NOT NULL
421 CREATE INDEX fa_name ON /*_*/filearchive (fa_name, fa_timestamp);
422 CREATE INDEX fa_storage_group ON /*_*/filearchive (
423   fa_storage_group, fa_storage_key
425 CREATE INDEX fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp);
426 CREATE INDEX fa_actor_timestamp ON /*_*/filearchive (fa_actor, fa_timestamp);
427 CREATE INDEX fa_sha1 ON /*_*/filearchive (fa_sha1);
428 CREATE TABLE /*_*/text (
429   old_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
430   old_text BLOB NOT NULL, old_flags BLOB NOT NULL
432 CREATE TABLE /*_*/oldimage (
433   oi_name BLOB DEFAULT '' NOT NULL, oi_archive_name BLOB DEFAULT '' NOT NULL,
434   oi_size BIGINT UNSIGNED DEFAULT 0 NOT NULL,
435   oi_width INTEGER DEFAULT 0 NOT NULL,
436   oi_height INTEGER DEFAULT 0 NOT NULL,
437   oi_bits INTEGER DEFAULT 0 NOT NULL,
438   oi_description_id BIGINT UNSIGNED NOT NULL,
439   oi_actor BIGINT UNSIGNED NOT NULL,
440   oi_timestamp BLOB NOT NULL, oi_metadata BLOB NOT NULL,
441   oi_media_type TEXT DEFAULT NULL, oi_major_mime TEXT DEFAULT 'unknown' NOT NULL,
442   oi_minor_mime BLOB DEFAULT 'unknown' NOT NULL,
443   oi_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
444   oi_sha1 BLOB DEFAULT '' NOT NULL
446 CREATE INDEX oi_actor_timestamp ON /*_*/oldimage (oi_actor, oi_timestamp);
447 CREATE INDEX oi_name_timestamp ON /*_*/oldimage (oi_name, oi_timestamp);
448 CREATE INDEX oi_name_archive_name ON /*_*/oldimage (oi_name, oi_archive_name);
449 CREATE INDEX oi_sha1 ON /*_*/oldimage (oi_sha1);
450 CREATE INDEX oi_timestamp ON /*_*/oldimage (oi_timestamp);
451 CREATE TABLE /*_*/objectcache (
452   keyname BLOB DEFAULT '' NOT NULL,
453   value BLOB DEFAULT NULL,
454   exptime BLOB NOT NULL,
455   modtoken VARCHAR(17) DEFAULT '00000000000000000' NOT NULL,
456   flags INTEGER UNSIGNED DEFAULT NULL,
457   PRIMARY KEY(keyname)
459 CREATE INDEX exptime ON /*_*/objectcache (exptime);
460 CREATE TABLE /*_*/ipblocks (
461   ipb_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
462   ipb_address BLOB NOT NULL, ipb_user INTEGER UNSIGNED DEFAULT 0 NOT NULL,
463   ipb_by_actor BIGINT UNSIGNED NOT NULL,
464   ipb_reason_id BIGINT UNSIGNED NOT NULL,
465   ipb_timestamp BLOB NOT NULL, ipb_auto SMALLINT DEFAULT 0 NOT NULL,
466   ipb_anon_only SMALLINT DEFAULT 0 NOT NULL,
467   ipb_create_account SMALLINT DEFAULT 1 NOT NULL,
468   ipb_enable_autoblock SMALLINT DEFAULT 1 NOT NULL,
469   ipb_expiry BLOB NOT NULL, ipb_range_start BLOB NOT NULL,
470   ipb_range_end BLOB NOT NULL, ipb_deleted SMALLINT DEFAULT 0 NOT NULL,
471   ipb_block_email SMALLINT DEFAULT 0 NOT NULL,
472   ipb_allow_usertalk SMALLINT DEFAULT 0 NOT NULL,
473   ipb_parent_block_id INTEGER UNSIGNED DEFAULT NULL,
474   ipb_sitewide SMALLINT DEFAULT 1 NOT NULL
476 CREATE UNIQUE INDEX ipb_address_unique ON /*_*/ipblocks (ipb_address, ipb_user, ipb_auto);
477 CREATE INDEX ipb_user ON /*_*/ipblocks (ipb_user);
478 CREATE INDEX ipb_range ON /*_*/ipblocks (ipb_range_start, ipb_range_end);
479 CREATE INDEX ipb_timestamp ON /*_*/ipblocks (ipb_timestamp);
480 CREATE INDEX ipb_expiry ON /*_*/ipblocks (ipb_expiry);
481 CREATE INDEX ipb_parent_block_id ON /*_*/ipblocks (ipb_parent_block_id);
482 CREATE TABLE /*_*/block (
483   bl_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
484   bl_target INTEGER UNSIGNED NOT NULL,
485   bl_by_actor BIGINT UNSIGNED NOT NULL,
486   bl_reason_id BIGINT UNSIGNED NOT NULL,
487   bl_timestamp BLOB NOT NULL, bl_anon_only SMALLINT DEFAULT 0 NOT NULL,
488   bl_create_account SMALLINT DEFAULT 1 NOT NULL,
489   bl_enable_autoblock SMALLINT DEFAULT 1 NOT NULL,
490   bl_expiry BLOB NOT NULL, bl_deleted SMALLINT DEFAULT 0 NOT NULL,
491   bl_block_email SMALLINT DEFAULT 0 NOT NULL,
492   bl_allow_usertalk SMALLINT DEFAULT 0 NOT NULL,
493   bl_parent_block_id INTEGER UNSIGNED DEFAULT NULL,
494   bl_sitewide SMALLINT DEFAULT 1 NOT NULL
496 CREATE INDEX bl_timestamp ON /*_*/block (bl_timestamp);
497 CREATE INDEX bl_target ON /*_*/block (bl_target);
498 CREATE INDEX bl_expiry ON /*_*/block (bl_expiry);
499 CREATE INDEX bl_parent_block_id ON /*_*/block (bl_parent_block_id);
500 CREATE TABLE /*_*/block_target (
501   bt_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
502   bt_address BLOB DEFAULT NULL, bt_user INTEGER UNSIGNED DEFAULT NULL,
503   bt_user_text BLOB DEFAULT NULL, bt_auto SMALLINT DEFAULT 0 NOT NULL,
504   bt_range_start BLOB DEFAULT NULL,
505   bt_range_end BLOB DEFAULT NULL, bt_ip_hex BLOB DEFAULT NULL,
506   bt_count INTEGER DEFAULT 0 NOT NULL
508 CREATE INDEX bt_address ON /*_*/block_target (bt_address);
509 CREATE INDEX bt_ip_user_text ON /*_*/block_target (bt_ip_hex, bt_user_text);
510 CREATE INDEX bt_range ON /*_*/block_target (bt_range_start, bt_range_end);
511 CREATE INDEX bt_user ON /*_*/block_target (bt_user);
512 CREATE TABLE /*_*/image (
513   img_name BLOB DEFAULT '' NOT NULL,
514   img_size BIGINT UNSIGNED DEFAULT 0 NOT NULL,
515   img_width INTEGER DEFAULT 0 NOT NULL,
516   img_height INTEGER DEFAULT 0 NOT NULL,
517   img_metadata BLOB NOT NULL,
518   img_bits INTEGER DEFAULT 0 NOT NULL,
519   img_media_type TEXT DEFAULT NULL,
520   img_major_mime TEXT DEFAULT 'unknown' NOT NULL,
521   img_minor_mime BLOB DEFAULT 'unknown' NOT NULL,
522   img_description_id BIGINT UNSIGNED NOT NULL,
523   img_actor BIGINT UNSIGNED NOT NULL,
524   img_timestamp BLOB NOT NULL,
525   img_sha1 BLOB DEFAULT '' NOT NULL,
526   PRIMARY KEY(img_name)
528 CREATE INDEX img_actor_timestamp ON /*_*/image (img_actor, img_timestamp);
529 CREATE INDEX img_size ON /*_*/image (img_size);
530 CREATE INDEX img_timestamp ON /*_*/image (img_timestamp);
531 CREATE INDEX img_sha1 ON /*_*/image (img_sha1);
532 CREATE INDEX img_media_mime ON /*_*/image (
533   img_media_type, img_major_mime, img_minor_mime
535 CREATE TABLE /*_*/recentchanges (
536   rc_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
537   rc_timestamp BLOB NOT NULL, rc_actor BIGINT UNSIGNED NOT NULL,
538   rc_namespace INTEGER DEFAULT 0 NOT NULL,
539   rc_title BLOB DEFAULT '' NOT NULL, rc_comment_id BIGINT UNSIGNED NOT NULL,
540   rc_minor SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
541   rc_bot SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
542   rc_new SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
543   rc_cur_id INTEGER UNSIGNED DEFAULT 0 NOT NULL,
544   rc_this_oldid INTEGER UNSIGNED DEFAULT 0 NOT NULL,
545   rc_last_oldid INTEGER UNSIGNED DEFAULT 0 NOT NULL,
546   rc_type SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
547   rc_source BLOB DEFAULT '' NOT NULL,
548   rc_patrolled SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
549   rc_ip BLOB DEFAULT '' NOT NULL, rc_old_len INTEGER DEFAULT NULL,
550   rc_new_len INTEGER DEFAULT NULL, rc_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
551   rc_logid INTEGER UNSIGNED DEFAULT 0 NOT NULL,
552   rc_log_type BLOB DEFAULT NULL, rc_log_action BLOB DEFAULT NULL,
553   rc_params BLOB DEFAULT NULL
555 CREATE INDEX rc_timestamp ON /*_*/recentchanges (rc_timestamp);
556 CREATE INDEX rc_namespace_title_timestamp ON /*_*/recentchanges (
557   rc_namespace, rc_title, rc_timestamp
559 CREATE INDEX rc_cur_id ON /*_*/recentchanges (rc_cur_id);
560 CREATE INDEX rc_new_name_timestamp ON /*_*/recentchanges (
561   rc_new, rc_namespace, rc_timestamp
563 CREATE INDEX rc_ip ON /*_*/recentchanges (rc_ip);
564 CREATE INDEX rc_ns_actor ON /*_*/recentchanges (rc_namespace, rc_actor);
565 CREATE INDEX rc_actor ON /*_*/recentchanges (rc_actor, rc_timestamp);
566 CREATE INDEX rc_name_type_patrolled_timestamp ON /*_*/recentchanges (
567   rc_namespace, rc_type, rc_patrolled,
568   rc_timestamp
570 CREATE INDEX rc_this_oldid ON /*_*/recentchanges (rc_this_oldid);
571 CREATE TABLE /*_*/archive (
572   ar_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
573   ar_namespace INTEGER DEFAULT 0 NOT NULL,
574   ar_title BLOB DEFAULT '' NOT NULL, ar_comment_id BIGINT UNSIGNED NOT NULL,
575   ar_actor BIGINT UNSIGNED NOT NULL,
576   ar_timestamp BLOB NOT NULL, ar_minor_edit SMALLINT DEFAULT 0 NOT NULL,
577   ar_rev_id INTEGER UNSIGNED NOT NULL,
578   ar_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
579   ar_len INTEGER UNSIGNED DEFAULT NULL,
580   ar_page_id INTEGER UNSIGNED DEFAULT NULL,
581   ar_parent_id INTEGER UNSIGNED DEFAULT NULL,
582   ar_sha1 BLOB DEFAULT '' NOT NULL
584 CREATE INDEX ar_name_title_timestamp ON /*_*/archive (
585   ar_namespace, ar_title, ar_timestamp
587 CREATE INDEX ar_actor_timestamp ON /*_*/archive (ar_actor, ar_timestamp);
588 CREATE UNIQUE INDEX ar_revid_uniq ON /*_*/archive (ar_rev_id);
589 CREATE TABLE /*_*/page (
590   page_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
591   page_namespace INTEGER NOT NULL, page_title BLOB NOT NULL,
592   page_is_redirect SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
593   page_is_new SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
594   page_random DOUBLE PRECISION NOT NULL,
595   page_touched BLOB NOT NULL, page_links_updated BLOB DEFAULT NULL,
596   page_latest INTEGER UNSIGNED NOT NULL,
597   page_len INTEGER UNSIGNED NOT NULL,
598   page_content_model BLOB DEFAULT NULL,
599   page_lang BLOB DEFAULT NULL
601 CREATE UNIQUE INDEX page_name_title ON /*_*/page (page_namespace, page_title);
602 CREATE INDEX page_random ON /*_*/page (page_random);
603 CREATE INDEX page_len ON /*_*/page (page_len);
604 CREATE INDEX page_redirect_namespace_len ON /*_*/page (
605   page_is_redirect, page_namespace,
606   page_len
608 CREATE TABLE /*_*/user (
609   user_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
610   user_name BLOB DEFAULT '' NOT NULL,
611   user_real_name BLOB DEFAULT '' NOT NULL,
612   user_password BLOB NOT NULL, user_newpassword BLOB NOT NULL,
613   user_newpass_time BLOB DEFAULT NULL,
614   user_email CLOB NOT NULL, user_touched BLOB NOT NULL,
615   user_token BLOB DEFAULT '' NOT NULL,
616   user_email_authenticated BLOB DEFAULT NULL,
617   user_email_token BLOB DEFAULT NULL,
618   user_email_token_expires BLOB DEFAULT NULL,
619   user_registration BLOB DEFAULT NULL,
620   user_editcount INTEGER UNSIGNED DEFAULT NULL,
621   user_password_expires BLOB DEFAULT NULL,
622   user_is_temp SMALLINT DEFAULT 0 NOT NULL
624 CREATE UNIQUE INDEX user_name ON /*_*/user (user_name);
625 CREATE INDEX user_email_token ON /*_*/user (user_email_token);
626 CREATE INDEX user_email ON /*_*/user (user_email);
627 CREATE TABLE /*_*/user_autocreate_serial (
628   uas_shard INTEGER UNSIGNED NOT NULL,
629   uas_year SMALLINT UNSIGNED NOT NULL,
630   uas_value INTEGER UNSIGNED NOT NULL,
631   PRIMARY KEY(uas_shard, uas_year)
633 CREATE TABLE /*_*/revision (
634   rev_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
635   rev_page INTEGER UNSIGNED NOT NULL,
636   rev_comment_id BIGINT UNSIGNED DEFAULT 0 NOT NULL,
637   rev_actor BIGINT UNSIGNED DEFAULT 0 NOT NULL,
638   rev_timestamp BLOB NOT NULL, rev_minor_edit SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
639   rev_deleted SMALLINT UNSIGNED DEFAULT 0 NOT NULL,
640   rev_len INTEGER UNSIGNED DEFAULT NULL,
641   rev_parent_id INTEGER UNSIGNED DEFAULT NULL,
642   rev_sha1 BLOB DEFAULT '' NOT NULL
644 CREATE INDEX rev_timestamp ON /*_*/revision (rev_timestamp);
645 CREATE INDEX rev_page_timestamp ON /*_*/revision (rev_page, rev_timestamp);
646 CREATE INDEX rev_actor_timestamp ON /*_*/revision (rev_actor, rev_timestamp, rev_id);
647 CREATE INDEX rev_page_actor_timestamp ON /*_*/revision (
648   rev_page, rev_actor, rev_timestamp
650 CREATE TABLE /*_*/searchindex (
651   si_page INTEGER UNSIGNED NOT NULL,
652   si_title VARCHAR(255) DEFAULT '' NOT NULL,
653   si_text CLOB NOT NULL
655 CREATE UNIQUE INDEX si_page ON /*_*/searchindex (si_page);
656 CREATE INDEX si_title ON /*_*/searchindex (si_title);
657 CREATE INDEX si_text ON /*_*/searchindex (si_text);
658 CREATE TABLE /*_*/linktarget (
659   lt_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
660   lt_namespace INTEGER NOT NULL, lt_title BLOB NOT NULL
662 CREATE UNIQUE INDEX lt_namespace_title ON /*_*/linktarget (lt_namespace, lt_title);