Changeset: 6e184989de57 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6e184989de57
Modified Files:
        monetdb5/modules/kernel/batstr.c
        monetdb5/modules/mal/txtsim.c
Branch: txtsim
Log Message:

Use BBPreclaim, finalize_output. Clean up bat functions.


diffs (truncated from 992 to 300 lines):

diff --git a/monetdb5/modules/kernel/batstr.c b/monetdb5/modules/kernel/batstr.c
--- a/monetdb5/modules/kernel/batstr.c
+++ b/monetdb5/modules/kernel/batstr.c
@@ -8,16 +8,6 @@
  * Copyright 1997 - July 2008 CWI, August 2008 - 2023 MonetDB B.V.
  */
 
-/*
- *  M.L. Kersten
- * String multiplexes
- * [TODO: property propagations]
- * The collection of routines provided here are map operations
- * for the atom string primitives.
- *
- * In line with the batcalc module, we assume that if two bat operands
- * are provided that they are aligned.
- */
 #include "monetdb_config.h"
 #include "gdk.h"
 #include <ctype.h>
@@ -45,7 +35,7 @@ batstr_func_has_candidates(const char *f
 }
 
 static inline void
-finalize_ouput(bat *res, BAT *bn, str msg, bool nils, BUN q)
+finalize_output(bat *res, BAT *bn, str msg, bool nils, BUN q)
 {
        if (bn && !msg) {
                BATsetcount(bn, q);
@@ -54,6 +44,7 @@ finalize_ouput(bat *res, BAT *bn, str ms
                bn->tkey = BATcount(bn) <= 1;
                bn->tsorted = BATcount(bn) <= 1;
                bn->trevsorted = BATcount(bn) <= 1;
+               bn->theap->dirty |= BATcount(bn) > 0;
                *res = bn->batCacheid;
                BBPkeepref(bn);
        } else if (bn)
@@ -138,7 +129,7 @@ do_batstr_int(Client cntxt, MalBlkPtr mb
        }
        bat_iterator_end(&bi);
 bailout:
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -211,7 +202,7 @@ STRbatAscii(Client cntxt, MalBlkPtr mb, 
 bailout1:
        bat_iterator_end(&bi);
 bailout:
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -305,7 +296,7 @@ STRbatFromWChr(Client cntxt, MalBlkPtr m
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -392,7 +383,7 @@ STRbatSpace(Client cntxt, MalBlkPtr mb, 
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -477,7 +468,7 @@ bailout1:
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -565,7 +556,7 @@ bailout1:
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -653,7 +644,7 @@ bailout1:
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -752,7 +743,7 @@ bailout1:
        bat_iterator_end(&righti);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(4, left, lefts, right, rights);
        return msg;
 }
@@ -841,7 +832,7 @@ bailout1:
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -931,7 +922,7 @@ do_batstr_int_conststr(Client cntxt, Mal
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -1035,7 +1026,7 @@ bailout1:
        bat_iterator_end(&lefti);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(4, left, ls, right, rs);
        return msg;
 }
@@ -1125,7 +1116,7 @@ bailout1:
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -1230,7 +1221,7 @@ bailout1:
        bat_iterator_end(&lefti);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(4, left, ls, right, rs);
        return msg;
 }
@@ -1332,7 +1323,7 @@ bailout1:
        bat_iterator_end(&righti);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(4, left, ls, right, rs);
        return msg;
 }
@@ -1442,7 +1433,7 @@ bailout1:
        bat_iterator_end(&bi);
 bailout:
        GDKfree(buf);
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(6, arg1, arg1s, arg2, arg2s, arg3, arg3s);
        return msg;
 }
@@ -1652,21 +1643,21 @@ prefix_or_suffix(Client cntxt, MalBlkPtr
 
        if (!(left = BATdescriptor(*l)) || !(right = BATdescriptor(*r))) {
                msg = createException(MAL, name, SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
-               goto bailout;
+               goto exit2;
        }
        if ((sid1 && !is_bat_nil(*sid1) && !(lefts = BATdescriptor(*sid1))) || 
(sid2 && !is_bat_nil(*sid2) && !(rights = BATdescriptor(*sid2)))) {
                msg = createException(MAL, name, SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
-               goto bailout;
+               goto exit2;
        }
        canditer_init(&ci1, left, lefts);
        canditer_init(&ci2, right, rights);
        if (ci2.ncand != ci1.ncand || ci1.hseq != ci2.hseq) {
                msg = createException(MAL, name, ILLEGAL_ARGUMENT " Requires 
bats of identical size");
-               goto bailout;
+               goto exit2;
        }
        if (!(bn = COLnew(ci1.hseq, TYPE_bit, ci1.ncand, TRANSIENT))) {
                msg = createException(MAL, name, SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-               goto bailout;
+               goto exit2;
        }
 
        off1 = left->hseqbase;
@@ -1687,7 +1678,7 @@ prefix_or_suffix(Client cntxt, MalBlkPtr
                                if (icase && *icase) {
                                        if ((msg = STRlower(&x, &x)) != 
MAL_SUCCEED ||
                                                (msg = STRlower(&y, &y)) != 
MAL_SUCCEED)
-                                               goto bailout;
+                                               goto exit1;
                                }
                                vals[i] = func(x, y);
                        }
@@ -1705,16 +1696,17 @@ prefix_or_suffix(Client cntxt, MalBlkPtr
                                if (icase && *icase) {
                                        if ((msg = STRlower(&x, &x)) != 
MAL_SUCCEED ||
                                                (msg = STRlower(&y, &y)) != 
MAL_SUCCEED)
-                                               goto bailout;
+                                               goto exit1;
                                }
                                vals[i] = func(x, y);
                        }
                }
        }
+ exit1:
        bat_iterator_end(&lefti);
        bat_iterator_end(&righti);
-bailout:
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+ exit2:
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(4, left, lefts, right, rights);
        return msg;
 }
@@ -1779,20 +1771,20 @@ prefix_or_suffix_cst(Client cntxt, MalBl
 
        if (icase && *icase) {
                if ((msg = STRlower(&y, &y)) != MAL_SUCCEED)
-                       goto bailout;
+                       goto exit2;
        }
        if (!(b = BATdescriptor(*bid))) {
                msg = createException(MAL, name, SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
-               goto bailout;
+               goto exit2;
        }
        if (sid1 && !is_bat_nil(*sid1) && !(bs = BATdescriptor(*sid1))) {
                msg = createException(MAL, name, SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
-               goto bailout;
+               goto exit2;
        }
        canditer_init(&ci1, b, bs);
        if (!(bn = COLnew(ci1.hseq, TYPE_bit, ci1.ncand, TRANSIENT))) {
                msg = createException(MAL, name, SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-               goto bailout;
+               goto exit2;
        }
 
        off1 = b->hseqbase;
@@ -1809,7 +1801,7 @@ prefix_or_suffix_cst(Client cntxt, MalBl
                        } else {
                                if (icase && *icase) {
                                        if ((msg = STRlower(&x, &x)) != 
MAL_SUCCEED)
-                                               goto bailout;
+                                               goto exit1;
                                }
                                vals[i] = func(x, y);
                        }
@@ -1825,15 +1817,16 @@ prefix_or_suffix_cst(Client cntxt, MalBl
                        } else {
                                if(icase && *icase) {
                                        if ((msg = STRlower(&x, &x)) != 
MAL_SUCCEED)
-                                               goto bailout;
+                                               goto exit1;
                                }
                                vals[i] = func(x, y);
                        }
                }
        }
+ exit1:
        bat_iterator_end(&bi);
-bailout:
-       finalize_ouput(res, bn, msg, nils, ci1.ncand);
+ exit2:
+       finalize_output(res, bn, msg, nils, ci1.ncand);
        unfix_inputs(2, b, bs);
        return msg;
 }
@@ -1903,20 +1896,20 @@ prefix_or_suffix_strcst(Client cntxt, Ma
 
        if (icase && *icase) {
                if ((msg = STRlower(&x, &x)) != MAL_SUCCEED)
-                       goto bailout;
+                       goto exit2;
        }
        if (!(b = BATdescriptor(*bid))) {
                msg = createException(MAL, name, SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
-               goto bailout;
+               goto exit2;
        }
        if (sid1 && !is_bat_nil(*sid1) && !(bs = BATdescriptor(*sid1))) {
                msg = createException(MAL, name, SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
-               goto bailout;
+               goto exit2;
        }
        canditer_init(&ci1, b, bs);
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to