optimization fo the removal of orphan records

This commit is contained in:
gbateson
2006-04-28 01:37:17 +00:00
parent 9f02edcad8
commit 8955d22ac6
4 changed files with 9 additions and 11 deletions
+1 -1
View File
@@ -33,7 +33,7 @@ function hotpot_upgrade($oldversion) {
require_once $update_to_v2;
$ok = $ok && hotpot_update_to_v2_1_17();
}
if ($oldversion < 2006042801) {
if ($oldversion < 2006042802) {
require_once $update_to_v2;
$ok = $ok && hotpot_update_to_v2_1_18();
}
+1 -1
View File
@@ -37,7 +37,7 @@ function hotpot_upgrade($oldversion) {
require_once $update_to_v2;
$ok = $ok && hotpot_update_to_v2_1_17();
}
if ($oldversion < 2006042801) {
if ($oldversion < 2006042802) {
require_once $update_to_v2;
$ok = $ok && hotpot_update_to_v2_1_18();
}
+6 -8
View File
@@ -12,7 +12,7 @@ function hotpot_update_to_v2_1_18() {
return $ok;
}
function hotpot_remove_orphans($secondarytable, $secondarykeyfield, $primarytable) {
function hotpot_remove_orphans($secondarytable, $secondarykeyfield, $primarytable, $primarykeyfield='id') {
global $CFG,$db;
$ok = true;
@@ -22,23 +22,21 @@ function hotpot_remove_orphans($secondarytable, $secondarykeyfield, $primarytabl
$records = get_records_sql("
SELECT
t2.id, t2.id
t2.$secondarykeyfield, t2.$secondarykeyfield
FROM
{$CFG->prefix}$secondarytable AS t2 LEFT JOIN {$CFG->prefix}$primarytable AS t1
ON (t2.$secondarykeyfield = t1.id)
WHERE
t1.id IS NULL
ORDER BY
t2.id
t1.$primarykeyfield IS NULL
");
// restore SQL message echo setting
$db->debug = $debug;
if ($records) {
$ids = implode(',', array_keys($records));
print 'removing '.count($records)." orphan record(s) from {$CFG->prefix}$secondarytable<br>";
$ok = $ok && execute_sql("DELETE FROM {$CFG->prefix}$secondarytable WHERE $secondarykeyfield IN ($ids)");
$keys = implode(',', array_keys($records));
print "removing orphan record(s) from {$CFG->prefix}$secondarytable<br>";
$ok = $ok && execute_sql("DELETE FROM {$CFG->prefix}$secondarytable WHERE $secondarykeyfield IN ($keys)");
}
return $ok;
+1 -1
View File
@@ -3,7 +3,7 @@
/// Code fragment to define the version of hotpot
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
$module->version = 2006042801; // release date of this version (see note below)
$module->version = 2006042802; // release date of this version (see note below)
$module->release = 'v2.1.18'; // human-friendly version name (used in mod/hotpot/lib.php)
$module->cron = 0; // period for cron to check this module (secs)
// interpretation of YYYYMMDDXY version numbers