Skip to content
This repository was archived by the owner on Mar 10, 2022. It is now read-only.

Commit 0128175

Browse files
committed
Merge pull request #788 from couchbase/feature/issue_784_forestdb_nullKey_2
Fixed #784 - Emitting null with the ForestDB engine causes segfault
2 parents 064c6a6 + 2019426 commit 0128175

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

src/androidTest/java/com/couchbase/lite/ViewsTest.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3231,4 +3231,43 @@ public void map(Map<String, Object> document, Emitter emitter) {
32313231
Log.e(TAG, "Descending query: rows.getCount() = " + rows.getCount());
32323232
assertEquals(0, rows.getCount());
32333233
}
3234+
3235+
// - (void) test28_Nil_Key
3236+
public void testEmitWithNullKey() throws Exception {
3237+
// set up view
3238+
View view = database.getView("vu");
3239+
assertNotNull(view);
3240+
view.setMap(new Mapper() {
3241+
@Override
3242+
public void map(Map<String, Object> document, Emitter emitter) {
3243+
// null key -> ignored
3244+
emitter.emit(null, "foo");
3245+
emitter.emit("name", "bar");
3246+
}
3247+
}, "1");
3248+
assertNotNull(view.getMap());
3249+
assertEquals(0, view.getCurrentTotalRows());
3250+
3251+
// insert 1 doc
3252+
Map<String, Object> dict = new HashMap<String, Object>();
3253+
dict.put("_id", "11111");
3254+
assertNotNull(putDoc(database, dict));
3255+
3256+
// regular query
3257+
Query query = view.createQuery();
3258+
assertNotNull(query);
3259+
QueryEnumerator e = query.run();
3260+
assertNotNull(e);
3261+
assertEquals(1, e.getCount());
3262+
QueryRow row = e.getRow(0);
3263+
assertNotNull(row);
3264+
assertEquals("name", row.getKey());
3265+
assertEquals("bar", row.getValue());
3266+
3267+
// query with null key. it should be ignored. this caused exception previously for sqlite
3268+
query.setKeys(Collections.singletonList(null));
3269+
e = query.run();
3270+
assertNotNull(e);
3271+
assertEquals(0, e.getCount());
3272+
}
32343273
}

0 commit comments

Comments
 (0)