Changeset: 3c78445caeef for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3c78445caeef
Added Files:
        gdk/gdk_select.c
        monetdb5/modules/mal/groups.c
        monetdb5/modules/mal/groups.h
        monetdb5/modules/mal/joinpath.c
        monetdb5/modules/mal/joinpath.h
Removed Files:
        gdk/gdk_scanselect.mx
        gdk/gdk_scanselect_defs.mx
        gdk/gdk_scanselect_defs_bte.mx
        gdk/gdk_scanselect_defs_dbl.mx
        gdk/gdk_scanselect_defs_fix.mx
        gdk/gdk_scanselect_defs_flt.mx
        gdk/gdk_scanselect_defs_int.mx
        gdk/gdk_scanselect_defs_lng.mx
        gdk/gdk_scanselect_defs_sht.mx
        gdk/gdk_scanselect_defs_str.mx
        gdk/gdk_scanselect_defs_var.mx
        monetdb5/optimizer/opt_trace.c
        monetdb5/optimizer/opt_trace.h
        monetdb5/tests/gdkTests/Tests/casts.stable.out.SunOS5.10
        monetdb5/tests/gdkTests/Tests/casts.stable.out.SunOS5.10.oid64
        
sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out.single
        sql/test/Tests/setoptimizer.stable.out.Windows
Modified Files:
        clients/Tests/exports.stable.out
        clients/mapiclient/mclient.c
        gdk/Makefile.ag
        gdk/gdk.h
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_private.h
        gdk/gdk_rangejoin.mx
        gdk/gdk_relop.mx
        gdk/gdk_sample.c
        gdk/gdk_search.c
        gdk/gdk_setop.mx
        monetdb5/extras/jaql/jaqlfunc.mal
        monetdb5/modules/kernel/aggr.mx
        monetdb5/modules/kernel/aggr_be_avg.mx
        monetdb5/modules/kernel/aggr_be_count.mx
        monetdb5/modules/kernel/aggr_be_minmax.mx
        monetdb5/modules/kernel/aggr_be_prod.mx
        monetdb5/modules/kernel/aggr_be_sum.mx
        monetdb5/modules/kernel/aggr_bge_avg.mx
        monetdb5/modules/kernel/aggr_bge_count.mx
        monetdb5/modules/kernel/aggr_bge_minmax.mx
        monetdb5/modules/kernel/aggr_bge_prod.mx
        monetdb5/modules/kernel/aggr_bge_sum.mx
        monetdb5/modules/kernel/algebra.mx
        monetdb5/modules/kernel/group.mx
        monetdb5/modules/mal/Makefile.ag
        monetdb5/optimizer/Makefile.ag
        monetdb5/optimizer/opt_groups.c
        monetdb5/optimizer/opt_groups.h
        monetdb5/optimizer/opt_joinpath.c
        monetdb5/optimizer/opt_joinpath.h
        monetdb5/optimizer/opt_prejoin.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/tests/gdkTests/Tests/casts.mal
        monetdb5/tests/gdkTests/Tests/casts.stable.out
        monetdb5/tests/gdkTests/Tests/casts.stable.out.Windows
        monetdb5/tests/gdkTests/Tests/casts.stable.out.Windows.64bit.oid64
        monetdb5/tests/gdkTests/Tests/casts.stable.out.oid64
        monetdb5/tests/gdkTests/Tests/intersect_diff_void.stable.out
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.sql
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
Branch: sciql
Log Message:

Merge with default branch.


diffs (truncated from 15081 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -172,6 +172,7 @@ BAT *BATsort(BAT *b);
 BAT *BATsort_rev(BAT *b);
 BAT *BATssort(BAT *b);
 BAT *BATssort_rev(BAT *b);
+BAT *BATsubselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int 
hi, int anti);
 BAT *BATsunion(BAT *b, BAT *c);
 BAT *BATsunique(BAT *b);
 BAT *BATthetajoin(BAT *l, BAT *r, int mode, BUN estimate);
@@ -624,7 +625,6 @@ str ALGjoinPath(Client cntxt, MalBlkPtr 
 BAT *ALGjoinPathBody(Client cntxt, int top, BAT **joins, int flag);
 str ALGjoinestimate(int *result, int *lid, int *rid, lng *estimate);
 str ALGkdiff(int *result, int *lid, int *rid);
-str ALGkintersect(int *result, int *lid, int *rid);
 str ALGkunion(int *result, int *lid, int *rid);
 str ALGkunique(int *result, int *bid);
 str ALGleftfetchjoin(int *result, int *lid, int *rid);
@@ -715,6 +715,8 @@ str ALGstdev_int(dbl *res, int *bid);
 str ALGstdev_lng(dbl *res, int *bid);
 str ALGstdev_sht(dbl *res, int *bid);
 str ALGstdev_wrd(dbl *res, int *bid);
+str ALGsubselect1(bat *result, bat *bid, const void *low, const void *high, 
const bit *li, const bit *hi, const bit *anti);
+str ALGsubselect2(bat *result, bat *bid, bat *sid, const void *low, const void 
*high, const bit *li, const bit *hi, const bit *anti);
 str ALGsum_bte_bte(bte *res, int *bid, bit *empty_is_nil);
 str ALGsum_bte_dbl(dbl *res, int *bid, bit *empty_is_nil);
 str ALGsum_bte_int(int *res, int *bid, bit *empty_is_nil);
@@ -2088,8 +2090,6 @@ int OPTremoteQueriesImplementation(Clien
 int OPTreorderImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTsetDebugStr(int *ret, str *nme);
 int OPTstrengthReductionImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
-str OPTtraceCall(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-int OPTtraceImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str OPTvector(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str OPTvectorOid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str OPTwrapper(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -19,22 +19,11 @@ MTSAFE
 
 INCLUDES = ../common/options ../common/stream ../common/utils 
$(valgrind_CFLAGS)
 
-EXTRA_DIST = gdk_scanselect_defs.mx
-
 lib_gdk = {
        VERSION = $(GDK_VERSION)
        NAME = bat
        SOURCES = \
-               gdk_scanselect_defs_bte.mx \
-               gdk_scanselect_defs_sht.mx \
-               gdk_scanselect_defs_int.mx \
-               gdk_scanselect_defs_flt.mx \
-               gdk_scanselect_defs_dbl.mx \
-               gdk_scanselect_defs_lng.mx \
-               gdk_scanselect_defs_str.mx \
-               gdk_scanselect_defs_fix.mx \
-               gdk_scanselect_defs_var.mx \
-               gdk_scanselect.mx gdk.h gdk_batop.c \
+               gdk.h gdk_batop.c gdk_select.c \
                gdk_search.c gdk_search.h gdk_tm.c \
                gdk_align.c gdk_bbp.c gdk_bbp.h \
                gdk_heap.c gdk_setop.mx gdk_utils.c gdk_utils.h \
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -3138,6 +3138,7 @@ gdk_export int BATtopN(BAT *b, BUN topN)
 #define JOIN_GE                2
 #define JOIN_BAND      3
 
+gdk_export BAT *BATsubselect(BAT *b, BAT *s, const void *tl, const void *th, 
int li, int hi, int anti);
 gdk_export BAT *BATselect_(BAT *b, const void *tl, const void *th, bit li, bit 
hi);
 gdk_export BAT *BATuselect_(BAT *b, const void *tl, const void *th, bit li, 
bit hi);
 gdk_export BAT *BATantiuselect_(BAT *b, const void *tl, const void *th, bit 
li, bit hi);
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -444,7 +444,7 @@ BATmaterializeh(BAT *b)
        p = BUNfirst(b);
        q = BUNlast(b);
        assert(cnt >= q - p);
-       ALGODEBUG THRprintf(GDKout, "#BATmaterialize(%d);\n", (int) 
b->batCacheid);
+       ALGODEBUG fprintf(stderr, "#BATmaterialize(%d);\n", (int) 
b->batCacheid);
 
        if (!BAThdense(b) || ht != TYPE_void) {
                /* no voids */
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -2851,6 +2851,7 @@ BATassertHeadProps(BAT *b)
                assert(b->htype == TYPE_oid || b->htype == TYPE_void);
        /* a column cannot both have and not have NILs */
        assert(!b->H->nil || !b->H->nonil);
+       assert(b->hseqbase <= oid_nil);
        if (b->htype == TYPE_void) {
                assert(b->H->shift == 0);
                assert(b->H->width == 0);
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -46,7 +46,6 @@
 #include "monetdb_config.h"
 #include "gdk.h"
 #include "gdk_private.h"
-#include "gdk_scanselect.h"
 
 #define updateloop(bn, b, func)                                                
\
        do {                                                            \
@@ -846,512 +845,6 @@ BATslice(BAT *b, BUN l, BUN h)
        return NULL;
 }
 
-static BAT *
-BATslice2(BAT *b, BUN l1, BUN h1, BUN l2, BUN h2)
-{
-       BUN p, q;
-       BAT *bn;
-       BATiter bi = bat_iterator(b);
-       int tt = b->ttype;
-
-       BATcheck(b, "BATslice");
-       if (h2 > BATcount(b))
-               h2 = BATcount(b);
-       if (h1 < l1)
-               h1 = l1;
-       if (h2 < l2)
-               h2 = l2;
-       l1 += BUNfirst(b);
-       l2 += BUNfirst(b);
-       h1 += BUNfirst(b);
-       h2 += BUNfirst(b);
-
-       if (l1 > BUN_MAX || l2 > BUN_MAX || h1 > BUN_MAX || h2 > BUN_MAX) {
-               GDKerror("BATslice2: boundary out of range\n");
-               return NULL;
-       }
-
-       if (tt == TYPE_void && b->T->seq != oid_nil)
-               tt = TYPE_oid;
-       bn = BATnew(ATOMtype(b->htype), tt, h1 - l1 + h2 - l2);
-       if (bn == NULL)
-               return bn;
-       for (p = (BUN) l1, q = (BUN) h1; p < q; p++) {
-               bunfastins(bn, BUNhead(bi, p), BUNtail(bi, p));
-       }
-       for (p = (BUN) l2, q = (BUN) h2; p < q; p++) {
-               bunfastins(bn, BUNhead(bi, p), BUNtail(bi, p));
-       }
-       bn->hsorted = BAThordered(b);
-       bn->tsorted = BATtordered(b);
-       bn->hrevsorted = BAThrevordered(b);
-       bn->trevsorted = BATtrevordered(b);
-       BATkey(bn, BAThkey(b));
-       BATkey(BATmirror(bn), BATtkey(b));
-       bn->H->nonil = b->H->nonil;
-       bn->T->nonil = b->T->nonil;
-       if (bn->hkey && bn->htype == TYPE_oid) {
-               if (BATcount(bn) == 0) {
-                       bn->hdense = TRUE;
-                       BATseqbase(bn, 0);
-               }
-       }
-       if (bn->tkey && bn->ttype == TYPE_oid) {
-               if (BATcount(bn) == 0) {
-                       bn->tdense = TRUE;
-                       BATseqbase(BATmirror(bn), 0);
-               }
-       }
-       return bn;
-      bunins_failed:
-       BBPreclaim(bn);
-       return NULL;
-}
-
-
-/*
- * @-  Value Selections
- * The string search is optimized for the degenerated case that th =
- * tl, and double elimination in the string heap.
- *
- * We allow value selections on the nil atom. This is formally not
- * correct, as in MIL (nil = nil) != true.  However, we do need an
- * implementation for selecting nil (in MIL, this is done through is
- * the "isnil" predicate). So we implement it here.
- */
-#define hashselectloop(EXT, BUNtail)                                   \
-       do {                                                            \
-               HASHloop##EXT(bi, b->H->hash, i, tl) {                  \
-                       if (q < r) {                                    \
-                               bunfastins_nocheck(bn, q, BUNtail(bi, i), \
-                                                  tl, Hsize(bn), Tsize(bn)); \
-                       }                                               \
-                       q++;                                            \
-               }                                                       \
-       } while (0)
-#define hashselect(BUNtail)                                            \
-       do {                                                            \
-               switch (ATOMstorage(b->htype)) {                        \
-               case TYPE_bte:                                          \
-                       hashselectloop(_bte, BUNtail);                  \
-                       break;                                          \
-               case TYPE_sht:                                          \
-                       hashselectloop(_sht, BUNtail);                  \
-                       break;                                          \
-               case TYPE_int:                                          \
-                       hashselectloop(_int, BUNtail);                  \
-                       break;                                          \
-               case TYPE_flt:                                          \
-                       hashselectloop(_flt, BUNtail);                  \
-                       break;                                          \
-               case TYPE_dbl:                                          \
-                       hashselectloop(_dbl, BUNtail);                  \
-                       break;                                          \
-               case TYPE_lng:                                          \
-                       hashselectloop(_lng, BUNtail);                  \
-                       break;                                          \
-               case TYPE_str:                                          \
-                       if (strElimDoubles(b->H->vheap)) {              \
-                               size_t j;                               \
-                                                                       \
-                               HASHloop_fstr(bi, b->H->hash, i, j, tl) { \
-                                       if (q < r)                      \
-                                               bunfastins_nocheck(bn, q, \
-                                                                  BUNtail(bi, 
i), \
-                                                                  tl,  \
-                                                                  Hsize(bn), \
-                                                                  Tsize(bn)); \
-                                       q++;                            \
-                               }                                       \
-                       } else {                                        \
-                               hashselectloop(_str, BUNtail);          \
-                       }                                               \
-                       break;                                          \
-               default:                                                \
-                       if (b->hvarsized) {                             \
-                               hashselectloop(var, BUNtail);           \
-                       } else {                                        \
-                               hashselectloop(loc, BUNtail);           \
-                       }                                               \
-                       break;                                          \
-               }                                                       \
-       } while (0)
-
-static BAT *
-BAT_hashselect(BAT *b, BAT *bn, const void *tl)
-{
-       int ht = bn->htype, tt = bn->ttype;
-       BUN size = BATcount(bn);
-       BUN i;
-
-       BATcheck(b, "BAT_hashselect");
-       b = BATmirror(b);
-       if (BATprepareHash(b)) {
-             bunins_failed:
-               BBPreclaim(bn);
-               return NULL;
-       }
-       while (bn) {
-               BUN q = BUNfirst(bn);
-               BUN r;
-               BATiter bi = bat_iterator(b);
-
-               assert(BATcapacity(bn) <= BUN_MAX);
-               r = (BUN) BATcapacity(bn);
-
-               if (b->tvarsized) {
-                       hashselect(BUNtvar);
-               } else {
-                       hashselect(BUNtloc);
-               }
-               if (q <= r)
-                       break;
-               size = (q - BUNfirst(bn));
-
-               BBPreclaim(bn);
-               bn = BATnew(ht, tt, size);
-       }
-       return bn;
-}
-
-/*
- * @- Range Selections
- * The routine BATselect locates the BAT subset whose tail component
- * satisfies the range condition T l <[=] tail <[=] h. Either boundary
- * is included in the result iff the respective bit parameter
- * "li"/"hi" is TRUE. A nil value in either dimension defines
- * infinity.  The value is set accordingly.
- *
- * Range selections without lower or upper bound use the nil atom to
- * indicate this (this is somewhat confusing). Note, however, that
- * through the definition of MIL we do not want the nils to appear in
- * the result (as (nil @{<,=,>@} ANY) = bit(nil) != true).
- */
-static void
-BATsetprop_wrd(BAT *b, int idx, wrd val)
-{
-       BATsetprop(b, idx, TYPE_wrd, &val);
-}
-
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to