Changeset: db0fe3dd4300 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/db0fe3dd4300
Modified Files:
        sql/server/rel_optimize_sel.c
        sql/test/BugTracker-2026/Tests/7835-strcmp-NULL-crash.test
        sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:

Fix for #7835
Add checks on NULL before doing strcmp().


diffs (43 lines):

diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c
--- a/sql/server/rel_optimize_sel.c
+++ b/sql/server/rel_optimize_sel.c
@@ -3631,7 +3631,9 @@ filter_column_in_partition_by_columns(sq
                        char *keyColTableName = keyCol->l;
                        char *keyColColumnName = keyCol->r;
 
-                       if (!strcmp(tableName, keyColTableName) && 
!strcmp(columnName, keyColColumnName)) {
+                       if (keyColTableName != NULL && keyColColumnName != NULL 
&&
+                           !strcmp(tableName, keyColTableName) &&
+                           !strcmp(columnName, keyColColumnName)) {
                                /* match */
                                return true;
                        }
diff --git a/sql/test/BugTracker-2026/Tests/7835-strcmp-NULL-crash.test 
b/sql/test/BugTracker-2026/Tests/7835-strcmp-NULL-crash.test
--- a/sql/test/BugTracker-2026/Tests/7835-strcmp-NULL-crash.test
+++ b/sql/test/BugTracker-2026/Tests/7835-strcmp-NULL-crash.test
@@ -1,4 +1,14 @@
-query II
+query II rowsort
 SELECT x , CASE WHEN x = 12 THEN 1 ELSE x * ( 3 - x ) END AS x FROM ( SELECT 
10 AS x UNION SELECT 11 AS x UNION SELECT 12 AS x UNION SELECT 10 AS x GROUP BY 
x HAVING NOT x < ANY ( NULLIF ( ( WITH RECURSIVE x ( x ) AS ( SELECT 1 UNION 
SELECT x + 1 FROM x WHERE x < 8 ) SELECT - COUNT ( * ) FROM ( WITH RECURSIVE x 
( x ) AS ( SELECT ( - 70 ) - - 99 * - 0 AS x UNION SELECT x + 1 FROM ( SELECT 
rank ( ) OVER ( ) AS x FROM ( SELECT count ( * ) , substr ( x , count ( x ) , 
NULL ) AS x FROM x ) ) AS x WHERE x < 20 ) SELECT x FROM x WHERE x NOT IN ( 8 , 
12 , 16 , 24 , 32 ) OR x = 512 ) WHERE NOT 218 BETWEEN - x AND NULL ) , NULL ) 
IS NULL ) UNION SELECT 11 AS x UNION SELECT CAST( '-1.0' AS NUMERIC ) UNION 
SELECT 265 AS x )
 ----
+-1
+-4
+10
+-70
+11
+-88
+12
+1
+265
+-69430
 
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
@@ -38,5 +38,5 @@ KNOWNFAIL?7801-assertion-failure
 7832-strcmp-NULL-crash
 KNOWNFAIL?7833-assertion-failure
 7834-BATsubcross-more-than-one-match
-KNOWNFAIL?7835-strcmp-NULL-crash
+7835-strcmp-NULL-crash
 7836-use-after-free
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to