SQLite: Fix primary key handling

This commit is contained in:
Jakub Vrana 2013-08-08 19:20:27 -07:00
parent f6e24b1646
commit 145a8c62ff

View file

@ -336,7 +336,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
if (!$return) { if (!$return) {
foreach (fields($table) as $name => $field) { foreach (fields($table) as $name => $field) {
if ($field["primary"]) { if ($field["primary"]) {
$return[""] = array("type" => "PRIMARY", "columns" => array($name), "lengths" => array(), "descs" => array()); $return[""] = array("type" => "PRIMARY", "columns" => array($name), "lengths" => array(), "descs" => array(null));
} }
} }
} }
@ -509,13 +509,17 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
} }
$columns = "(" . implode(", ", $columns) . ")"; $columns = "(" . implode(", ", $columns) . ")";
if (!$drop_indexes[$key_name]) { if (!$drop_indexes[$key_name]) {
if ($index["type"] != "PRIMARY") { if ($index["type"] != "PRIMARY" || !$primary_key) {
$indexes[] = array($index["type"], $key_name, $columns); $indexes[] = array($index["type"], $key_name, $columns);
} elseif (!$primary_key) {
$foreign[] = " PRIMARY KEY $columns";
} }
} }
} }
foreach ($indexes as $key => $val) {
if ($val[0] == "PRIMARY") {
unset($indexes[$key]);
$foreign[] = " PRIMARY KEY $val[2]";
}
}
foreach (foreign_keys($table) as $foreign_key) { foreach (foreign_keys($table) as $foreign_key) {
$columns = array(); $columns = array();
foreach ($foreign_key["source"] as $column) { foreach ($foreign_key["source"] as $column) {