This will require downtiime on upgrade, so we're not going to do it until we have a better idea of the cost and can make all necessary changes at once to minimize it.
tables.sql where they belong. Changed some UNIQUE to PRIMARY KEY, removed
unneeded cur_namespace index, added UNIQUE index on cur_namespace,
cur_title combination to enforce correctness a bit on new wikis.
Replaces the ugly, often breaking, manually archived log pages with
a nice clean table which can be sorted, trimmed, viewed in pieces, etc.
You can see all logged actions by some user, or affecting some page,
and can combine the views of all all logs in one.
There are probably still some broken things in here, but I want this
committed before the patch gets any bigger.
recentchanges table is altered to make rc_namespace signed so Special:
links can be listed in it.
Special:Recentchanges and Special:Newpages until someone "marks" them as
"patrolled" using a special link. For new pages, this link appears at the bottom
of the article if the link in Recent Changes or New Pages is followed. For all
other edits, this link appears only in the diff and only if the diff link is
followed from Recent Changes. (Might need to add this functionality to Watchlist
too; haven't done that yet.)
* DB_WRITE now called DB_MASTER, DB_READ now called DB_SLAVE
* Converted to use SQL wrapper functions instead of direct SQL in various places
* Experimental method for preserving the chronological order of events when slave servers are used. Untested.
* Fixes to the new post-parse existence test feature
* Some.. other stuff
* Put some option handling code in commandLine.inc which is untested and unused (for the moment).
* Converted all existing command line scripts to use the standard header and argument array.
* Did a quick test of compressOld.php, rebuildall.php and rebuildMessages.php to check for breakage.
* rebuildall.php was broken due to the unmaintained rebuildlinks.php, so I converted it to use refreshLinks instead. Required splitting into refreshLinks.inc and refreshLinks.php
_page_ links to category pages like [[:category:Some cat]] will stay in
links/brokenlinks and not be listed in the category page list anymore.
A link can optionally specify a sort key like this: [[category:cat|Sort me]].
The page will then be sorted in category lists according to the given text
instead of the page name; thus categories may be sorted arbitrarily, by
last name or whatever.
There is also a timestamp field included on gwicke's request; this is not
used yet. Also it will currently be updated at every edit of the page,
this can be changed by implementing differential updating for the cat links.
TODO:
* Make sure that automatic sort keys are updated on page rename.
* Make sure cateory pages get cache-invalidated and purged
* Use proper text sorting instead of raw binary sort
* Allow specification of the display style on category pages: comma list
or bullet list or number list; by sortkey or by timestamp; etc
available. Currently using for the message cache to avoid reading
every message separately. This now is only slightly slower than
memcached in my tests when $wgUseDatabaseMessages is enabled, so
it's a bit of a speedup for common hosts.
with a table that stores up to 1000 rows for each 'expensive' special
page. This can be paged through, reducing the annoyingness of 50 result
limits on the old system.
Rebuilding the cache can be forced by adding "recache=1" URL parameter,
but this will need to be refined with some sort of controls to prevent
abuse.
Added the user realname update to the installer's updater list, also.
to add this field.
User.php stores and fetches the field, and has accessors for it.
User login allows setting the field on account creation.
The Preferences page allows changing the real name.
The labels are available for the real name, and the explanation of the email
field on login has been expanded to include an explanation of the real name
field, too.
Update script checks for the field, and adds it if it's missing.
overwriting an existing database this destroys all data without warning...
better to let it fail with an error message and let the rare cases where
this is intended be dealt with manually by dropping them yourself.
This saves trouble in a number of places where we can now do joins with the link tables to get other info (such as cur_is_redirect!) as well as the name, and fewer bits need to be juggled on page renaming, as outgoing links no longer have to be changed (cur_id remains the same when a page is renamed).
rebuildLinks.inc and some of the tools in the 'maintenance page' still need to be updated to work with the new setup. (Special:Maintenance needs a *lot* of cleanup in general. It's kind of a catch-all of vaguely defined features which suck performance like a hydroelectric dam.)
Also I've slipped in some extra debug code. And, I think 'indexes.sql' is a big waste of time and should all be moved into tables.sql. Building indexes separately doesn't help on InnoDB and won't do anything on MyISAM either if you're just going to replace the table after it's built with an imported one from a dump which creates it with indexes.
* Misc. bugs fixed in DatabaseFunctions.php and Skin.php.
* install-utils, install and update utilise Database objects instead of handling their own connections
* schema change for RC improvement -- added rc_type, rc_moved_to_title and rc_moved_to_ns
* Made updating of page view stats faster my buffering them in a
HEAP table until many pages can be updated at once.
tables.sql:
* hitcounter table
patch-hitcounter.sql:
* hitcounter table
update.php:
* Creating hitcounter table when necessary