Index: MVSecondaryIndex.java
===================================================================
--- MVSecondaryIndex.java	(revision 14101)
+++ MVSecondaryIndex.java	(working copy)
@@ -183,7 +183,7 @@
         TransactionMap<Value, Value> map = getMap(session);
         ValueArray array = convertToKey(row);
         ValueArray unique = null;
-        if (indexType.isUnique()) {
+        if (indexType.isUnique() && !containsNullAndAllowMultipleNull(row)) {
             // this will detect committed entries only
             unique = convertToKey(row);
             unique.getList()[keyColumns - 1] = ValueLong.get(Long.MIN_VALUE);
@@ -204,7 +204,7 @@
                 }
                 if (containsNullAndAllowMultipleNull(r2)) {
                     // this is allowed
-                    continue;
+                    break;
                 }
                 if (map.isSameTransaction(k)) {
                     continue;
@@ -230,6 +230,7 @@
                 if (!containsNullAndAllowMultipleNull(r2)) {
                     throw getDuplicateKeyException(k.toString());
                 }
+                break;
             }
         }
     }

