aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrion Vibber <brion@users.mediawiki.org>2005-08-17 08:43:48 +0000
committerBrion Vibber <brion@users.mediawiki.org>2005-08-17 08:43:48 +0000
commit59db0ac6d13b75f3dd348d856325968d41db99aa (patch)
tree76a13eda2759d77a6c5f2f3d9a50f267cea611ac
parent4ddf1bdcbe23d9a29f179f39e9bfa6b2648360d8 (diff)
downloadmediawikicore-59db0ac6d13b75f3dd348d856325968d41db99aa.tar.gz
mediawikicore-59db0ac6d13b75f3dd348d856325968d41db99aa.zip
Use null in wl_notificationtimestamp! The database provides this for a reason.
Can now add items to one's watchlist on MySQL again.
Notes
Notes: http://mediawiki.org/wiki/Special:Code/MediaWiki/10579
-rw-r--r--maintenance/archives/patch-email-notification.sql2
-rw-r--r--maintenance/archives/patch-watchlist-null.sql9
-rw-r--r--maintenance/tables.sql3
-rw-r--r--maintenance/updaters.inc18
4 files changed, 29 insertions, 3 deletions
diff --git a/maintenance/archives/patch-email-notification.sql b/maintenance/archives/patch-email-notification.sql
index 02a32a07e7c9..f9bc0440bade 100644
--- a/maintenance/archives/patch-email-notification.sql
+++ b/maintenance/archives/patch-email-notification.sql
@@ -8,4 +8,4 @@
-- ("notification flags") at once by clicking the new button on his/her watchlist page.
-- T. Gries/M. Arndt 11.09.2004 - December 2004
-ALTER TABLE /*$wgDBprefix*/watchlist ADD (wl_notificationtimestamp varchar(14) binary NOT NULL default '0');
+ALTER TABLE /*$wgDBprefix*/watchlist ADD (wl_notificationtimestamp varchar(14) binary);
diff --git a/maintenance/archives/patch-watchlist-null.sql b/maintenance/archives/patch-watchlist-null.sql
new file mode 100644
index 000000000000..37ffc16351cd
--- /dev/null
+++ b/maintenance/archives/patch-watchlist-null.sql
@@ -0,0 +1,9 @@
+-- Set up wl_notificationtimestamp with NULL support.
+-- 2005-08-17
+
+ALTER TABLE /*$wgDBprefix*/watchlist
+ CHANGE wl_notificationtimestamp wl_notificationtimestamp varchar(14) binary;
+
+UPDATE /*$wgDBprefix*/watchlist
+ SET wl_notificationtimestamp=NULL
+ WHERE wl_notificationtimestamp='0';
diff --git a/maintenance/tables.sql b/maintenance/tables.sql
index 144eb57896a9..4f9a26f5b3f7 100644
--- a/maintenance/tables.sql
+++ b/maintenance/tables.sql
@@ -662,8 +662,7 @@ CREATE TABLE /*$wgDBprefix*/watchlist (
-- Timestamp when user was last sent a notification e-mail;
-- cleared when the user visits the page.
- -- FIXME: add proper null support etc
- wl_notificationtimestamp varchar(14) binary NOT NULL default '0',
+ wl_notificationtimestamp varchar(14) binary,
UNIQUE KEY (wl_user, wl_namespace, wl_title),
KEY namespace_title (wl_namespace,wl_title)
diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc
index 5cde1e51b3c3..07bc251e2e5f 100644
--- a/maintenance/updaters.inc
+++ b/maintenance/updaters.inc
@@ -629,6 +629,22 @@ function do_user_groups_reformat() {
}
+function do_watchlist_null() {
+ # Make sure wl_notificationtimestamp can be NULL,
+ # and update old broken items.
+ global $wgDatabase;
+ $info = $wgDatabase->fieldInfo( 'watchlist', 'wl_notificationtimestamp' );
+
+ if( $info->not_null ) {
+ echo "Making wl_notificationtimestamp nullable... ";
+ dbsource( 'maintenance/archives/patch-watchlist-null.sql', $wgDatabase );
+ echo "ok\n";
+ } else {
+ echo "...wl_notificationtimestamp is already nullable.\n";
+ }
+
+}
+
function do_all_updates() {
global $wgNewTables, $wgNewFields, $wgRenamedTables;
@@ -670,6 +686,8 @@ function do_all_updates() {
do_user_unique_update(); flush();
do_user_groups_update(); flush();
+
+ do_watchlist_null(); flush();
initialiseMessages(); flush();
}