Changeset: 18cd5efc7681 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=18cd5efc7681 Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_statement.c sql/test/pg_regress/Tests/timestamp.stable.out sql/test/pg_regress/Tests/timestamptz.stable.out Branch: default Log Message:
Fixes for crashing SQLancer queries (there's more to do) diffs (80 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -1071,7 +1071,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l } else { if (r2) { /* handle all cases in stmt_uselect, reducing, non reducing, scalar etc */ - if (l->nrcols == 0) + if (l->nrcols == 0 && left) l = stmt_const(be, bin_first_column(be, left), l); s = stmt_uselect2(be, l, r, r2, (comp_type)e->flag, sel, is_anti(e), reduce); } else { diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -1425,7 +1425,7 @@ stmt_genselect(backend *be, stmt *lops, s->op2 = rops; s->op3 = sub; s->flag = cmp_filter; - s->nrcols = (lops->nrcols == 2) ? 2 : 1; + s->nrcols = lops->nrcols; s->nr = getDestVar(q); s->q = q; s->cand = sub; @@ -1582,7 +1582,7 @@ stmt_uselect(backend *be, stmt *op1, stm s->op2 = op2; s->op3 = sub; s->flag = cmptype; - s->nrcols = (op1->nrcols == 2) ? 2 : 1; + s->nrcols = op1->nrcols; s->nr = getDestVar(q); s->q = q; s->cand = sub; @@ -1822,7 +1822,7 @@ stmt_uselect2(backend *be, stmt *op1, st s->op3 = op3; s->op4.stval = sub; s->flag = cmp; - s->nrcols = (op1->nrcols == 2) ? 2 : 1; + s->nrcols = op1->nrcols; s->nr = getDestVar(q); s->q = q; s->cand = sub; diff --git a/sql/test/pg_regress/Tests/timestamp.stable.out b/sql/test/pg_regress/Tests/timestamp.stable.out --- a/sql/test/pg_regress/Tests/timestamp.stable.out +++ b/sql/test/pg_regress/Tests/timestamp.stable.out @@ -74,13 +74,13 @@ stdout of test 'timestamp` in directory % 1 # length [ 1 ] #SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = cast((select test_current_date from test_current_date) + interval '1' DAY as timestamp); -% sys. # table_name +% . # table_name % one # name % bigint # type % 1 # length [ 1 ] #SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = cast((select test_current_date from test_current_date) - interval '1' DAY as timestamp); -% sys. # table_name +% . # table_name % one # name % bigint # type % 1 # length diff --git a/sql/test/pg_regress/Tests/timestamptz.stable.out b/sql/test/pg_regress/Tests/timestamptz.stable.out --- a/sql/test/pg_regress/Tests/timestamptz.stable.out +++ b/sql/test/pg_regress/Tests/timestamptz.stable.out @@ -43,13 +43,13 @@ stdout of test 'timestamptz` in director % 1 # length [ 1 ] #SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = cast((select test_current_date from test_current_date) + interval '1' DAY as timestamp); -% sys. # table_name +% . # table_name % one # name % bigint # type % 1 # length [ 1 ] #SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = cast((select test_current_date from test_current_date) - interval '1' DAY as timestamp); -% sys. # table_name +% . # table_name % one # name % bigint # type % 1 # length _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list