"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

Reply via email to