]> git.joonet.de Git - adminer.git/commitdiff
Oracle select support
authorJakub Vrana <jakub@vrana.cz>
Thu, 20 May 2010 15:35:30 +0000 (17:35 +0200)
committerJakub Vrana <jakub@vrana.cz>
Thu, 20 May 2010 15:35:30 +0000 (17:35 +0200)
adminer/drivers/oracle.inc.php
todo.txt

index 19c6e0fb46056a57e7ad7270c255e3cdc4c3bf43..87a45eb0a46e20d99523234612bf9fe8cc49d7b8 100644 (file)
@@ -86,12 +86,21 @@ if (isset($_GET["oracle"])) {
                                $this->num_rows = -1; // all results unbuffered
                        }
 
+                       function _convert($row) {
+                               foreach ((array) $row as $key => $val) {
+                                       if (is_a($val, 'OCI-Lob')) {
+                                               $row[$key] = $val->load();
+                                       }
+                               }
+                               return $row;
+                       }
+                       
                        function fetch_assoc() {
-                               return oci_fetch_assoc($this->_result);
+                               return $this->_convert(oci_fetch_assoc($this->_result));
                        }
 
                        function fetch_row() {
-                               return oci_fetch_row($this->_result);
+                               return $this->_convert(oci_fetch_row($this->_result));
                        }
 
                        function fetch_field() {
@@ -189,7 +198,7 @@ if (isset($_GET["oracle"])) {
        }
 
        function fk_support($table_status) {
-               return false; //!
+               return true;
        }
 
        function fields($table) {
@@ -252,7 +261,7 @@ if (isset($_GET["oracle"])) {
                foreach ($fields as $field) {
                        $val = $field[1];
                        if ($val && $field[0] != "" && idf_escape($field[0]) != $val[0]) {
-                               queries("ALTER TABLE " . table($name) . " RENAME COLUMN " . idf_escape($field[0]) . " TO $val[0]");
+                               queries("ALTER TABLE " . table($table) . " RENAME COLUMN " . idf_escape($field[0]) . " TO $val[0]");
                        }
                        if ($val) {
                                $alter[] = ($table != "" ? ($field[0] != "" ? "MODIFY (" : "ADD (") : "  ") . implode($val) . ($table != "" ? ")" : ""); //! error with name change only
@@ -263,11 +272,16 @@ if (isset($_GET["oracle"])) {
                if ($table == "") {
                        return queries("CREATE TABLE " . table($name) . " (\n" . implode(",\n", $alter) . "\n)");
                }
-               return (!$alter || queries("ALTER TABLE " . table($name) . "\n" . implode("\n", $alter)))
-                       && (!$drop || queries("ALTER TABLE " . table($name) . " DROP (" . implode(", ", $drop) . ")"))
+               return (!$alter || queries("ALTER TABLE " . table($table) . "\n" . implode("\n", $alter)))
+                       && (!$drop || queries("ALTER TABLE " . table($table) . " DROP (" . implode(", ", $drop) . ")"))
+                       && ($table == $name || queries("ALTER TABLE " . table($table) . " RENAME TO " . table($name)))
                ;
        }
        
+       function foreign_keys($table) {
+               return array(); //!
+       }
+       
        function truncate_tables($tables) {
                return apply_queries("TRUNCATE TABLE", $tables);
        }
index d005bdcba79bd709ed5ce9c60e1dcd5c3add1be5..4143150e8e2391680aa6fa388e51af99128df926 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -44,3 +44,6 @@ Non UTF-8 character sets
 Rename by sp_rename
 Detection of table collation
 PDO driver with seek
+
+Oracle:
+clob comparable with string