Changeset: d7eb5e3954ef for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d7eb5e3954ef
Modified Files:
        clients/Tests/exports.stable.out
        gdk/ChangeLog
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_batop.c
        gdk/gdk_bbp.c
        gdk/gdk_cross.c
        gdk/gdk_imprints.c
        gdk/gdk_join.c
        gdk/gdk_logger.c
        gdk/gdk_select.c
        gdk/gdk_storage.c
        gdk/gdk_unique.c
        monetdb5/mal/mal_authorize.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/mal/groupby.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/tablet.c
        monetdb5/modules/mal/tokenizer.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_statistics.c
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_table.c
Branch: embedded
Log Message:

merge again


diffs (truncated from 2051 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
@@ -23,6 +23,7 @@ gdk_return BATappend(BAT *b, BAT *c, bit
 void BATassertProps(BAT *b);
 atomDesc BATatoms[];
 BAT *BATattach(int tt, const char *heapfile, int role);
+gdk_return BATbandjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
const void *c1, const void *c2, int li, int hi, BUN estimate);
 BAT *BATcalcabsolute(BAT *b, BAT *s);
 BAT *BATcalcadd(BAT *b1, BAT *b2, BAT *s, int tp, int abort_on_error);
 BAT *BATcalcaddcst(BAT *b, const ValRecord *v, BAT *s, int tp, int 
abort_on_error);
@@ -107,11 +108,11 @@ BAT *BATconstant(int tt, const void *val
 BAT *BATconvert(BAT *b, BAT *s, int tp, int abort_on_error);
 BAT *BATcopy(BAT *b, int ht, int tt, int writeable, int role);
 BUN BATcount_no_nil(BAT *b);
-gdk_return BATcross1(BAT **r1p, BAT **r2p, BAT *l, BAT *r);
 gdk_return BATdel(BAT *b, BAT *c, bit force);
 BAT *BATdelta(BAT *b);
 void BATderiveHeadProps(BAT *b, int expensive);
 void BATderiveProps(BAT *b, int expensive);
+BAT *BATdiff(BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN estimate);
 gdk_return BATextend(BAT *b, BUN newcap);
 void BATfakeCommit(BAT *b);
 gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, BAT *grps, 
BUN n, int asc, int distinct);
@@ -137,7 +138,9 @@ gdk_return BAThash(BAT *b, BUN masksize)
 gdk_return BATimprints(BAT *b);
 gdk_return BATins(BAT *b, BAT *c, bit force);
 BAT *BATintersectcand(BAT *a, BAT *b);
+gdk_return BATjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, int 
nil_matches, BUN estimate);
 gdk_return BATkey(BAT *b, int onoff);
+gdk_return BATleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
int nil_matches, BUN estimate);
 BAT *BATmark(BAT *b, oid base);
 BAT *BATmark_grp(BAT *b, BAT *g, const oid *base);
 void *BATmax(BAT *b, void *aggr);
@@ -151,38 +154,33 @@ int BATname(BAT *b, const char *nme);
 BAT *BATnew(int hdtype, int tltype, BUN capacity, int role) 
__attribute__((warn_unused_result));
 int BATordered(BAT *b);
 int BATordered_rev(BAT *b);
+gdk_return BATouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
 BAT *BATprev(BAT *b);
 gdk_return BATprint(BAT *b);
 gdk_return BATprintcolumns(stream *s, int argc, BAT *argv[]);
 gdk_return BATprintf(stream *f, BAT *b);
 gdk_return BATprod(void *res, int tp, BAT *b, BAT *s, int skip_nils, int 
abort_on_error, int nil_if_empty);
 BAT *BATproject(BAT *l, BAT *r);
+gdk_return BATrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, BAT *rh, BAT 
*sl, BAT *sr, int li, int hi, BUN estimate);
 gdk_return BATreplace(BAT *b, BAT *p, BAT *n, bit force);
 void BATroles(BAT *b, const char *hnme, const char *tnme);
 BAT *BATsample(BAT *b, BUN n);
 gdk_return BATsave(BAT *b);
+BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int hi, 
int anti);
+gdk_return BATsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
int nil_matches, BUN estimate);
 void BATseqbase(BAT *b, oid o);
 gdk_return BATsetaccess(BAT *b, int mode);
 void BATsetcapacity(BAT *b, BUN cnt);
 void BATsetcount(BAT *b, BUN cnt);
 void BATsetprop(BAT *b, int idx, int type, void *v);
 BAT *BATslice(BAT *b, BUN low, BUN high);
-gdk_return BATsubbandjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, const void *c1, const void *c2, int li, int hi, BUN estimate);
 gdk_return BATsubcross(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr);
-BAT *BATsubdiff(BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN 
estimate);
-gdk_return BATsubjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
int nil_matches, BUN estimate);
-gdk_return BATsubleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
-gdk_return BATsubouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
-gdk_return BATsubprojection(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
-gdk_return BATsubrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, BAT *rh, BAT 
*sl, BAT *sr, int li, int hi, BUN estimate);
-BAT *BATsubselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int 
hi, int anti);
-gdk_return BATsubsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
 gdk_return BATsubsort(BAT **sorted, BAT **order, BAT **groups, BAT *b, BAT *o, 
BAT *g, int reverse, int stable);
-gdk_return BATsubthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int op, int nil_matches, BUN estimate);
-BAT *BATsubunique(BAT *b, BAT *s);
 gdk_return BATsum(void *res, int tp, BAT *b, BAT *s, int skip_nils, int 
abort_on_error, int nil_if_empty);
-BAT *BATthetasubselect(BAT *b, BAT *s, const void *val, const char *op);
+gdk_return BATthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int op, int nil_matches, BUN estimate);
+BAT *BATthetaselect(BAT *b, BAT *s, const void *val, const char *op);
 void BATundo(BAT *b);
+BAT *BATunique(BAT *b, BAT *s);
 BBPrec *BBP[N_BBPINIT];
 void BBPaddfarm(const char *dirname, int rolemask);
 void BBPclear(bat bid);
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -1,6 +1,14 @@
 # ChangeLog file for MonetDB
 # This file is updated with Maddlog
 
+* Thu Dec  3 2015 Sjoerd Mullender <sjo...@acm.org>
+- Removed "sub" from the names of the function BATsubselect,
+  BATthetasubselect, BATsubcross, BATsubleftjoin, BATsubouterjoin,
+  BATsubthetajoin, BATsubsemijoin, BATsubdiff, BATsubjoin, BATsubbandjoin,
+  BATsubrangejoin, and BATsubunique.
+- Removed BATsubleftfetchjoin: it was not used.
+- Removed BATcross1.  Use BATsubcross instead.
+
 * Thu Oct  8 2015 Sjoerd Mullender <sjo...@acm.org>
 - Removed all versions of the SORTloop macro.
 
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -3028,28 +3028,26 @@ gdk_export void BATsetprop(BAT *b, int i
 #define JOIN_BAND      3
 #define JOIN_NE                (-3)
 
-gdk_export BAT *BATsubselect(BAT *b, BAT *s, const void *tl, const void *th, 
int li, int hi, int anti);
-gdk_export BAT *BATthetasubselect(BAT *b, BAT *s, const void *val, const char 
*op);
+gdk_export BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, int 
li, int hi, int anti);
+gdk_export BAT *BATthetaselect(BAT *b, BAT *s, const void *val, const char 
*op);
 
 gdk_export BAT *BATconstant(int tt, const void *val, BUN cnt, int role);
 gdk_export BAT *BATconst(BAT *l, int tt, const void *val, int role);
-gdk_export gdk_return BATcross1(BAT **r1p, BAT **r2p, BAT *l, BAT *r);
 gdk_export gdk_return BATsubcross(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr);
 
-gdk_export gdk_return BATsubleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int nil_matches, BUN estimate);
-gdk_export gdk_return BATsubouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, 
BAT *sl, BAT *sr, int nil_matches, BUN estimate);
-gdk_export gdk_return BATsubthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, 
BAT *sl, BAT *sr, int op, int nil_matches, BUN estimate);
-gdk_export gdk_return BATsubsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int nil_matches, BUN estimate);
-gdk_export BAT *BATsubdiff(BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, 
BUN estimate);
-gdk_export gdk_return BATsubjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int nil_matches, BUN estimate);
-gdk_export gdk_return BATsubprojection(BAT **r1p, BAT **r2p, BAT *l, BAT *r, 
BAT *sl, BAT *sr, int nil_matches, BUN estimate);
-gdk_export gdk_return BATsubbandjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, const void *c1, const void *c2, int li, int hi, BUN estimate);
-gdk_export gdk_return BATsubrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, 
BAT *rh, BAT *sl, BAT *sr, int li, int hi, BUN estimate);
+gdk_export gdk_return BATleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int nil_matches, BUN estimate);
+gdk_export gdk_return BATouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int nil_matches, BUN estimate);
+gdk_export gdk_return BATthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int op, int nil_matches, BUN estimate);
+gdk_export gdk_return BATsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int nil_matches, BUN estimate);
+gdk_export BAT *BATdiff(BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN 
estimate);
+gdk_export gdk_return BATjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, 
BAT *sr, int nil_matches, BUN estimate);
+gdk_export gdk_return BATbandjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, const void *c1, const void *c2, int li, int hi, BUN estimate);
+gdk_export gdk_return BATrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, BAT 
*rh, BAT *sl, BAT *sr, int li, int hi, BUN estimate);
 gdk_export BAT *BATproject(BAT *l, BAT *r);
 
 gdk_export BAT *BATslice(BAT *b, BUN low, BUN high);
 
-gdk_export BAT *BATsubunique(BAT *b, BAT *s);
+gdk_export BAT *BATunique(BAT *b, BAT *s);
 
 gdk_export BAT *BATmergecand(BAT *a, BAT *b);
 gdk_export BAT *BATintersectcand(BAT *a, BAT *b);
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -29,7 +29,7 @@
  * The tail values of s refer to the head of b and g.  Only entries at
  * the specified ids are taken into account for the grouped
  * aggregates.  All other values are ignored.  s is compatible with
- * the result of BATsubselect().
+ * the result of BATselect().
  *
  * If e is not specified, we need to do an extra scan over g to find
  * out the range of the group ids that are used.  e is defined in such
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -773,8 +773,6 @@ BATappend(BAT *b, BAT *n, bit force)
                                        r++;
                                }
                        }
-                       if (b->hseqbase != oid_nil)
-                               b->hrevsorted = 0;
                } else {
                        oid o = MAXoid(b);
                        BATiter ni = bat_iterator(n);
@@ -785,7 +783,6 @@ BATappend(BAT *b, BAT *n, bit force)
                                o++;
                                r++;
                        }
-                       b->hrevsorted = 0;
                }
        } else {
                BUN p, q;
@@ -809,7 +806,6 @@ BATappend(BAT *b, BAT *n, bit force)
                                                i++;
                                        }
                                }
-                               b->hrevsorted = 0;
                        } else {
                                oid on = oid_nil;
 
@@ -867,6 +863,8 @@ BATappend(BAT *b, BAT *n, bit force)
                        b->tdense = b->tsorted = b->trevsorted = 0;
                }
        }
+       if (b->hseqbase != oid_nil)
+               b->hrevsorted = BATcount(b) <= 1;
        b->H->nonil &= n->H->nonil;
        b->T->nonil &= n->T->nonil;
        return GDK_SUCCEED;
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -808,12 +808,13 @@ vheapinit(COLrec *col, const char *buf, 
        return n;
 }
 
-static void
+static int
 BBPreadEntries(FILE *fp, int *min_stamp, int *max_stamp, int oidsize, int 
bbpversion)
 {
        bat bid = 0;
        char buf[4096];
        BATstore *bs;
+       int needcommit = 0;
 
        /* read the BBP.dir and insert the BATs into the BBP */
        while (fgets(buf, sizeof(buf), fp) != NULL) {
@@ -899,6 +900,21 @@ BBPreadEntries(FILE *fp, int *min_stamp,
                nread += vheapinit(&bs->H, buf + nread, Hhashash, bid);
                nread += vheapinit(&bs->T, buf + nread, Thashash, bid);
 
+               if (bs->S.count > 1) {
+                       /* fix result of bug in BATappend not clearing
+                        * revsorted property */
+                       if (bs->H.type == TYPE_void && bs->H.seq != oid_nil && 
bs->H.revsorted) {
+                               bs->H.revsorted = 0;
+                               bs->S.descdirty = 1;
+                               needcommit = 1;
+                       }
+                       if (bs->T.type == TYPE_void && bs->T.seq != oid_nil && 
bs->T.revsorted) {
+                               bs->T.revsorted = 0;
+                               bs->S.descdirty = 1;
+                               needcommit = 1;
+                       }
+               }
+
                if (buf[nread] != '\n' && buf[nread] != ' ')
                        GDKfatal("BBPinit: invalid format for BBP.dir\n%s", 
buf);
                if (buf[nread] == ' ')
@@ -931,6 +947,7 @@ BBPreadEntries(FILE *fp, int *min_stamp,
                BBP_refs(bid) = 0;
                BBP_lrefs(bid) = 1;     /* any BAT we encounter here is 
persistent, so has a logical reference */
        }
+       return needcommit;
 }
 
 #ifdef HAVE_HGE
@@ -1056,6 +1073,7 @@ BBPinit(void)
        oid BBPoid;
        str bbpdirstr = GDKfilepath(0, BATDIR, "BBP", "dir");
        str backupbbpdirstr = GDKfilepath(0, BAKDIR, "BBP", "dir");
+       int needcommit;
 
 #ifdef NEED_MT_LOCK_INIT
        MT_lock_init(&GDKunloadLock, "GDKunloadLock");
@@ -1106,7 +1124,7 @@ BBPinit(void)
        BBPextend(0, FALSE);            /* allocate BBP records */
        ATOMIC_SET(BBPsize, 1, BBPsizeLock);
 
-       BBPreadEntries(fp, &min_stamp, &max_stamp, oidsize, bbpversion);
+       needcommit = BBPreadEntries(fp, &min_stamp, &max_stamp, oidsize, 
bbpversion);
        fclose(fp);
 
        /* normalize saved LRU stamps */
@@ -1135,7 +1153,7 @@ BBPinit(void)
 #else
        (void) oidsize;
 #endif
-       if (bbpversion < GDKLIBRARY)
+       if (bbpversion < GDKLIBRARY || needcommit)
                TMcommit();
        GDKfree(bbpdirstr);
        GDKfree(backupbbpdirstr);
@@ -2501,6 +2519,7 @@ getBBPdescriptor(bat i, int lock)
 
                /* clearing bits can be done without the lock */
                BBP_status_off(j, BBPLOADING, "BBPdescriptor");
+               CHECKDEBUG BATassertProps(b);
        }
        return b;
 }
diff --git a/gdk/gdk_cross.c b/gdk/gdk_cross.c
--- a/gdk/gdk_cross.c
+++ b/gdk/gdk_cross.c
@@ -10,7 +10,7 @@
 #include "gdk.h"
 #include "gdk_private.h"
 
-gdk_return
+static gdk_return
 BATcross1(BAT **r1p, BAT **r2p, BAT *l, BAT *r)
 {
        BAT *bn1, *bn2;
@@ -57,6 +57,10 @@ BATcross1(BAT **r1p, BAT **r2p, BAT *l, 
        return GDK_SUCCEED;
 }
 
+/* Calculate a cross product between bats l and r with optional
+ * candidate lists sl for l and sr for r.
+ * The result is two bats r1 and r2 which contain the OID (head
+ * values) of the input bats l and r. */
 gdk_return
 BATsubcross(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr)
 {
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -718,7 +718,7 @@ BATimprints(BAT *b)
                        GDKfree(imprints);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to