Changeset: c0693cc3768d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c0693cc3768d
Modified Files:
        ChangeLog
        gdk/gdk.h
        gdk/gdk_bat.c
        gdk/gdk_logger.c
        geom/monetdb5/geomBulk.c
        monetdb5/extras/rapi/rapi.c
        monetdb5/modules/atoms/batxml.c
        monetdb5/modules/atoms/str.c
        monetdb5/modules/atoms/url.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/txtsim.c
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/UDF/pyapi3/conversion3.c
        sql/backends/monet5/dict.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/sql_round_impl.h
        sql/storage/bat/bat_logger.c
        tools/monetdbe/monetdbe.c
Branch: default
Log Message:

Changed the BATloop macro to having a BAT iterator first argument.


diffs (truncated from 913 to 300 lines):

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
+* Thu Feb 19 2026 Sjoerd Mullender <[email protected]>
+- Changed the BATloop macro so that it now has a BATiter pointer as
+  first argument.
+
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1502,8 +1502,8 @@ gdk_export void VIEWbounds(BAT *b, BAT *
                }                                                       \
        } while (false)
 
-#define BATloop(r, p, q)                               \
-       for (q = BATcount(r), p = 0; p < q; p++)
+#define BATloop(bi, p, q)                              \
+       for (q = (bi)->count, p = 0; p < q; p++)
 
 enum prop_t {
        GDK_MIN_BOUND, /* MINimum allowed value for range partitions [min, max> 
*/
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1838,7 +1838,7 @@ slowfnd(BAT *b, const void *v)
        BUN p, q;
        bool (*atomeq)(const void *, const void *) = ATOMequal(bi.type);
 
-       BATloop(b, p, q) {
+       BATloop(&bi, p, q) {
                if ((*atomeq)(v, BUNtail(&bi, p))) {
                        bat_iterator_end(&bi);
                        return p;
@@ -2858,7 +2858,7 @@ BATassertProps(BAT *b)
                        /* only call compare function if we have to */
                        bool cmpprv = b->tsorted | b->trevsorted | b->tkey;
 
-                       BATloop(b, p, q) {
+                       BATloop(&bi, p, q) {
                                valp = BUNtail(&bi, p);
                                bool isnil = eqf(valp, nilp);
                                assert(!isnil || !notnull);
@@ -2939,7 +2939,7 @@ BATassertProps(BAT *b)
                                TRC_WARNING(BAT, "Cannot allocate hash 
table\n");
                                goto abort_check;
                        }
-                       BATloop(b, p, q) {
+                       BATloop(&bi, p, q) {
                                BUN hb;
                                BUN prb;
                                valp = BUNtail(&bi, p);
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1822,10 +1822,9 @@ log_switch_bat(BAT *old, BAT *new, const
 static gdk_return
 bm_get_counts(logger *lg)
 {
-       BUN p, q;
        const log_bid *bids = (const log_bid *) Tloc(lg->catalog_bid, 0);
 
-       BATloop(lg->catalog_bid, p, q) {
+       for (BUN p = 0, q = lg->catalog_bid->batCount; p < q; p++) {
                oid pos = p;
                lng cnt = 0;
                lng lid = lng_nil;
@@ -1885,7 +1884,7 @@ cleanup_and_swap(logger *lg, int *r, con
        }
 
        oid *poss = Tloc(dcatalog, 0);
-       BATloop(dcatalog, p, q) {
+       for (p = 0, q = dcatalog->batCount; p < q; p++) {
                oid pos = poss[p];
 
                if (lids[pos] == lng_nil || lids[pos] > lg->saved_tid)
@@ -1997,7 +1996,6 @@ bm_subcommit(logger *lg, logged_range *p
        allocator_state ta_state = ma_open(ta);
        BUN cnt = pending ? pending->cnt : BATcount(lg->catalog_bid);
        BUN dcnt = BATcount(lg->dcatalog);
-       BUN p, q;
        BAT *catalog_bid = lg->catalog_bid;
        BAT *catalog_id = lg->catalog_id;
        BAT *dcatalog = lg->dcatalog;
@@ -2025,7 +2023,7 @@ bm_subcommit(logger *lg, logged_range *p
                cnts = (lng *) Tloc(lg->catalog_cnt, 0);
        if (lg->catalog_lid)
                lids = (lng *) Tloc(lg->catalog_lid, 0);
-       BATloop(catalog_bid, p, q) {
+       for (BUN p = 0, q = lg->catalog_bid->batCount; p < q; p++) {
                if (lids && lids[p] != lng_nil && lids[p] <= lg->saved_tid) {
                        cleanup++;
                        if (lids[p] == -1)
@@ -2377,7 +2375,6 @@ log_load(const char *fn, logger *lg, cha
                /* find the persistent catalog. As non persistent bats
                 * require a logical reference we also add a logical
                 * reference for the persistent bats */
-               BUN p, q;
                BAT *b, *o, *d;
 
                assert(!lg->inmemory);
@@ -2427,7 +2424,7 @@ log_load(const char *fn, logger *lg, cha
                        lg->catalog_id = o;
                        lg->dcatalog = d;
                        const log_bid *bids = (const log_bid *) 
Tloc(lg->catalog_bid, 0);
-                       BATloop(lg->catalog_bid, p, q) {
+                       for (BUN p = 0, q = lg->catalog_bid->batCount; p < q; 
p++) {
                                bat bid = bids[p];
                                oid pos = p;
 
@@ -2741,12 +2738,11 @@ log_destroy(logger *lg)
        }
        if (lg->catalog_bid) {
                log_lock(lg);
-               BUN p, q;
                BAT *b = lg->catalog_bid;
 
                /* free resources */
                const log_bid *bids = (const log_bid *) Tloc(b, 0);
-               BATloop(b, p, q) {
+               for (BUN p = 0, q = b->batCount; p < q; p++) {
                        bat bid = bids[p];
 
                        BBPrelease(bid);
diff --git a/geom/monetdb5/geomBulk.c b/geom/monetdb5/geomBulk.c
--- a/geom/monetdb5/geomBulk.c
+++ b/geom/monetdb5/geomBulk.c
@@ -685,7 +685,7 @@ wkbMBR_bat(Client ctx, bat *outBAT_id, b
        }
 
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {
+       BATloop(&inBAT_iter, p, q) {
                str err = NULL;
 
                inWKB = (wkb *) BUNtvar(&inBAT_iter, p);
@@ -1154,7 +1154,7 @@ wkbCoordinateFromMBR_bat(Client ctx, bat
 
        //iterator over the BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {  //iterate over all valid elements
+       BATloop(&inBAT_iter, p, q) {    //iterate over all valid elements
                str err = NULL;
 
                inMBR = (mbr *) BUNtloc(&inBAT_iter, p);
@@ -1204,7 +1204,7 @@ WKBtoSTRflagINT_bat(Client ctx, bat *out
 
        //iterator over the input BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {  //iterate over all valid elements
+       BATloop(&inBAT_iter, p, q) {    //iterate over all valid elements
                str err = NULL;
                char *outSingle;
 
@@ -1275,7 +1275,7 @@ WKBtoWKB_bat(Client ctx, bat *outBAT_id,
 
        //iterator over the input BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {  //iterate over all valid elements
+       BATloop(&inBAT_iter, p, q) {    //iterate over all valid elements
                str err = NULL;
                wkb *outSingle;
 
@@ -1339,7 +1339,7 @@ WKBtoWKBflagINT_bat(Client ctx, bat *out
 
        //iterator over the input BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {  //iterate over all valid elements
+       BATloop(&inBAT_iter, p, q) {    //iterate over all valid elements
                str err = NULL;
                wkb *outSingle;
 
@@ -1402,7 +1402,7 @@ WKBtoBIT_bat(Client ctx, bat *outBAT_id,
 
        //iterator over the input BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {  //iterate over all valid elements
+       BATloop(&inBAT_iter, p, q) {    //iterate over all valid elements
                str err = NULL;
                bit outSingle;
 
@@ -1494,7 +1494,7 @@ WKBtoINT_bat(Client ctx, bat *outBAT_id,
 
        //iterator over the input BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {  //iterate over all valid elements
+       BATloop(&inBAT_iter, p, q) {    //iterate over all valid elements
                str err = NULL;
                int outSingle;
 
@@ -1564,7 +1564,7 @@ WKBtoINTflagINT_bat(Client ctx, bat *out
 
        //iterator over the input BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {  //iterate over all valid elements
+       BATloop(&inBAT_iter, p, q) {    //iterate over all valid elements
                str err = NULL;
                int outSingle;
 
@@ -1635,7 +1635,7 @@ wkbGetCoordinate_bat(Client ctx, bat *ou
 
        //iterator over the input BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {  //iterate over all valid elements
+       BATloop(&inBAT_iter, p, q) {    //iterate over all valid elements
                str err = NULL;
                double outSingle;
 
@@ -1810,7 +1810,7 @@ wkbContains_geom_bat(Client ctx, bat *ou
 
        //iterator over the BATs
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {
+       BATloop(&inBAT_iter, p, q) {
                str err = NULL;
                bit outBIT;
 
@@ -1860,7 +1860,7 @@ wkbContains_bat_geom(Client ctx, bat *ou
 
        //iterator over the BATs
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {
+       BATloop(&inBAT_iter, p, q) {
                str err = NULL;
                bit outBIT;
 
@@ -2047,7 +2047,7 @@ wkbSetSRID_bat(Client ctx, bat *outBAT_i
 
        //iterator over the BATs
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {
+       BATloop(&inBAT_iter, p, q) {
                str err = NULL;
                wkb *outWKB = NULL;
 
@@ -2158,7 +2158,7 @@ wkbDistance_geom_bat(Client ctx, bat *ou
 
        //iterator over the BAT
        inBAT_iter = bat_iterator(inBAT);
-       BATloop(inBAT, p, q) {
+       BATloop(&inBAT_iter, p, q) {
                str err = NULL;
                double distanceVal = 0;
 
diff --git a/monetdb5/extras/rapi/rapi.c b/monetdb5/extras/rapi/rapi.c
--- a/monetdb5/extras/rapi/rapi.c
+++ b/monetdb5/extras/rapi/rapi.c
@@ -222,7 +222,7 @@ bat_to_sexp(BAT* b, int type)
                                bat_iterator_end(&bi);
                                return NULL;
                        }
-                       BATloop(b, p, q) {
+                       BATloop(&bi, p, q) {
                                const char *t = (const char *) BUNtvar(&bi, p);
                                ptrdiff_t offset = t - b->tvheap->base;
                                if (!sexp_ptrs[offset]) {
@@ -238,13 +238,13 @@ bat_to_sexp(BAT* b, int type)
                }
                else {
                        if (bi.nonil) {
-                               BATloop(b, p, q) {
+                               BATloop(&bi, p, q) {
                                        SET_STRING_ELT(varvalue, j++, RSTR(
                                                                           
(const char *) BUNtvar(&bi, p)));
                                }
                        }
                        else {
-                               BATloop(b, p, q) {
+                               BATloop(&bi, p, q) {
                                        const char *t = (const char *) 
BUNtvar(&bi, p);
                                        if (strNil(t)) {
                                                SET_STRING_ELT(varvalue, j++, 
NA_STRING);
diff --git a/monetdb5/modules/atoms/batxml.c b/monetdb5/modules/atoms/batxml.c
--- a/monetdb5/modules/atoms/batxml.c
+++ b/monetdb5/modules/atoms/batxml.c
@@ -73,7 +73,7 @@ BATXMLxml2str(Client ctx, bat *ret, cons
                throw(MAL, "xml.str", INTERNAL_BAT_ACCESS);
        prepareResult(bn, b, TYPE_str, "str", (void) 0);
        bi = bat_iterator(b);
-       BATloop(b, p, q) {
+       BATloop(&bi, p, q) {
                const char *t = (const char *) BUNtvar(&bi, p);
 
                if (strNil(t)) {
@@ -114,7 +114,7 @@ BATXMLxmltext(Client ctx, bat *ret, cons
                throw(MAL, "xml.text", INTERNAL_BAT_ACCESS);
        prepareResult(bn, b, TYPE_str, "text", (void) 0);
        bi = bat_iterator(b);
-       BATloop(b, p, q) {
+       BATloop(&bi, p, q) {
                const char *t = (const char *) BUNtvar(&bi, p);
                size_t len;
 
@@ -244,7 +244,7 @@ BATXMLstr2xml(Client ctx, bat *ret, cons
        }
        prepareResult(bn, b, TYPE_xml, "xml", GDKfree(buf));
        bi = bat_iterator(b);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to