Update of /cvsroot/monetdb/sql/src/storage/bpm
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv2179/src/storage/bpm

Modified Files:
        bpm_storage.mx bpm_table.mx 
Log Message:
more empty sharing (leak tests now use 1/3 less bats (ie from 300 to about 
200)).
use BBPquickdesk to speed startup 


Index: bpm_storage.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/storage/bpm/bpm_storage.mx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- bpm_storage.mx      6 Nov 2007 15:23:17 -0000       1.1
+++ bpm_storage.mx      10 Nov 2007 21:47:29 -0000      1.2
@@ -108,11 +108,15 @@
                temp_dup(u);
        }
        p -> parts[nr].cnt = BATcount(b);
-       p -> parts[nr].hlow = p->parts[nr].hhgh = -1;
-       if (BATcount(b)) {
-               BATiter bi = bat_iterator(b);
-               p -> parts[nr].hlow = *(oid*)BUNhead(bi,BUNfirst(b));
-               p -> parts[nr].hhgh = *(oid*)BUNhead(bi,BUNlast(b)-1);
+       if (p->type == bpm_hrange) {
+               p -> parts[nr].hlow = p -> parts[nr].hhgh = -1;
+               if (nr)
+                       p->parts[nr].hlow = p->parts[nr-1].hhgh;
+               BATseqbase(b, p->parts[nr].hlow);
+               if (BATcount(b)) {
+                       BATiter bi = bat_iterator(b);
+                       p -> parts[nr].hhgh = *(oid*)BUNhead(bi,BUNlast(b)-1);
+               }
        }
        p -> parts[nr].tlow = p -> parts[nr].thgh = NULL; 
        p -> parts[nr].hbits = p -> parts[nr].tbits = 0;
@@ -123,10 +127,7 @@
 void
 bpm_add_partition(sql_bpm *p)
 {
-       BAT *x = temp_descriptor(p->parts[p->nr-1].bid);
        BAT *b = BATnew(TYPE_void, p->ttpe, 0);
-       BATseqbase(b, x->hseqbase + BATcount(x));
-       bat_destroy(x);
        extend_part(p, b, 0);
        bat_destroy(b);
 }
@@ -583,11 +584,6 @@
                int ubid = logger_find_bat(bpm_logger, uname);
                
                b = temp_descriptor(bid);
-               if (b->htype == TYPE_void) {
-                       BATseqbase(b, o);
-                       o += BATcount(b);
-               }       
-               
                extend_part(pp, b, ubid);
                pp->parts[pp->nr-1].name = name;
                pp->parts[pp->nr-1].uname = uname;
@@ -596,7 +592,6 @@
        *cnt = o;
        pp->ins = pp->nr;
        b = BATnew(TYPE_void, ttpe, sz);
-       BATseqbase(b, o);
        extend_part(pp, b, 0);
        bat_destroy(b);
        bat_destroy(parts);
@@ -604,8 +599,8 @@
 }
 
 static sql_bpm *
-load_bat( char *sname, char *tname, char *bname, int type, int sz, lng *cnt ) {
-       oid o = 0;
+load_bat( char *sname, char *tname, char *bname, int type, int sz, lng *cnt ) 
+{
        BAT *b;
        sql_bpm *p = ZNEW(sql_bpm);
 
@@ -618,12 +613,11 @@
 
        b = temp_descriptor(logger_find_bat(bpm_logger, p->name));
        extend_part(p, b, logger_find_bat(bpm_logger, p->uname));
-       o = BATcount(b);
+       *cnt = p->parts[0].hhgh;
        bat_destroy(b);
 
        p->ins = p->nr;
        b = bat_new(TYPE_void, type, sz);
-       BATseqbase(b, o);
        extend_part(p, b, 0);
        bat_destroy(b);
 
@@ -814,13 +808,13 @@
                }
        } else {
                BAT *b;
-               oid o = 0;
 
                if (p->sz < op->nr+1) {
                        p -> sz = op->nr+1;
                        p -> parts = RENEW_ARRAY(PartRec, p->parts, p->sz);
                }
                for (i=0; i < op->ins; i++) {
+                       /* why don't we use extend parts */
                        p->parts[i] = op->parts[i];
                        temp_dup(p->parts[i].bid);
                        b = temp_descriptor(p->parts[i].bid);
@@ -833,8 +827,7 @@
                                op->parts[i].ubid = temp_copy(p->parts[i].ubid, 
0);
                                bat_destroy(U);
                        }
-                       BATseqbase(b, o);
-                       o += BATcount(b);
+                       BATseqbase(b, p->parts[i].hlow);
                        bat_destroy(b);
                        p->nr++;
                }
@@ -860,8 +853,7 @@
                                        bat_destroy(U);
                                }
                        }
-                       BATseqbase(b, o);
-                       o += BATcount(b);
+                       BATseqbase(b, p->parts[i].hlow);
                        bat_destroy(b);
                        p->nr++;
                }
@@ -869,7 +861,6 @@
                if (op->ins == 0) {
                        op->ins = op->nr;
                        b = bat_new(TYPE_void, type, t->sz);
-                       BATseqbase(b, o);
                        extend_part(op, b, 0);
                        bat_destroy(b);
                }
@@ -877,7 +868,6 @@
                if (p->ins == 0) { 
                        p->ins = p->nr;
                        b = bat_new(TYPE_void, type, t->sz);
-                       BATseqbase(b, o);
                        extend_part(p, b, 0);
                        bat_destroy(b);
                }
@@ -1116,8 +1106,11 @@
                                bat_clear(ins);
                        }
                        bat_clear(pi);
-                       BATseqbase(ins,BATcount(cur));
-                       BATseqbase(pi,BATcount(cur));
+                       op->parts[op->ins-1].hhgh = op->parts[op->ins].hlow =
+                       cp->parts[cp->ins-1].hhgh = cp->parts[cp->ins].hlow = 
+                               BATcount(cur);
+                       BATseqbase(ins, op->parts[op->ins].hlow);
+                       BATseqbase(pi, cp->parts[cp->ins].hlow);
                        bat_destroy(pi);
                }
                BATcommit(ins);

Index: bpm_table.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/storage/bpm/bpm_table.mx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- bpm_table.mx        6 Nov 2007 15:23:17 -0000       1.1
+++ bpm_table.mx        10 Nov 2007 21:47:30 -0000      1.2
@@ -173,28 +173,10 @@
 static int
 column_update_value(sql_trans *tr, sql_column *c, ssize_t rid, void *value)
 {
-       BAT *b;
-       sql_bpm *p = c->data;
-
        assert(rid != (ssize_t)oid_nil);
        assert(rid != -1);
 
-       if (p->parts[0].ubid) {
-               b = temp_descriptor(p->parts[0].ubid);
-               if (BUNfnd(b, &rid) != BUN_NONE) {
-                       BUNreplace(b, (ptr) &rid, value, TRUE);
-               } else {
-                       bat_set_access(b, BAT_WRITE);
-                       BUNins(b, (ptr) &rid, value, FALSE);
-                       bat_set_access(b, BAT_READ);
-               }
-               bat_destroy(b);
-       } else {
-               b = temp_descriptor(p->parts[p->ins].bid);
-               void_inplace(b, rid, value, TRUE);
-               bat_destroy(b);
-       }
-       c->base.wtime = c->t->base.wtime = c->t->s->base.wtime = tr->wtime = 
tr->stime;
+       store_funcs.update_col(tr, c, value, c->type.type->localtype, rid);
        return 0;
 }
 
@@ -203,25 +185,15 @@
 {
        va_list va;
        node *n = cs_first_node(&t->columns);
-       sql_column *c = n->data;
-       sql_bpm *p = c->data;
-       BAT *b = temp_descriptor(p->parts[p->ins].bid);
        void *val = NULL;
        int cnt = 0;
 
-       bat_destroy(b);
        va_start(va, t);
-
-       c->base.wtime = tr->stime;
        for (val = va_arg(va, void *); n && val; n = n->next, val = va_arg(va, 
void *))
        {
+               sql_column *c = n->data;
+               store_funcs.append_col(tr, c, val, c->type.type->localtype);
                cnt++;
-               c = n->data;
-               p = c->data;
-               b = temp_descriptor(p->parts[p->ins].bid);
-               BUNappend(b, val, TRUE);
-               bat_destroy(b);
-               c->base.wtime = tr->stime;
        }
        t->cnt ++;
        if (n) {
@@ -229,7 +201,6 @@
                assert(0);
                return -1;
        }
-       t->base.wtime = t->s->base.wtime = tr->wtime = tr->stime;
        return 0;
 }
 


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to