Changeset: 4dd1701e7f19 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4dd1701e7f19
Modified Files:
        MonetDB/src/gdk/gdk.mx
        MonetDB/src/gdk/gdk_batop.mx
        MonetDB/src/gdk/gdk_bbp.mx
        MonetDB/src/gdk/gdk_logger.mx
        MonetDB/src/gdk/gdk_relop.mx
        MonetDB/src/gdk/gdk_storage.mx
        MonetDB5/src/modules/kernel/bat5.mx
        pathfinder/runtime/pathfinder.mx
        sql/src/include/sql_catalog.h
        sql/src/server/sql_mvc.mx
        sql/src/storage/sql_storage.h
        sql/src/storage/store.mx
Branch: default
Log Message:

Merged from Jun2010 branch.


diffs (truncated from 2095 to 300 lines):

diff -r 697999a64eaf -r 4dd1701e7f19 MonetDB/src/gdk/gdk.mx
--- a/MonetDB/src/gdk/gdk.mx    Sat Jun 05 16:56:57 2010 +0200
+++ b/MonetDB/src/gdk/gdk.mx    Mon Jun 07 10:10:45 2010 +0200
@@ -1012,8 +1012,6 @@
 #define tsorted                T->sorted
 #define hdense         H->dense
 #define tdense         T->dense
-#define hheap          H->vheap
-#define theap          T->vheap
 #define hident         H->id
 #define tident         T->id
 #define halign         H->align
@@ -3209,7 +3207,7 @@
 If so, we can just compare integer index numbers instead of strings:
 @h
 #define HASHloop_fstr(bi, h, hb, idx, v)                               \
-       for (hb = h->hash[strHash(v)&h->mask], idx = 
strLocate((bi.b)->hheap,v); \
+       for (hb = h->hash[strHash(v)&h->mask], idx = 
strLocate((bi.b)->H->vheap,v); \
             hb != BUN_NONE; hb = h->link[hb])                          \
                if (VarHeapValRaw((bi).b->H->heap.base, hb, (bi).b->H->width) 
== idx)
 @
diff -r 697999a64eaf -r 4dd1701e7f19 MonetDB/src/gdk/gdk_bat.mx
--- a/MonetDB/src/gdk/gdk_bat.mx        Sat Jun 05 16:56:57 2010 +0200
+++ b/MonetDB/src/gdk/gdk_bat.mx        Mon Jun 07 10:10:45 2010 +0200
@@ -1959,7 +1959,7 @@
        }       
                            
 @= dohash
-        ATOMstorage(@1->@2type) != TYPE_chr && (ATOMstorage(@1->@2type) != 
TYPE_str || !GDK_ELIMDOUBLES(@1->@2heap)) 
+        ATOMstorage(@1->@2->type) != TYPE_chr && (ATOMstorage(@1->@2->type) != 
TYPE_str || !GDK_ELIMDOUBLES(@1->@2->vheap)) 
 @c
 BUN
 BUNlocate(BAT *b, ptr x, ptr y)
@@ -2034,16 +2034,16 @@
                /* regrettably MonetDB support only single-column hashes 
                 * strategy: create a hash on both columns, and select the 
column with the best distribution
                 */
-               if ((b->T->hash && b->H->hash == NULL) || !(@:dohash(b,h)@))
+               if ((b->T->hash && b->H->hash == NULL) || !(@:dohash(b,H)@))
                        @:swap()@
                if (b->H->hash == NULL && (v = VIEWcreate_(b, b, TRUE)) != 
NULL) {
                        /* As we are going to remove the worst hash table 
later, we must do everything 
                         * in a view, as it is not permitted to remove a hash 
table from a read-only 
                         * operation (like BUNlocate). Other threads might then 
crash. 
                         */
-                       if (@:dohash(v,h)@)
+                       if (@:dohash(v,H)@)
                                (void) BATprepareHash(v);
-                       if (@:dohash(v,t)@)
+                       if (@:dohash(v,T)@)
                                (void) BATprepareHash(BATmirror(v));
                        if (v->H->hash && v->T->hash) { /* we can choose 
between two hash tables */
                                BUN hcnt = 0, tcnt = 0;
diff -r 697999a64eaf -r 4dd1701e7f19 MonetDB/src/gdk/gdk_batop.mx
--- a/MonetDB/src/gdk/gdk_batop.mx      Sat Jun 05 16:56:57 2010 +0200
+++ b/MonetDB/src/gdk/gdk_batop.mx      Mon Jun 07 10:10:45 2010 +0200
@@ -906,7 +906,7 @@
                q++;
        }
 @= stringselect
-       if (strElimDoubles(b->hheap)) {
+       if (strElimDoubles(b->H->vheap)) {
                BUN p;
                size_t j;
 
@@ -1840,7 +1840,7 @@
                        @:chk_order(dbl,@3,@5)@
                } else {
                        /* check sortedness tuple-by-tuple */
-                       if (b->hheap) {
+                       if (b->H->vheap) {
                                char *base = Hbase(b);
                                char *prv = base + BUNhvaroff(bi, cur);
 
@@ -1999,7 +1999,7 @@
                b = BATrevert(b);
                return b;
        }
-       g...@7sort@3(Hloc(b,BUNfirst(b)), Tloc(b,BUNfirst(b)), 
(b->hheap)?b->H->vheap->base:NULL, BATcount(b), Hsize(b), Tsize(b), b->htype);
+       g...@7sort@3(Hloc(b,BUNfirst(b)), Tloc(b,BUNfirst(b)), 
(b->H->vheap)?b->H->vheap->base:NULL, BATcount(b), Hsize(b), Tsize(b), 
b->htype);
        HASHdestroy(b);
        ALIGNdel(b, "bator...@3", FALSE);
        b->hsorted = (bit) gdk_sor...@2;
@@ -3054,7 +3054,7 @@
 
        BATcheck(b, "BAThistogram");
 
-       tricky = (b->ttype == TYPE_str && strElimDoubles(b->theap));
+       tricky = (b->ttype == TYPE_str && strElimDoubles(b->T->vheap));
        if (b->talign == 0) {
                b->talign = OIDnew(1);
        }
@@ -3069,8 +3069,8 @@
 by bulk copying the heap as well
 @c
        if (tricky) {
-               bn->hheap = (Heap *) GDKzalloc(sizeof(Heap));
-               if (bn->hheap && b->T->vheap->filename) {
+               bn->H->vheap = (Heap *) GDKzalloc(sizeof(Heap));
+               if (bn->H->vheap && b->T->vheap->filename) {
                        char *nme = BBP_physical(bn->batCacheid);
 
                        bn->H->vheap->filename = (str) GDKmalloc(strlen(nme) + 
12);
@@ -3078,7 +3078,7 @@
                                goto bunins_failed;
                        GDKfilepath(bn->H->vheap->filename, NULL, nme, "hheap");
                }
-               if (HEAPcopy(bn->hheap, b->theap) < 0)
+               if (HEAPcopy(bn->H->vheap, b->T->vheap) < 0)
                        goto bunins_failed;
                bn->htype = b->ttype;
                bn->hvarsized = 1;
diff -r 697999a64eaf -r 4dd1701e7f19 MonetDB/src/gdk/gdk_bbp.mx
--- a/MonetDB/src/gdk/gdk_bbp.mx        Sat Jun 05 16:56:57 2010 +0200
+++ b/MonetDB/src/gdk/gdk_bbp.mx        Mon Jun 07 10:10:45 2010 +0200
@@ -3980,10 +3980,10 @@
                        delete = (b == NULL || !b->ttype || b->batCopiedtodisk 
== 0);
                } else if (strncmp(p + 1, "hheap", 5) == 0) {
                        BAT *b = getdesc(bid);
-                       delete = (b == NULL || !b->hheap || b->batCopiedtodisk 
== 0);
+                       delete = (b == NULL || !b->H->vheap || 
b->batCopiedtodisk == 0);
                } else if (strncmp(p + 1, "theap", 5) == 0) {
                        BAT *b = getdesc(bid);
-                       delete = (b == NULL || !b->theap || b->batCopiedtodisk 
== 0);
+                       delete = (b == NULL || !b->T->vheap || 
b->batCopiedtodisk == 0);
                } else if (strncmp(p + 1, "hhash", 5) == 0) {
                        BAT *b = getdesc(bid);
                        delete = (b == NULL || !b->H->hash);
diff -r 697999a64eaf -r 4dd1701e7f19 MonetDB/src/gdk/gdk_delta.mx
--- a/MonetDB/src/gdk/gdk_delta.mx      Sat Jun 05 16:56:57 2010 +0200
+++ b/MonetDB/src/gdk/gdk_delta.mx      Mon Jun 07 10:10:45 2010 +0200
@@ -122,13 +122,13 @@
                                        (*hunfix) (h);
                                }
                                if (hatmdel) {
-                                       (*hatmdel) (b->hheap, (var_t *) 
BUNhloc(bi, p));
+                                       (*hatmdel) (b->H->vheap, (var_t *) 
BUNhloc(bi, p));
                                }
                                if (tunfix) {
                                        (*tunfix) (t);
                                }
                                if (tatmdel) {
-                                       (*tatmdel) (b->theap, (var_t *) 
BUNtloc(bi, p));
+                                       (*tatmdel) (b->T->vheap, (var_t *) 
BUNtloc(bi, p));
                                }
                        }
                }
@@ -221,7 +221,7 @@
                                        (*hunfix) (h);
                                }
                                if (hatmdel) {
-                                       (*hatmdel) (b->hheap, (var_t *) 
BUNhloc(bi, p));
+                                       (*hatmdel) (b->H->vheap, (var_t *) 
BUNhloc(bi, p));
                                }
                                if (b->T->hash) {
                                        HASHdel(b->T->hash, i, t, p < bunlast);
@@ -230,7 +230,7 @@
                                        (*tunfix) (t);
                                }
                                if (tatmdel) {
-                                       (*tatmdel) (b->theap, (var_t *) 
BUNtloc(bi, p));
+                                       (*tatmdel) (b->T->vheap, (var_t *) 
BUNtloc(bi, p));
                                }
                        }
                }
diff -r 697999a64eaf -r 4dd1701e7f19 MonetDB/src/gdk/gdk_logger.mx
--- a/MonetDB/src/gdk/gdk_logger.mx     Sat Jun 05 16:56:57 2010 +0200
+++ b/MonetDB/src/gdk/gdk_logger.mx     Mon Jun 07 10:10:45 2010 +0200
@@ -94,7 +94,9 @@
        struct trans *tr;
 } trans;
 
-typedef int (*precommit_fptr) (char *qid, char *cid);
+typedef int (*precommit_fptr)(char *qid, char *cid);
+typedef int (*preversionfix_fptr)(int oldversion, int newversion);
+typedef void (*postversionfix_fptr)(void *lg);
 
 typedef struct logger {
        int debug;
@@ -105,6 +107,8 @@
        char *fn;
        char *dir;
        precommit_fptr phandler;
+       preversionfix_fptr prefuncp;
+       postversionfix_fptr postfuncp;
        stream *log;
        lng end;                /* end of pre-allocated blocks for faster 
f(data)sync */
        /* Store log_bids (int) to circumvent trouble with reference counting */
@@ -137,7 +141,7 @@
 /* the sequence identifier for frontend objects */
 #define OBJ_SID        1
 
-gdk_export logger *logger_create(int debug, char *fn, char *logdir, char 
*dbname, int version, precommit_fptr phandler);
+gdk_export logger *logger_create(int debug, char *fn, char *logdir, char 
*dbname, int version, precommit_fptr phandler, preversionfix_fptr prefuncp, 
postversionfix_fptr postfuncp);
 gdk_export void logger_destroy(logger *lg);
 gdk_export int logger_exit(logger *lg);
 gdk_export int logger_restart(logger *lg);
@@ -980,13 +984,17 @@
                return -1;
        }
        if (version != lg->version) {
-               GDKerror("Incompatible database version %06d, "
-                        "this server supports version %06d\n"
-                        "Please move away %s and its corresponding dbfarm.",
-                        version, lg->version, lg->dir);
+               if (lg->prefuncp == NULL ||
+                   (*lg->prefuncp)(version, lg->version) != 0) {
+                       GDKerror("Incompatible database version %06d, "
+                                "this server supports version %06d\n"
+                                "Please move away %s and its corresponding 
dbfarm.",
+                                version, lg->version, lg->dir);
 
-               return -1;
-       }
+                       return -1;
+               }
+       } else
+               lg->postfuncp = NULL;    /* don't call */
        fgetc(fp);              /* skip \n */
        fgetc(fp);              /* skip \n */
        return 0;
@@ -1059,7 +1067,7 @@
 }
 
 static logger *
-logger_new(int debug, char *fn, char *logdir, char *dbname, int version, 
precommit_fptr phandler)
+logger_new(int debug, char *fn, char *logdir, char *dbname, int version, 
precommit_fptr phandler, preversionfix_fptr prefuncp, postversionfix_fptr 
postfuncp)
 {
        int id = LOG_SID;
        logger *lg = (struct logger *) GDKmalloc(sizeof(struct logger));
@@ -1090,6 +1098,8 @@
        lg->fn = GDKstrdup(fn);
        lg->dir = GDKstrdup(filename);
        lg->phandler = phandler;
+       lg->prefuncp = prefuncp;
+       lg->postfuncp = postfuncp;
        lg->log = NULL;
        lg->end = 0;
        lg->catalog = NULL;
@@ -1223,6 +1233,8 @@
                logger_readlogs(lg, fp, filename);
                fclose(fp);
                fp = NULL;
+               if (lg->postfuncp)
+                       (*lg->postfuncp)(lg);
        }
        return lg;
       error:
@@ -1234,9 +1246,9 @@
 }
 
 logger *
-logger_create(int debug, char *fn, char *logdir, char *dbname, int version, 
precommit_fptr phandler)
+logger_create(int debug, char *fn, char *logdir, char *dbname, int version, 
precommit_fptr phandler, preversionfix_fptr prefuncp, postversionfix_fptr 
postfuncp)
 {
-       logger *lg = logger_new(debug, fn, logdir, dbname, version, phandler);
+       logger *lg = logger_new(debug, fn, logdir, dbname, version, phandler, 
prefuncp, postfuncp);
 
        if (!lg)
                return NULL;
diff -r 697999a64eaf -r 4dd1701e7f19 MonetDB/src/gdk/gdk_relop.mx
--- a/MonetDB/src/gdk/gdk_relop.mx      Sat Jun 05 16:56:57 2010 +0200
+++ b/MonetDB/src/gdk/gdk_relop.mx      Mon Jun 07 10:10:45 2010 +0200
@@ -557,9 +557,9 @@
 The aftermath -- property setting -- is relatively straightforward here.
 @{
 @c
-#define HLATOMput(bn, dst) ATOMput(bn->htype, bn->hheap, dst, 
BUNhloc(li,l_cur))
+#define HLATOMput(bn, dst) ATOMput(bn->htype, bn->H->vheap, dst, 
BUNhloc(li,l_cur))
 #define HVATOMput(bn, dst) Hputvalue(bn, dst, BUNhvar(li,l_cur), 1)
-#define TLATOMput(bn, dst) ATOMput(bn->ttype, bn->theap, dst, 
BUNtloc(ri,r_cur))
+#define TLATOMput(bn, dst) ATOMput(bn->ttype, bn->T->vheap, dst, 
BUNtloc(ri,r_cur))
 #define TVATOMput(bn, dst) Tputvalue(bn, dst, BUNtvar(ri,r_cur), 1)
 
 @= SIMPLEput
@@ -1049,17 +1049,17 @@
                                *bn->T->vheap = *r->T->vheap;
                                bn->T->vheap->parentid = parent;
                        } else {
-                               if (bn->theap && r->theap->filename) {
+                               if (bn->T->vheap && r->T->vheap->filename) {
                                        char *nme = 
BBP_physical(bn->batCacheid);
 
-                                       bn->theap->filename = (str) 
GDKmalloc(strlen(nme) + 12);
-                                       if (bn->theap->filename == NULL) {
+                                       bn->T->vheap->filename = (str) 
GDKmalloc(strlen(nme) + 12);
+                                       if (bn->T->vheap->filename == NULL) {
                                                BBPreclaim(bn);
                                                goto ready;
                                        }
-                                       GDKfilepath(bn->theap->filename, NULL, 
nme, "theap");
+                                       GDKfilepath(bn->T->vheap->filename, 
NULL, nme, "theap");
                                }
-                               if (HEAPcopy(bn->theap, r->theap) < 0) {
+                               if (HEAPcopy(bn->T->vheap, r->T->vheap) < 0) {
                                        BBPreclaim(bn);
                                        goto ready;
                                }
@@ -1079,7 +1079,7 @@
                ALGODEBUG THRprintf(GDKout, "#BATfetchjoin: BAThvoid(l) && 
!BATtvoid(l)\n");
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to