]> pd.if.org Git - btree/blobdiff - threadskv1.c
Introduce threadskv series of key-value stores
[btree] / threadskv1.c
index 1bbe7792aab2643b033cb542d62cd866fe331e16..67761e784e7e11bc803af759070d68c1c53a2f00 100644 (file)
@@ -1787,8 +1787,8 @@ int ret;
        else
                return 0;
 
-       // if key exists, return TRUE
-       //      otherwise return FALSE
+       // if key exists, return >= 0 value bytes copied
+       //      otherwise return (-1)
 
        if( !slotptr(set->page, slot)->dead && !keycmp (ptr, key, keylen) ) {
                val = valptr (set->page,slot);
@@ -1859,7 +1859,7 @@ BtVal val;
 
                // set up the slot
 
-               slotptr(page, idx)->off = nxt;
+               slotptr(page, ++idx)->off = nxt;
 
                if( !(slotptr(page, idx)->dead = slotptr(bt->frame, cnt)->dead) )
                        page->act++;
@@ -2364,7 +2364,8 @@ BtKey ptr;
 }
 
 typedef struct {
-       char type, idx;
+       char idx;
+       char *type;
        char *infile;
        BtMgr *mgr;
        int num;
@@ -2391,7 +2392,7 @@ FILE *in;
 
        bt = bt_open (args->mgr);
 
-       switch(args->type | 0x20)
+       switch(args->type[0] | 0x20)
        {
        case 'a':
                fprintf(stderr, "started latch mgr audit\n");
@@ -2452,6 +2453,8 @@ FILE *in;
                          else if( args->num )
                                sprintf((char *)key+len, "%.9d", line + args->idx * args->num), len += 9;
 
+                         if( (args->type[1] | 0x20) == 'p' )
+                               len = 10;
                          if( bt_deletekey (bt, key, len, 0) )
                                fprintf(stderr, "Error %d Line: %d\n", bt->err, line), exit(0);
                          len = 0;
@@ -2474,6 +2477,8 @@ FILE *in;
                          else if( args->num )
                                sprintf((char *)key+len, "%.9d", line + args->idx * args->num), len += 9;
 
+                         if( (args->type[1] | 0x20) == 'p' )
+                               len = 10;
                          if( bt_findkey (bt, key, len, NULL, 0) == 0 )
                                found++;
                          else if( bt->err )
@@ -2629,7 +2634,7 @@ BtDb *bt;
 
        for( idx = 0; idx < cnt; idx++ ) {
                args[idx].infile = argv[idx + 7];
-               args[idx].type = argv[2][0];
+               args[idx].type = argv[2];
                args[idx].mgr = mgr;
                args[idx].num = num;
                args[idx].idx = idx;