Changeset: 5199d3e93c9a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5199d3e93c9a
Modified Files:
gdk/gdk_system.c
monetdb5/optimizer/opt_mitosis.c
sql/test/BugTracker-2026/Tests/All
testing/Mtest.py.in
Branch: default
Log Message:
Merge with Dec2025 branch.
diffs (truncated from 404 to 300 lines):
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -1220,7 +1220,9 @@ MT_check_nr_cores(void)
#ifndef WIN32
/* get the number of allocated cpus from the cgroup settings */
- FILE *f = fopen("/sys/fs/cgroup/cpuset/cpuset.cpus", "r");
+ FILE *f = fopen("/sys/fs/cgroup/cpuset/cpuset.cpus", "r"); /* v1 */
+ if (f == NULL)
+ f = fopen("/sys/fs/cgroup/cpuset.cpus.effective", "r"); /* v2 */
if (f != NULL) {
char buf[512];
char *p = fgets(buf, 512, f);
diff --git a/monetdb5/optimizer/opt_mitosis.c b/monetdb5/optimizer/opt_mitosis.c
--- a/monetdb5/optimizer/opt_mitosis.c
+++ b/monetdb5/optimizer/opt_mitosis.c
@@ -211,6 +211,12 @@ OPTmitosisImplementation(Client cntxt, M
mito_size = GDKgetenv_int("mito_size", 0);
if (mito_size > 0)
pieces = (int) ((rowcnt * row_size) / (mito_size * 1024));
+ mito_size = GDKgetenv_int("min_mito_rows", 0);
+ if (mito_size > 0 && pieces > 1 && rowcnt / pieces < (BUN) mito_size)
+ pieces = rowcnt / mito_size;
+ mito_parts = GDKgetenv_int("max_mito_parts", 0);
+ if (mito_parts > 0 && pieces > mito_parts)
+ pieces = mito_parts;
if (pieces <= 1) {
pieces = 0;
diff --git a/sql/test/BugTracker-2026/Tests/8015-join-subquery-NULL-bug.test
b/sql/test/BugTracker-2026/Tests/8015-join-subquery-NULL-bug.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2026/Tests/8015-join-subquery-NULL-bug.test
@@ -0,0 +1,71 @@
+statement ok
+CREATE TABLE t8015 (x INT)
+
+statement ok rowcount 2
+INSERT INTO t8015 VALUES (1), (2)
+
+query I nosort
+SELECT SUM(x) AS a
+ FROM t8015
+ GROUP BY x
+HAVING SUM(x) < 0
+----
+
+-- The grouped input is empty, so SUM(a) is NULL.
+query I nosort
+SELECT SUM(a) AS s
+ FROM (
+ SELECT SUM(x) AS a
+ FROM t8015
+ GROUP BY x
+ HAVING SUM(x) < 0
+ ) AS grouped_rows
+----
+NULL
+
+-- The grouped input is empty, so SUM(a) is NULL and the join must match no
rows.
+query I nosort
+SELECT COUNT(*) AS original_count
+FROM t8015 AS o
+JOIN (
+ SELECT SUM(a) AS s
+ FROM (
+ SELECT SUM(x) AS a
+ FROM t8015
+ GROUP BY x
+ HAVING SUM(x) < 0
+ ) AS grouped_rows
+) AS q ON q.s IS NOT NULL
+----
+0
+
+statement ok
+CREATE TEMPORARY TABLE t8015_tmp AS
+SELECT SUM(x) AS a
+ FROM t8015
+ GROUP BY x
+HAVING SUM(x) < 0
+ON COMMIT PRESERVE ROWS
+
+query I nosort
+SELECT COUNT(*) AS cut_count
+FROM t8015_tmp
+----
+0
+
+query I nosort
+SELECT COUNT(*) AS residual_count
+FROM t8015 AS o
+JOIN (
+ SELECT SUM(a) AS s
+ FROM t8015_tmp
+) AS q ON q.s IS NOT NULL
+----
+0
+
+statement ok
+DROP TABLE t8015_tmp
+
+statement ok
+DROP TABLE t8015
+
diff --git
a/sql/test/BugTracker-2026/Tests/8017-create-where-exists-select-acos-bug.test
b/sql/test/BugTracker-2026/Tests/8017-create-where-exists-select-acos-bug.test
new file mode 100644
--- /dev/null
+++
b/sql/test/BugTracker-2026/Tests/8017-create-where-exists-select-acos-bug.test
@@ -0,0 +1,95 @@
+statement ok
+CREATE TABLE t8017 (x INT)
+
+statement ok rowcount 1
+INSERT INTO t8017 VALUES (2)
+
+-- ACOS(x) is an unused EXISTS projection and must not be evaluated.
+query I nosort
+SELECT COUNT(*) AS result
+FROM t8017 AS outer_row
+WHERE EXISTS (
+ SELECT ACOS(inner_row.x)
+ FROM t8017 AS inner_row
+)
+----
+1
+
+statement ok
+CREATE VIEW t8017_view AS
+SELECT COUNT(*) AS result
+FROM t8017 AS outer_row
+WHERE EXISTS (
+ SELECT ACOS(inner_row.x)
+ FROM t8017 AS inner_row
+)
+
+query I nosort
+SELECT result FROM t8017_view
+----
+1
+
+-- next statement fails with 22003!Math exception: Invalid argument
+statement ok
+CREATE TEMPORARY TABLE t8017_tmp AS
+SELECT COUNT(*) AS result
+FROM t8017 AS outer_row
+WHERE EXISTS (
+ SELECT ACOS(inner_row.x)
+ FROM t8017 AS inner_row
+)
+ON COMMIT PRESERVE ROWS
+
+query I nosort
+SELECT result FROM t8017_tmp
+----
+1
+
+-- next statement fails with 22003!Math exception: Invalid argument
+statement ok
+CREATE TABLE t8017_ctas AS
+SELECT COUNT(*) AS result
+FROM t8017 AS outer_row
+WHERE EXISTS (
+ SELECT ACOS(inner_row.x)
+ FROM t8017 AS inner_row
+)
+
+query I nosort
+SELECT result FROM t8017_ctas
+----
+1
+
+statement ok
+CREATE TABLE t8017_target (result BIGINT)
+
+-- next statement fails with 22003!Math exception: Invalid argument
+statement ok rowcount 1
+INSERT INTO t8017_target
+SELECT COUNT(*) AS result
+FROM t8017 AS outer_row
+WHERE EXISTS (
+ SELECT ACOS(inner_row.x)
+ FROM t8017 AS inner_row
+)
+
+query I nosort
+SELECT result FROM t8017_target
+----
+1
+
+statement ok
+DROP TABLE IF EXISTS t8017_target
+
+statement ok
+DROP TABLE IF EXISTS t8017_ctas
+
+statement ok
+DROP TABLE IF EXISTS t8017_tmp
+
+statement ok
+DROP VIEW IF EXISTS t8017_view
+
+statement ok
+DROP TABLE t8017
+
diff --git
a/sql/test/BugTracker-2026/Tests/8018-rel2bin_select-assert-failure.test
b/sql/test/BugTracker-2026/Tests/8018-rel2bin_select-assert-failure.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2026/Tests/8018-rel2bin_select-assert-failure.test
@@ -0,0 +1,74 @@
+statement ok
+CREATE TABLE t8018 (x INT)
+
+statement ok rowcount 1
+INSERT INTO t8018 VALUES (1)
+
+query TI nosort
+SELECT flagged.b, flagged.x
+FROM (
+ SELECT (ranked.x IN (SELECT 1)) AS b,
+ ranked.x
+ FROM (
+ SELECT x, ROW_NUMBER() OVER () AS rn
+ FROM t8018
+ ) AS ranked
+ WHERE ranked.rn > 1
+) AS flagged
+WHERE flagged.b = TRUE
+----
+
+statement ok
+CREATE VIEW v8018 AS
+SELECT flagged.b, flagged.x
+FROM (
+ SELECT (ranked.x IN (SELECT 1)) AS b,
+ ranked.x
+ FROM (
+ SELECT x, ROW_NUMBER() OVER () AS rn
+ FROM t8018
+ ) AS ranked
+ WHERE ranked.rn > 1
+) AS flagged
+WHERE flagged.b = TRUE
+
+query TI nosort
+SELECT * FROM v8018
+----
+
+query I nosort
+SELECT COUNT(*) FROM v8018
+----
+0
+
+-- Repeating the boolean predicate must still return one aggregate row.
+-- next query triggers assert failure: sql/backends/monet5/rel_bin.c:4994:
rel2bin_select: Assertion `sql->session->status == -10' failed.
+query I nosort
+SELECT COUNT(*) FROM v8018
+WHERE b = TRUE
+----
+0
+
+-- next statement triggers assert failure: sql/backends/monet5/rel_bin.c:4994:
rel2bin_select: Assertion `sql->session->status == -10' failed.
+statement ok
+CREATE TABLE t8018_count AS
+SELECT COUNT(*) AS row_count
+FROM v8018
+WHERE b = TRUE
+
+query II nosort
+SELECT COUNT(*), COALESCE(MAX(row_count), -1)
+FROM t8018_count
+----
+1
+0
+
+statement ok
+DROP TABLE IF EXISTS t8018_count
+
+statement ok
+DROP VIEW IF EXISTS v8018
+
+statement ok
+DROP TABLE t8018
+
diff --git
a/sql/test/BugTracker-2026/Tests/8019-rel_bin-exp_bin-assert-failure.test
b/sql/test/BugTracker-2026/Tests/8019-rel_bin-exp_bin-assert-failure.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2026/Tests/8019-rel_bin-exp_bin-assert-failure.test
@@ -0,0 +1,55 @@
+statement ok
+CREATE TABLE t8019 (
+ k INT PRIMARY KEY,
+ v INT
+)
+
+statement ok rowcount 1
+INSERT INTO t8019 VALUES (1, 5)
+
+query II nosort
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]