Index: branches/REL1_17/phase3/includes/db/DatabaseOracle.php |
— | — | @@ -775,13 +775,20 @@ |
776 | 776 | foreach ( $rows as $row ) { |
777 | 777 | # Delete rows which collide |
778 | 778 | if ( $uniqueIndexes ) { |
779 | | - $condsDelete = array(); |
780 | | - foreach ( $uniqueIndexes as $index ) { |
781 | | - $condsDelete[$index] = $row[$index]; |
| 779 | + $deleteConds = array(); |
| 780 | + foreach ( $uniqueIndexes as $key=>$index ) { |
| 781 | + if ( is_array( $index ) ) { |
| 782 | + $deleteConds2 = array(); |
| 783 | + foreach ( $index as $col ) { |
| 784 | + $deleteConds2[$col] = $row[$col]; |
| 785 | + } |
| 786 | + $deleteConds[$key] = $this->makeList( $deleteConds2, LIST_AND ); |
| 787 | + } else { |
| 788 | + $deleteConds[$index] = $row[$index]; |
| 789 | + } |
782 | 790 | } |
783 | | - if ( count( $condsDelete ) > 0 ) { |
784 | | - $this->delete( $table, $condsDelete, $fname ); |
785 | | - } |
| 791 | + $deleteConds = array( $this->makeList( $deleteConds, LIST_OR ) ); |
| 792 | + $this->delete( $table, $deleteConds, $fname ); |
786 | 793 | } |
787 | 794 | |
788 | 795 | if ( $sequenceData !== false && !isset( $row[$sequenceData['column']] ) ) { |