Changeset: 77bff434d52e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/77bff434d52e
Added Files:
sql/test/BugTracker-2026/Tests/7834-BATsubcross-more-than-one-match.test
Modified Files:
sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:
Add test for #7834
diffs (116 lines):
diff --git
a/sql/test/BugTracker-2026/Tests/7834-BATsubcross-more-than-one-match.test
b/sql/test/BugTracker-2026/Tests/7834-BATsubcross-more-than-one-match.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2026/Tests/7834-BATsubcross-more-than-one-match.test
@@ -0,0 +1,102 @@
+statement error GDK reported error: BATsubcross: more than one match
+SELECT x , x , STDDEV_POP ( NULLIF ( ( WITH RECURSIVE x ( x ) AS ( WITH
RECURSIVE x ( x ) AS ( SELECT 440 UNION SELECT 1 - x FROM x ) SELECT * FROM
generate_series ( 0 , 10 ) WHERE x < 5 ) SELECT - COUNT ( * ) OVER ( ROWS
BETWEEN 2 PRECEDING AND 3 >= ( SELECT CASE WHEN x = 12 THEN 1 ELSE CASE WHEN
length ( 'abcdefg' ) >= 1 THEN substr ( ( SELECT SUM ( 0 ) OVER ( ) ) , locate
( RPAD ( 'abc' , 1 , ( SELECT 1 ) > ANY ( 1 ) ) , 'joeuser@mydatabase@test' , 9
) , 1 ) ELSE 'nil' END END FROM ( SELECT 1 x HAVING COUNT ( * ) > ( SELECT -
CASE - ( 0 ) WHEN 18 + - 60 THEN NULL WHEN - CASE - 67 WHEN - 79 * ROW_NUMBER (
) OVER ( ORDER BY ( SELECT * FROM ( SELECT 1 AS x ) WHERE x IN ( SELECT (
row_number ( ) OVER ( ) ) ) ) ) <= -5.500000 / 30 - 32 * 69 THEN sign ( CAST(
'-9223372036854775808.5' AS FLOAT ) ) + 0 ELSE NULL END * ( 45 ) + 19 * 17 THEN
20 WHEN SUM ( 78 ) + 69 THEN 1234567954432.000000 % 119070 % '' * 74 ELSE
NULLIF ( 82 , 72 + 26 ) * 7 END * - 92 WHERE FALSE ) UNION SELECT 1 + 1 AS x
INTERSECT SELECT 3 ) AS x ) FOLLOWING ) FROM x AS x WHERE NOT ( - x ) BETWEEN
- x AND NULL ) , NULL ) ) OVER ( ORDER BY CASE WHEN x % 2 = 0 THEN 0 ELSE 1 END
RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) AS x FROM ( SELECT rank ( )
OVER ( PARTITION BY 'x' , 1 , 1 , 'x' ) AS x UNION SELECT 0 AS x UNION SELECT 3
AS x ) ORDER BY 1 , 2 , 3
+
+query T
+explain SELECT x , x , STDDEV_POP ( NULLIF ( ( WITH RECURSIVE x ( x ) AS (
WITH RECURSIVE x ( x ) AS ( SELECT 440 UNION SELECT 1 - x FROM x ) SELECT *
FROM generate_series ( 0 , 10 ) WHERE x < 5 ) SELECT - COUNT ( * ) OVER ( ROWS
BETWEEN 2 PRECEDING AND 3 >= ( SELECT CASE WHEN x = 12 THEN 1 ELSE CASE WHEN
length ( 'abcdefg' ) >= 1 THEN substr ( ( SELECT SUM ( 0 ) OVER ( ) ) , locate
( RPAD ( 'abc' , 1 , ( SELECT 1 ) > ANY ( 1 ) ) , 'joeuser@mydatabase@test' , 9
) , 1 ) ELSE 'nil' END END FROM ( SELECT 1 x HAVING COUNT ( * ) > ( SELECT -
CASE - ( 0 ) WHEN 18 + - 60 THEN NULL WHEN - CASE - 67 WHEN - 79 * ROW_NUMBER (
) OVER ( ORDER BY ( SELECT * FROM ( SELECT 1 AS x ) WHERE x IN ( SELECT (
row_number ( ) OVER ( ) ) ) ) ) <= -5.500000 / 30 - 32 * 69 THEN sign ( CAST(
'-9223372036854775808.5' AS FLOAT ) ) + 0 ELSE NULL END * ( 45 ) + 19 * 17 THEN
20 WHEN SUM ( 78 ) + 69 THEN 1234567954432.000000 % 119070 % '' * 74 ELSE
NULLIF ( 82 , 72 + 26 ) * 7 END * - 92 WHERE FALSE ) UNION SELECT 1
+ 1 AS x INTERSECT SELECT 3 ) AS x ) FOLLOWING ) FROM x AS x WHERE NOT ( - x )
BETWEEN - x AND NULL ) , NULL ) ) OVER ( ORDER BY CASE WHEN x % 2 = 0 THEN 0
ELSE 1 END RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) AS x FROM (
SELECT rank ( ) OVER ( PARTITION BY 'x' , 1 , 1 , 'x' ) AS x UNION SELECT 0 AS
x UNION SELECT 3 AS x ) ORDER BY 1 , 2 , 3
+----
+REF 1 (2)
+project (
+| semijoin (
+| | project (
+| | | [ boolean(1) "true" as "%11"."%11" ]
+| | ) [ tinyint(1) "1" as "x" ],
+| | project (
+| | | [ boolean(1) "true" as "%12"."%12" ]
+| | ) [ "sys"."row_number"(varchar["sys"."star"()], boolean(1) "false",
boolean(1) "false") as "%13"."%13" ]
+| ) [ (int(31)["x"]) + = ("%13"."%13") ]
+) [ "x" as "%15"."%15" ]
+project (
+| project (
+| | project (
+| | | project (
+| | | | project (
+| | | | | single project (
+| | | | | | single left outer join (
+| | | | | | | single project (
+| | | | | | | | single select (
+| | | | | | | | | single crossproduct (
+| | | | | | | | | | distinct munion (
+| | | | | | | | | | | project (
+| | | | | | | | | | | | project (
+| | | | | | | | | | | | | [ boolean(1) "true" as "%3"."%3" ]
+| | | | | | | | | | | | ) [ int(31)[tinyint(2) "3"] as "x" ]
+| | | | | | | | | | | ) [ "x" ],
+| | | | | | | | | | | project (
+| | | | | | | | | | | | select (
+| | | | | | | | | | | | | project (
+| | | | | | | | | | | | | | top N (
+| | | | | | | | | | | | | | | project (
+| | | | | | | | | | | | | | | | project (
+| | | | | | | | | | | | | | | | | [ boolean(1) "true" as "%1"."%1" ]
+| | | | | | | | | | | | | | | | ) [ varchar(1) "x" as "%35"."%35", tinyint(1)
"1" as "%36"."%36", tinyint(1) "1" as "%37"."%37", varchar(1) "x" as
"%40"."%40" ]
+| | | | | | | | | | | | | | | ) [ "%35"."%35", "%36"."%36", "%37"."%37",
"%40"."%40" ] [ "%35"."%35", "%36"."%36", "%37"."%37", "%40"."%40" ]
+| | | | | | | | | | | | | | ) [ int(31) "5" ]
+| | | | | | | | | | | | | ) [ "%35"."%35", "%36"."%36", "%37"."%37",
"%40"."%40", "sys"."rank"(varchar["sys"."star"()],
"sys"."diff"("sys"."diff"("sys"."diff"("sys"."diff"("%35"."%35"), "%36"."%36"),
"%37"."%37"), "%40"."%40"), boolean(1) "false") as "x" ]
+| | | | | | | | | | | | ) [ ("x") < (int(31) "5") ]
+| | | | | | | | | | | ) [ "x" ],
+| | | | | | | | | | | project (
+| | | | | | | | | | | | project (
+| | | | | | | | | | | | | [ boolean(1) "true" as "%2"."%2" ]
+| | | | | | | | | | | | ) [ int(31)[tinyint(1) "0"] as "x" ]
+| | | | | | | | | | | ) [ "x" ]
+| | | | | | | | | | ) [ "x" ],
+| | | | | | | | | | table ("sys"."generate_series"(tinyint(1) "0", tinyint(4)
"10"),
+| | | | | | | | | | ) [ "%5"."value" ]
+| | | | | | | | | ) [ ]
+| | | | | | | | ) [ (("sys"."sql_neg"("%5"."value")) <=
("sys"."sql_neg"("%5"."value")) <= (tinyint(7) NULL)) = (boolean(1) "false") ]
+| | | | | | | ) [ "x" ],
+| | | | | | | project (
+| | | | | | | | left outer join (
+| | | | | | | | | left outer join (
+| | | | | | | | | | distinct project (
+| | | | | | | | | | | project (
+| | | | | | | | | | | | join (
+| | | | | | | | | | | | | group by (
+| | | | | | | | | | | | | | [ boolean(1) "true" as "%6"."%6" ]
+| | | | | | | | | | | | | ) [ ] [ "sys"."count"() as "%7"."%7" ],
+| | | | | | | | | | | | | project (
+| | | | | | | | | | | | | | project (
+| | | | | | | | | | | | | | | project (
+| | | | | | | | | | | | | | | | project (
+| | | | | | | | | | | | | | | | | left outer join (
+| | | | | | | | | | | | | | | | | | group by (
+| | | | | | | | | | | | | | | | | | | select (
+| | | | | | | | | | | | | | | | | | | | [ boolean(1) NULL as "%10"."%10" ]
+| | | | | | | | | | | | | | | | | | | ) [ boolean(1) "false" ]
+| | | | | | | | | | | | | | | | | | ) [ ] [ "sys"."sum" no nil (tinyint(7)
"78") as "%20"."%20" ],
+| | | | | | | | | | | | | | | | | | & REF 1
+| | | | | | | | | | | | | | | | | ) [ ]
+| | | | | | | | | | | | | | | | ) [ "%20"."%20", "%15"."%15" as "%16"."%16" ]
+| | | | | | | | | | | | | | | ) [ "%20"."%20", "%16"."%16" ] [ "%16"."%16" ]
+| | | | | | | | | | | | | | ) [ "%20"."%20", "%16"."%16",
"sys"."row_number"(varchar["sys"."star"()], boolean(1) "false",
"sys"."diff"("%16"."%16")) as "%41"."%41" ]
+| | | | | | | | | | | | | ) [
"sys"."sql_mul"("sys"."sql_neg"("sys"."casewhen"(hugeint(127)["sys"."sql_neg"(tinyint(1)
"0")], hugeint(127)["sys"."sql_add"(tinyint(5) "18",
"sys"."sql_neg"(tinyint(6) "60"))], double(53) NULL,
hugeint(127)["sys"."sql_add"("sys"."sql_mul"("sys"."sql_neg"("sys"."casewhen"("sys"."sql_neg"(tinyint(7)
"67"), tinyint(7)[(decimal(18,6)["sys"."sql_mul"("sys"."sql_neg"(tinyint(7)
"79"), "%41"."%41")]) <=
(decimal(18,6)["sys"."sql_sub"(decimal(7,6)["sys"."sql_div"("sys"."sql_neg"(decimal(7,6)
"5500000"), tinyint(5) "30")],
decimal(10,6)[decimal(4)["sys"."sql_mul"(tinyint(6) "32", tinyint(7)
"69")]])])], smallint(8)["sys"."sign"(double(53)[varchar(22)
"-9223372036854775808.5"])], smallint(15) NULL)), tinyint(6) "45"),
int(10)["sys"."sql_mul"(tinyint(5) "19", tinyint(5) "17")])], double(53) "20",
"sys"."sql_add"("%20"."%20", hugeint(7) "69"),
"sys"."sql_mul"("sys"."mod"(double(53)["sys"."mod"(decimal(19,6)
"1234567954432000000", decimal(12,6)[decimal(6) "119070"]
)], double(53)[varchar ""]), double(53) "74"),
double(53)["sys"."sql_mul"("sys"."nullif"(smallint(8) "82",
smallint(8)[tinyint(7) "98"]), tinyint(3) "7")])),
double(53)["sys"."sql_neg"(tinyint(7) "92")]) as "%21"."%21" ]
+| | | | | | | | | | | | ) [ (double(53)["%7"."%7"]) > ("%21"."%21") ]
+| | | | | | | | | | | ) [ tinyint(1) "1" as "x" ]
+| | | | | | | | | | ) [ "x" as "x"."x" ],
+| | | | | | | | | | project (
+| | | | | | | | | | | [ boolean(1) "true" as "%25"."%25" ]
+| | | | | | | | | | ) [ "sys"."sum"(tinyint(1) "0", boolean(1) "false",
boolean(1) "false", int(3) "5", oid(63) "1@0", oid(63) "1@0") as "%27"."%27" ]
+| | | | | | | | | ) [ ],
+| | | | | | | | | project (
+| | | | | | | | | | [ boolean(1) "true" as "%30"."%30" ]
+| | | | | | | | | ) [ tinyint(1) "1" as "%31"."%31" ]
+| | | | | | | | ) [ ]
+| | | | | | | ) [ "sys"."case"(("x"."x") = (tinyint(4) "12"),
varchar(40)[tinyint(1) "1"], "sys"."case"(("sys"."length"(varchar(7)
"abcdefg")) >= (int(31) "1"), "sys"."substr"(varchar(40)["%27"."%27"],
"sys"."locate"("sys"."rpad"(varchar(3) "abc", int(1) "1",
varchar(5)[("%31"."%31") > (tinyint(1) "1")]), varchar(23)
"joeuser@mydatabase@test", int(4) "9"), int(1) "1"), varchar(40) "nil")) as
"%32"."%32" ]
+| | | | | | ) [ ]
+| | | | | ) [ "x", "sys"."sql_neg"("sys"."count"(varchar["sys"."star"()],
boolean(1) "false", "sys"."diff"("x"), boolean(1) "false", int(1) "0",
"sys"."window_bound"("sys"."diff"("x"), "sys"."star"(), int(1) "0", int(1) "0",
int(1) "0", tinyint(2) "2"), "sys"."window_bound"("sys"."diff"("x"),
"sys"."star"(), int(1) "0", int(2) "3", int(1) "0", bigint(63)[(tinyint(7) "3")
>= (tinyint(7)["%32"."%32"])]))) as "%33"."%33" ]
+| | | | ) [ "x", "sys"."nullif"("%33"."%33", bigint(63) NULL) as "%34"."%34",
"sys"."case"(("sys"."mod"("x", int(2) "2")) = (int(31) "0"), tinyint(1) "0",
tinyint(1) "1") as "%42"."%42" ]
+| | | ) [ "x", "%34"."%34", "%42"."%42" ] [ "%42"."%42" ]
+| | ) [ "x", "%34"."%34", "%42"."%42", "sys"."stddev_pop"("%34"."%34",
boolean(1) "false", "sys"."diff"("%42"."%42"), int(3) "4", oid(63) "1@0",
oid(63) "1@0") as "x" ]
+| ) [ "x", "x" ]
+) [ "x", "x", "x" ] [ "x", "x", "x" ]
+
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
@@ -37,4 +37,5 @@ KNOWNFAIL?7801-assertion-failure
7826-crash-in-optimizer
7832-strcmp-NULL-crash
KNOWNFAIL?7833-assertion-failure
+7834-BATsubcross-more-than-one-match
7836-use-after-free
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]