Improve drivers
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1470 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
parent
28e1dd286a
commit
a29ac72c9c
|
@ -105,11 +105,13 @@ if (isset($_GET["pgsql"])) {
|
||||||
function fetch_field() {
|
function fetch_field() {
|
||||||
$column = $this->_offset++;
|
$column = $this->_offset++;
|
||||||
$row = new stdClass;
|
$row = new stdClass;
|
||||||
|
if (function_exists('pg_field_table')) {
|
||||||
$row->orgtable = pg_field_table($this->_result, $column);
|
$row->orgtable = pg_field_table($this->_result, $column);
|
||||||
|
}
|
||||||
$row->name = pg_field_name($this->_result, $column);
|
$row->name = pg_field_name($this->_result, $column);
|
||||||
$row->orgname = $row->name;
|
$row->orgname = $row->name;
|
||||||
$row->type = pg_field_type($this->_result, $column);
|
$row->type = pg_field_type($this->_result, $column);
|
||||||
$row->charsetnr = ($row->type == "bytea" ? 63 : 0);
|
$row->charsetnr = ($row->type == "bytea" ? 63 : 0); // 63 - binary
|
||||||
return $row;
|
return $row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +180,7 @@ if (isset($_GET["pgsql"])) {
|
||||||
|
|
||||||
function tables_list() {
|
function tables_list() {
|
||||||
global $connection;
|
global $connection;
|
||||||
return get_key_vals("SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name");
|
return get_key_vals("SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema() ORDER BY table_name");
|
||||||
}
|
}
|
||||||
|
|
||||||
function count_tables($databases) {
|
function count_tables($databases) {
|
||||||
|
@ -188,7 +190,12 @@ if (isset($_GET["pgsql"])) {
|
||||||
function table_status($name = "") {
|
function table_status($name = "") {
|
||||||
global $connection;
|
global $connection;
|
||||||
$return = array();
|
$return = array();
|
||||||
$result = $connection->query("SELECT relname AS \"Name\", CASE relkind WHEN 'r' THEN '' ELSE 'view' END AS \"Engine\", pg_relation_size(oid) AS \"Data_length\", pg_catalog.obj_description(oid, 'pg_class') AS \"Comment\" FROM pg_catalog.pg_class WHERE relkind IN ('r','v') AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')" . ($name != "" ? " AND relname = " . $connection->quote($name) : "")); //! Index_length, Auto_increment
|
$result = $connection->query("SELECT relname AS \"Name\", CASE relkind WHEN 'r' THEN '' ELSE 'view' END AS \"Engine\", pg_relation_size(oid) AS \"Data_length\", pg_catalog.obj_description(oid, 'pg_class') AS \"Comment\"
|
||||||
|
FROM pg_catalog.pg_class
|
||||||
|
WHERE relkind IN ('r','v')
|
||||||
|
AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())"
|
||||||
|
. ($name != "" ? " AND relname = " . $connection->quote($name) : "")
|
||||||
|
); //! Index_length, Auto_increment
|
||||||
while ($row = $result->fetch_assoc()) {
|
while ($row = $result->fetch_assoc()) {
|
||||||
$return[$row["Name"]] = $row;
|
$return[$row["Name"]] = $row;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||||
|
|
||||||
function __construct() {
|
function __construct() {
|
||||||
$this->server_info = sqlite_libversion();
|
$this->server_info = sqlite_libversion();
|
||||||
|
$this->_connection = new SQLiteDatabase(":memory:");
|
||||||
}
|
}
|
||||||
|
|
||||||
function open($filename) {
|
function open($filename) {
|
||||||
|
@ -79,9 +80,16 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetch_field() {
|
function fetch_field() {
|
||||||
|
$name = $this->_result->fieldName($this->_offset++);
|
||||||
|
$pattern = '(\\[.*]|"(?:[^"]|"")*"|(.+))';
|
||||||
|
if (preg_match("~^($pattern\\.)?$pattern\$~", $name, $match)) {
|
||||||
|
$table = ($match[3] != "" ? $match[3] : idf_unescape($match[2]));
|
||||||
|
$name = ($match[5] != "" ? $match[5] : idf_unescape($match[4]));
|
||||||
|
}
|
||||||
return (object) array(
|
return (object) array(
|
||||||
"name" => $this->_result->fieldName($this->_offset++),
|
"name" => $name,
|
||||||
//! type, orgtable, charsetnr
|
"orgname" => $name,
|
||||||
|
"orgtable" => $table,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +107,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function open($filename) {
|
function open($filename) {
|
||||||
$this->_connection->open($filename);
|
$this->_connection = new SQLite3($filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
function query($query) {
|
function query($query) {
|
||||||
|
@ -146,10 +154,11 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||||
|
|
||||||
function fetch_field() {
|
function fetch_field() {
|
||||||
$column = $this->_offset++;
|
$column = $this->_offset++;
|
||||||
|
$type = $this->_result->columnType($column);
|
||||||
return (object) array(
|
return (object) array(
|
||||||
"name" => $this->_result->columnName($column),
|
"name" => $this->_result->columnName($column),
|
||||||
"type" => $this->_result->columnType($column),
|
"type" => $type,
|
||||||
//! orgtable, charsetnr
|
"charsetnr" => ($type == SQLITE3_BLOB ? 63 : 0), // 63 - binary
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,13 +172,8 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||||
class Min_DB extends Min_SQLite {
|
class Min_DB extends Min_SQLite {
|
||||||
|
|
||||||
function select_db($filename) {
|
function select_db($filename) {
|
||||||
static $connected = false;
|
|
||||||
if ($connected) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
set_exception_handler('connect_error'); // try/catch is not compatible with PHP 4
|
set_exception_handler('connect_error'); // try/catch is not compatible with PHP 4
|
||||||
$this->open($filename);
|
$this->open($filename);
|
||||||
$connected = true;
|
|
||||||
restore_exception_handler();
|
restore_exception_handler();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ function select($result, $connection2 = null) {
|
||||||
$links[$j] = $orgtable;
|
$links[$j] = $orgtable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($field->charsetnr == 63) {
|
if ($field->charsetnr == 63) { // 63 - binary
|
||||||
$blobs[$j] = true;
|
$blobs[$j] = true;
|
||||||
}
|
}
|
||||||
$types[$j] = $field->type;
|
$types[$j] = $field->type;
|
||||||
|
@ -59,7 +59,7 @@ function select($result, $connection2 = null) {
|
||||||
$val = " "; // some content to print a border
|
$val = " "; // some content to print a border
|
||||||
} else {
|
} else {
|
||||||
$val = h($val);
|
$val = h($val);
|
||||||
if ($types[$key] == 254) {
|
if ($types[$key] == 254) { // 254 - char
|
||||||
$val = "<code>$val</code>";
|
$val = "<code>$val</code>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,8 @@ function connection() {
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function idf_unescape($idf) {
|
function idf_unescape($idf) {
|
||||||
return str_replace($idf[0] . $idf[0], $idf[0], substr($idf, 1, -1));
|
$last = substr($idf, -1);
|
||||||
|
return str_replace($last . $last, $last, substr($idf, 1, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Escape string to use inside ''
|
/** Escape string to use inside ''
|
||||||
|
|
Loading…
Reference in a new issue