3ff9f3d461ea3fc6d42923658c9ea6bf319cbd7b
kent
  Mon Mar 4 21:36:27 2013 -0800
Starting move from only one extra index (on the name field) being allowed to allowing multiple extra indexes.  Also defining a header extension block for the file since the header is running out of space.
diff --git src/lib/bPlusTree.c src/lib/bPlusTree.c
index 7d286d5..c5cece5 100644
--- src/lib/bPlusTree.c
+++ src/lib/bPlusTree.c
@@ -151,31 +151,32 @@
     bits64 fileOffset = udcReadBits64(bpt->udc, isSwapped);
 
     /* Loop through remainder. */
     for (i=1; i<childCount; ++i)
 	{
 	udcMustRead(bpt->udc, keyBuf, bpt->keySize);
 	if (memcmp(key, keyBuf, bpt->keySize) < 0)
 	    break;
 	fileOffset = udcReadBits64(bpt->udc, isSwapped);
 	}
     return rFind(bpt, fileOffset, key, val);
     }
 }
 
 static void rFindMulti(struct bptFile *bpt, bits64 blockStart, void *key, struct slRef **pList)
-/* Find values corresponding to key and add them to pList */
+/* Find values corresponding to key and add them to pList.  You'll need to 
+ * Do a slRefFreeListAndVals() on the list when done. */
 {
 /* Seek to start of block. */
 udcSeek(bpt->udc, blockStart);
 
 /* Read block header. */
 UBYTE isLeaf;
 UBYTE reserved;
 bits16 i, childCount;
 udcMustReadOne(bpt->udc, isLeaf);
 udcMustReadOne(bpt->udc, reserved);
 boolean isSwapped = bpt->isSwapped;
 childCount = udcReadBits16(bpt->udc, isSwapped);
 
 int keySize = bpt->keySize;
 UBYTE keyBuf[keySize];   /* Place to put a key, buffered on stack. */