Changeset: 5f0d9961a4dd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5f0d9961a4dd
Modified Files:
        clients/Tests/exports.stable.out
        gdk/ChangeLog
        gdk/gdk_bbp.c
        gdk/gdk_bbp.h
        geom/monetdb5/geom.c
        geom/monetdb5/geomBulk.c
        monetdb5/extras/rapi/rapi.c
        monetdb5/modules/atoms/batxml.c
        monetdb5/modules/atoms/blob.c
        monetdb5/modules/atoms/json.c
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/atoms/url.c
        monetdb5/modules/atoms/uuid.c
        monetdb5/modules/kernel/aggr.c
        monetdb5/modules/kernel/alarm.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/kernel/batcolor.c
        monetdb5/modules/kernel/batmmath.c
        monetdb5/modules/kernel/batstr.c
        monetdb5/modules/kernel/group.c
        monetdb5/modules/kernel/microbenchmark.c
        monetdb5/modules/kernel/status.c
        monetdb5/modules/mal/batExtensions.c
        monetdb5/modules/mal/batMask.c
        monetdb5/modules/mal/batcalc.c
        monetdb5/modules/mal/bbp.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/inspect.c
        monetdb5/modules/mal/iterator.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/manifold.c
        monetdb5/modules/mal/manual.c
        monetdb5/modules/mal/mat.c
        monetdb5/modules/mal/mdb.c
        monetdb5/modules/mal/mkey.c
        monetdb5/modules/mal/orderidx.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/profiler.c
        monetdb5/modules/mal/projectionpath.c
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/sample.c
        monetdb5/modules/mal/sysmon.c
        monetdb5/modules/mal/tokenizer.c
        monetdb5/modules/mal/tracer.c
        monetdb5/modules/mal/txtsim.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_wrapper.c
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/UDF/pyapi3/pyapi3.c
        sql/backends/monet5/UDF/udf/udf.c
        sql/backends/monet5/dict.c
        sql/backends/monet5/for.c
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_bincopyfrom.c
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_cast_impl_int.h
        sql/backends/monet5/sql_datetrunc.c
        sql/backends/monet5/sql_fround.c
        sql/backends/monet5/sql_rank.c
        sql/backends/monet5/sql_round.c
        sql/backends/monet5/sql_round_impl.h
        sql/backends/monet5/sql_statistics.c
        sql/backends/monet5/sql_subquery.c
        sql/backends/monet5/sql_time.c
        sql/backends/monet5/sql_user.c
        sql/backends/monet5/vaults/netcdf/netcdf.c
        sql/storage/bat/res_table.c
Branch: default
Log Message:

Changed BBPkeepref: it now gets a BAT pointer instead of a bat id.
Also, if the logical reference count was already non-zero, don't change
the BAT properties and don't make the BAT read-only.


diffs (truncated from 3465 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
@@ -211,7 +211,7 @@ void BBPcold(bat i);
 BAT *BBPdescriptor(bat b);
 int BBPfix(bat b);
 bat BBPindex(const char *nme);
-void BBPkeepref(bat i);
+void BBPkeepref(BAT *b) __attribute__((__nonnull__(1)));
 bat BBPlimit;
 void BBPlock(void);
 BAT *BBPquickdesc(bat b);
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -1,6 +1,10 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Mon Mar 21 2022 Sjoerd Mullender <[email protected]>
+- The function BBPkeepref now gets a BAT pointer as argument instead of
+  a bat id.
+
 * Fri Mar 18 2022 Sjoerd Mullender <[email protected]>
 - Get rid of macro Tsize, use ->twidth instead.
 - Get rid of macro BUNlast, just use BATcount instead.
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -3143,24 +3143,25 @@ BBPrelease(bat i)
  * [first step, initiate code change]
  */
 void
-BBPkeepref(bat i)
+BBPkeepref(BAT *b)
 {
-       if (BBPcheck(i)) {
-               bool lock = locked_by == 0 || locked_by != MT_getpid();
-               BAT *b;
-
-               incref(i, true, lock);
-               if ((b = BBPdescriptor(i)) != NULL) {
-                       BATsettrivprop(b);
-                       if (GDKdebug & (CHECKMASK | PROPMASK))
-                               BATassertProps(b);
-                       if (BATsetaccess(b, BAT_READ) == NULL)
-                               return; /* already decreffed */
-               }
-
-               assert(BBP_refs(i));
-               decref(i, false, false, lock, __func__);
+       assert(b != NULL);
+       bool lock = locked_by == 0 || locked_by != MT_getpid();
+       int i = b->batCacheid;
+       int refs = incref(i, true, lock);
+       if (refs == 1) {
+               MT_lock_set(&b->theaplock);
+               BATsettrivprop(b);
+               MT_lock_unset(&b->theaplock);
        }
+       if (GDKdebug & (CHECKMASK | PROPMASK))
+               BATassertProps(b);
+       if (BATsetaccess(b, BAT_READ) == NULL)
+               return;         /* already decreffed */
+
+       refs = decref(i, false, false, lock, __func__);
+       (void) refs;
+       assert(refs >= 0);
 }
 
 static inline void
diff --git a/gdk/gdk_bbp.h b/gdk/gdk_bbp.h
--- a/gdk/gdk_bbp.h
+++ b/gdk/gdk_bbp.h
@@ -78,7 +78,8 @@ gdk_export int BBPfix(bat b);
 gdk_export int BBPunfix(bat b);
 gdk_export int BBPretain(bat b);
 gdk_export int BBPrelease(bat b);
-gdk_export void BBPkeepref(bat i);
+gdk_export void BBPkeepref(BAT *b)
+       __attribute__((__nonnull__(1)));
 gdk_export void BBPshare(bat b);
 gdk_export void BBPcold(bat i);
 
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -1719,9 +1719,11 @@ wkbDump(bat *idBAT_id, bat *geomBAT_id, 
                        throw(MAL, "geom.DumpPoints", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                }
 
-               BBPkeepref(*idBAT_id = idBAT->batCacheid);
-
-               BBPkeepref(*geomBAT_id = geomBAT->batCacheid);
+               *idBAT_id = idBAT->batCacheid;
+               BBPkeepref(idBAT);
+
+               *geomBAT_id = geomBAT->batCacheid;
+               BBPkeepref(geomBAT);
 
                return MAL_SUCCEED;
        }
@@ -1750,8 +1752,10 @@ wkbDump(bat *idBAT_id, bat *geomBAT_id, 
                return err;
        }
 
-       BBPkeepref(*idBAT_id = idBAT->batCacheid);
-       BBPkeepref(*geomBAT_id = geomBAT->batCacheid);
+       *idBAT_id = idBAT->batCacheid;
+       BBPkeepref(idBAT);
+       *geomBAT_id = geomBAT->batCacheid;
+       BBPkeepref(geomBAT);
        return MAL_SUCCEED;
 }
 
@@ -1952,9 +1956,11 @@ wkbDumpPoints(bat *idBAT_id, bat *geomBA
                        throw(MAL, "geom.DumpPoints", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                }
 
-               BBPkeepref(*idBAT_id = idBAT->batCacheid);
-
-               BBPkeepref(*geomBAT_id = geomBAT->batCacheid);
+               *idBAT_id = idBAT->batCacheid;
+               BBPkeepref(idBAT);
+
+               *geomBAT_id = geomBAT->batCacheid;
+               BBPkeepref(geomBAT);
 
                return MAL_SUCCEED;
        }
@@ -1985,8 +1991,10 @@ wkbDumpPoints(bat *idBAT_id, bat *geomBA
                return err;
        }
 
-       BBPkeepref(*idBAT_id = idBAT->batCacheid);
-       BBPkeepref(*geomBAT_id = geomBAT->batCacheid);
+       *idBAT_id = idBAT->batCacheid;
+       BBPkeepref(idBAT);
+       *geomBAT_id = geomBAT->batCacheid;
+       BBPkeepref(geomBAT);
        return MAL_SUCCEED;
 }
 
@@ -5802,7 +5810,8 @@ pnpoly(int *out, int nvert, dbl *vx, dbl
        bo->tkey = false;
        BBPunfix(bpx->batCacheid);
        BBPunfix(bpy->batCacheid);
-       BBPkeepref(*out = bo->batCacheid);
+       *out = bo->batCacheid;
+       BBPkeepref(bo);
        return MAL_SUCCEED;
 }
 
@@ -5894,7 +5903,8 @@ pnpolyWithHoles(bat *out, int nvert, dbl
        bo->tkey = false;
        BBPunfix(bpx->batCacheid);
        BBPunfix(bpy->batCacheid);
-       BBPkeepref(*out = bo->batCacheid);
+       *out = bo->batCacheid;
+       BBPkeepref(bo);
        return MAL_SUCCEED;
 }
 
diff --git a/geom/monetdb5/geomBulk.c b/geom/monetdb5/geomBulk.c
--- a/geom/monetdb5/geomBulk.c
+++ b/geom/monetdb5/geomBulk.c
@@ -93,7 +93,8 @@ bailout:
                dst->tkey = BATcount(dst) <= 1;
                dst->tsorted = BATcount(dst) <= 1;
                dst->trevsorted = BATcount(dst) <= 1;
-               BBPkeepref(*outBAT_id = dst->batCacheid);
+               *outBAT_id = dst->batCacheid;
+               BBPkeepref(dst);
        } else if (dst)
                BBPreclaim(dst);
        return msg;
@@ -184,7 +185,8 @@ bailout:
                dst->tkey = BATcount(dst) <= 1;
                dst->tsorted = BATcount(dst) <= 1;
                dst->trevsorted = BATcount(dst) <= 1;
-               BBPkeepref(*outBAT_id = dst->batCacheid);
+               *outBAT_id = dst->batCacheid;
+               BBPkeepref(dst);
        } else if (dst)
                BBPreclaim(dst);
        return msg;
@@ -235,7 +237,8 @@ wkbCoordinateFromMBR_bat(bat *outBAT_id,
        bat_iterator_end(&inBAT_iter);
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
        return MAL_SUCCEED;
 
 }
@@ -291,7 +294,8 @@ WKBtoSTRflagINT_bat(bat *outBAT_id, bat 
        BATsetcount(outBAT, BATcount(inBAT));
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
        return MAL_SUCCEED;
 }
@@ -361,7 +365,8 @@ WKBtoWKB_bat(bat *outBAT_id, bat *inBAT_
        BATsetcount(outBAT, BATcount(inBAT));
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
        return MAL_SUCCEED;
 }
@@ -425,7 +430,8 @@ WKBtoWKBflagINT_bat(bat *outBAT_id, bat 
        BATsetcount(outBAT, BATcount(inBAT));
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
        return MAL_SUCCEED;
 }
@@ -485,7 +491,8 @@ WKBtoBIT_bat(bat *outBAT_id, bat *inBAT_
        BATsetcount(outBAT, BATcount(inBAT));
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
        return MAL_SUCCEED;
 
@@ -571,7 +578,8 @@ WKBtoINT_bat(bat *outBAT_id, bat *inBAT_
        BATsetcount(outBAT, BATcount(inBAT));
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
        return MAL_SUCCEED;
 
@@ -638,7 +646,8 @@ WKBtoINTflagINT_bat(bat *outBAT_id, bat 
        BATsetcount(outBAT, BATcount(inBAT));
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
        return MAL_SUCCEED;
 
@@ -705,7 +714,8 @@ wkbGetCoordinate_bat(bat *outBAT_id, bat
        BATsetcount(outBAT, BATcount(inBAT));
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
        return MAL_SUCCEED;
 
@@ -762,7 +772,8 @@ wkbBox2D_bat(bat *outBAT_id, bat *aBAT_i
                GDKfree(outSingle);
        }
 
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
   bailout:
        bat_iterator_end(&aBAT_iter);
        bat_iterator_end(&bBAT_iter);
@@ -821,7 +832,8 @@ wkbContains_bat(bat *outBAT_id, bat *aBA
                }
        }
 
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
   bailout:
        bat_iterator_end(&aBAT_iter);
@@ -878,7 +890,8 @@ wkbContains_geom_bat(bat *outBAT_id, wkb
        bat_iterator_end(&inBAT_iter);
 
        BBPunfix(inBAT->batCacheid);
-       BBPkeepref(*outBAT_id = outBAT->batCacheid);
+       *outBAT_id = outBAT->batCacheid;
+       BBPkeepref(outBAT);
 
        return MAL_SUCCEED;
 
@@ -926,7 +939,8 @@ wkbContains_bat_geom(bat *outBAT_id, bat
        bat_iterator_end(&inBAT_iter);
 
        BBPunfix(inBAT->batCacheid);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to