From 59db0ac6d13b75f3dd348d856325968d41db99aa Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Wed, 17 Aug 2005 08:43:48 +0000 Subject: [PATCH] Use null in wl_notificationtimestamp! The database provides this for a reason. Can now add items to one's watchlist on MySQL again. --- .../archives/patch-email-notification.sql | 2 +- maintenance/archives/patch-watchlist-null.sql | 9 +++++++++ maintenance/tables.sql | 3 +-- maintenance/updaters.inc | 18 ++++++++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 maintenance/archives/patch-watchlist-null.sql diff --git a/maintenance/archives/patch-email-notification.sql b/maintenance/archives/patch-email-notification.sql index 02a32a07e7..f9bc0440ba 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 0000000000..37ffc16351 --- /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 144eb57896..4f9a26f5b3 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 5cde1e51b3..07bc251e2e 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(); } -- 2.20.1