function getIndexes(knjdb_table $table){ if ($table->indexes_changed){ $f_gi = $this->knjdb->query("SHOW INDEX FROM " . $this->knjdb->connob->sep_table . $table->get("name") . $this->knjdb->connob->sep_table); while($d_gi = $f_gi->fetch()){ if ($d_gi["Key_name"] != "PRIMARY"){ $key = $d_gi["Key_name"]; $index[$key]["name"] = $d_gi["Key_name"]; $index[$key]["columns"][] = $table->getColumn($d_gi["Column_name"]); } } //Making keys to numbers (as in SQLite). $return = array(); if ($index){ foreach($index AS $name => $value){ if (!$this->indexes[$name]){ $table->indexes[$name] = new knjdb_index($table, $value); } } } $table->indexes_changed = false; } return $table->indexes; }
function getIndexes(knjdb_table $table){ if ($table->indexes_changed){ $f_gi = $this->knjdb->query("PRAGMA index_list(" . $this->knjdb->conn->sep_table . $table->get("name") . $this->knjdb->conn->sep_table . ")"); while($d_gi = $f_gi->fetch()){ if (strpos($d_gi["name"], "sqlite") !== false && strpos($d_gi["name"], "autoindex") !== false){ //This is a SQLite-auto-index - do not show or add. }elseif(!array_key_exists($d_gi["name"], $table->indexes) or !$table->indexes[$d_gi["name"]]){ $index = array(); $index["name"] = $d_gi["name"]; $first = true; $columns_text = ""; $f_gid = $this->knjdb->query("PRAGMA index_info('" . $d_gi["name"] . "')"); while($d_gid = $f_gid->fetch()){ if ($first == true){ $first = false; }else{ $columns_text .= ", "; } $index["columns"][] = $table->getColumn($d_gid["name"]); } $table->indexes[$index["name"]] = new knjdb_index($table, $index); } } $table->indexes_changed = false; } return $table->indexes; }
function getIndexes(knjdb_table $table) { if ($table->indexes_changed) { $f_gi = $this->knjdb->query("\n\t\t\t\t\tSELECT\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tindid,\n\t\t\t\t\t\tOBJECT_NAME(id) AS TableName\n\t\t\t\t\t\n\t\t\t\t\tFROM\n\t\t\t\t\t\tsysindexes\n\t\t\t\t\t\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tOBJECT_NAME(sysindexes.id) = '" . $this->knjdb->sql($table->get("name")) . "'\n\t\t\t\t"); while ($d_gi = $f_gi->fetch()) { $columns = array(); $f_gik = $this->knjdb->query("\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tsyscolumns.name,\n\t\t\t\t\t\t\tOBJECT_NAME(syscolumns.id) AS TableName\n\t\t\t\t\t\t\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\tsysindexkeys,\n\t\t\t\t\t\t\tsyscolumns\n\t\t\t\t\t\t\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tsysindexkeys.id = '" . $this->knjdb->sql($d_gi["id"]) . "' AND\n\t\t\t\t\t\t\tsysindexkeys.indid = '" . $this->knjdb->sql($d_gi["indid"]) . "' AND\n\t\t\t\t\t\t\tsyscolumns.id = '" . $this->knjdb->sql($d_gi["id"]) . "' AND\n\t\t\t\t\t\t\tsyscolumns.colid = sysindexkeys.colid\n\t\t\t\t\t\t\n\t\t\t\t\t\tORDER BY\n\t\t\t\t\t\t\tsyscolumns.name\n\t\t\t\t\t"); while ($d_gik = $f_gik->fetch()) { $columns[$d_gik["name"]] = $table->getColumn($d_gik["name"]); } if (count($columns) > 0) { //to avoid the actual system indexes with no columns which confuses... $table->indexes[$d_gi["name"]] = new knjdb_index($table, array("name" => $d_gi["name"], "columns" => $columns)); } } $table->indexes_changed = false; } return $table->indexes; }