r80547 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r80546‎ | r80547 | r80548 >
Date:01:11, 19 January 2011
Author:catrope
Status:reverted (Comments)
Tags:
Comment:
War on varchar. Changed all occurrences of varchar(N) and varchar(N) binary to varbinary(N). varchars cause problems ("Invalid mix of collations" errors) on MySQL databases with certain configs, most notably the default MySQL config
Modified paths:
  • /trunk/phase3/maintenance/archives/patch-category.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-categorylinks-better-collation.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-categorylinks.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-change_tag.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-external_user.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-filearchive.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-fix-il_from.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-interwiki.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-ipb_by_text.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-iw_api_and_wikiid.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-iwlinks.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-job.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-l10n_cache.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-langlinks.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-linktables.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-log_search.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-log_user_text.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-logging-title.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-logging.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-pagelinks.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-profiling.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-protected_titles.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-pt_title-encoding.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-querycache.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-querycachetwo.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-rc_type.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-rd_interwiki.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-redirect.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-restructure.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-searchindex.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-templatelinks.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-testrun.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-updatelog.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-user-realname.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-val_ip.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-validate.sql (modified) (history)
  • /trunk/phase3/maintenance/archives/patch-watchlist.sql (modified) (history)
  • /trunk/phase3/maintenance/tables.sql (modified) (history)

Diff [purge]

Index: trunk/phase3/maintenance/archives/patch-rc_type.sql
@@ -3,7 +3,7 @@
44 ALTER TABLE /*$wgDBprefix*/recentchanges
55 ADD rc_type tinyint unsigned NOT NULL default '0',
66 ADD rc_moved_to_ns tinyint unsigned NOT NULL default '0',
7 - ADD rc_moved_to_title varchar(255) binary NOT NULL default '';
 7+ ADD rc_moved_to_title varbinary(255) NOT NULL default '';
88
99 UPDATE /*$wgDBprefix*/recentchanges SET rc_type=1 WHERE rc_new;
1010 UPDATE /*$wgDBprefix*/recentchanges SET rc_type=3 WHERE rc_namespace=4 AND (rc_title='Deletion_log' OR rc_title='Upload_log');
Index: trunk/phase3/maintenance/archives/patch-job.sql
@@ -9,7 +9,7 @@
1010 -- Namespace and title to act on
1111 -- Should be 0 and '' if the command does not operate on a title
1212 job_namespace int NOT NULL,
13 - job_title varchar(255) binary NOT NULL,
 13+ job_title varbinary(255) NOT NULL,
1414
1515 -- Any other parameters to the command
1616 -- Stored as a PHP serialized array, or an empty string if there are no parameters
Index: trunk/phase3/maintenance/archives/patch-interwiki.sql
@@ -4,7 +4,7 @@
55
66 CREATE TABLE /*$wgDBprefix*/interwiki (
77 -- The interwiki prefix, (e.g. "Meatball", or the language prefix "de")
8 - iw_prefix varchar(32) NOT NULL,
 8+ iw_prefix varbinary(32) NOT NULL,
99
1010 -- The URL of the wiki, with "$1" as a placeholder for an article name.
1111 -- Any spaces in the name will be transformed to underscores before
Index: trunk/phase3/maintenance/archives/patch-logging-title.sql
@@ -3,4 +3,4 @@
44
55 ALTER TABLE /*$wgDBprefix*/logging
66 CHANGE COLUMN log_title
7 - log_title varchar(255) binary NOT NULL default '';
 7+ log_title varbinary(255) NOT NULL default '';
Index: trunk/phase3/maintenance/archives/patch-categorylinks.sql
@@ -10,7 +10,7 @@
1111 -- Name of the category.
1212 -- This is also the page_title of the category's description page;
1313 -- all such pages are in namespace 14 (NS_CATEGORY).
14 - cl_to varchar(255) binary NOT NULL default '',
 14+ cl_to varbinary(255) NOT NULL default '',
1515
1616 -- The title of the linking page, or an optional override
1717 -- to determine sort order. Sorting is by binary order, which
@@ -19,7 +19,7 @@
2020 --
2121 -- Truncate so that the cl_sortkey key fits in 1000 bytes
2222 -- (MyISAM 5 with server_character_set=utf8)
23 - cl_sortkey varchar(70) binary NOT NULL default '',
 23+ cl_sortkey varbinary(70) NOT NULL default '',
2424
2525 -- This isn't really used at present. Provided for an optional
2626 -- sorting method by approximate addition time.
Index: trunk/phase3/maintenance/archives/patch-change_tag.sql
@@ -4,7 +4,7 @@
55 ct_rc_id int NULL,
66 ct_log_id int NULL,
77 ct_rev_id int NULL,
8 - ct_tag varchar(255) NOT NULL,
 8+ ct_tag varbinary(255) NOT NULL,
99 ct_params BLOB NULL
1010 ) /*$wgDBTableOptions*/;
1111
@@ -28,5 +28,5 @@
2929
3030
3131 CREATE TABLE /*_*/valid_tag (
32 - vt_tag varchar(255) NOT NULL PRIMARY KEY
 32+ vt_tag varbinary(255) NOT NULL PRIMARY KEY
3333 ) /*$wgDBTableOptions*/;
Index: trunk/phase3/maintenance/archives/patch-profiling.sql
@@ -5,7 +5,7 @@
66 pf_count int NOT NULL default 0,
77 pf_time float NOT NULL default 0,
88 pf_memory float NOT NULL default 0,
9 - pf_name varchar(255) NOT NULL default '',
10 - pf_server varchar(30) NOT NULL default '',
 9+ pf_name varbinary(255) NOT NULL default '',
 10+ pf_server varbinary(30) NOT NULL default '',
1111 UNIQUE KEY pf_name_server (pf_name, pf_server)
1212 ) ENGINE=HEAP;
Index: trunk/phase3/maintenance/archives/patch-searchindex.sql
@@ -12,7 +12,7 @@
1313 si_page int unsigned NOT NULL,
1414
1515 -- Munged version of title
16 - si_title varchar(255) NOT NULL default '',
 16+ si_title varbinary(255) NOT NULL default '',
1717
1818 -- Munged version of body text
1919 si_text mediumtext NOT NULL,
Index: trunk/phase3/maintenance/archives/patch-user-realname.sql
@@ -2,4 +2,4 @@
33 -- used for author attribution or other places that real names matter.
44
55 ALTER TABLE user
6 - ADD (user_real_name varchar(255) binary NOT NULL default '');
 6+ ADD (user_real_name varbinary(255) NOT NULL default '');
Index: trunk/phase3/maintenance/archives/patch-redirect.sql
@@ -11,7 +11,7 @@
1212 -- and deletions may refer to different page records as time
1313 -- goes by.
1414 rd_namespace int NOT NULL default '0',
15 - rd_title varchar(255) binary NOT NULL default '',
 15+ rd_title varbinary(255) NOT NULL default '',
1616
1717 PRIMARY KEY rd_from (rd_from),
1818 KEY rd_ns_title (rd_namespace,rd_title,rd_from)
Index: trunk/phase3/maintenance/archives/patch-testrun.sql
@@ -13,7 +13,7 @@
1414 create table /*$wgDBprefix*/testrun (
1515 tr_id int not null auto_increment,
1616
17 - tr_date char(14) binary,
 17+ tr_date binary(14),
1818 tr_mw_version blob,
1919 tr_php_version blob,
2020 tr_db_version blob,
@@ -24,7 +24,7 @@
2525
2626 create table /*$wgDBprefix*/testitem (
2727 ti_run int not null,
28 - ti_name varchar(255),
 28+ ti_name varbinary(255),
2929 ti_success bool,
3030
3131 unique key (ti_run, ti_name),
Index: trunk/phase3/maintenance/archives/patch-iwlinks.sql
@@ -9,7 +9,7 @@
1010 iwl_prefix varbinary(20) NOT NULL default '',
1111
1212 -- Title of the target, including namespace
13 - iwl_title varchar(255) binary NOT NULL default ''
 13+ iwl_title varbinary(255) NOT NULL default ''
1414 ) /*$wgDBTableOptions*/;
1515
1616 CREATE UNIQUE INDEX /*i*/iwl_from ON /*_*/iwlinks (iwl_from, iwl_prefix, iwl_title);
Index: trunk/phase3/maintenance/archives/patch-updatelog.sql
@@ -1,4 +1,4 @@
22 CREATE TABLE /*$wgDBprefix*/updatelog (
3 - ul_key varchar(255) NOT NULL,
 3+ ul_key varbinary(255) NOT NULL,
44 PRIMARY KEY (ul_key)
55 ) /*$wgDBTableOptions*/;
Index: trunk/phase3/maintenance/archives/patch-logging.sql
@@ -17,10 +17,10 @@
1818 -- Key to the page affected. Where a user is the target,
1919 -- this will point to the user page.
2020 log_namespace int NOT NULL default 0,
21 - log_title varchar(255) binary NOT NULL default '',
 21+ log_title varbinary(255) NOT NULL default '',
2222
2323 -- Freeform text. Interpreted as edit history comments.
24 - log_comment varchar(255) NOT NULL default '',
 24+ log_comment varbinary(255) NOT NULL default '',
2525
2626 -- LF separated list of miscellaneous parameters
2727 log_params blob NOT NULL,
Index: trunk/phase3/maintenance/archives/patch-linktables.sql
@@ -31,7 +31,7 @@
3232 -- Text of the target page title ("namesapce:title").
3333 -- Unfortunately this doesn't split the namespace index
3434 -- key and therefore can't easily be joined to anything.
35 - bl_to varchar(255) binary NOT NULL default '',
 35+ bl_to varbinary(255) NOT NULL default '',
3636 UNIQUE KEY bl_from(bl_from,bl_to),
3737 KEY (bl_to)
3838
@@ -50,7 +50,7 @@
5151 -- Filename of target image.
5252 -- This is also the page_title of the file's description page;
5353 -- all such pages are in namespace 6 (NS_FILE).
54 - il_to varchar(255) binary NOT NULL default '',
 54+ il_to varbinary(255) NOT NULL default '',
5555
5656 UNIQUE KEY il_from(il_from,il_to),
5757 KEY (il_to)
Index: trunk/phase3/maintenance/archives/patch-rd_interwiki.sql
@@ -1,6 +1,6 @@
22 -- Add interwiki and fragment columns to redirect table
33
44 ALTER TABLE /*$wgDBprefix*/redirect
5 - ADD rd_interwiki varchar(32) default NULL,
6 - ADD rd_fragment varchar(255) binary default NULL;
 5+ ADD rd_interwiki varbinary(32) default NULL,
 6+ ADD rd_fragment varbinary(255) default NULL;
77
Index: trunk/phase3/maintenance/archives/patch-log_search.sql
@@ -2,7 +2,7 @@
33 -- The type of ID (rev ID, log ID, rev timestamp, username)
44 ls_field varbinary(32) NOT NULL,
55 -- The value of the ID
6 - ls_value varchar(255) NOT NULL,
 6+ ls_value varbinary(255) NOT NULL,
77 -- Key to log_id
88 ls_log_id int unsigned NOT NULL default 0
99 ) /*$wgDBTableOptions*/;
Index: trunk/phase3/maintenance/archives/patch-val_ip.sql
@@ -1,4 +1,4 @@
22 -- Column added 2005-05-24
33
44 ALTER TABLE /*$wgDBprefix*/validate
5 - ADD COLUMN val_ip varchar(20) NOT NULL default '';
 5+ ADD COLUMN val_ip varbinary(20) NOT NULL default '';
Index: trunk/phase3/maintenance/archives/patch-category.sql
@@ -1,7 +1,7 @@
22 CREATE TABLE /*$wgDBprefix*/category (
33 cat_id int unsigned NOT NULL auto_increment,
44
5 - cat_title varchar(255) binary NOT NULL,
 5+ cat_title varbinary(255) NOT NULL,
66
77 cat_pages int signed NOT NULL default 0,
88 cat_subcats int signed NOT NULL default 0,
Index: trunk/phase3/maintenance/archives/patch-restructure.sql
@@ -12,7 +12,7 @@
1313 CREATE TABLE /*$wgDBprefix*/page (
1414 page_id int unsigned NOT NULL auto_increment,
1515 page_namespace tinyint NOT NULL,
16 - page_title varchar(255) binary NOT NULL,
 16+ page_title varbinary(255) NOT NULL,
1717 page_restrictions tinyblob NOT NULL,
1818 page_counter bigint unsigned NOT NULL default '0',
1919 page_is_redirect tinyint unsigned NOT NULL default '0',
@@ -33,7 +33,7 @@
3434 rev_page int unsigned NOT NULL,
3535 rev_comment tinyblob NOT NULL,
3636 rev_user int unsigned NOT NULL default '0',
37 - rev_user_text varchar(255) binary NOT NULL default '',
 37+ rev_user_text varbinary(255) NOT NULL default '',
3838 rev_timestamp binary(14) NOT NULL default '',
3939 rev_minor_edit tinyint unsigned NOT NULL default '0',
4040 rev_deleted tinyint unsigned NOT NULL default '0',
Index: trunk/phase3/maintenance/archives/patch-iw_api_and_wikiid.sql
@@ -5,5 +5,5 @@
66 ALTER TABLE /*_*/interwiki
77 ADD iw_api BLOB NOT NULL;
88 ALTER TABLE /*_*/interwiki
9 - ADD iw_wikiid varchar(64) NOT NULL;
 9+ ADD iw_wikiid varbinary(64) NOT NULL;
1010
Index: trunk/phase3/maintenance/archives/patch-templatelinks.sql
@@ -10,7 +10,7 @@
1111 -- and deletions may refer to different page records as time
1212 -- goes by.
1313 tl_namespace int NOT NULL default '0',
14 - tl_title varchar(255) binary NOT NULL default '',
 14+ tl_title varbinary(255) NOT NULL default '',
1515
1616 UNIQUE KEY tl_from(tl_from,tl_namespace,tl_title),
1717 KEY (tl_namespace,tl_title)
Index: trunk/phase3/maintenance/archives/patch-external_user.sql
@@ -3,7 +3,7 @@
44 eu_local_id int unsigned NOT NULL PRIMARY KEY,
55
66 -- Some opaque identifier provided by the external database
7 - eu_external_id varchar(255) binary NOT NULL
 7+ eu_external_id varbinary(255) NOT NULL
88 ) /*$wgDBTableOptions*/;
99
1010 CREATE UNIQUE INDEX /*i*/eu_external_id ON /*_*/external_user (eu_external_id);
Index: trunk/phase3/maintenance/archives/patch-categorylinks-better-collation.sql
@@ -10,7 +10,7 @@
1111 -- sure to also change the check in LinksUpdate.php.
1212 ALTER TABLE /*$wgDBprefix*/categorylinks
1313 CHANGE COLUMN cl_sortkey cl_sortkey varbinary(230) NOT NULL default '',
14 - ADD COLUMN cl_sortkey_prefix varchar(255) binary NOT NULL default '',
 14+ ADD COLUMN cl_sortkey_prefix varbinary(255) NOT NULL default '',
1515 ADD COLUMN cl_collation varbinary(32) NOT NULL default '',
1616 ADD COLUMN cl_type ENUM('page', 'subcat', 'file') NOT NULL default 'page',
1717 ADD INDEX (cl_collation),
Index: trunk/phase3/maintenance/archives/patch-querycachetwo.sql
@@ -9,11 +9,11 @@
1010
1111 -- Target namespace+title
1212 qcc_namespace int NOT NULL default '0',
13 - qcc_title varchar(255) binary NOT NULL default '',
 13+ qcc_title varbinary(255) NOT NULL default '',
1414
1515 -- Target namespace+title2
1616 qcc_namespacetwo int NOT NULL default '0',
17 - qcc_titletwo varchar(255) binary NOT NULL default '',
 17+ qcc_titletwo varbinary(255) NOT NULL default '',
1818
1919 KEY qcc_type (qcc_type,qcc_value),
2020 KEY qcc_title (qcc_type,qcc_namespace,qcc_title),
Index: trunk/phase3/maintenance/archives/patch-validate.sql
@@ -7,7 +7,7 @@
88 `val_revision` int(11) unsigned NOT NULL default '0',
99 `val_type` int(11) unsigned NOT NULL default '0',
1010 `val_value` int(11) default '0',
11 - `val_comment` varchar(255) NOT NULL default '',
12 - `val_ip` varchar(20) NOT NULL default '',
 11+ `val_comment` varbinary(255) NOT NULL default '',
 12+ `val_ip` varbinary(20) NOT NULL default '',
1313 KEY `val_user` (`val_user`,`val_revision`)
1414 ) /*$wgDBTableOptions*/;
Index: trunk/phase3/maintenance/archives/patch-pt_title-encoding.sql
@@ -2,4 +2,4 @@
33 -- This might cause failures with JOINs, and could protect the wrong pages
44 -- with different case variants or unrelated UTF-8 chars.
55 ALTER TABLE /*$wgDBprefix*/protected_titles
6 - CHANGE COLUMN pt_title pt_title varchar(255) binary NOT NULL;
 6+ CHANGE COLUMN pt_title pt_title varbinary(255) NOT NULL;
Index: trunk/phase3/maintenance/archives/patch-fix-il_from.sql
@@ -3,7 +3,7 @@
44 RENAME TABLE /*_*/imagelinks TO /*_*/imagelinks_old;
55 CREATE TABLE /*_*/imagelinks (
66 il_from int unsigned NOT NULL default 0,
7 - il_to varchar(255) binary NOT NULL default ''
 7+ il_to varbinary(255) NOT NULL default ''
88 ) /*$wgDBTableOptions*/;
99
1010 CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
Index: trunk/phase3/maintenance/archives/patch-protected_titles.sql
@@ -1,7 +1,7 @@
22 -- Protected titles - nonexistent pages that have been protected
33 CREATE TABLE /*$wgDBprefix*/protected_titles (
44 pt_namespace int NOT NULL,
5 - pt_title varchar(255) binary NOT NULL,
 5+ pt_title varbinary(255) NOT NULL,
66 pt_user int unsigned NOT NULL,
77 pt_reason tinyblob,
88 pt_timestamp binary(14) NOT NULL,
Index: trunk/phase3/maintenance/archives/patch-querycache.sql
@@ -9,7 +9,7 @@
1010
1111 -- Target namespace+title
1212 qc_namespace int NOT NULL default '0',
13 - qc_title varchar(255) binary NOT NULL default '',
 13+ qc_title varbinary(255) NOT NULL default '',
1414
1515 KEY (qc_type,qc_value)
1616
Index: trunk/phase3/maintenance/archives/patch-ipb_by_text.sql
@@ -2,7 +2,7 @@
33 -- Required for crosswiki blocks.
44
55 ALTER TABLE /*$wgDBprefix*/ipblocks
6 - ADD ipb_by_text varchar(255) binary NOT NULL default '';
 6+ ADD ipb_by_text varbinary(255) NOT NULL default '';
77
88 UPDATE /*$wgDBprefix*/ipblocks
99 JOIN /*$wgDBprefix*/user ON ipb_by = user_id
Index: trunk/phase3/maintenance/archives/patch-log_user_text.sql
@@ -1,5 +1,5 @@
22 ALTER TABLE /*$wgDBprefix*/logging
3 - ADD log_user_text varchar(255) binary NOT NULL default '',
 3+ ADD log_user_text varbinary(255) NOT NULL default '',
44 ADD log_page int unsigned NULL,
55 CHANGE log_type log_type varbinary(32) NOT NULL,
66 CHANGE log_action log_action varbinary(32) NOT NULL;
Index: trunk/phase3/maintenance/archives/patch-l10n_cache.sql
@@ -1,7 +1,7 @@
22 -- Table for storing localisation data
33 CREATE TABLE /*_*/l10n_cache (
44 lc_lang varbinary(32) NOT NULL,
5 - lc_key varchar(255) NOT NULL,
 5+ lc_key varbinary(255) NOT NULL,
66 lc_value mediumblob NOT NULL
77 ) /*$wgDBTableOptions*/;
88 CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key);
Index: trunk/phase3/maintenance/archives/patch-watchlist.sql
@@ -12,7 +12,7 @@
1313 CREATE TABLE watchlist2 (
1414 wl_user int unsigned NOT NULL,
1515 wl_namespace int unsigned NOT NULL default '0',
16 - wl_title varchar(255) binary NOT NULL default '',
 16+ wl_title varbinary(255) NOT NULL default '',
1717 UNIQUE KEY (wl_user, wl_namespace, wl_title)
1818 ) /*$wgDBTableOptions*/;
1919
Index: trunk/phase3/maintenance/archives/patch-pagelinks.sql
@@ -25,7 +25,7 @@
2626 -- and deletions may refer to different page records as time
2727 -- goes by.
2828 pl_namespace int NOT NULL default '0',
29 - pl_title varchar(255) binary NOT NULL default '',
 29+ pl_title varbinary(255) NOT NULL default '',
3030
3131 UNIQUE KEY pl_from(pl_from,pl_namespace,pl_title),
3232 KEY (pl_namespace,pl_title)
Index: trunk/phase3/maintenance/archives/patch-filearchive.sql
@@ -6,10 +6,10 @@
77 fa_id int not null auto_increment,
88
99 -- Original base filename; key to image.img_name, page.page_title, etc
10 - fa_name varchar(255) binary NOT NULL default '',
 10+ fa_name varbinary(255) NOT NULL default '',
1111
1212 -- Filename of archived file, if an old revision
13 - fa_archive_name varchar(255) binary default '',
 13+ fa_archive_name varbinary(255) default '',
1414
1515 -- Which storage bin (directory tree or object store) the file data
1616 -- is stored in. Should be 'deleted' for files that have been deleted;
@@ -39,7 +39,7 @@
4040 fa_minor_mime varbinary(32) default "unknown",
4141 fa_description tinyblob,
4242 fa_user int unsigned default '0',
43 - fa_user_text varchar(255) binary default '',
 43+ fa_user_text varbinary(255) default '',
4444 fa_timestamp binary(14) default '',
4545
4646 PRIMARY KEY (fa_id),
Index: trunk/phase3/maintenance/archives/patch-langlinks.sql
@@ -6,7 +6,7 @@
77 ll_lang varbinary(20) NOT NULL default '',
88
99 -- Title of the target, including namespace
10 - ll_title varchar(255) binary NOT NULL default '',
 10+ ll_title varbinary(255) NOT NULL default '',
1111
1212 UNIQUE KEY (ll_from, ll_lang),
1313 KEY (ll_lang, ll_title)
Index: trunk/phase3/maintenance/tables.sql
@@ -58,10 +58,10 @@
5959 -- conflicts. Spaces are allowed, and are _not_ converted
6060 -- to underscores like titles. See the User::newFromName() for
6161 -- the specific tests that usernames have to pass.
62 - user_name varchar(255) binary NOT NULL default '',
 62+ user_name varbinary(255) NOT NULL default '',
6363
6464 -- Optional 'real name' to be displayed in credit listings
65 - user_real_name varchar(255) binary NOT NULL default '',
 65+ user_real_name varbinary(255) NOT NULL default '',
6666
6767 -- Password hashes, see User::crypt() and User::comparePasswords()
6868 -- in User.php for the algorithm
@@ -223,7 +223,7 @@
224224
225225 -- The rest of the title, as text.
226226 -- Spaces are transformed into underscores in title storage.
227 - page_title varchar(255) binary NOT NULL,
 227+ page_title varbinary(255) NOT NULL,
228228
229229 -- Comma-separated set of permission keys indicating who
230230 -- can move or edit the page.
@@ -290,7 +290,7 @@
291291 rev_user int unsigned NOT NULL default 0,
292292
293293 -- Text username or IP address of the editor.
294 - rev_user_text varchar(255) binary NOT NULL default '',
 294+ rev_user_text varbinary(255) NOT NULL default '',
295295
296296 -- Timestamp
297297 rev_timestamp binary(14) NOT NULL default '',
@@ -360,7 +360,7 @@
361361 --
362362 CREATE TABLE /*_*/archive (
363363 ar_namespace int NOT NULL default 0,
364 - ar_title varchar(255) binary NOT NULL default '',
 364+ ar_title varbinary(255) NOT NULL default '',
365365
366366 -- Newly deleted pages will not store text in this table,
367367 -- but will reference the separately existing text rows.
@@ -373,7 +373,7 @@
374374 -- Basic revision stuff...
375375 ar_comment tinyblob NOT NULL,
376376 ar_user int unsigned NOT NULL default 0,
377 - ar_user_text varchar(255) binary NOT NULL,
 377+ ar_user_text varbinary(255) NOT NULL,
378378 ar_timestamp binary(14) NOT NULL default '',
379379 ar_minor_edit tinyint NOT NULL default 0,
380380
@@ -434,7 +434,7 @@
435435 -- and deletions may refer to different page records as time
436436 -- goes by.
437437 pl_namespace int NOT NULL default 0,
438 - pl_title varchar(255) binary NOT NULL default ''
 438+ pl_title varbinary(255) NOT NULL default ''
439439 ) /*$wgDBTableOptions*/;
440440
441441 CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
@@ -453,7 +453,7 @@
454454 -- and deletions may refer to different page records as time
455455 -- goes by.
456456 tl_namespace int NOT NULL default 0,
457 - tl_title varchar(255) binary NOT NULL default ''
 457+ tl_title varbinary(255) NOT NULL default ''
458458 ) /*$wgDBTableOptions*/;
459459
460460 CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
@@ -472,7 +472,7 @@
473473 -- Filename of target image.
474474 -- This is also the page_title of the file's description page;
475475 -- all such pages are in namespace 6 (NS_FILE).
476 - il_to varchar(255) binary NOT NULL default ''
 476+ il_to varbinary(255) NOT NULL default ''
477477 ) /*$wgDBTableOptions*/;
478478
479479 CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
@@ -490,7 +490,7 @@
491491 -- Name of the category.
492492 -- This is also the page_title of the category's description page;
493493 -- all such pages are in namespace 14 (NS_CATEGORY).
494 - cl_to varchar(255) binary NOT NULL default '',
 494+ cl_to varbinary(255) NOT NULL default '',
495495
496496 -- A binary string obtained by applying a sortkey generation algorithm
497497 -- (Collation::getSortKey()) to page_title, or cl_sortkey_prefix . "\n"
@@ -504,7 +504,7 @@
505505 -- collations without reparsing all pages.
506506 -- Note: If you change the length of this field, you also need to change
507507 -- code in LinksUpdate.php. See bug 25254.
508 - cl_sortkey_prefix varchar(255) binary NOT NULL default '',
 508+ cl_sortkey_prefix varbinary(255) NOT NULL default '',
509509
510510 -- This isn't really used at present. Provided for an optional
511511 -- sorting method by approximate addition time.
@@ -549,7 +549,7 @@
550550 -- Name of the category, in the same form as page_title (with underscores).
551551 -- If there is a category page corresponding to this category, by definition,
552552 -- it has this name (in the Category namespace).
553 - cat_title varchar(255) binary NOT NULL,
 553+ cat_title varbinary(255) NOT NULL,
554554
555555 -- The numbers of member pages (including categories and media), subcatego-
556556 -- ries, and Image: namespace members, respectively. These are signed to
@@ -607,7 +607,7 @@
608608 eu_local_id int unsigned NOT NULL PRIMARY KEY,
609609
610610 -- Some opaque identifier provided by the external database
611 - eu_external_id varchar(255) binary NOT NULL
 611+ eu_external_id varbinary(255) NOT NULL
612612 ) /*$wgDBTableOptions*/;
613613
614614 CREATE UNIQUE INDEX /*i*/eu_external_id ON /*_*/external_user (eu_external_id);
@@ -624,7 +624,7 @@
625625 ll_lang varbinary(20) NOT NULL default '',
626626
627627 -- Title of the target, including namespace
628 - ll_title varchar(255) binary NOT NULL default ''
 628+ ll_title varbinary(255) NOT NULL default ''
629629 ) /*$wgDBTableOptions*/;
630630
631631 CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang);
@@ -642,7 +642,7 @@
643643 iwl_prefix varbinary(20) NOT NULL default '',
644644
645645 -- Title of the target, including namespace
646 - iwl_title varchar(255) binary NOT NULL default ''
 646+ iwl_title varbinary(255) NOT NULL default ''
647647 ) /*$wgDBTableOptions*/;
648648
649649 CREATE UNIQUE INDEX /*i*/iwl_from ON /*_*/iwlinks (iwl_from, iwl_prefix, iwl_title);
@@ -720,7 +720,7 @@
721721 ipb_by int unsigned NOT NULL default 0,
722722
723723 -- User name of blocker
724 - ipb_by_text varchar(255) binary NOT NULL default '',
 724+ ipb_by_text varbinary(255) NOT NULL default '',
725725
726726 -- Text comment made by blocker.
727727 ipb_reason tinyblob NOT NULL,
@@ -780,7 +780,7 @@
781781 -- Filename.
782782 -- This is also the title of the associated description page,
783783 -- which will be in namespace 6 (NS_FILE).
784 - img_name varchar(255) binary NOT NULL default '' PRIMARY KEY,
 784+ img_name varbinary(255) NOT NULL default '' PRIMARY KEY,
785785
786786 -- File size in bytes.
787787 img_size int unsigned NOT NULL default 0,
@@ -814,7 +814,7 @@
815815
816816 -- user_id and user_name of uploader.
817817 img_user int unsigned NOT NULL default 0,
818 - img_user_text varchar(255) binary NOT NULL,
 818+ img_user_text varbinary(255) NOT NULL,
819819
820820 -- Time of the upload.
821821 img_timestamp varbinary(14) NOT NULL default '',
@@ -839,11 +839,11 @@
840840 --
841841 CREATE TABLE /*_*/oldimage (
842842 -- Base filename: key to image.img_name
843 - oi_name varchar(255) binary NOT NULL default '',
 843+ oi_name varbinary(255) NOT NULL default '',
844844
845845 -- Filename of the archived file.
846846 -- This is generally a timestamp and '!' prepended to the base name.
847 - oi_archive_name varchar(255) binary NOT NULL default '',
 847+ oi_archive_name varbinary(255) NOT NULL default '',
848848
849849 -- Other fields as in image...
850850 oi_size int unsigned NOT NULL default 0,
@@ -852,7 +852,7 @@
853853 oi_bits int NOT NULL default 0,
854854 oi_description tinyblob NOT NULL,
855855 oi_user int unsigned NOT NULL default 0,
856 - oi_user_text varchar(255) binary NOT NULL,
 856+ oi_user_text varbinary(255) NOT NULL,
857857 oi_timestamp binary(14) NOT NULL default '',
858858
859859 oi_metadata mediumblob NOT NULL,
@@ -878,10 +878,10 @@
879879 fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
880880
881881 -- Original base filename; key to image.img_name, page.page_title, etc
882 - fa_name varchar(255) binary NOT NULL default '',
 882+ fa_name varbinary(255) NOT NULL default '',
883883
884884 -- Filename of archived file, if an old revision
885 - fa_archive_name varchar(255) binary default '',
 885+ fa_archive_name varbinary(255) default '',
886886
887887 -- Which storage bin (directory tree or object store) the file data
888888 -- is stored in. Should be 'deleted' for files that have been deleted;
@@ -911,7 +911,7 @@
912912 fa_minor_mime varbinary(100) default "unknown",
913913 fa_description tinyblob,
914914 fa_user int unsigned default 0,
915 - fa_user_text varchar(255) binary,
 915+ fa_user_text varbinary(255),
916916 fa_timestamp binary(14) default '',
917917
918918 -- Visibility of deleted revisions, bitfield
@@ -940,14 +940,14 @@
941941
942942 -- As in revision
943943 rc_user int unsigned NOT NULL default 0,
944 - rc_user_text varchar(255) binary NOT NULL,
 944+ rc_user_text varbinary(255) NOT NULL,
945945
946946 -- When pages are renamed, their RC entries do _not_ change.
947947 rc_namespace int NOT NULL default 0,
948 - rc_title varchar(255) binary NOT NULL default '',
 948+ rc_title varbinary(255) NOT NULL default '',
949949
950950 -- as in revision...
951 - rc_comment varchar(255) binary NOT NULL default '',
 951+ rc_comment varbinary(255) NOT NULL default '',
952952 rc_minor tinyint unsigned NOT NULL default 0,
953953
954954 -- Edits by user accounts with the 'bot' rights key are
@@ -971,7 +971,7 @@
972972 -- These may no longer be used, with the new move log.
973973 rc_type tinyint unsigned NOT NULL default 0,
974974 rc_moved_to_ns tinyint unsigned NOT NULL default 0,
975 - rc_moved_to_title varchar(255) binary NOT NULL default '',
 975+ rc_moved_to_title varbinary(255) NOT NULL default '',
976976
977977 -- If the Recent Changes Patrol option is enabled,
978978 -- users may mark edits as having been reviewed to
@@ -1018,7 +1018,7 @@
10191019 -- Note that users may watch pages which do not exist yet,
10201020 -- or existed in the past but have been deleted.
10211021 wl_namespace int NOT NULL default 0,
1022 - wl_title varchar(255) binary NOT NULL default '',
 1022+ wl_title varbinary(255) NOT NULL default '',
10231023
10241024 -- Timestamp when user was last sent a notification e-mail;
10251025 -- cleared when the user visits the page.
@@ -1068,7 +1068,7 @@
10691069 si_page int unsigned NOT NULL,
10701070
10711071 -- Munged version of title
1072 - si_title varchar(255) NOT NULL default '',
 1072+ si_title varbinary(255) NOT NULL default '',
10731073
10741074 -- Munged version of body text
10751075 si_text mediumtext NOT NULL
@@ -1084,7 +1084,7 @@
10851085 --
10861086 CREATE TABLE /*_*/interwiki (
10871087 -- The interwiki prefix, (e.g. "Meatball", or the language prefix "de")
1088 - iw_prefix varchar(32) NOT NULL,
 1088+ iw_prefix varbinary(32) NOT NULL,
10891089
10901090 -- The URL of the wiki, with "$1" as a placeholder for an article name.
10911091 -- Any spaces in the name will be transformed to underscores before
@@ -1095,7 +1095,7 @@
10961096 iw_api blob NOT NULL,
10971097
10981098 -- The name of the database (for a connection to be established with wfGetLB( 'wikiid' ))
1099 - iw_wikiid varchar(64) NOT NULL,
 1099+ iw_wikiid varbinary(64) NOT NULL,
11001100
11011101 -- A boolean value indicating whether the wiki is in this project
11021102 -- (used, for example, to detect redirect loops)
@@ -1120,7 +1120,7 @@
11211121
11221122 -- Target namespace+title
11231123 qc_namespace int NOT NULL default 0,
1124 - qc_title varchar(255) binary NOT NULL default ''
 1124+ qc_title varbinary(255) NOT NULL default ''
11251125 ) /*$wgDBTableOptions*/;
11261126
11271127 CREATE INDEX /*i*/qc_type ON /*_*/querycache (qc_type,qc_value);
@@ -1166,16 +1166,16 @@
11671167 log_user int unsigned NOT NULL default 0,
11681168
11691169 -- Name of the user who performed this action
1170 - log_user_text varchar(255) binary NOT NULL default '',
 1170+ log_user_text varbinary(255) NOT NULL default '',
11711171
11721172 -- Key to the page affected. Where a user is the target,
11731173 -- this will point to the user page.
11741174 log_namespace int NOT NULL default 0,
1175 - log_title varchar(255) binary NOT NULL default '',
 1175+ log_title varbinary(255) NOT NULL default '',
11761176 log_page int unsigned NULL,
11771177
11781178 -- Freeform text. Interpreted as edit history comments.
1179 - log_comment varchar(255) NOT NULL default '',
 1179+ log_comment varbinary(255) NOT NULL default '',
11801180
11811181 -- LF separated list of miscellaneous parameters
11821182 log_params blob NOT NULL,
@@ -1196,7 +1196,7 @@
11971197 -- The type of ID (rev ID, log ID, rev timestamp, username)
11981198 ls_field varbinary(32) NOT NULL,
11991199 -- The value of the ID
1200 - ls_value varchar(255) NOT NULL,
 1200+ ls_value varbinary(255) NOT NULL,
12011201 -- Key to log_id
12021202 ls_log_id int unsigned NOT NULL default 0
12031203 ) /*$wgDBTableOptions*/;
@@ -1207,10 +1207,10 @@
12081208 CREATE TABLE /*_*/trackbacks (
12091209 tb_id int PRIMARY KEY AUTO_INCREMENT,
12101210 tb_page int REFERENCES /*_*/page(page_id) ON DELETE CASCADE,
1211 - tb_title varchar(255) NOT NULL,
 1211+ tb_title varbinary(255) NOT NULL,
12121212 tb_url blob NOT NULL,
12131213 tb_ex text,
1214 - tb_name varchar(255)
 1214+ tb_name varbinary(255)
12151215 ) /*$wgDBTableOptions*/;
12161216 CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page);
12171217
@@ -1226,7 +1226,7 @@
12271227 -- Namespace and title to act on
12281228 -- Should be 0 and '' if the command does not operate on a title
12291229 job_namespace int NOT NULL,
1230 - job_title varchar(255) binary NOT NULL,
 1230+ job_title varbinary(255) NOT NULL,
12311231
12321232 -- Any other parameters to the command
12331233 -- Stored as a PHP serialized array, or an empty string if there are no parameters
@@ -1259,9 +1259,9 @@
12601260 -- and deletions may refer to different page records as time
12611261 -- goes by.
12621262 rd_namespace int NOT NULL default 0,
1263 - rd_title varchar(255) binary NOT NULL default '',
1264 - rd_interwiki varchar(32) default NULL,
1265 - rd_fragment varchar(255) binary default NULL
 1263+ rd_title varbinary(255) NOT NULL default '',
 1264+ rd_interwiki varbinary(32) default NULL,
 1265+ rd_fragment varbinary(255) default NULL
12661266 ) /*$wgDBTableOptions*/;
12671267
12681268 CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from);
@@ -1277,11 +1277,11 @@
12781278
12791279 -- Target namespace+title
12801280 qcc_namespace int NOT NULL default 0,
1281 - qcc_title varchar(255) binary NOT NULL default '',
 1281+ qcc_title varbinary(255) NOT NULL default '',
12821282
12831283 -- Target namespace+title2
12841284 qcc_namespacetwo int NOT NULL default 0,
1285 - qcc_titletwo varchar(255) binary NOT NULL default ''
 1285+ qcc_titletwo varbinary(255) NOT NULL default ''
12861286 ) /*$wgDBTableOptions*/;
12871287
12881288 CREATE INDEX /*i*/qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value);
@@ -1316,7 +1316,7 @@
13171317 -- Protected titles - nonexistent pages that have been protected
13181318 CREATE TABLE /*_*/protected_titles (
13191319 pt_namespace int NOT NULL,
1320 - pt_title varchar(255) binary NOT NULL,
 1320+ pt_title varbinary(255) NOT NULL,
13211321 pt_user int unsigned NOT NULL,
13221322 pt_reason tinyblob,
13231323 pt_timestamp binary(14) NOT NULL,
@@ -1340,7 +1340,7 @@
13411341
13421342 -- A table to log updates, one text key row per update.
13431343 CREATE TABLE /*_*/updatelog (
1344 - ul_key varchar(255) NOT NULL PRIMARY KEY,
 1344+ ul_key varbinary(255) NOT NULL PRIMARY KEY,
13451345 ul_value blob
13461346 ) /*$wgDBTableOptions*/;
13471347
@@ -1354,7 +1354,7 @@
13551355 -- REVID for the change
13561356 ct_rev_id int NULL,
13571357 -- Tag applied
1358 - ct_tag varchar(255) NOT NULL,
 1358+ ct_tag varbinary(255) NOT NULL,
13591359 -- Parameters for the tag, presently unused
13601360 ct_params blob NULL
13611361 ) /*$wgDBTableOptions*/;
@@ -1385,7 +1385,7 @@
13861386
13871387
13881388 CREATE TABLE /*_*/valid_tag (
1389 - vt_tag varchar(255) NOT NULL PRIMARY KEY
 1389+ vt_tag varbinary(255) NOT NULL PRIMARY KEY
13901390 ) /*$wgDBTableOptions*/;
13911391
13921392 -- Table for storing localisation data
@@ -1393,7 +1393,7 @@
13941394 -- Language code
13951395 lc_lang varbinary(32) NOT NULL,
13961396 -- Cache key
1397 - lc_key varchar(255) NOT NULL,
 1397+ lc_key varbinary(255) NOT NULL,
13981398 -- Value
13991399 lc_value mediumblob NOT NULL
14001400 ) /*$wgDBTableOptions*/;

Follow-up revisions

RevisionCommit summaryAuthorDate
r80665Self-revert r80547 per CR, breaks stuff and is undesirablecatrope23:56, 20 January 2011

Comments

#Comment by Tim Starling (talk | contribs)   05:02, 20 January 2011

Of course it fixes it. If you just stop using MySQL character sets and collations altogether, then any errors associated with that feature will go away. But there's no point in making a change like this and leaving "UTF-8" as an option in the installer.

I think that our users do actually want the ability to use MySQL's character set feature. So I think this should be reverted and whatever problem it is that you're seeing with it should be fixed.

#Comment by Catrope (talk | contribs)   23:53, 20 January 2011

Priyanka was getting an "Invalid mix of collations" error right after installing MediaWiki 1.17. The query throwing the error was something with WHERE page_title IN ('Long', 'list', 'of', 'titles') where some of the titles contained UTF-8 characters and the page_title field was in latin1 binary because her default charset is latin1 (standard MySQL config AFAIK) and the field was defined as varchar(255) binary. Changing it to varbinary(255) fixed it.

As to your point of using MySQL's collations and Chad's point of this breaking stuff, I'll revert this and partially reapply it to only change varchar(N) binary to varbinary(N) and leave non-binary varchars alone.

#Comment by Tim Starling (talk | contribs)   00:06, 21 January 2011

Setting $wgDBmysql5=true should fix Priyanka's problem.

#Comment by Catrope (talk | contribs)   01:31, 21 January 2011

Setting it where? She's running a clean install without a LocalSettings file.

#Comment by 😂 (talk | contribs)   16:39, 20 January 2011

This breaks searchindex, cannot have a fulltext index on a binary field.

Status & tagging log