]> git.mjollnir.org Git - moodle.git/commitdiff
Now Postgres naming of objects introspects to avoid duplicates. MDL-7376
authorstronk7 <stronk7>
Sat, 27 Jan 2007 17:37:39 +0000 (17:37 +0000)
committerstronk7 <stronk7>
Sat, 27 Jan 2007 17:37:39 +0000 (17:37 +0000)
lib/xmldb/classes/generators/postgres7/postgres7.class.php

index 9dcf4b00e6ad7fd32310922366f366d7bb89be07..6f401fbdc23ced23279c8efd1e9d78f675a15e61 100644 (file)
@@ -469,6 +469,43 @@ function getSequenceFromDB($xmldb_table) {
     return $sequencename;
 }
 
+    /**
+     * Given one object name and it's type (pk, uk, fk, ck, ix, uix, seq, trg)
+     * return if such name is currently in use (true) or no (false)
+     * (invoked from getNameForObject()
+     */
+    function isNameInUse($object_name, $type) {
+        switch($type) {
+            case 'ix':
+            case 'uix':
+            case 'seq':
+                if ($check = get_records_sql("SELECT relname 
+                                              FROM pg_class 
+                                              WHERE lower(relname) = '" . strtolower($object_name) . "'")) {
+                    return true;
+                }
+                break;
+            case 'pk':
+            case 'uk':
+            case 'fk':
+            case 'ck':
+                if ($check = get_records_sql("SELECT conname 
+                                              FROM pg_constraint
+                                              WHERE lower(conname) = '" . strtolower($object_name) . "'")) {
+                    return true;
+                }
+                break;
+            case 'trg':
+                if ($check = get_records_sql("SELECT tgname 
+                                              FROM pg_trigger
+                                              WHERE lower(tgname) = '" . strtolower($object_name) . "'")) {
+                    return true;
+                }
+                break;
+        }
+        return false; //No name in use found
+    }
+
     /**
      * Returns an array of reserved words (lowercase) for this DB
      */