Changeset: c3c1bab63fec for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c3c1bab63fec
Modified Files:
gdk/gdk_join.c
monetdb5/modules/atoms/str.c
sql/server/rel_unnest.c
sql/test/BugTracker-2026/Tests/All
Branch: default
Log Message:
Merge with Dec2025 branch.
diffs (262 lines):
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3994,11 +3994,10 @@ fetchjoin(BAT **r1p, BAT **r2p, BAT *l,
r1->trevsorted = ri.revsorted || e - b <= 1;
r1->tseqbase = e == b ? 0 : e - b == 1 ? *(const oid *)Tloc(r1, 0) :
oid_nil;
bat_iterator_end(&ri);
- TRC_DEBUG(ALGO, "%s(l=" ALGOBATFMT ","
+ TRC_DEBUG(ALGO, "l=" ALGOBATFMT ","
"r=" ALGOBATFMT ",sl=" ALGOOPTBATFMT ","
- "sr=" ALGOOPTBATFMT ") %s "
- "-> (" ALGOBATFMT "," ALGOOPTBATFMT ") " LLFMT "us\n",
- __func__,
+ "sr=" ALGOOPTBATFMT " %s "
+ "-> " ALGOBATFMT "," ALGOOPTBATFMT " (" LLFMT " usec)\n",
ALGOBATPAR(l), ALGOBATPAR(r),
ALGOOPTBATPAR(sl), ALGOOPTBATPAR(sr),
reason,
@@ -4588,9 +4587,9 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
}
if (lci.ncand == 0 || rci.ncand == 0) {
- TRC_DEBUG(ALGO, "BATjoin(l=" ALGOBATFMT ","
+ TRC_DEBUG(ALGO, "l=" ALGOBATFMT ","
"r=" ALGOBATFMT ",sl=" ALGOOPTBATFMT ","
- "sr=" ALGOOPTBATFMT ",nil_matches=%d)\n",
+ "sr=" ALGOOPTBATFMT ",nil_matches=%d\n",
ALGOBATPAR(l), ALGOBATPAR(r),
ALGOOPTBATPAR(sl), ALGOOPTBATPAR(sr),
nil_matches);
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -697,9 +697,9 @@ runMALsequence(Client cntxt, MalBlkPtr m
"address of pattern %s.%s missing",
pci->modname, pci->fcnname);
} else {
- TRC_DEBUG(ALGO, "calling %s.%s\n",
- pci->modname ? pci->modname :
"<null>",
- pci->fcnname ? pci->fcnname :
"<null>");
+ TRC_INFO(ALGO, "calling %s.%s\n",
+ pci->modname ? pci->modname :
"<null>",
+ pci->fcnname ? pci->fcnname :
"<null>");
ret = (*(str (*) (Client, MalBlkPtr, MalStkPtr,
InstrPtr)) pci->
fcn) (cntxt, mb, stk, pci);
#ifndef NDEBUG
diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -751,8 +751,8 @@ STRrevstr_search(Client ctx, MalBlkPtr m
(void) ctx;
(void) mb;
int *res = getArgReference_int(stk, pci, 0);
- const str haystack = *getArgReference_str(stk, pci, 1);
- const str needle = *getArgReference_str(stk, pci, 2);
+ const char *haystack = *getArgReference_str(stk, pci, 1);
+ const char *needle = *getArgReference_str(stk, pci, 2);
bit icase = pci->argc == 4 && *getArgReference_bit(stk, pci, 3);
if (strNil(haystack) || strNil(needle)) {
@@ -1962,17 +1962,17 @@ scan_loop_strselect(BAT *rl, BATiter *li
rl->tnil = false;
}
- TRC_DEBUG(ALGO, "(%s, %s, l=%s #%zu [%s], cl=%s #%zu,
time="LLFMT"usecs)\n",
- fname, "scan_loop_strselect",
+ TRC_DEBUG(ALGO, "%s, l=%s #%zu [%s], cl=%s #%zu, time="LLFMT"usecs)\n",
+ fname,
BATgetId(li->b), li->count, ATOMname(li->b->ttype),
- lci ? BATgetId(lci->s) : "NULL", lci ? lci->ncand : 0,
+ lci->s ? BATgetId(lci->s) : "NULL", lci->ncand,
GDKusec() - t0);
return MAL_SUCCEED;
}
static str
-STRselect(MalStkPtr stk, InstrPtr pci, const str fname,
+STRselect(MalStkPtr stk, InstrPtr pci, const char *fname,
int (*str_cmp)(const char *, const char *, size_t))
{
str msg = MAL_SUCCEED;
@@ -2217,8 +2217,8 @@ nested_loop_strjoin(BAT *rl, BAT *rr, BA
fname, "nested_loop_strjoin",
BATgetId(li->b), li->count, ATOMname(li->b->ttype),
BATgetId(ri->b), ri->count, ATOMname(ri->b->ttype),
- lci ? BATgetId(lci->s) : "NULL", lci ? lci->ncand : 0,
- rci ? BATgetId(rci->s) : "NULL", rci ? rci->ncand : 0,
+ lci->s ? BATgetId(lci->s) : "NULL", lci->ncand,
+ rci->s ? BATgetId(rci->s) : "NULL", rci->ncand,
GDKusec() - t0);
return MAL_SUCCEED;
@@ -2458,8 +2458,8 @@ bigram_strjoin(BAT *rl, BAT *rr, BATiter
fname, "bigram_strjoin",
BATgetId(li->b), li->count, ATOMname(li->b->ttype),
BATgetId(ri->b), ri->count, ATOMname(ri->b->ttype),
- lci ? BATgetId(lci->s) : "NULL", lci ? lci->ncand : 0,
- rci ? BATgetId(rci->s) : "NULL", rci ? rci->ncand : 0,
+ lci->s ? BATgetId(lci->s) : "NULL", lci->ncand,
+ rci->s ? BATgetId(rci->s) : "NULL", rci->ncand,
GDKusec() - t0);
return msg;
@@ -2634,7 +2634,7 @@ sorted_strjoin(BAT **rl_ptr, BAT **rr_pt
}
static inline str
-ignorecase(const bat IC, bool *icase, const str fname)
+ignorecase(bat IC, bool *icase, const char *fname)
{
str msg = MAL_SUCCEED;
BAT *b = BATdescriptor(IC);
@@ -2653,7 +2653,7 @@ ignorecase(const bat IC, bool *icase, co
}
static str
-STRjoin(MalStkPtr stk, InstrPtr pci, const str fname,
+STRjoin(MalStkPtr stk, InstrPtr pci, const char *fname,
int (*str_cmp)(const char *, const char *, size_t))
{
str msg = MAL_SUCCEED;
diff --git a/monetdb5/modules/mal/batcalc.c b/monetdb5/modules/mal/batcalc.c
--- a/monetdb5/modules/mal/batcalc.c
+++ b/monetdb5/modules/mal/batcalc.c
@@ -1937,21 +1937,28 @@ CALCbat_to_hex_int(Client ctx, bat *resb
assert(BATttype(values) == TYPE_int);
int *p = Tloc(values, 0); // always 0 regardless of hseqbase, is that
correct?
+ res->tnil = false;
+ res->tnonil = true;
for (BUN i = 0; i < BATcount(values); i++) {
char buf[50];
int n = *p++;
const char *s;
- if (is_int_nil(n))
+ if (is_int_nil(n)) {
s = str_nil;
- else {
+ res->tnil = true;
+ res->tnonil = false;
+ } else {
snprintf(buf, sizeof(buf), "%" PRIx32, (uint32_t)n);
s = buf;
}
- if (BUNappend(res, s, false) != GDK_SUCCEED) {
+ if (bunfastapp_nocheckVAR(res, s) != GDK_SUCCEED) {
msg = createException(MAL, "CALCbat_to_hex_int",
GDK_EXCEPTION);
goto end;
}
}
+ res->tsorted = false;
+ res->trevsorted = false;
+ res->tkey = false;
msg = MAL_SUCCEED;
end:
@@ -1993,21 +2000,28 @@ CALCbat_to_hex_lng(Client ctx, bat *resb
assert(BATttype(values) == TYPE_lng);
lng *p = Tloc(values, 0); // always 0 regardless of hseqbase, is that
correct?
+ res->tnil = false;
+ res->tnonil = true;
for (BUN i = 0; i < BATcount(values); i++) {
char buf[50];
lng n = *p++;
const char *s;
- if (is_lng_nil(n))
+ if (is_lng_nil(n)) {
s = str_nil;
- else {
+ res->tnil = true;
+ res->tnonil = false;
+ } else {
snprintf(buf, sizeof(buf), "%" PRIx64, (uint64_t)n);
s = buf;
}
- if (BUNappend(res, s, false) != GDK_SUCCEED) {
+ if (bunfastapp_nocheckVAR(res, s) != GDK_SUCCEED) {
msg = createException(MAL, "CALCbat_to_hex_lng",
GDK_EXCEPTION);
goto end;
}
}
+ res->tsorted = false;
+ res->trevsorted = false;
+ res->tkey = false;
msg = MAL_SUCCEED;
end:
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -754,6 +754,10 @@ move_join_exps(mvc *sql, sql_rel *j, sql
node *n;
list *exps = rel->exps;
+ if (j->attr && exps_uses_exp(rel->exps, j->attr->h->data)) {
+ assert(0);
+ }
+
if (list_empty(exps))
return;
rel->exps = sa_list(sql->sa);
@@ -1177,7 +1181,7 @@ push_up_select(mvc *sql, sql_rel *rel, l
if (inner && is_left(rel->op) && !need_distinct(d))
return rel_general_unnest(sql, rel, ad);
/* input rel is dependent join with on the right a select */
- if ((!inner || is_semi(rel->op)) && rel && is_dependent(rel)) {
+ if ((!inner || is_semi(rel->op) || (is_left(rel->op) &&
!list_empty(rel->attr))) && rel && is_dependent(rel)) {
sql_rel *r = rel->r;
if (r && is_select(r->op)) { /* move into join */
diff --git
a/sql/test/BugTracker-2026/Tests/7876-rel2bin_select-assertion-failure.test
b/sql/test/BugTracker-2026/Tests/7876-rel2bin_select-assertion-failure.test
--- a/sql/test/BugTracker-2026/Tests/7876-rel2bin_select-assertion-failure.test
+++ b/sql/test/BugTracker-2026/Tests/7876-rel2bin_select-assertion-failure.test
@@ -111,6 +111,34 @@ ON (
WHERE ref_0.score IS NULL
LIMIT 95
----
+NULL
+NULL
+NULL
+carol
+2022-01-03 12:00:00
+NULL
+Empty
+NULL
+NULL
+NULL
+carol
+2022-01-03 12:00:00
+NULL
+First post
+NULL
+NULL
+NULL
+carol
+2022-01-03 12:00:00
+NULL
+Last
+NULL
+NULL
+NULL
+carol
+2022-01-03 12:00:00
+NULL
+banned
statement ok
DROP TABLE orders
diff --git a/sql/test/BugTracker-2026/Tests/All
b/sql/test/BugTracker-2026/Tests/All
--- a/sql/test/BugTracker-2026/Tests/All
+++ b/sql/test/BugTracker-2026/Tests/All
@@ -66,7 +66,7 @@ KNOWNFAIL?7774-insert-into-renamed-table
7873-push_up_join-assertion-failure
7874-rel2bin_join-assertion-failure
KNOWNFAIL?7875-rel2bin_groupjoin-assertion-failure
-KNOWNFAIL?7876-rel2bin_select-assertion-failure
+7876-rel2bin_select-assertion-failure
7877-push_up_join-assertion-failure
7878-exp_bin-assertion-failure
7879-crash
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]