Changeset: 8488aba03993 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8488aba03993
Modified Files:
        gdk/gdk_strimps.c
Branch: string_imprints
Log Message:

Automated merge with ssh://dev.monetdb.org/MonetDB


diffs (177 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
@@ -394,8 +394,6 @@ BUN SORTfnd(BAT *b, const void *v);
 BUN SORTfndfirst(BAT *b, const void *v);
 BUN SORTfndlast(BAT *b, const void *v);
 gdk_return STRMPappendBitstring(BAT *b, const str s);
-void STRMPbatdecref(BAT *, bool);
-void STRMPbatincref(BAT *);
 gdk_return STRMPcreate(BAT *b, BAT *s);
 BAT *STRMPfilter(BAT *b, BAT *s, const str q);
 MT_Id THRcreate(void (*f)(void *), void *arg, enum MT_thr_detach d, const char 
*name);
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -133,6 +133,8 @@ VIEWcreate(oid seq, BAT *b)
        bn->timprints = NULL;
        /* Order OID index */
        bn->torderidx = NULL;
+       /* Only the parent should have a pointer to the strimp */
+       bn->tstrimps = NULL;
        if (BBPcacheit(bn, true) != GDK_SUCCEED) {      /* enter in BBP */
                if (tp) {
                        BBPunshare(tp);
@@ -377,6 +379,7 @@ VIEWdestroy(BAT *b)
        HASHdestroy(b);
        IMPSdestroy(b);
        OIDXdestroy(b);
+       STRMPdestroy(b);
        PROPdestroy(b);
        VIEWunlink(b);
 
diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -494,30 +494,32 @@ STRMPfilter(BAT *b, BAT *s, const str q)
        oid x;
        struct canditer ci;
        lng t0 = 0;
+       BAT *pb;
 
        TRC_DEBUG_IF(ACCELERATOR) t0 = GDKusec();
 
        if (isVIEW(b)) {
-               BAT *pb = BBP_cache(VIEWtparent(b));
-               if (!BATcheckstrimps(pb))
-                       goto sfilter_fail;
-               MT_lock_set(&pb->batIdxLock);
-               strmps = pb->tstrimps;
-               MT_lock_unset(&pb->batIdxLock);
+               pb = BBP_cache(VIEWtparent(b));
        }
        else {
-               if (!BATcheckstrimps(b))
-                       goto sfilter_fail;
-               MT_lock_set(&b->batIdxLock);
-               strmps = b->tstrimps;
-               MT_lock_unset(&b->batIdxLock);
+               pb = b;
        }
 
-       ncand = canditer_init(&ci, b, s);
-       if (ncand == 0)
+       if (!BATcheckstrimps(pb))
+               goto sfilter_fail;
+       MT_lock_set(&pb->batIdxLock);
+       strmps = pb->tstrimps;
+       STRMPincref(strmps);
+       MT_lock_unset(&pb->batIdxLock);
+
+        ncand = canditer_init(&ci, b, s);
+       if (ncand == 0) {
+               STRMPdecref(strmps, false);
                return BATdense(b->hseqbase, 0, 0);
+       }
        r = COLnew(b->hseqbase, TYPE_oid, ncand, TRANSIENT);
        if (r == NULL) {
+               STRMPdecref(strmps, false);
                goto sfilter_fail;
        }
 
@@ -529,6 +531,7 @@ STRMPfilter(BAT *b, BAT *s, const str q)
                if ((bitstring_array[x] & qbmask) == qbmask) {
                        if (BUNappend(r, &x, false) != GDK_SUCCEED) {
                                BBPunfix(r->batCacheid);
+                               STRMPdecref(strmps, false);
                                goto sfilter_fail;
                        }
                }
@@ -544,6 +547,7 @@ STRMPfilter(BAT *b, BAT *s, const str q)
                  " items (%.2f%%).\n", ncand, GDKusec()-t0, r->batCount,
                  100*r->batCount/(double)ncand);
        TRC_DEBUG(ACCELERATOR, "r->" ALGOBATFMT "\n", ALGOBATPAR(r) );
+       STRMPdecref(strmps, false);
        return virtualize(r);
 
  sfilter_fail:
@@ -795,55 +799,6 @@ STRMPappendBitstring(BAT *b, const str s
 }
 
 void
-STRMPbatdecref(BAT *b, bool remove)
-{
-       Strimps *strimps;
-       BAT *pb = NULL;
-
-       if (VIEWtparent(b)) {
-               pb = BBP_cache(VIEWtparent(b));
-               assert(pb);
-       } else {
-               pb = b;
-       }
-
-       MT_lock_set(&pb->batIdxLock);
-       if (pb && pb->tstrimps && pb->tstrimps != (Strimps *)1) {
-               strimps = pb->tstrimps;
-       } else {
-               MT_lock_unset(&pb->batIdxLock);
-               return;
-       }
-       STRMPdecref(strimps, remove);
-       MT_lock_unset(&pb->batIdxLock);
-}
-
-void
-STRMPbatincref(BAT *b)
-{
-       Strimps *strimps;
-       BAT *pb = NULL;
-
-       if (VIEWtparent(b)) {
-               pb = BBP_cache(VIEWtparent(b));
-               assert(pb);
-       } else {
-               pb = b;
-       }
-
-       MT_lock_set(&pb->batIdxLock);
-       if (pb && pb->tstrimps && pb->tstrimps != (Strimps *)1) {
-               strimps = pb->tstrimps;
-       } else {
-               MT_lock_unset(&pb->batIdxLock);
-               return;
-       }
-       STRMPincref(strimps);
-       MT_lock_unset(&pb->batIdxLock);
-
-}
-
-void
 STRMPdecref(Strimps *strimps, bool remove)
 {
        TRC_DEBUG(ACCELERATOR, "Decrement ref count of %s to " BUNFMT "\n",
diff --git a/gdk/gdk_strimps.h b/gdk/gdk_strimps.h
--- a/gdk/gdk_strimps.h
+++ b/gdk/gdk_strimps.h
@@ -46,6 +46,4 @@ typedef struct {
 gdk_export gdk_return STRMPcreate(BAT *b, BAT *s);
 gdk_export BAT *STRMPfilter(BAT *b, BAT *s, const str q);
 gdk_export gdk_return STRMPappendBitstring(BAT *b, const str s);
-gdk_export void STRMPbatdecref(BAT *, bool);
-gdk_export void STRMPbatincref(BAT *);
 #endif /* _GDK_STRIMPS_H_ */
diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c
--- a/monetdb5/modules/mal/pcre.c
+++ b/monetdb5/modules/mal/pcre.c
@@ -1892,10 +1892,8 @@ PCRElikeselect(bat *ret, const bat *bid,
         */
        if (use_strimps && BATcount(b) >= STRIMP_CREATION_THRESHOLD && !*anti) {
                if (STRMPcreate(b, NULL) == GDK_SUCCEED) {
-                       STRMPbatincref(b);
                        BAT *tmp_s;
                        tmp_s = STRMPfilter(b, s, *pat);
-                       STRMPbatdecref(b, false);
                        if (tmp_s && s) {
                                BBPunfix(s->batCacheid);
                                s = tmp_s;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to