return true; //Key doesn't exist, nothing to do
}
-/// Assign the new name to the index
- $key->setName($newname);
-
- if(!$sqlarr = $table->getRenameKeySQL($CFG->dbtype, $CFG->prefix, $key, false)) {
+ if(!$sqlarr = $table->getRenameKeySQL($CFG->dbtype, $CFG->prefix, $key, $newname, false)) {
debugging('Some DBs do not support key renaming (MySQL, PostgreSQL, MsSQL). Rename skipped', DEBUG_DEVELOPER);
return true; //Empty array = nothing to do = no error
}
return true; //Index doesn't exist, nothing to do
}
-/// Assign the new name to the index
- $index->setName($newname);
-
- if(!$sqlarr = $table->getRenameIndexSQL($CFG->dbtype, $CFG->prefix, $index, false)) {
+ if(!$sqlarr = $table->getRenameIndexSQL($CFG->dbtype, $CFG->prefix, $index, $newname, false)) {
debugging('Some DBs do not support index renaming (MySQL). Rename skipped', DEBUG_DEVELOPER);
return true; //Empty array = nothing to do = no error
}
* This function will return the SQL code needed to rename one key from the table for the specified DB and
* prefix. Just one simple wrapper over generators.
*/
- function getRenameKeySQL ($dbtype, $prefix, $xmldb_key, $statement_end=true) {
+ function getRenameKeySQL ($dbtype, $prefix, $xmldb_key, $newname, $statement_end=true) {
$results = array();
$classname = 'XMLDB' . $dbtype;
$generator = new $classname();
$generator->setPrefix($prefix);
- $results = $generator->getRenameKeySQL($this, $xmldb_key);
+ $results = $generator->getRenameKeySQL($this, $xmldb_key, $newname);
if ($statement_end) {
$results = $generator->getEndedStatements($results);
}
* prefix. Just one simple wrapper over generators.
* Experimental. Shouldn't be used at all!
*/
- function getRenameIndexSQL ($dbtype, $prefix, $xmldb_index, $statement_end=true) {
+ function getRenameIndexSQL ($dbtype, $prefix, $xmldb_index, $newname, $statement_end=true) {
$results = array();
$classname = 'XMLDB' . $dbtype;
$generator = new $classname();
$generator->setPrefix($prefix);
- $results = $generator->getRenameIndexSQL($this, $xmldb_index);
+ $results = $generator->getRenameIndexSQL($this, $xmldb_index, $newname);
if ($statement_end) {
$results = $generator->getEndedStatements($results);
}
/// TODO, call to getRenameTableExtraSQL() if $rename_table_extra_code is enabled. It will add sequence regeneration code.
if ($this->rename_table_extra_code) {
- $extra_sentences = $this->getRenameTableExtraSQL();
+ $extra_sentences = $this->getRenameTableExtraSQL($xmldb_table, $newname);
$results = array_merge($results, $extra_sentences);
}
* Experimental! Shouldn't be used at all!
*/
- function getRenameKeySQL($xmldb_table, $xmldb_key) {
+ function getRenameKeySQL($xmldb_table, $xmldb_key, $newname) {
$results = array();
/// We aren't generating this type of keys, delegate to child indexes
$xmldb_index = new XMLDBIndex($xmldb_key->getName());
$xmldb_index->setFields($xmldb_key->getFields());
- return $this->getRenameIndexSQL($xmldb_table, $xmldb_index);
+ return $this->getRenameIndexSQL($xmldb_table, $xmldb_index, $newname);
}
/// Arrived here so we are working with keys, lets rename them
/// Replace TABLENAME and KEYNAME as needed
$renamesql = str_replace('TABLENAME', $this->getTableName($xmldb_table), $this->rename_key_sql);
$renamesql = str_replace('OLDKEYNAME', $dbkeyname, $renamesql);
- $renamesql = str_replace('NEWKEYNAME', $xmldb_key->getName(), $renamesql);
+ $renamesql = str_replace('NEWKEYNAME', $newname, $renamesql);
/// Some DB doesn't support key renaming so this can be empty
if ($renamesql) {
* Experimental! Shouldn't be used at all!
*/
- function getRenameIndexSQL($xmldb_table, $xmldb_index) {
+ function getRenameIndexSQL($xmldb_table, $xmldb_index, $newname) {
$results = array();
/// 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);
+ $renamesql = str_replace('NEWINDEXNAME', $newname, $renamesql);
/// Some DB doesn't support index renaming (MySQL) so this can be empty
if ($renamesql) {