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; iudc, 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. */