* Update scripts (stand-alone PHP and mysql) for updating old wikis with the new...
authorAndrew Garrett <werdna@users.mediawiki.org>
Tue, 11 Sep 2007 09:22:54 +0000 (09:22 +0000)
committerAndrew Garrett <werdna@users.mediawiki.org>
Tue, 11 Sep 2007 09:22:54 +0000 (09:22 +0000)
maintenance/archives/create_null_links_entries.sql [new file with mode: 0755]
maintenance/createNullLinksRows.php [new file with mode: 0644]

diff --git a/maintenance/archives/create_null_links_entries.sql b/maintenance/archives/create_null_links_entries.sql
new file mode 100755 (executable)
index 0000000..369c3e6
--- /dev/null
@@ -0,0 +1,15 @@
+-- Update pagelinks and categorylinks with null entries ('','') for
+-- pages with no pagelinks or categorylinks
+-- Change made 2007-09-11 by Andrew Garrett <firstname at epstone dot net>
+
+INSERT INTO /*$wgDBprefix*/pagelinks (pl_from,pl_namespace,pl_title)
+SELECT         page_id,0,''
+       FROM /*$wgDBprefix*/page
+       LEFT JOIN /*$wgDBprefix*/pagelinks ON page_id=pl_from
+       WHERE pl_from IS NULL;
+
+INSERT INTO /*$wgDBprefix*/categorylinks (cl_from,cl_sortkey,cl_to)
+SELECT         page_id,'',0
+       FROM /*$wgDBprefix*/page
+       LEFT JOIN /*$wgDBprefix*/categorylinks ON page_id=cl_from
+       WHERE cl_from IS NULL;
diff --git a/maintenance/createNullLinksRows.php b/maintenance/createNullLinksRows.php
new file mode 100644 (file)
index 0000000..5c82846
--- /dev/null
@@ -0,0 +1,94 @@
+<?
+
+require( 'commandLine.inc' );
+
+$db_master = wfGetDB( DB_MASTER );
+$db_slave = wfGetDB( DB_SLAVE );
+
+## Do pagelinks update
+
+echo "Updating pagelinks with null rows.\n";
+
+$count = 0;
+
+list( $page, $pagelinks ) = $db_slave->tableNamesN( 'page', 'pagelinks' );
+
+$pl_query = "SELECT page_id
+       FROM $page
+       LEFT JOIN $pagelinks ON page_id=pl_from
+       WHERE pl_from IS NULL";
+
+$res = $db_slave->query( $pl_query, 'createNullLinksRows' );
+
+$buffer = array();
+
+while ($row = $db_slave->fetchObject( $res ))
+{
+       $buffer[] = array( 'pl_from' => $row->page_id, 'pl_namespace' => 0, 'pl_title' => '' );
+
+       $count++;
+
+       if (count($buffer) > 100)
+       {
+               #Batch-insert
+
+               echo "$count pages..\n";
+
+               $db_master->insert( 'pagelinks', $buffer, 'createNullLinksRows', array('IGNORE') );
+
+               wfWaitForSlaves(10);
+
+               $buffer = array();
+       }
+}
+
+# Insert the rest
+
+echo "$count pages..\n";
+
+$db_master->insert( 'pagelinks', $buffer, 'createNullLinksRows', array('IGNORE') );
+
+wfWaitForSlaves(10);
+
+## Do categorylinks update
+
+$buffer = array();
+
+echo "Updating categorylinks with null rows.\n";
+
+list( $page, $categorylinks ) = $db_slave->tableNamesN( 'page', 'categorylinks' );
+
+$pl_query = "SELECT page_id
+       FROM $page
+       LEFT JOIN $categorylinks ON page_id=cl_from
+       WHERE cl_from IS NULL";
+
+$res = $db_slave->query( $pl_query, 'createNullLinksRows' );
+
+$buffer = array();
+
+while ($row = $db_slave->fetchObject( $res ))
+{
+       $buffer[] = array( 'cl_from' => $row->page_id, 'cl_to' => 0, 'cl_sortkey' => '' );
+
+       if (count($buffer) > 100)
+       {
+               #Batch-insert
+
+               echo "$count pages..\n";
+
+               $db_master->insert( 'categorylinks', $buffer, 'createNullLinksRows', array('IGNORE') );
+
+               wfWaitForSlaves(10);
+
+               $buffer = array();
+       }
+}
+
+echo "$count pages..\n";
+
+$db_master->insert( 'categorylinks', $buffer, 'createNullLinksRows', array('IGNORE') );
+
+$buffer = array();
+
+echo "Done!\n";