Primary key links

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@107 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
jakubvrana 2007-07-10 20:51:14 +00:00
parent 362210876a
commit a01944e7e0
2 changed files with 14 additions and 9 deletions

View file

@ -98,6 +98,7 @@ if (extension_loaded("mysqli")) {
$row->orgtable = $row->table;
$row->orgname = $row->name;
$row->charsetnr = ($row->blob ? 63 : 0);
$row->flags = ($row->primary_key ? 2 : 0);
return $row;
}

View file

@ -58,11 +58,13 @@ function indexes($table) {
global $mysql;
$return = array();
$result = $mysql->query("SHOW INDEX FROM " . idf_escape($table));
while ($row = $result->fetch_assoc()) {
$return[$row["Key_name"]]["type"] = ($row["Key_name"] == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? "INDEX" : "UNIQUE")));
$return[$row["Key_name"]]["columns"][$row["Seq_in_index"]] = $row["Column_name"];
if ($result) {
while ($row = $result->fetch_assoc()) {
$return[$row["Key_name"]]["type"] = ($row["Key_name"] == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? "INDEX" : "UNIQUE")));
$return[$row["Key_name"]]["columns"][$row["Seq_in_index"]] = $row["Column_name"];
}
$result->free();
}
$result->free();
return $return;
}
@ -186,6 +188,7 @@ function get_file($key) {
}
function select($result) {
global $SELF;
if (!$result->num_rows) {
echo "<p class='message'>" . lang('No rows.') . "</p>\n";
} else {
@ -199,8 +202,7 @@ function select($result) {
$blobs = array();
for ($j=0; $j < count($row); $j++) {
$field = $result->fetch_field();
if (strlen($field->orgtable) && $field->primary_key) {
$links[$j] = $field->orgtable;
if (strlen($field->orgtable) && $field->flags & 2) {
if (!isset($indexes[$field->orgtable])) {
$indexes[$field->orgtable] = array();
foreach (indexes($field->orgtable) as $index) {
@ -211,9 +213,11 @@ function select($result) {
}
$columns[$field->orgtable] = $indexes[$field->orgtable];
}
unset($columns[$field->orgtable][$field->orgname]);
$indexes[$field->orgtable][$field->orgname] = $j;
$links[$j] = $field->orgtable;
if (isset($columns[$field->orgtable][$field->orgname])) {
unset($columns[$field->orgtable][$field->orgname]);
$indexes[$field->orgtable][$field->orgname] = $j;
$links[$j] = $field->orgtable;
}
}
if ($field->charsetnr == 63) {
$blobs[$j] = true;