"Saper" posted a comment on MediaWiki.r113888.
URL: http://www.mediawiki.org/wiki/Special:Code/MediaWiki/113888#c32433
Commit summary for MediaWiki.r113888:
Unbreak maintenance/deleteDefaultMessages.php for PostgreSQL
deleteDefaultMessages.php was failing during upgrade
from MediaWiki 1.7.3 with a databaser error.
A stub user:
$user = User::newFromName( 'MediaWiki default' );
has user ID 0, so that $user->isAnon() is true.
Unfortunately, ManualLogEntry::publish() from r96441
tries to insert $user->getName() ("MediaWiki default")
into rc_ip.
PostgreSQL won't allow this, because rc_ip is of
Postgres-specific CIDR type.
Traceback:
Checking existence of old default messages...
...deleting old default messages (this may take a long time!)...A database
query syntax error has occurred.
The last attempted database query was:
"INSERT INTO "recentchanges"
(rc_timestamp,rc_cur_time,rc_namespace,rc_title,rc_type,rc_minor,rc_user,rc_user_text,rc_comment,rc_this_oldid,rc_last_oldid,rc_bot,rc_moved_to_ns,rc_moved_to_title,rc_ip,rc_patrolled,rc_new,rc_old_len,rc_new_len,rc_deleted,rc_logid,rc_log_type,rc_log_action,rc_params,rc_id)
VALUES ('2012-03-14 21:51:05 GMT','2012-03-14 21:51:05
GMT','8','1movedto2','3','0','0','MediaWiki default','No longer
required','0','0',1,'0','','MediaWiki
default','1','0',NULL,NULL,'0','1','delete','delete','a:0:{}','1')"
from within function "RecentChange::save".
MySQL returned error "1: ERROR: invalid input syntax for type cidr: "MediaWiki
default"
LINE 1: ...ki default','No longer required','0','0',1,'0','','MediaWiki...
^"
Backtrace:
#0 /usr/home/saper/public_html/pg/w/includes/db/DatabasePostgres.php(332):
DatabaseBase->reportQueryError('ERROR: invalid...', 1, 'INSERT INTO "re...',
'RecentChange::s...', '')
#1 /usr/home/saper/public_html/pg/w/includes/db/Database.php(904):
DatabasePostgres->reportQueryError('ERROR: invalid...', 1, 'INSERT INTO
"re...', 'RecentChange::s...', '')
#2 /usr/home/saper/public_html/pg/w/includes/db/DatabasePostgres.php(604):
DatabaseBase->query('INSERT INTO "re...', 'RecentChange::s...', '')
#3 /usr/home/saper/public_html/pg/w/includes/RecentChange.php(199):
DatabasePostgres->insert('recentchanges', Array, 'RecentChange::s...')
#4 /usr/home/saper/public_html/pg/w/includes/logging/LogEntry.php(479):
RecentChange->save('pleasedontudp')
#5 /usr/home/saper/public_html/pg/w/includes/WikiPage.php(2042):
ManualLogEntry->publish('1')
#6 /usr/home/saper/public_html/pg/w/includes/WikiPage.php(1937):
WikiPage->doDeleteArticleReal('No longer requi...', false, 0, false, '',
Object(User))
#7 /usr/home/saper/public_html/pg/w/maintenance/deleteDefaultMessages.php(73):
WikiPage->doDeleteArticle('No longer requi...', false, 0, false, '',
Object(User))
#8 /usr/home/saper/public_html/pg/w/maintenance/update.php(128):
DeleteDefaultMessages->execute()
#9 /usr/home/saper/public_html/pg/w/maintenance/doMaintenance.php(105):
UpdateMediaWiki->execute()
#10 /usr/home/saper/public_html/pg/w/maintenance/update.php(151):
require_once('/usr/home/saper...')
#11 {main}
Saper's comment:
Thanks, this is useful. You are 100% right ;)
* public could be private without any problem
* deleteDefaultMessages() I noticed later, is already fixed in the final set of
changes to the updater (currently waiting for git :-)
* wfDebug() was my omission, removed in r113889
The real substance is in LogEntry.php
Of course, there are alternatives possible like introducing StubUser class that
handles the "MediaWiki default" user specially once and for all...
_______________________________________________
MediaWiki-CodeReview mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-codereview