Changeset: 0bec5a69db2c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0bec5a69db2c
Branch: ustr
Log Message:

Merge with default branch.


diffs (40 lines):

diff --git a/sql/test/BugTracker-2026/Tests/7862-rel_has_freevar-crash.test 
b/sql/test/BugTracker-2026/Tests/7862-rel_has_freevar-crash.test
--- a/sql/test/BugTracker-2026/Tests/7862-rel_has_freevar-crash.test
+++ b/sql/test/BugTracker-2026/Tests/7862-rel_has_freevar-crash.test
@@ -14,13 +14,32 @@ NULL
 0
 
 -- Segmentation fault. in rel_has_freevar (sql=0x7f0a081844e0, rel=0x0) at 
sql/server/rel_unnest.c:170    if (is_basetable(rel->op)) {  -- cause of seg 
fault: rel=0x0
+-- Adapted version of the query to reduce execution time of test from 6.3 secs 
to 0.7 secs.
+-- This is done by removing the 'SELECT 10 AS x UNION ' part from the first 
FROM clause.
+-- When using EXPLAIN SHOW DETAILS it shows the original query creates a 
crossproduct on the virtual table 10 times, so internally computes 7^10 = 
282475249 rows (282 million).
+-- By reducing the initial virtual table with one row it now computes 6^10 = 
60466176 rows (60 million), which apparently executes much faster, without 
changing the complex logic.
 query II rowsort
+-- EXPLAIN SHOW DETAILS
 SELECT x , CASE WHEN x > 12 THEN 1 ELSE 0 END AS x
-  FROM ( SELECT 10 AS x UNION SELECT 11 AS x GROUP BY CUBE ( x , x ) UNION 
SELECT 12 AS x UNION SELECT 13 AS x )
- WHERE x IN ( WITH RECURSIVE x ( row_number ) AS ( SELECT 1 UNION SELECT x + 1 
FROM x WHERE x < 20 ) SELECT x AS x FROM x WHERE x NOT IN ( 8 , 12 , CAST( 
0.000000 AS FLOAT ) , 24 , 32 ) OR x = 512 GROUP BY x HAVING NOT x < ANY ( CASE 
WHEN NULLIF ( ( WITH RECURSIVE x ( x ) AS ( SELECT 1 UNION SELECT x + 1 FROM ( 
WITH RECURSIVE x ( x ) AS ( SELECT CASE WHEN x < - 13 * - ( 0 ) + 39 * - ( 
SELECT 1 ) + 0.100000 + 0.100000 THEN CAST( -0 AS DOUBLE ) END UNION SELECT 
ROUND ( 70 , 2 ) FROM x ) SELECT * FROM ( SELECT 9 AS x FROM x ) WHERE x NOT IN 
( 8 ) ) WHERE x < 8 ) SELECT - COUNT ( * ) FROM x AS x WHERE NOT ( - x ) 
BETWEEN - x AND NULL ) , NULL ) IS NULL THEN 1 ELSE 0 END AND 6 IN ( SELECT MAX 
( x ) , x < -1234567 , MAX ( x ) , MIN ( x ) , MAX ( x ) , MIN ( x ) ORDER BY 1 
, 2 LIMIT 0 OFFSET 0 ) ) )
+--  FROM ( SELECT 10 AS x UNION SELECT 11 AS x GROUP BY CUBE ( x , x ) UNION 
SELECT 12 AS x UNION SELECT 13 AS x )  -- original FROM clause
+  FROM ( SELECT 11 AS x GROUP BY CUBE ( x , x ) UNION SELECT 12 AS x UNION 
SELECT 13 AS x )  -- changed FROM clause to reduce execution time
+ WHERE x IN (
+     WITH RECURSIVE x ( row_number ) AS ( SELECT 1 UNION SELECT x + 1 FROM x 
WHERE x < 20 )
+     SELECT x AS x FROM x
+      WHERE x NOT IN ( 8 , 12 , CAST( 0.000000 AS FLOAT ) , 24 , 32 )
+         OR x = 512
+      GROUP BY x
+      HAVING NOT x < ANY ( CASE WHEN NULLIF ( (
+                           WITH RECURSIVE x ( x ) AS ( SELECT 1 UNION SELECT x 
+ 1 FROM (
+                                                       WITH RECURSIVE x ( x ) 
AS ( SELECT CASE WHEN x < - 13 * - ( 0 ) + 39 * - ( SELECT 1 ) + 0.100000 + 
0.100000 THEN CAST( -0 AS DOUBLE ) END
+                                                                               
    UNION SELECT ROUND ( 70 , 2 ) FROM x )
+                                                                               
     SELECT * FROM ( SELECT 9 AS x FROM x ) WHERE x NOT IN ( 8 ) )
+                                                       WHERE x < 8 )
+                           SELECT - COUNT ( * ) FROM x AS x
+                           WHERE NOT ( - x ) BETWEEN - x AND NULL ) , NULL ) 
IS NULL
+                           THEN 1 ELSE 0 END
+                           AND 6 IN ( SELECT MAX ( x ) , x < -1234567 , MAX ( 
x ) , MIN ( x ) , MAX ( x ) , MIN ( x ) ORDER BY 1 , 2 LIMIT 0 OFFSET 0 ) ) )
 ----
-10
-0
 11
 0
 12
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to