Changeset: e1d38acdb825 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e1d38acdb825
Modified Files:
        gdk/gdk_join.c
Branch: Jan2014
Log Message:

improved rangejoin performance on date/timestamp etc types
by mapping them to the storage types using ATOMstorage,
when applicable.


diffs (29 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2185,6 +2185,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT 
        oid lo, ro;
        int c;
        int lskipped = 0;
+       int type = ATOMtype(l->ttype);
        wrd loff = 0;
        oid lval = oid_nil, rlval = oid_nil, rhval = oid_nil;
 
@@ -2196,6 +2197,8 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT 
        assert(sl == NULL || sl->tsorted);
        assert(sr == NULL || sr->tsorted);
 
+       if (cmp == BATatoms[ATOMstorage(l->ttype)].atomCmp)
+               type = ATOMstorage(l->ttype);
        ALGODEBUG fprintf(stderr, "#rangejoin(l=%s#" BUNFMT "[%s]%s%s,"
                          "rl=%s#" BUNFMT "[%s]%s%s,rh=%s#" BUNFMT "[%s]%s%s,"
                          "sl=%s#" BUNFMT "%s%s,sr=%s#" BUNFMT "%s%s)\n",
@@ -2316,7 +2319,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT 
                                }
                                ro = n++ + rl->hseqbase;
                        }
-                       switch (ATOMtype(l->ttype)) {
+                       switch (type) {
                        case TYPE_bte:
                                if (*(const bte*)vrl == bte_nil ||
                                    *(const bte*)vrh == bte_nil ||
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to