Commit graph

395 commits

Author SHA1 Message Date
jenkins-bot
53a43bb651 Merge "Reorder backlinks indexes" 2015-04-10 18:04:19 +00:00
Brian Wolff
5d9b67e09e Allow edit summaries to be up to 767 bytes long
This is just the db part. The changes to UI validation code will
come in a dependent patch later.

This changes the max size of various *_comment, *_description
and *_reason fields to be 767 bytes. This size is chosen to
be consistent with the largest we can get away with while
still having covering indexes.

It also unifies the various data types of these fields to
varbinary. (Note, this was previously done and reverted in
r80547, but I don't think the reason for revert applies to
the edit summary fields)

MyISAM has a much smaller max index size, and this wouldn't
work with that storage engine. However, none of these fields
are used in default indexes (only in WMF indexes), so this
should not be an issue for anyone using MyISAM. Postgress
and sqlite already supported the larger edit summary size.

Note: This patch increases min mysql version to 5.0.3.

Bug: T6715
Change-Id: I8558e80a18e4591f07f2c3e80f792ea4435c4e71
2015-03-11 13:36:38 +00:00
umherirrender
a086557ab8 [schema] Make column user_newtalk.user_id an unsigned int
The primary key of the user table is an unsigned int, the column
user_newtalk.user_id refer the id and should have the same typ to store
the same values as the user table does.

No pre-deployment activity necessary; no need to sync deployment
and merge; can be done at any time (now or later)

Bug: T77005
Change-Id: I641dc1fad0a5bb14815f55e0357243a562fd672b
2015-02-17 17:27:54 +00:00
Sean Pringle
7843a9e533 Reorder backlinks indexes
Bug: T89630
Change-Id: I2b04268545b9a88c584f6461f67a38fe3944c17a
2015-02-16 09:24:01 +00:00
Chad Horohoe
5f8edb2c0a Drop ss_total_views and page_counter fields from MediaWiki
Follows up removal of code using hitcounters in 90d90dad6

RFC: https://www.mediawiki.org/wiki/Requests_for_comment/Removing_hit_counters_from_MediaWiki_core
Change-Id: Ieeb558f9523c11965cbc1941cad4f316c00c85c5
2015-01-09 19:01:01 +00:00
Kevin Israel
02ef5c96c8 tables.sql: Improve description of old_flags
* Changed the name of the 'utf8' flag to 'utf-8', as that is what
  Revision stores. (This was already corrected in the mediawiki.org
  manual page by RichF.) Noted that 'utf8' was, however, mistakenly
  used in an old version of recompressTracked.php.
* Added 'external' to the list of flags. This was already added
  to the manual page (by GreenReaper) yet not here. Copied the
  description from there and added a couple of clarifications.

Change-Id: If15b49a28d7d4b0397481d21e30d877298fc7955
2014-12-19 15:29:17 +00:00
rillke
9665a657b0 Add "chemical" major MIME type to the image tables
The American Chemical Society suggested a new major MIME type for files
containing chemical data in 1998: http://dx.doi.org/10.1021/ci9803233
This suggestion got widely adopted and is now a de-facto-standard despite
not registered with IANA.

Applying this patch will allow us to continue with extension MolHandler
and PDBHandler.
http://fab.wmflabs.org/T352

- Fixes bug 66412 by creating a logic that will prevent running unneeded
  updates.

Bug: 66412
Change-Id: Ic45dc1bce796a0406ed8a84e6274df1c4bda4967
2014-08-25 19:13:35 -03:00
withoutaname
2ed4b32450 Change "ENGINE=HEAP" to "ENGINE=MEMORY"
"Memory" is the preferred term, see
https://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

Change-Id: I1fd05d027903af6023002dd357998ce5f2606708
2014-08-12 17:23:31 +00:00
Aaron Schulz
b8c038f678 Redo WhatLinksHere query and add a *_from_namespace field to link tables
* Also tweaked the query so MySQL avoids doing a page_name
  index scan when it should start with the link table index
* Added population script (triggered by update.php)
* Also removed uniqueness from some indexes where it is redundant
* Renamed two confusing variables

Bug: 60618
Change-Id: Icca99b6ae0ef76cb77695faf82c615516191da36
2014-07-21 12:04:56 -07:00
Kunal Grover
50144cd02a First version of Page Language selector
Special page PageLanguage to set the page language of a page.
To enable the feature, set $wgPageLanguageUseDB to true
and assign the 'pagelang' user right to a user group.

Bug: 35489
Change-Id: I0f82b146fbe948f917c1c5d29f7469644d797e80
2014-06-27 23:27:07 +00:00
umherirrender
e121205cb3 Correct comment about getPropsFromPath/sha1Base36 in sql files
The function of class File are deprecated, so change comment to FSFile.

Change-Id: I2350b2d6d6b09d4d2f6d64ab04891e0911595cb0
2014-06-23 20:58:37 +02:00
Brad Jorsch
c396f11ab3 Add wl_user_notificationtimestamp index
Bug: 65246
Change-Id: If3e9e855c8a21874ca69c4976af207833dcc53f2
2014-06-04 06:05:38 +00:00
umherirrender
2b441eba40 Drop rc_cur_time from recentchanges
Field was removed in 1.23 from sql statements, but kept to allow easier
rollback on version update from 1.22 -> 1.23, when something gets wrong
with the new version.

Bug: 40667
Follow-Up: I4a9c2fa813d1f25dfb755e564f7677a212934d7b
Change-Id: I48989aceec31019f0b6c98aaeafaf60e975244df
2014-05-15 17:10:16 +00:00
daniel
b1d6e78f74 Introducing pp_sortkey.
This adds the pp_sortkey column to the page_props table.

pp_sortkeys allows for top-k queries for pages, e.g.
the 100 pages with the most language links, etc. It is also
possible to query for exact values.

For now, pp_sortkey will contain pp_value's numeric value if
the value was set to a float, int or boolean.

Associated tasks:
* create a maintenance script for populating pp_sortkey. Tricky,
because when reading from the database, all values are strings.
* create an API module for querying pages by property value.

bug: 58032
Change-Id: I217c42656fb877ff35a36eb446a22bdaf119faac
2014-04-24 05:26:41 +00:00
csteipp
01c8c421f8 Password Expiration
Add functionality to expire users' passwords:
 * Adds column to the user table to keep a password expiration
 * Adds $wgPasswordExpirationDays, which will force users to reset
   their passwords after a set number of days. By default, this set
   to false, so passwords never expire.
 * Adds a default grace period of 7 days, where if the user's password
   is expired, they can still login, but are encouraged to reset their
   password.
 * Adds hook 'LoginPasswordResetMessage' to update reset message, in
   case an extension wants to vary the message on a particular reset
   event.
 * Adds hook 'ResetPasswordExpiration' to allow extensions to change
   the expiration date when the user resets their password. E.g., if
   an extension wants to vary the expiration based on the user's group.

If the user is in the grace period, they get a password reset form
added to the login successful page. If an extension prevents showing
the login successful page (like CentralAuth), it should be updated to
show a password change form during the grace period. After the grace
period, the user will not be able to login without changing their
password.

Also prevents a successful reset if the user is "changing" their
password to their existing password.

No passwords will expire by default. Sites will have to call
User->expirePassword() from their own maintenance script to trigger a
password reset for a user.

Bug: 54997
Change-Id: I92a9fc63b409b182b1d7b48781d73fc7216f8061
2014-02-20 09:41:51 -08:00
Aaron Schulz
b57e457091 Added a page_links_updated column for job de-duplication
Change-Id: I74b6f507ef7371db92e0c3f058d38c0ca5dea9ef
2013-12-24 10:54:32 +00:00
Jackmcbarn
65a304c444 Add index on logging.log_user_text
Fixing bug #54404 requires querying against logging.log_user_text, which
is currently unindexed. Add an index, to prevent performance from being
adversely affected by the fix.

Bug: 54432
Change-Id: I6b2af65c75bbee57377cb1ec2e75ea41a5091f80
2013-12-19 03:13:05 +00:00
jenkins-bot
f8acd5fa6f Merge "move page_restrictions.pr_id to top in tables.sql" 2013-11-19 21:25:00 +00:00
umherirrender
8175727af5 move page_restrictions.pr_id to top in tables.sql
Having the primary key at the top of the column definition looks nicer
and helps by finding him.
Oracle and Postgres already have this moved up.

Change-Id: Id8afbff35e165919f55dfcf1fd1dfaf1805d6aab
2013-11-18 19:47:53 +01:00
umherirrender
a500e6d62a Fix indentation of comment in tables.sql
Change-Id: Id879b4438f8f004549c090567ff76b64c5072824
2013-11-18 19:34:49 +01:00
umherirrender
974562aee9 Remove recentchanges.rc_cur_time from sql statements
Field is unused since many versions, so remove the use in sql
statements, to allow dropping in a later version.

The field must not be reference from INSERT because it has a default
value, which is used, when no value is specified in the statement.

Keeping the field allows easier rollback on version update, when
something gets wrong with the new version.

Existing Comment in tables.sql was added with r101293, was already
disused in r11088

Bug: 40667
Change-Id: I4a9c2fa813d1f25dfb755e564f7677a212934d7b
2013-11-09 18:20:54 +01:00
jenkins-bot
248154da7e Merge "Revert "Revert "Add new recentchanges field rc_source to replace rc_type""" 2013-10-28 17:53:55 +00:00
Bartosz Dziewoński
dfc3e3df90 Correctly update wl_notificationtimestamp when viewing old revisions
== Prelude ==
wl_notificationtimestamp controls sending the user e-mail
notifications about changes to pages, as well as showing the "updated
since last visit" markers on history pages, recent changes and
watchlist.

== The bug ==
Previously, on every view of a page, the notification timestamp was
cleared, regardless of whether the user as actually viewing the latest
revision. When viewing a diff, however, the timestamp was cleared only
if one of the revisions being compared was the latest one of its page.

The same behavior applied to talk page message indicators (which are
actually stored sepately to cater to anonymous users).

This was inconsistent and surprising when one was attempting to, say,
go through the 50 new posts to a discussion page in a peacemeal
fashion.

== The fix ==
If the revision being viewed is the latest (or can't be determined),
the timestamp is cleared as previously, as this is necessary to
reenable e-mail notifications for given user and page.

If the revision isn't the latest, the timestamp is updated to
revision's timestamp plus one second. This uses up to two simple
(selectField) indexed queries per page view, only fired when we
do not already know we're looking at the latest version.

Talk page indicator is updated to point at the next revision after the
one being viewed, or cleared if viewing the latest revision. The
UserClearNewTalkNotification hook gained $oldid as the second argument
(a backwards-compatible change). In Skin, we no longer ignore the
indicator being present if we're viewing the talk page, as it might
still be valid.

== The bonus ==
Comments and formatting was updated in a few places, including
tables.sql and Wiki.php.

The following functions gained a second, optional $oldid parameter
(holy indirection, Batman!):
* WikiPage#doViewUpdates()
* User#clearNotification()
* WatchedItem#resetNotificationTimestamp()

DifferenceEngine gained a public method mapDiffPrevNext() used
to parse the ids from URL parameters like oldid=12345&diff=prev,
factored out of loadRevisionIds(). A bug where the NewDifferenceEngine
hook would not be called in some cases, dating back to its
introduction in r45518, was fixed in the process.

Bug: 41759
Change-Id: I4144ba1987b8d7a7e8b24f4f067eedac2ae44459
2013-10-27 17:47:53 +00:00
Erik Bernhardson
6bbd4bca6c Revert "Revert "Add new recentchanges field rc_source to replace rc_type""
This reverts commit 113f49bb21 after the
schema change has been completed.

Change-Id: I5412466444526986e1209d0982dd62cd5b387ad1
2013-10-25 13:10:42 -07:00
tisane
9b2b027ba7 Add archive, externallinks PK
* New fields: ar_id, el_id. el_id is presently not used for
  anything, but will help with online schema changes.

Bug: 15441
Bug: 39675
Change-Id: Ib6b0fc3736d173fa4ba7b786ecfc710b2f4711bb
2013-10-17 18:43:40 +01:00
jenkins-bot
3316e073a8 Merge "Revert "Add new recentchanges field rc_source to replace rc_type"" 2013-10-17 00:37:44 +00:00
Reedy
113f49bb21 Revert "Add new recentchanges field rc_source to replace rc_type"
No feature flag, and also not deployed on WMF wikis. Asking for schema changes by the time we branch tomorrow is just unfair

This reverts commit e478c230f6.

Change-Id: I125c30e76fa04679cc04ae7b8728ae3a61f35194
2013-10-17 00:32:40 +00:00
jenkins-bot
7c47d3f66a Merge "Add new recentchanges field rc_source to replace rc_type" 2013-10-16 23:33:37 +00:00
Erik Bernhardson
e478c230f6 Add new recentchanges field rc_source to replace rc_type
The existing field to differentiate between kinds of recentchanges rows is
the rc_type field. We want to allow extensions to insert their own custom
data into recentchanges, but we have learned via the NS_* series of constants
that requiring extensions to "register" a specific number is very error prone.

The solution, which this commit implements the first phase of, is to utilize
a new 16 byte string field rc_source.  Within that field change types will be
prefixed strings such as 'mw.edit' and 'mw.new'.

This commit adds the new field and begins populating it with data.  At some
point in the future the rc_type field will be dropped.  While WMF wiki's will
simply wait out the 30 day recentchanges history, other wiki's have the option
of letting update.php populate rc_source, or manually applying the db change and
utilizing the PopulateRecentChangeSource maintenance script.

Change-Id: Iaddd6c446373a68d31586ed54346db7d04e13b2c
2013-10-16 11:35:20 -07:00
Kevin Israel
2f02c77b4e Use utf8 charset for searchindex MySQL table
This prevents the DB error "1283 Column 'si_title' cannot be part of
FULLTEXT index", which happens when the "binary" charset is used.

Note that 2ab7c9ec3b fixed the problem for creation of new DBs, though
not for reuse of existing DBs. It is still necessary to specify the
character set for the table itself.

Bug: 47191
Change-Id: Ib4f30fd2730839af1323295898e6dce47b27068d
2013-09-26 02:02:52 -04:00
umherirrender
24bfde2710 Fix spacing and break some lines
Change-Id: Ia57685d8858e02e399ad5c75ce64d12609d340ac
2013-08-24 17:06:25 +02:00
Tim Starling
5b52750e7b Fixme comment for bug 49504
Change-Id: Ie229e84b299c357cfe9a2db0a5ba07713aac7597
2013-06-13 09:21:18 +10:00
umherirrender
a8fdb5daf8 Add RC_EXTERNAL to comment in tables.sql
Change-Id: If3156984e9ff447fec6644681d96c1095b709a99
2013-05-17 16:59:26 +02:00
Siebrand Mazeland
59f6fd0199 Change EXIF to Exif
Per https://en.wikipedia.org/wiki/Exchangeable_image_file_format. Spotted
by Shirayuki and documented on
https://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Sesp-property-exif-data/en

Change-Id: I92ba67ec60ccfe7a173d950593357b86792b8ed3
2013-05-10 13:51:06 +02:00
Reedy
d560eb0b3e Revert "Commit of various live hacks"
This reverts commit c6af934ae6.

Change-Id: I3e863bb632531d7cd4ec0614325a7c4a7ba9aa3d
2013-04-29 19:19:54 +01:00
Reedy
c6af934ae6 Commit of various live hacks
Disable of MessageBlobStore clear

Reset $wgAutopromote (should be moved to a config change!!)

Disable setting of wgStyleSheetPath

Throttle page_touched

Add apc htcp packet numbers to SquidUpdate

Disable set names binary/utf8

Commment out searchindex table indexes

Was c532e81d583d3d0439fe76eea4d105d675461b56

Original revision Change-Id I42c4f859e55eb198f6c6841e582b3552aad7b31f
https://gerrit.wikimedia.org/r/#/c/7606

Change-Id: I5ec8dd53188e9e4128f99ceaff38ebf9dcf570bb
2013-04-29 15:46:38 +00:00
Chad Horohoe
36cade5fe8 Remove ExternalUser authentication code
This was an experimental authentication system intoduced a couple
of years ago with a pretty narrow use-case. It's been pretty much
ignored since introduction, and makes login more complicated than
it needs to be.

I didn't drop the external_user table on the off-chance someone
out there actually has data in it, but they should use AuthPlugin
for their external authentication needs.

Change-Id: I794338dbb75961ee033d41fa44bb7aa22e54f447
2013-04-04 10:09:34 -04:00
Brad Jorsch
c013ec02b9 (bug 36400) API: Fix sorting for iwlinks, langlinks
The iwlinks and langlinks modules continue parameters imply ordering by
page then prefix then title. But in certain modes, the actual queries
use a different ordering, which may result in skipped or repeated
results.

This changeset fixes that. To do so, it needs to re-add an index
iwl_prefix_from_title which was mistakenly removed in 2010 (r69721). And
while it's doing that, it cleans up errors in the sqlite and postgresql
handling of the iwlinks indexes too.

Also, per Asher, make the iwl_prefix_from_title and
iwl_prefix_title_from indexes non-UNIQUE.

Change-Id: I607e8bf9183a2d8152a6127a81c83a0b5bba0c61
2013-04-03 13:22:20 -04:00
Jan Gerber
9c40037b00 add index to image table to query by type
this speeds up Special:MIMESearch and allows
queries for all files of one type.

Change-Id: I85715b0553a771ab88d9763ba921923551988bd0
2013-04-01 22:33:20 +00:00
Tim Starling
a43f751cf6 Reduce disruption during updateCollation.php
Have updateCollation.php order by cl_to, so that each category is
updated all at once. This minimises the time during which a category
will appear to be incorrectly sorted, while the maintenance script is in
progress.

Mark the cl_collation index as needing deletion, it was always pretty
pointless. You can't do much better than a full table scan when you're
changing the collation value on a wiki.

Increase the batch size since the lack of a cl_to,cl_from index means
that it will have to filesort each category. A larger batch size means
less sorts. As noted by Liangent on bug 45970, you can't order by
cl_sortkey since that will change during execution.

Also fix an inappropriate use of $wgMiserMode and remove a no-op from
the SET clause of the UPDATE.

Very lightly tested.

Change-Id: I19bc8d6701f5f78040aa9c521427ac98ef488d89
2013-03-12 23:08:29 +00:00
Tim Starling
bf4c2fb7d6 Rewrite user_touched comment, since apparently it is not clear enough
Change-Id: Ib993e5a6dc56963e9afbbdc2ada77762e1594f0b
2013-03-12 01:49:34 +01:00
Reedy
586e8fb7ec Revert "Commit of various live hacks"
This reverts commit 3d6851f662.

Change-Id: I26c418d631047783ba945e6b6a7f707d876b3146
2013-03-04 18:39:51 +00:00
Reedy
3d6851f662 Commit of various live hacks
Disable of MessageBlobStore clear

Reset $wgAutopromote (should be moved to a config change!!)

Disable setting of wgStyleSheetPath

Throttle page_touched

Add apc htcp packet numbers to SquidUpdate

Disable set names binary/utf8

Commment out searchindex table indexes

Was c532e81d583d3d0439fe76eea4d105d675461b56

Original revision Change-Id I42c4f859e55eb198f6c6841e582b3552aad7b31f
https://gerrit.wikimedia.org/r/#/c/7606

Change-Id: I5ec8dd53188e9e4128f99ceaff38ebf9dcf570bb
2013-03-04 18:03:39 +00:00
Brad Jorsch
bc4c2ef32d Add pp_propname_page index to page_props
This adds an index to page_props to support looking up pages using a
particular property.

Change-Id: Iea778eb783e1d4a46fb0549dfd84915477cac5df
2013-01-21 22:08:10 +00:00
Reedy
0c5301a0d1 Bug 11057 - Increase size of ug_group in user_groups table
Change-Id: I79fd5c6e1566de3145ac39420da4fce77099745a
2013-01-02 20:32:42 +00:00
Chad Horohoe
551d81df41 Revert "Commit of various live hacks"
This reverts commit acddbc862a.

Change-Id: Iabf5f917938c347ca6ddc7a373c731f44f23363b
2012-12-10 20:56:45 -05:00
Reedy
acddbc862a Commit of various live hacks
Disable of MessageBlobStore clear

Reset $wgAutopromote (should be moved to a config change!!)

Disable setting of wgStyleSheetPath

Disable squid updates in HTMLCacaheUpdate invalidateTitles

Throttle page_touched

Add apc htcp packet numbers to SquidUpdate

Disable set names binary/utf8

Commment out searchindex table indexes

Was c532e81d583d3d0439fe76eea4d105d675461b56

Original revision Change-Id I42c4f859e55eb198f6c6841e582b3552aad7b31f
https://gerrit.wikimedia.org/r/#/c/7606

Change-Id: I5ec8dd53188e9e4128f99ceaff38ebf9dcf570bb
2012-12-10 13:33:12 -05:00
Alexandre Emsenhuber
a26fde06c0 (bug 42619) Adjust comment for log_params database field
Change-Id: Ib78fd5ad7bef78b07460200d5d8b143e5a9a8802
2012-12-05 09:59:54 +00:00
Aaron Schulz
e5d41cca90 [Upload] [Schema] Added us_props column to avoid expensive GETs.
* We already compute the props when stashing, so including that in a column
  lets us reuse it later when the stashed file is to be published.

Change-Id: I3d6adb6528f1e992d8986058806e745c4e1c0300
2012-12-03 10:23:40 -08:00
Aaron Schulz
cd000590ee [JobQueue] Added support for retrying jobs when runners die.
* This adds a new 'claimTTL' setting which recycles jobs into the queue
  if they have been claimed for longer than that duration (in seconds).
* This also purges jobs for such cases when job retries are not enabled.
* This adds a new job_attempts column and adds an index to improve the
  query and semantics for FIFO ordered queues.

Change-Id: Idb6217a694d86a4d6fc881768deed424628f015d
2012-11-14 01:25:03 +00:00