فهرست منبع

handle 'IF NOT EXISTS' differently in OCI

El RIDO 4 سال پیش
والد
کامیت
c725b4f0fe
1فایلهای تغییر یافته به همراه18 افزوده شده و 4 حذف شده
  1. 18 4
      lib/Data/Database.php

+ 18 - 4
lib/Data/Database.php

@@ -792,10 +792,24 @@ class Database extends AbstractData
             "vizhash $dataType, " .
             "vizhash $dataType, " .
             "postdate INT$after_key )"
             "postdate INT$after_key )"
         );
         );
-        self::$_db->exec(
-            'CREATE INDEX IF NOT EXISTS comment_parent ON ' .
-            self::_sanitizeIdentifier('comment') . '(pasteid)'
-        );
+        if (self::$_type === 'oci') {
+            self::$_db->exec(
+                'declare
+                    already_exists  exception;
+                    columns_indexed exception;
+                    pragma exception_init( already_exists, -955 );
+                    pragma exception_init(columns_indexed, -1408);
+                begin
+                    execute immediate \'create index comment_parent on ' . self::_sanitizeIdentifier('comment') . ' (pasteid)\';
+                exception
+                end'
+            );
+        } else {
+            self::$_db->exec(
+                'CREATE INDEX IF NOT EXISTS comment_parent ON ' .
+                self::_sanitizeIdentifier('comment') . '(pasteid)'
+            );
+        }
     }
     }
 
 
     /**
     /**