From 4d1280d26523bc6d6f753b877132651a4c4f0574 Mon Sep 17 00:00:00 2001 From: Domas Mituzas Date: Fri, 11 Jun 2004 14:36:25 +0000 Subject: [PATCH] * change REPLACE INTO to DELETE/INSERT for nonmysql * change mysql style join deletes to subselect for nonmysql --- includes/LinkCache.php | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/includes/LinkCache.php b/includes/LinkCache.php index d2e188003c..512bc7dca9 100644 --- a/includes/LinkCache.php +++ b/includes/LinkCache.php @@ -302,34 +302,51 @@ class LinkCache { } /* private */ function saveToLinkscc( $pid ){ - global $wgCompressedPersistentLC; + global $wgCompressedPersistentLC, $wgIsMySQL; if( $wgCompressedPersistentLC and function_exists( "gzcompress" ) ) { $ser = wfStrencode( gzcompress( serialize( $this ), 3 )); } else { $ser = wfStrencode( serialize( $this ) ); } - wfQuery("REPLACE INTO linkscc(lcc_pageid,lcc_cacheobj) " . - "VALUES({$pid}, '{$ser}')", DB_WRITE); + if ($isMySQL) { + wfQuery("REPLACE INTO linkscc(lcc_pageid,lcc_cacheobj) " . + "VALUES({$pid}, '{$ser}')", DB_WRITE); + } else { + wfQuery("DELETE FROM linkscc WHERE lcc_pageid={$pid}",DB_WRITE); + wfQuery("INSERT INTO linkscc(lcc_pageid,lcc_cacheobj) " . + "VALUES({$pid}, '{$ser}')", DB_WRITE); + } } # $pid is a page id /* static */ function linksccClearLinksTo( $pid ){ - global $wgEnablePersistentLC; + global $wgEnablePersistentLC, $wgIsMySQL; if ( $wgEnablePersistentLC ) { $pid = intval( $pid ); - wfQuery("DELETE linkscc FROM linkscc,links ". - "WHERE lcc_pageid=links.l_from AND l_to={$pid}", DB_WRITE); - wfQuery("DELETE FROM linkscc WHERE lcc_pageid='{$pid}'", DB_WRITE); + if ($wgIsMySQL) { + wfQuery("DELETE linkscc FROM linkscc,links ". + "WHERE lcc_pageid=links.l_from AND l_to={$pid}", DB_WRITE); + } else { + wfQuery("DELETE FROM linkscc WHERE lcc_pageid IN ". + "(SELECT l_from FROM links WHERE l_to={$pid}", DB_WRITE); + } + wfQuery("DELETE FROM linkscc WHERE lcc_pageid='{$pid}')", DB_WRITE); } } # $title is a prefixed db title, for example like Title->getPrefixedDBkey() returns. /* static */ function linksccClearBrokenLinksTo( $title ){ - global $wgEnablePersistentLC; + global $wgEnablePersistentLC,$wgIsMySQL; if ( $wgEnablePersistentLC ) { $title = wfStrencode( $title ); - wfQuery("DELETE linkscc FROM linkscc,brokenlinks ". - "WHERE lcc_pageid=bl_from AND bl_to='{$title}'", DB_WRITE); + if ($wgIsMySQL) { + wfQuery("DELETE linkscc FROM linkscc,brokenlinks ". + "WHERE lcc_pageid=bl_from AND bl_to='{$title}'", DB_WRITE); + } else { + wfQuery("DELETE FROM linkscc WHERE lcc_pageid IN ". + "(SELECT bl_from FROM brokenlinks ". + "WHERE bl_to='{$title}')",DB_WRITE); + } } } -- 2.20.1