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]

Reply via email to