]> git.mjollnir.org Git - moodle.git/commitdiff
improve detection of PostgreSQL version number
authorgbateson <gbateson>
Fri, 1 Sep 2006 22:44:07 +0000 (22:44 +0000)
committergbateson <gbateson>
Fri, 1 Sep 2006 22:44:07 +0000 (22:44 +0000)
mod/hotpot/db/update_to_v2.php

index fe51e60adc3254793bbd1278a77952bf3407a59c..5ef0ca32403eaa27637ad97cd6e11b24916d3a47 100644 (file)
@@ -1016,12 +1016,16 @@ function hotpot_db_add_index($table, $field, $length='') {
 
     switch (strtolower($CFG->dbtype)) {
         case 'mysql' :
-            $length = empty($length) ? '' : " ($length)";
-            $ok = $ok && $db->Execute("ALTER TABLE `$table` ADD INDEX `$index` (`$field`$length)");
+            $field = "`$field`";
+            if ($length) {
+                $field = "$field ($length)";
+            }
+            $ok = $ok && $db->Execute("ALTER TABLE `$table` ADD INDEX `$index` ($field)");
         break;
         case 'postgres7' :
+            $field = '"'.$field.'"';
             if ($length) {
-                $field = "SUBSTR(\"$field\",$length)";
+                $field = "SUBSTR($field,$length)";
             }
             $ok = $ok && $db->Execute("CREATE INDEX $index ON $table ($field)");
         break;
@@ -1236,9 +1240,17 @@ function hotpot_db_update_field_type($table, $oldfield, $field, $type, $size, $u
             $ok = $ok && execute_sql("ALTER TABLE `$table` $action `$field` $fieldtype");
         break;
         case 'postgres7':
-            // get db version
-            $dbinfo = $db->ServerInfo();
-            $dbversion = substr($dbinfo['version'],0,3);
+            // get db version 
+            //    N.B. $db->ServerInfo() usually returns blank 
+            //    (except lib/adodb/drivers/adodb-postgre64-inc.php)
+            $dbversion = '';
+            $rs = $db->Execute("SELECT version()");
+            if ($rs && $rs->RecordCount()>0) {
+                $records = $rs->GetArray();
+                if (preg_match('/\d+\.\d+/', $records[0][0], $matches)) {
+                    $dbversion = $matches[0];
+                }
+            }
             $tmpfield = 'temporary_'.$field.'_'.time();
             switch (strtoupper($type)) {
                 case "INTEGER":