Changeset: cfab286d74e7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cfab286d74e7
Modified Files:
        sql/server/rel_select.c
        sql/test/SQLancer/Tests/sqlancer07.sql
        sql/test/SQLancer/Tests/sqlancer07.stable.out
Branch: octbugs
Log Message:

Protect from null pointer


diffs (58 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -5051,12 +5051,12 @@ rel_value_exp(sql_query *query, sql_rel 
                                e = exp_values(query->sql->sa, r->exps);
                        } else {
                                e = r->exps->h->data;
-                               if (*rel && !exp_has_rel(e)) {
+                               if (rel && *rel && !exp_has_rel(e)) {
                                        rel_bind_var(query->sql, *rel, e);
                                        if (exp_has_freevar(query->sql, e) && 
is_sql_aggr(f)) {
                                                sql_rel *outer = 
query_fetch_outer(query, exp_has_freevar(query->sql, e)-1);
                                                
query_outer_pop_last_used(query, exp_has_freevar(query->sql, e)-1);
-                                               reset_outer(outer);
+                                               reset_outer(outer);
                                        }
                                }
                        }
diff --git a/sql/test/SQLancer/Tests/sqlancer07.sql 
b/sql/test/SQLancer/Tests/sqlancer07.sql
--- a/sql/test/SQLancer/Tests/sqlancer07.sql
+++ b/sql/test/SQLancer/Tests/sqlancer07.sql
@@ -172,6 +172,9 @@ PREPARE SELECT ?, CASE 'weHtU' WHEN (val
 PREPARE SELECT DISTINCT ?, CAST(CASE least(?, r'weHtU') WHEN ? THEN ? WHEN ? 
THEN ? WHEN (VALUES (?)) THEN r'G' ELSE ? END AS DATE) WHERE (?) IS NOT NULL 
LIMIT 519007555986016405;
        -- cannot have a parameter for IS NOT NULL operator
 
+values (1,(select 2));
+       -- 1 2
+
 START TRANSACTION;
 CREATE TABLE "t0" ("c0" INTEGER,"c1" DECIMAL(18,3));
 INSERT INTO "t0" VALUES (72238796, 0.553);
diff --git a/sql/test/SQLancer/Tests/sqlancer07.stable.out 
b/sql/test/SQLancer/Tests/sqlancer07.stable.out
--- a/sql/test/SQLancer/Tests/sqlancer07.stable.out
+++ b/sql/test/SQLancer/Tests/sqlancer07.stable.out
@@ -211,8 +211,8 @@ stdout of test 'sqlancer07` in directory
 % bigint # type
 % 1 # length
 #SELECT CAST(SUM(count) AS BIGINT) FROM (SELECT ALL CAST(((((t0.c0)%((SELECT 
DISTINCT t0.c0 FROM t1, t0, t2 WHERE FALSE))))<=(t1.c0)) AS INT) as count FROM 
t2, t0 CROSS JOIN t1) as res;
-% .%3 # table_name
-% %3 # name
+% .%4 # table_name
+% %4 # name
 % bigint # type
 % 1 # length
 [ NULL ]
@@ -232,6 +232,12 @@ stdout of test 'sqlancer07` in directory
 % 7,   1,      1,      0,      2,      2 # length
 [ "tinyint",   1,      0,      "",     "%2",   "%2"    ]
 [ "boolean",   1,      0,      NULL,   NULL,   NULL    ]
+#values (1,(select 2));
+% .%1, .%2 # table_name
+% %1,  %2 # name
+% tinyint,     tinyint # type
+% 1,   1 # length
+[ 1,   2       ]
 #START TRANSACTION;
 #CREATE TABLE "t0" ("c0" INTEGER,"c1" DECIMAL(18,3));
 #INSERT INTO "t0" VALUES (72238796, 0.553);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to