From 1874f7032bf340a0a590e94f4b66f1c75a1e9a66 Mon Sep 17 00:00:00 2001 From: Andrew Garrett Date: Tue, 11 Sep 2007 09:22:54 +0000 Subject: [PATCH] * Update scripts (stand-alone PHP and mysql) for updating old wikis with the new blank rows for pages with no page or category links. --- .../archives/create_null_links_entries.sql | 15 +++ maintenance/createNullLinksRows.php | 94 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100755 maintenance/archives/create_null_links_entries.sql create mode 100644 maintenance/createNullLinksRows.php diff --git a/maintenance/archives/create_null_links_entries.sql b/maintenance/archives/create_null_links_entries.sql new file mode 100755 index 0000000000..369c3e6fcc --- /dev/null +++ b/maintenance/archives/create_null_links_entries.sql @@ -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 + +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 index 0000000000..5c828460d0 --- /dev/null +++ b/maintenance/createNullLinksRows.php @@ -0,0 +1,94 @@ +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"; -- 2.20.1