Use null in wl_notificationtimestamp! The database provides this for a reason.
authorBrion Vibber <brion@users.mediawiki.org>
Wed, 17 Aug 2005 08:43:48 +0000 (08:43 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Wed, 17 Aug 2005 08:43:48 +0000 (08:43 +0000)
Can now add items to one's watchlist on MySQL again.

maintenance/archives/patch-email-notification.sql
maintenance/archives/patch-watchlist-null.sql [new file with mode: 0644]
maintenance/tables.sql
maintenance/updaters.inc

index 02a32a0..f9bc044 100644 (file)
@@ -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 (file)
index 0000000..37ffc16
--- /dev/null
@@ -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';
index 144eb57..4f9a26f 100644 (file)
@@ -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)
index 5cde1e5..07bc251 100644 (file)
@@ -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();
 }