summaryrefslogtreecommitdiff
path: root/includes/db/DatabaseOracle.php
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2014-05-05 15:30:48 -0400
committerLuke Shumaker <LukeShu@sbcglobal.net>2014-05-05 15:30:48 -0400
commit3d86add3dfa5e0b3ead9859593d4a52cf7555a34 (patch)
tree453d8bd3fda4dbb3020017ea1a469291da5cdc71 /includes/db/DatabaseOracle.php
parent064cec79ca4c8201de0d06bbca6cb7a5345d11be (diff)
parent2e44b49a2db3026050b136de9b00f749dd3ff939 (diff)
Merge branch 'archwiki'
Diffstat (limited to 'includes/db/DatabaseOracle.php')
-rw-r--r--includes/db/DatabaseOracle.php32
1 files changed, 30 insertions, 2 deletions
diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php
index 32d4d984..fb2d4359 100644
--- a/includes/db/DatabaseOracle.php
+++ b/includes/db/DatabaseOracle.php
@@ -551,8 +551,12 @@ class DatabaseOracle extends DatabaseBase {
} else {
$first = false;
}
-
- $sql .= $this->fieldBindStatement( $table, $col, $val );
+ if ( $this->isQuotedIdentifier( $val ) ) {
+ $sql .= $this->removeIdentifierQuotes( $val );
+ unset( $row[$col] );
+ } else {
+ $sql .= $this->fieldBindStatement( $table, $col, $val );
+ }
}
$sql .= ')';
@@ -679,6 +683,30 @@ class DatabaseOracle extends DatabaseBase {
return $retval;
}
+ public function upsert( $table, array $rows, array $uniqueIndexes, array $set,
+ $fname = __METHOD__
+ ) {
+ if ( !count( $rows ) ) {
+ return true; // nothing to do
+ }
+
+ if ( !is_array( reset( $rows ) ) ) {
+ $rows = array( $rows );
+ }
+
+ $sequenceData = $this->getSequenceData( $table );
+ if ( $sequenceData !== false ) {
+ // add sequence column to each list of columns, when not set
+ foreach ( $rows as &$row ) {
+ if ( !isset( $row[$sequenceData['column']] ) ) {
+ $row[$sequenceData['column']] = $this->addIdentifierQuotes('GET_SEQUENCE_VALUE(\'' . $sequenceData['sequence'] . '\')');
+ }
+ }
+ }
+
+ return parent::upsert( $table, $rows, $uniqueIndexes, $set, $fname );
+ }
+
function tableName( $name, $format = 'quoted' ) {
/*
Replace reserved words with better ones