Changeset: 2f75216e9f7f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2f75216e9f7f
Modified Files:
sql/server/rel_optimize_proj.c
sql/server/rel_optimize_sel.c
sql/server/rel_select.c
sql/server/rel_unnest.c
sql/server/sql_semantic.c
Branch: default
Log Message:
Merge with Dec2025 branch.
diffs (truncated from 6575 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
@@ -271,7 +271,7 @@ BAT *GDKanalyticalntile(BAT *b, BAT *p,
BAT *GDKanalyticalprod(BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tp1, int
tp2, int frame_type) __attribute__((__warn_unused_result__));
BAT *GDKanalyticalsum(BAT *p, BAT *o, BAT *b, BAT *s, BAT *e, int tp1, int
tp2, int frame_type) __attribute__((__warn_unused_result__));
BAT *GDKanalyticalwindowbounds(BAT *b, BAT *p, BAT *l, const void *restrict
bound, int tp1, int tp2, int unit, bool preceding, oid first_half)
__attribute__((__warn_unused_result__));
-gdk_return GDKasciify(allocator *ma, char **restrict buf, size_t *restrict
buflen, const char *restrict s);
+gdk_return GDKasciify(allocator *ma, char **restrict buf, size_t *restrict
buflen, const char *restrict s) __attribute__((__access__(read_write, 2)))
__attribute__((__access__(read_write, 3)));
int GDKatomcnt;
gdk_return GDKcasefold(allocator *ma, char **restrict buf, size_t *restrict
buflen, const char *restrict s) __attribute__((__access__(read_write, 2)))
__attribute__((__access__(read_write, 3)));
void GDKclrerr(void);
@@ -418,11 +418,11 @@ gdk_return TMsubcommit_list(bat *restric
void VALclear(ValPtr v);
int VALcmp(const ValRecord *p, const ValRecord *q);
void *VALconvert(allocator *ma, int typ, ValPtr t);
-ValPtr VALcopy(allocator *va, ValPtr dst, const ValRecord *src)
__attribute__((__access__(write_only, 1)));
+ValPtr VALcopy(allocator *va, ValPtr dst, const ValRecord *src)
__attribute__((__access__(write_only, 2)));
void VALempty(ValPtr v) __attribute__((__access__(write_only, 1)));
char *VALformat(allocator *ma, const ValRecord *res)
__attribute__((__warn_unused_result__));
void *VALget(ValPtr v);
-ValPtr VALinit(allocator *va, ValPtr d, int tpe, const void *s)
__attribute__((__access__(write_only, 1)));
+ValPtr VALinit(allocator *va, ValPtr d, int tpe, const void *s)
__attribute__((__access__(write_only, 2)));
bool VALisnil(const ValRecord *v);
ValPtr VALset(ValPtr v, int t, void *p);
gdk_return VARcalcabsolute(ValPtr ret, const ValRecord *v);
@@ -564,7 +564,7 @@ gdk_return log_tsequence(logger *lg, int
gdk_return log_tstart(logger *lg, bool flushnow, ulng *log_file_id);
ATOMIC_TYPE lvl_per_component[];
void *ma_alloc(allocator *sa, size_t sz);
-void ma_close(allocator *sa, const allocator_state *);
+void ma_close(const allocator_state *);
void ma_destroy(allocator *sa);
void ma_free(allocator *sa, void *);
exception_buffer *ma_get_eb(allocator *sa) __attribute__((__pure__));
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -75,6 +75,7 @@ typedef struct {
size_t objects;
size_t inuse;
size_t tmp_used;
+ allocator *ma;
} allocator_state;
#include "gdk_system.h"
@@ -1551,7 +1552,9 @@ gdk_export char *GDKstrcasestr(const cha
gdk_export BAT *BATtoupper(BAT *b, BAT *s);
gdk_export BAT *BATtolower(BAT *b, BAT *s);
gdk_export BAT *BATcasefold(BAT *b, BAT *s);
-gdk_export gdk_return GDKasciify(allocator *ma, char **restrict buf, size_t
*restrict buflen, const char *restrict s);
+gdk_export gdk_return GDKasciify(allocator *ma, char **restrict buf, size_t
*restrict buflen, const char *restrict s)
+ __attribute__((__access__(read_write, 2)))
+ __attribute__((__access__(read_write, 3)));
gdk_export BAT *BATasciify(BAT *b, BAT *s);
#ifdef HAVE_OPENSSL
gdk_export gdk_return BATaggrdigest(allocator *ma, BAT **bnp, char **shap,
const char *digest, BAT *b, BAT *g, BAT *e, BAT *s, bool skip_nils);
@@ -1748,9 +1751,9 @@ gdk_export _Noreturn void eb_error(excep
#include "gdk_calc.h"
gdk_export ValPtr VALcopy(allocator *va, ValPtr dst, const ValRecord *src)
- __attribute__((__access__(write_only, 1)));
+ __attribute__((__access__(write_only, 2)));
gdk_export ValPtr VALinit(allocator *va, ValPtr d, int tpe, const void *s)
- __attribute__((__access__(write_only, 1)));
+ __attribute__((__access__(write_only, 2)));
gdk_export allocator *create_allocator(allocator *pa, const char *, bool
use_lock);
gdk_export allocator *ma_get_parent(const allocator *sa);
@@ -1766,7 +1769,7 @@ gdk_export char *ma_strconcat(allocator
gdk_export size_t ma_size(allocator *sa);
gdk_export const char *ma_name(allocator *sa);
gdk_export allocator_state ma_open(allocator *sa); /* open new frame of
tempory allocations */
-gdk_export void ma_close(allocator *sa, const allocator_state *); /* close
temporary frame, reset to old state */
+gdk_export void ma_close(const allocator_state *); /* close temporary frame,
reset to old state */
gdk_export void ma_free(allocator *sa, void *);
gdk_export exception_buffer *ma_get_eb(allocator *sa)
__attribute__((__pure__));
@@ -1874,14 +1877,13 @@ gdk_export void ma_info(const allocator
_sa, ma_name(_sa), _as.tmp_used); \
_as; \
})
-#define ma_close(sa, as) \
- ({ \
- allocator *_sa = (sa); \
- allocator_state *_as = (as); \
- TRC_DEBUG(ALLOC, \
- "ma_close(%p(%s), tmp_used = %zu)\n", \
- _sa, ma_name(_sa), _as->tmp_used); \
- ma_close(_sa, _as); \
+#define ma_close(as) \
+ ({ \
+ const allocator_state *_as = (as); \
+ TRC_DEBUG(ALLOC, \
+ "ma_close(%p(%s), tmp_used = %zu)\n", \
+ _as->ma, ma_name(_as->ma), _as->tmp_used); \
+ ma_close(_as); \
})
#define ma_reset(sa) \
({ \
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -226,7 +226,7 @@ dofsum(const void *restrict values, oid
}
pergroup = ma_alloc(ma, ngrp * sizeof(*pergroup));
if (pergroup == NULL) {
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
}
for (grp = 0; grp < ngrp; grp++) {
@@ -235,7 +235,7 @@ dofsum(const void *restrict values, oid
.partials = ma_alloc(ma, 2 * sizeof(double)),
};
if (pergroup[grp].partials == NULL) {
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
}
}
@@ -408,13 +408,13 @@ dofsum(const void *restrict values, oid
((dbl *) results)[grp] = hi;
}
}
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return nils;
overflow:
GDKerror("22003!overflow in sum aggregate.\n");
bailout:
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
}
@@ -731,7 +731,7 @@ dosum(const void *restrict values, bool
/* allocate bitmap for seen group ids */
seen = ma_zalloc(ma, ((ngrp + 31) / 32) * sizeof(int));
if (seen == NULL) {
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
}
@@ -871,23 +871,23 @@ dosum(const void *restrict values, bool
}
}
}
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return nils;
unsupported:
GDKerror("%s: type combination (sum(%s)->%s) not supported.\n",
func, ATOMname(tp1), ATOMname(tp2));
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
overflow:
GDKerror("22003!overflow in sum aggregate.\n");
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
bailout:
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
}
@@ -1360,7 +1360,7 @@ doprod(const void *restrict values, oid
/* allocate bitmap for seen group ids */
seen = ma_zalloc(ma, ((ngrp + 31) / 32) * sizeof(int));
if (seen == NULL) {
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
}
@@ -1550,23 +1550,23 @@ doprod(const void *restrict values, oid
}
}
}
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return nils;
unsupported:
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
GDKerror("%s: type combination (mul(%s)->%s) not supported.\n",
func, ATOMname(tp1), ATOMname(tp2));
return BUN_NONE;
overflow:
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
GDKerror("22003!overflow in product aggregate.\n");
return BUN_NONE;
bailout:
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return BUN_NONE;
}
@@ -1825,12 +1825,12 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
if ((err = BATgroupaggrinit(b, g, e, s, &min, &max, &ngrp, &ci)) !=
NULL) {
GDKerror("%s\n", err);
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_FAIL;
}
if (g == NULL) {
GDKerror("b and g must be aligned\n");
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_FAIL;
}
@@ -1839,20 +1839,20 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
* with nil in the tail */
bn = BATconstant(ngrp == 0 ? 0 : min, TYPE_dbl, &dbl_nil, ngrp,
TRANSIENT);
if (bn == NULL) {
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_FAIL;
}
if (cntsp) {
lng zero = 0;
if ((cn = BATconstant(ngrp == 0 ? 0 : min, TYPE_lng,
&zero, ngrp, TRANSIENT)) == NULL) {
BBPreclaim(bn);
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_FAIL;
}
*cntsp = cn;
}
*bnp = bn;
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_SUCCEED;
}
@@ -1863,20 +1863,20 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
/* trivial: singleton groups, so all results are equal
* to the inputs (but possibly a different type) */
if ((bn = BATconvert(b, s, TYPE_dbl, 0, 0, 0)) == NULL) {
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_FAIL;
}
if (cntsp) {
lng one = 1;
if ((cn = BATconstant(ngrp == 0 ? 0 : min, TYPE_lng,
&one, ngrp, TRANSIENT)) == NULL) {
BBPreclaim(bn);
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_FAIL;
}
*cntsp = cn;
}
*bnp = bn;
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_SUCCEED;
}
@@ -1976,7 +1976,7 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
ALGOBATPAR(b), ALGOOPTBATPAR(g), ALGOOPTBATPAR(e),
ALGOOPTBATPAR(s), ALGOOPTBATPAR(bn),
ci.seq, ci.ncand, GDKusec() - t0);
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_SUCCEED;
bailout:
bat_iterator_end(&bi);
@@ -1986,7 +1986,7 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
BBPreclaim(*cntsp);
*cntsp = NULL;
}
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
return GDK_FAIL;
}
@@ -2039,7 +2039,7 @@ BATgroupavg3(BAT **avgp, BAT **remp, BAT
(void) VALinit(ma, &zero, TYPE_bte, &(bte){0});
bn = BATconstant(min, b->ttype, VALconvert(ma, b->ttype, &zero),
ngrp, TRANSIENT);
- ma_close(ma, &ma_state);
+ ma_close(&ma_state);
rn = BATconstant(min, TYPE_lng, &(lng){0}, ngrp, TRANSIENT);
cn = BATconstant(min, TYPE_lng, &(lng){0}, ngrp, TRANSIENT);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]