Fixed replace function behaviour when required ID not specified
authorJure Kajzer <freakolowsky@users.mediawiki.org>
Wed, 4 Nov 2009 19:27:22 +0000 (19:27 +0000)
committerJure Kajzer <freakolowsky@users.mediawiki.org>
Wed, 4 Nov 2009 19:27:22 +0000 (19:27 +0000)
includes/db/DatabaseOracle.php

index f1d90ac..55c9c05 100644 (file)
@@ -419,7 +419,7 @@ class DatabaseOracle extends DatabaseBase {
                if (!is_array($options))
                        $options = array($options);
 
-    if (in_array('IGNORE', $options))
+               if (in_array('IGNORE', $options))
                        $this->ignore_DUP_VAL_ON_INDEX = true;
 
                if (!is_array(reset($a))) {
@@ -648,6 +648,8 @@ class DatabaseOracle extends DatabaseBase {
                        $rows = array($rows);
                }
 
+               $sequenceData = $this->getSequenceData($table);
+
                foreach( $rows as $row ) {
                        # Delete rows which collide
                        if ( $uniqueIndexes ) {
@@ -678,6 +680,9 @@ class DatabaseOracle extends DatabaseBase {
                                $this->query( $sql, $fname );
                        }
 
+                       if ($sequenceData !== false && !isset($row[$sequenceData['column']]))
+                               $row[$sequenceData['column']] = $this->nextSequenceValue($sequenceData['sequence']);
+
                        # Now insert the row
                        $this->insert( $table, $row, $fname );
                }