@@ -149,6 +149,41 @@ public void testSimple() throws Exception {
149149 dir .close ();
150150 }
151151
152+ public void testSimpleAddBDVFieldViaUpdate () throws Exception {
153+ Directory dir = newDirectory ();
154+ IndexWriterConfig conf = newIndexWriterConfig (new MockAnalyzer (random ()));
155+ // make sure random config doesn't flush on us
156+ conf .setMaxBufferedDocs (10 );
157+ conf .setRAMBufferSizeMB (IndexWriterConfig .DISABLE_AUTO_FLUSH );
158+ IndexWriter writer = new IndexWriter (dir , conf );
159+ writer .addDocument (doc (0 )); // val=1
160+ writer .addDocument (doc (1 )); // val=2
161+ if (random ().nextBoolean ()) { // randomly commit before the update is sent
162+ writer .commit ();
163+ }
164+ writer .updateBinaryDocValue (new Term ("id" , "doc-0" ), "new" , toBytes (2 )); // doc=0, exp=2
165+
166+ final DirectoryReader reader ;
167+ if (random ().nextBoolean ()) { // not NRT
168+ writer .close ();
169+ reader = DirectoryReader .open (dir );
170+ } else { // NRT
171+ reader = DirectoryReader .open (writer );
172+ writer .close ();
173+ }
174+
175+ assertEquals (1 , reader .leaves ().size ());
176+ LeafReader r = reader .leaves ().get (0 ).reader ();
177+ BinaryDocValues bdv = r .getBinaryDocValues ("new" );
178+ assertEquals (0 , bdv .nextDoc ());
179+ assertEquals (2 , getValue (bdv ));
180+ assertEquals (NO_MORE_DOCS , bdv .nextDoc ());
181+ // assertEquals(2, getValue(bdv));
182+ reader .close ();
183+
184+ dir .close ();
185+ }
186+
152187 public void testUpdateFewSegments () throws Exception {
153188 Directory dir = newDirectory ();
154189 IndexWriterConfig conf = newIndexWriterConfig (new MockAnalyzer (random ()));
0 commit comments