$tests['delete enumlist from one field'] = $test;
}
- /// 36th test. Creating the default for one field
+ /// 36th test. Creating the enum for one field
if ($test->status) {
/// Get SQL code and execute it
$test = new stdClass;
$tests['add enumlist to one field'] = $test;
}
+ /// 37th test. Renaming one index
+ if ($test->status) {
+ /// Get SQL code and execute it
+ $test = new stdClass;
+ $index = new XMLDBIndex('newnamefortheindex');
+ $index->setAttributes(XMLDB_INDEX_UNIQUE, array('name', 'course'));
+
+ $test->sql = $table->getRenameIndexSQL($CFG->dbtype, $CFG->prefix, $index, true);
+ $db->debug = true;
+ $test->status = rename_index($table, $index, 'newnamefortheindex', false, false);
+ $db->debug = false;
+ if (!$test->status) {
+ $test->error = $db->ErrorMsg();
+ }
+ $tests['rename index'] = $test;
+ }
+
}
return $results;
}
+
+ /**
+ * This function will return the SQL code needed to rename one index from the table for the specified DB and
+ * prefix. Just one simple wrapper over generators.
+ */
+ function getRenameIndexSQL ($dbtype, $prefix, $xmldb_index, $statement_end=true) {
+
+ $results = array();
+
+ $classname = 'XMLDB' . $dbtype;
+ $generator = new $classname();
+ $generator->setPrefix($prefix);
+ $results = $generator->getRenameIndexSQL($this, $xmldb_index);
+ if ($statement_end) {
+ $results = $generator->getEndedStatements($results);
+ }
+ return $results;
+ }
}
?>
var $drop_index_sql = 'DROP INDEX INDEXNAME'; //SQL sentence to drop one index
//TABLENAME, INDEXNAME are dinamically replaced
+ var $rename_index_sql = 'ALTER INDEX OLDINDEXNAME RENAME TO NEWINDEXNAME'; //SQL sentence to rename one index
+ //TABLENAME, OLDINDEXNAME, NEWINDEXNAME are dinamically replaced
+
var $prefix; // Prefix to be used for all the DB objects
var $reserved_words; // List of reserved words (in order to quote them properly)
return $results;
}
+ /**
+ * Given one XMLDBTable and one XMLDBIndex, return the SQL statements needded to rename the index in the table
+ */
+
+ function getRenameIndexSQL($xmldb_table, $xmldb_index) {
+
+ $results = array();
+
+ /// Get the real index name
+ $dbindexname = find_index_name($xmldb_table, $xmldb_index);
+
+ /// Replace TABLENAME and INDEXNAME as needed
+ $renamesql = str_replace('TABLENAME', $this->getTableName($xmldb_table), $this->rename_index_sql);
+ $renamesql = str_replace('OLDINDEXNAME', $dbindexname, $renamesql);
+ $renamesql = str_replace('NEWINDEXNAME', $xmldb_index->getName(), $renamesql);
+
+ /// Some DB doesn't support index renaming (MySQL) so this can be empty
+ if ($renamesql) {
+ $results[] = $renamesql;
+ }
+
+ return $results;
+ }
/**
* Given three strings (table name, list of fields (comma separated) and suffix), create the proper object name
var $drop_index_sql = 'DROP INDEX TABLENAME.INDEXNAME'; //SQL sentence to drop one index
//TABLENAME, INDEXNAME are dinamically replaced
+ var $rename_index_sql = "sp_rename 'OLDINDEXNAME', 'NEWINDEXNAME', 'INDEX'"; //SQL sentence to rename one index
+ //TABLENAME, OLDINDEXNAME, NEWINDEXNAME are dinamically replaced
+
/**
* Creates one new XMLDBmssql
*/
var $drop_index_sql = 'ALTER TABLE TABLENAME DROP INDEX INDEXNAME'; //SQL sentence to drop one index
//TABLENAME, INDEXNAME are dinamically replaced
+ var $rename_index_sql = null; //SQL sentence to rename one index (MySQL doesn't support this!)
+ //TABLENAME, OLDINDEXNAME, NEWINDEXNAME are dinamically replaced
+
/**
* Creates one new XMLDBmysql
*/