MDL-62698 quiz_overview: new index should not be unique
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
</FIELDS>
|
||||
<KEYS>
|
||||
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
|
||||
<KEY NAME="questionusageid-slot" TYPE="foreign-unique" FIELDS="questionusageid, slot" REFTABLE="question_attempts" REFFIELDS="questionusageid, slot"/>
|
||||
<KEY NAME="questionusageid-slot" TYPE="foreign" FIELDS="questionusageid, slot" REFTABLE="question_attempts" REFFIELDS="questionusageid, slot"/>
|
||||
</KEYS>
|
||||
</TABLE>
|
||||
</TABLES>
|
||||
|
||||
@@ -42,21 +42,42 @@ function xmldb_quiz_overview_upgrade($oldversion) {
|
||||
// Automatically generated Moodle v3.4.0 release upgrade line.
|
||||
// Put any upgrade step following this.
|
||||
|
||||
if ($oldversion < 2018021800) {
|
||||
// Automatically generated Moodle v3.5.0 release upgrade line.
|
||||
// Put any upgrade step following this.
|
||||
|
||||
// Define key questionusageid-slot (foreign-unique) to be added to quiz_overview_regrades.
|
||||
// Upgrade 2018021800 (now removed) incorrectly added this key
|
||||
// with a unique constraint, which breaks things because those
|
||||
// columns are not, in fact, unique. So drop (if it exists) then recreate.
|
||||
if ($oldversion < 2018061800) {
|
||||
|
||||
// Define key questionusageid-slot (foreign) to be dropped form quiz_overview_regrades.
|
||||
$table = new xmldb_table('quiz_overview_regrades');
|
||||
$key = new xmldb_key('questionusageid-slot', XMLDB_KEY_FOREIGN_UNIQUE, array('questionusageid', 'slot'), 'question_attempts', array('questionusageid', 'slot'));
|
||||
|
||||
// There is no key_exists, so test the equivalent index.
|
||||
$oldindex = new xmldb_index('questionusageid-slot', XMLDB_KEY_UNIQUE, array('questionusageid', 'slot'));
|
||||
|
||||
// Launch drop key questionusageid-slot.
|
||||
if ($dbman->index_exists($table, $oldindex)) {
|
||||
$key = new xmldb_key('questionusageid-slot', XMLDB_KEY_FOREIGN, array('questionusageid', 'slot'), 'question_attempts', array('questionusageid', 'slot'));
|
||||
$dbman->drop_key($table, $key);
|
||||
}
|
||||
|
||||
// Overview savepoint reached.
|
||||
upgrade_plugin_savepoint(true, 2018061800, 'quiz', 'overview');
|
||||
}
|
||||
|
||||
if ($oldversion < 2018061801) {
|
||||
|
||||
// Define key questionusageid-slot (foreign) to be added to quiz_overview_regrades.
|
||||
$table = new xmldb_table('quiz_overview_regrades');
|
||||
$key = new xmldb_key('questionusageid-slot', XMLDB_KEY_FOREIGN, array('questionusageid', 'slot'), 'question_attempts', array('questionusageid', 'slot'));
|
||||
|
||||
// Launch add key questionusageid-slot.
|
||||
$dbman->add_key($table, $key);
|
||||
|
||||
// Overview savepoint reached.
|
||||
upgrade_plugin_savepoint(true, 2018021800, 'quiz', 'overview');
|
||||
upgrade_plugin_savepoint(true, 2018061801, 'quiz', 'overview');
|
||||
}
|
||||
|
||||
// Automatically generated Moodle v3.5.0 release upgrade line.
|
||||
// Put any upgrade step following this.
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->version = 2018051400;
|
||||
$plugin->version = 2018061801;
|
||||
$plugin->requires = 2018050800;
|
||||
$plugin->component = 'quiz_overview';
|
||||
|
||||
Reference in New Issue
Block a user