Skip to content

Commit da77eb6

Browse files
committed
Merge branch 'main' into copilot/fix-build-failure-pr-1173
2 parents bd123fb + 9a9c570 commit da77eb6

File tree

26 files changed

+375
-113
lines changed

26 files changed

+375
-113
lines changed

nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/integration/collection/CollectionCompoundIndexTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,10 +242,10 @@ public void testIssue178() {
242242
assertEquals(cursor.size(), 1);
243243

244244
cursor = collection.find(where("field1").eq(5));
245-
assertEquals(cursor.size(), 1);
245+
assertEquals(cursor.size(), 2);
246246

247247
cursor = collection.find(where("field1").eq(5.0));
248-
assertEquals(cursor.size(), 1);
248+
assertEquals(cursor.size(), 2);
249249

250250
collection.createIndex("field1", "field2");
251251
cursor = collection.find(and(where("field1").eq(0.03),
@@ -257,10 +257,10 @@ public void testIssue178() {
257257
assertEquals(cursor.size(), 1);
258258

259259
cursor = collection.find(where("field1").eq(5));
260-
assertEquals(cursor.size(), 1);
260+
assertEquals(cursor.size(), 2);
261261

262262
cursor = collection.find(where("field1").eq(5.0));
263-
assertEquals(cursor.size(), 1);
263+
assertEquals(cursor.size(), 2);
264264
}
265265

266266
@Test

nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/integration/collection/CollectionIndexTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,12 @@ public void testIssue178() {
244244
collection.insert(doc1, doc2, doc3, doc4, doc5);
245245

246246
DocumentCursor cursor = collection.find(where("field").eq(5));
247-
assertEquals(cursor.size(), 1);
247+
assertEquals(cursor.size(), 2);
248248

249249
collection.createIndex(indexOptions(IndexType.NON_UNIQUE), "field");
250250

251251
cursor = collection.find(where("field").eq(5));
252-
assertEquals(cursor.size(), 1);
252+
assertEquals(cursor.size(), 2);
253253
}
254254

255255
@Test

nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/integration/collection/CollectionSingleFieldIndexTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,12 @@ public void testIssue178() {
207207
collection.insert(doc1, doc2, doc3, doc4, doc5);
208208

209209
DocumentCursor cursor = collection.find(where("field").eq(5));
210-
assertEquals(cursor.size(), 1);
210+
assertEquals(cursor.size(), 2);
211211

212212
collection.createIndex(indexOptions(IndexType.NON_UNIQUE), "field");
213213

214214
cursor = collection.find(where("field").eq(5));
215-
assertEquals(cursor.size(), 1);
215+
assertEquals(cursor.size(), 2);
216216
}
217217

218218
@Test

nitrite-rocksdb-adapter/src/test/java/org/dizitart/no2/integration/collection/CollectionCompoundIndexTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,10 +242,10 @@ public void testIssue178() {
242242
assertEquals(cursor.size(), 1);
243243

244244
cursor = collection.find(where("field1").eq(5));
245-
assertEquals(cursor.size(), 1);
245+
assertEquals(cursor.size(), 2);
246246

247247
cursor = collection.find(where("field1").eq(5.0));
248-
assertEquals(cursor.size(), 1);
248+
assertEquals(cursor.size(), 2);
249249

250250
collection.createIndex("field1", "field2");
251251
cursor = collection.find(and(where("field1").eq(0.03),
@@ -257,10 +257,10 @@ public void testIssue178() {
257257
assertEquals(cursor.size(), 1);
258258

259259
cursor = collection.find(where("field1").eq(5));
260-
assertEquals(cursor.size(), 1);
260+
assertEquals(cursor.size(), 2);
261261

262262
cursor = collection.find(where("field1").eq(5.0));
263-
assertEquals(cursor.size(), 1);
263+
assertEquals(cursor.size(), 2);
264264
}
265265

266266
@Test

nitrite-rocksdb-adapter/src/test/java/org/dizitart/no2/integration/collection/CollectionIndexTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,12 @@ public void testIssue178() {
244244
collection.insert(doc1, doc2, doc3, doc4, doc5);
245245

246246
DocumentCursor cursor = collection.find(where("field").eq(5));
247-
assertEquals(cursor.size(), 1);
247+
assertEquals(cursor.size(), 2);
248248

249249
collection.createIndex(indexOptions(IndexType.NON_UNIQUE), "field");
250250

251251
cursor = collection.find(where("field").eq(5));
252-
assertEquals(cursor.size(), 1);
252+
assertEquals(cursor.size(), 2);
253253
}
254254

255255
@Test

nitrite-rocksdb-adapter/src/test/java/org/dizitart/no2/integration/collection/CollectionSingleFieldIndexTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,12 @@ public void testIssue178() {
207207
collection.insert(doc1, doc2, doc3, doc4, doc5);
208208

209209
DocumentCursor cursor = collection.find(where("field").eq(5));
210-
assertEquals(cursor.size(), 1);
210+
assertEquals(cursor.size(), 2);
211211

212212
collection.createIndex(indexOptions(IndexType.NON_UNIQUE), "field");
213213

214214
cursor = collection.find(where("field").eq(5));
215-
assertEquals(cursor.size(), 1);
215+
assertEquals(cursor.size(), 2);
216216
}
217217

218218
@Test

nitrite/src/main/java/org/dizitart/no2/common/DBValue.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ public class DBValue implements Comparable<DBValue>, Serializable {
3838
@Setter(AccessLevel.PRIVATE)
3939
private Comparable<?> value;
4040

41+
private DBValue() {
42+
}
43+
4144
public DBValue(Comparable<?> value) {
42-
this.value = value;
45+
this.value = normalizeNumber(value);
4346
}
4447

4548
@Override
@@ -55,6 +58,15 @@ public int compareTo(DBValue o) {
5558
return Comparables.compare(value, o.value);
5659
}
5760

61+
private static Comparable<?> normalizeNumber(Comparable<?> value) {
62+
// Normalize all numeric types to Double for consistent serialization
63+
// This ensures Integer(5) and Double(5.0) are treated the same in indexes
64+
if (value instanceof Number && !(value instanceof Double)) {
65+
return ((Number) value).doubleValue();
66+
}
67+
return value;
68+
}
69+
5870
private void writeObject(ObjectOutputStream stream) throws IOException {
5971
stream.writeObject(value);
6072
}

nitrite/src/main/java/org/dizitart/no2/common/util/Comparables.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,7 @@ public static int compare(Comparable first, Comparable second) {
1414
if (first instanceof Number && second instanceof Number) {
1515
Number number1 = (Number) first;
1616
Number number2 = (Number) second;
17-
int result = Numbers.compare(number1, number2);
18-
if (!first.getClass().equals(second.getClass())) {
19-
if (result == 0) {
20-
return first.toString().compareTo(second.toString()) < 0 ? -1 : 1;
21-
}
22-
}
23-
return result;
17+
return Numbers.compare(number1, number2);
2418
}
2519

2620
return first.compareTo(second);

nitrite/src/main/java/org/dizitart/no2/common/util/ObjectUtils.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,6 @@ public static boolean deepEquals(Object o1, Object o2) {
127127
}
128128

129129
if (o1 instanceof Number && o2 instanceof Number) {
130-
if (o1.getClass() != o2.getClass()) {
131-
return false;
132-
}
133130
// cast to Number and take care of boxing and compare
134131
return Numbers.compare((Number) o1, (Number) o2) == 0;
135132
} else if (o1 instanceof Iterable && o2 instanceof Iterable) {

nitrite/src/main/java/org/dizitart/no2/filters/EqualsFilter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import org.dizitart.no2.collection.Document;
2020
import org.dizitart.no2.collection.NitriteId;
21+
import org.dizitart.no2.common.DBNull;
22+
import org.dizitart.no2.common.DBValue;
2123
import org.dizitart.no2.common.tuples.Pair;
2224
import org.dizitart.no2.index.IndexMap;
2325

@@ -43,7 +45,9 @@ public boolean apply(Pair<NitriteId, Document> element) {
4345

4446
@Override
4547
public List<?> applyOnIndex(IndexMap indexMap) {
46-
Object value = indexMap.get((Comparable<?>) getValue());
48+
Object fieldValue = getValue();
49+
DBValue dbValue = fieldValue == null ? DBNull.getInstance() : new DBValue((Comparable<?>) fieldValue);
50+
Object value = indexMap.get(dbValue);
4751
if (value == null) {
4852
return new ArrayList<>();
4953
}

0 commit comments

Comments
 (0)