@@ -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