]> pd.if.org Git - btree/blobdiff - btree2t.c
Separate scanning from counting. Utilize file locking during btree creation.
[btree] / btree2t.c
index 3eb84e0a1b9923cda33926f4a6b4740387b6a87a..54be57f62c0cfa84f369fc30f9bf67f8e565f065 100644 (file)
--- a/btree2t.c
+++ b/btree2t.c
@@ -2383,15 +2383,30 @@ FILE *in;
                break;
 
        case 's':
-               scan++;
+               fprintf(stderr, "started scaning\n");
+               cnt = len = key[0] = 0;
 
-       case 'c':
-         cnt = 0;
+               if( slot = bt_startkey (bt, key, len) )
+                 slot--;
+               else
+                 fprintf(stderr, "Error %d in StartKey. Syserror: %d\n", bt->err, errno), exit(0);
+
+               while( slot = bt_nextkey (bt, slot) ) {
+                       ptr = bt_key(bt, slot);
+                       fwrite (ptr->key, ptr->len, 1, stdout);
+                       fputc ('\n', stdout);
+                       cnt++;
+               }
 
+               fprintf(stderr, " Total keys read %d\n", cnt - 1);
+               break;
+
+       case 'c':
          fprintf(stderr, "started counting\n");
 
          next = bt->latchmgr->nlatchpage + LATCH_page;
          page_no = LEAF_page;
+         cnt = 0;
 
          while( page_no < bt_getid(bt->latchmgr->alloc->right) ) {
          uid off = page_no << bt->page_bits;