Allow changing PostgreSQL indexes with same name
This commit is contained in:
parent
3a8191b7ac
commit
c8248bb19c
|
@ -402,21 +402,31 @@ ORDER BY conkey, conname") as $row) {
|
||||||
function alter_indexes($table, $alter) {
|
function alter_indexes($table, $alter) {
|
||||||
$create = array();
|
$create = array();
|
||||||
$drop = array();
|
$drop = array();
|
||||||
|
$queries = array();
|
||||||
foreach ($alter as $val) {
|
foreach ($alter as $val) {
|
||||||
if ($val[0] != "INDEX") {
|
if ($val[0] != "INDEX") {
|
||||||
$create[] = ($val[2] == "DROP"
|
$create[] = ($val[2] == "DROP"
|
||||||
? "\nDROP CONSTRAINT " . idf_escape($val[1])
|
? "\nDROP CONSTRAINT " . idf_escape($val[1])
|
||||||
: "\nADD $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "") . $val[2]
|
: "\nADD" . ($val[1] != "" ? " CONSTRAINT " . idf_escape($val[1]) : "") . " $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "") . $val[2]
|
||||||
);
|
);
|
||||||
} elseif ($val[2] == "DROP") {
|
} elseif ($val[2] == "DROP") {
|
||||||
$drop[] = idf_escape($val[1]);
|
$drop[] = idf_escape($val[1]);
|
||||||
} elseif (!queries("CREATE INDEX " . idf_escape($val[1] != "" ? $val[1] : uniqid($table . "_")) . " ON " . table($table) . " $val[2]")) {
|
} else {
|
||||||
|
$queries[] = "CREATE INDEX " . idf_escape($val[1] != "" ? $val[1] : uniqid($table . "_")) . " ON " . table($table) . " $val[2]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($create) {
|
||||||
|
array_unshift($queries, "ALTER TABLE " . table($table) . implode(",", $create));
|
||||||
|
}
|
||||||
|
if ($drop) {
|
||||||
|
array_unshift($queries, "DROP INDEX " . implode(", ", $drop));
|
||||||
|
}
|
||||||
|
foreach ($queries as $query) {
|
||||||
|
if (!queries($query)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ((!$create || queries("ALTER TABLE " . table($table) . implode(",", $create)))
|
return true;
|
||||||
&& (!$drop || queries("DROP INDEX " . implode(", ", $drop)))
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function truncate_tables($tables) {
|
function truncate_tables($tables) {
|
||||||
|
|
Loading…
Reference in a new issue