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