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]
