Changeset: 3940d6dfeed7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3940d6dfeed7
Modified Files:
        sql/server/rel_select.c
        sql/storage/store.c
        
sql/test/BugTracker-2016/Tests/incorrect_column_name_in_OR_condition_of_LEFT-JOIN_crashes_mserver.Bug-3909.stable.err
Branch: Jul2015
Log Message:

fixed crash in OR with incorrect column name (ie BUG 3909)


diffs (55 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
@@ -3100,13 +3100,16 @@ rel_logical_exp(mvc *sql, sql_rel *rel, 
 
                        lr = rel_select_copy(sql->sa, lr, sa_list(sql->sa));
                        lr = rel_logical_exp(sql, lr, lo, f);
-                       lexps = lr?lr->exps:NULL;
-                       lr = lr->l;
-
+                       if (lr) {
+                               lexps = lr->exps;
+                               lr = lr->l;
+                       }
                        rr = rel_select_copy(sql->sa, rr, sa_list(sql->sa));
                        rr = rel_logical_exp(sql, rr, ro, f);
-                       rexps = rr?rr->exps:NULL;
-                       rr = rr->l;
+                       if (rr) {
+                               rexps = rr->exps;
+                               rr = rr->l;
+                       }
                        sql->pushdown = pushdown;
                } else {
                        lr = rel_logical_exp(sql, lr, lo, f);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1611,6 +1611,8 @@ store_manager(void)
                while (store_nr_active) { /* find a moment to flush */
                        MT_lock_unset(&bs_lock, "store_manager");
                        MT_sleep_ms(50);
+                       if (GDKexiting())
+                               continue;
                        MT_lock_set(&bs_lock, "store_manager");
                }
                logging = 1;
diff --git 
a/sql/test/BugTracker-2016/Tests/incorrect_column_name_in_OR_condition_of_LEFT-JOIN_crashes_mserver.Bug-3909.stable.err
 
b/sql/test/BugTracker-2016/Tests/incorrect_column_name_in_OR_condition_of_LEFT-JOIN_crashes_mserver.Bug-3909.stable.err
--- 
a/sql/test/BugTracker-2016/Tests/incorrect_column_name_in_OR_condition_of_LEFT-JOIN_crashes_mserver.Bug-3909.stable.err
+++ 
b/sql/test/BugTracker-2016/Tests/incorrect_column_name_in_OR_condition_of_LEFT-JOIN_crashes_mserver.Bug-3909.stable.err
@@ -30,7 +30,13 @@ stderr of test 'incorrect_column_name_in
 # 12:49:55 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-29239" "--port=35896"
 # 12:49:55 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-29239/.s.monetdb.35896
+MAPI  = (monetdb) /var/tmp/mtest-15285/.s.monetdb.30430
+QUERY = CREATE TABLE foo (id INTEGER, bar1 INTEGER, bar2 INTEGER);
+ERROR = !CREATE TABLE: name 'foo' already in use
+MAPI  = (monetdb) /var/tmp/mtest-15285/.s.monetdb.30430
+QUERY = CREATE TABLE bar (barid INTEGER, value CHAR(10));
+ERROR = !CREATE TABLE: name 'bar' already in use
+MAPI  = (monetdb) /var/tmp/mtest-15285/.s.monetdb.30430
 QUERY = SELECT B.value, F.id FROM bar B LEFT JOIN foo F ON (F.bar1 = B.barid 
OR F.bar2 = B.id);
 ERROR = !SELECT: no such column 'b.id' 
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to