]> git.joonet.de Git - adminer.git/commitdiff
SQLite variables
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Wed, 21 Apr 2010 15:09:52 +0000 (15:09 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Wed, 21 Apr 2010 15:09:52 +0000 (15:09 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1467 7c3ca157-0c34-0410-bff1-cbf682f78f5c

adminer/drivers/mysql.inc.php
adminer/drivers/sqlite.inc.php
adminer/include/editing.inc.php
adminer/variables.inc.php

index f60067448fd93e0b411d0ffe5667a21a2e42ba64..459cb93a9e5018732243c55f5c0275d8a89f449e 100644 (file)
@@ -666,6 +666,14 @@ if (!defined("DRIVER")) {
                return $connection->result("SHOW CREATE TABLE " . idf_escape($table), 1);
        }
        
+       function show_variables() {
+               return get_key_vals("SHOW VARIABLES");
+       }
+       
+       function show_status() {
+               return get_key_vals("SHOW STATUS");
+       }
+       
        /** Check whether a feature is supported
        * @param string
        * @return bool
index 48ee0460b6e5b56bfedf1ff69e88b51e9fdf5c9c..e3be1ff5722fb9e8d41bd931213412b67ba90083 100644 (file)
@@ -44,7 +44,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
                                
                                function result($query, $field = 0) {
                                        $result = $this->query($query);
-                                       if (!$result) {
+                                       if (!is_object($result)) {
                                                return false;
                                        }
                                        $row = $result->_result->fetch();
@@ -89,37 +89,38 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
                        
                } else {
                        
-                       class Min_SQLite extends SQLite3 {
-                               var $extension = "SQLite3", $server_info, $affected_rows, $error;
+                       class Min_SQLite {
+                               var $extension = "SQLite3", $server_info, $affected_rows, $error, $_connection;
                                
                                function __construct() {
-                                       $version = $this->version();
+                                       $this->_connection = new SQLite3(":memory:"); // required to display variables
+                                       $version = $this->_connection->version();
                                        $this->server_info = $version["versionString"];
                                }
                                
                                function open($filename) {
-                                       parent::__construct($filename);
+                                       $this->_connection->open($filename);
                                }
                                
                                function query($query) {
-                                       $result = @parent::query($query);
+                                       $result = @$this->_connection->query($query);
                                        if (!$result) {
-                                               $this->error = $this->lastErrorMsg();
+                                               $this->error = $this->_connection->lastErrorMsg();
                                                return false;
                                        } elseif ($result->numColumns()) {
                                                return new Min_Result($result);
                                        }
-                                       $this->affected_rows = $this->changes();
+                                       $this->affected_rows = $this->_connection->changes();
                                        return true;
                                }
                                
                                function quote($string) {
-                                       return "'" . $this->escapeString($string) . "'";
+                                       return "'" . $this->_connection->escapeString($string) . "'";
                                }
                                
                                function result($query, $field = 0) {
                                        $result = $this->query($query);
-                                       if (!$result) {
+                                       if (!is_object($result)) {
                                                return false;
                                        }
                                        $row = $result->_result->fetchArray();
@@ -254,6 +255,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
                $return = array();
                $result = $connection->query("SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN ('table', 'view')" . ($name != "" ? " AND name = " . $connection->quote($name) : ""));
                while ($row = $result->fetch_assoc()) {
+                       $row["Auto_increment"] = "";
                        $return[$row["Name"]] = $row;
                }
                $result = $connection->query("SELECT * FROM sqlite_sequence");
@@ -456,8 +458,21 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
                return $connection->result("SELECT sql FROM sqlite_master WHERE name = " . $connection->quote($table));
        }
        
+       function show_variables() {
+               global $connection;
+               $return = array();
+               foreach (array("auto_vacuum", "cache_size", "count_changes", "default_cache_size", "empty_result_callbacks", "encoding", "foreign_keys", "full_column_names", "fullfsync", "journal_mode", "journal_size_limit", "legacy_file_format", "locking_mode", "page_size", "max_page_count", "read_uncommitted", "recursive_triggers", "reverse_unordered_selects", "secure_delete", "short_column_names", "synchronous", "temp_store", "temp_store_directory", "schema_version", "compile_options", "integrity_check", "quick_check") as $key) {
+                       $return[$key] = $connection->result("PRAGMA $key");
+               }
+               return $return;
+       }
+       
+       function show_status() {
+               // not supported
+       }
+       
        function support($feature) {
-               return ereg('^(view|trigger)$', $feature);
+               return ereg('^(view|trigger|variables)$', $feature);
        }
        
        $driver = "sqlite";
index 3a2260b713bfb13ad0da322f9e44ee45b4a844ed..ee7c86e3bf903024af14fdaf75c79c977fb26945 100644 (file)
@@ -55,7 +55,7 @@ function select($result, $connection2 = null) {
                                } else {
                                        if ($blobs[$key] && !is_utf8($val)) {
                                                $val = "<i>" . lang('%d byte(s)', strlen($val)) . "</i>"; //! link to download
-                                       } elseif ($val == "") {
+                                       } elseif (!strlen($val)) { // strlen - SQLite can return int
                                                $val = "&nbsp;"; // some content to print a border
                                        } else {
                                                $val = h($val);
index eb33eaf13ebdae270deb79ba030c8f864add4e94..cc817c05693f28509252bad87cba86907e8961e0 100644 (file)
@@ -2,11 +2,10 @@
 $status = isset($_GET["status"]);
 page_header($status ? lang('Status') : lang('Variables'));
 
-$result = $connection->query($status ? "SHOW STATUS" : "SHOW VARIABLES");
 echo "<table cellspacing='0'>\n";
-while ($row = $result->fetch_assoc()) {
+foreach (($status ? show_status() : show_variables()) as $key => $val) {
        echo "<tr>";
-       echo "<th><code class='jush-" . ($status ? "sqlstatus" : "sqlset") . "'>" . h($row["Variable_name"]) . "</code>";
-       echo "<td>" . nbsp($row["Value"]);
+       echo "<th><code class='jush-" . $driver . ($status ? "status" : "set") . "'>" . h($key) . "</code>";
+       echo "<td>" . nbsp($val);
 }
 echo "</table>\n";