Changeset: 5565adca4dd6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5565adca4dd6 Modified Files: sql/backends/monet5/rel_bin.c sql/jdbc/tests/Tests/Test_PSmetadata.stable.out sql/server/rel_dump.c sql/server/rel_select.c sql/test/ADT2006/Tests/bram.stable.out sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check5.stable.out sql/test/pg_regress/Tests/strings_cast.stable.err sql/test/pg_regress/Tests/strings_cast.stable.out Branch: default Log Message:
merged with Jan2014 fixed out of bounds write. diffs (truncated from 399 to 300 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 @@ -651,7 +651,8 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left } ops = sa_list(sql->sa); append(ops, r); - append(ops, r2); + if (r2) + append(ops, r2); r = stmt_list(sql->sa, ops); s = stmt_genselect(sql->sa, l, r, e->f, sel); if (s && is_anti(e)) diff --git a/sql/jdbc/tests/Tests/Test_PSmetadata.stable.out b/sql/jdbc/tests/Tests/Test_PSmetadata.stable.out --- a/sql/jdbc/tests/Tests/Test_PSmetadata.stable.out +++ b/sql/jdbc/tests/Tests/Test_PSmetadata.stable.out @@ -53,7 +53,7 @@ Ready. 0. false false 0. 6 columns: 6 1. mTests_sql_jdbc_tests - classname java.lang.Integer + classname java.lang.Short displaysize 8 label intnull name intnull diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -323,12 +323,11 @@ rel_print_(mvc *sql, stream *fout, sql_ case op_table: print_indent(sql, fout, depth); mnstr_printf(fout, "table "); - /* - if (rel->l) - rel_print_(sql, fout, rel->l, depth+1, refs); - */ + if (rel->r) exp_print(sql, fout, rel->r, depth, 1, 0); + if (rel->l) + rel_print_(sql, fout, rel->l, 0, refs); if (rel->exps) exps_print(sql, fout, rel->exps, depth, 1, 0); break; 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 @@ -3308,6 +3308,7 @@ rel_unop(mvc *sql, sql_rel **rel, symbol sql->errstr[0] = '\0'; return rel_aggr(sql, rel, se, fs); } + if (sname) s = mvc_bind_schema(sql, sname); if (!s) @@ -3408,8 +3409,8 @@ rel_binop_(mvc *sql, sql_exp *l, sql_exp } else if (f->func->fix_scale == SCALE_MUL) { l = exp_sum_scales(sql, f, l, r); } else if (f->func->fix_scale == DIGITS_ADD) { - sql_arg *res = f->res->h->data; - res->type.digits = (t1->digits && t2->digits)?t1->digits + t2->digits:0; + sql_subtype *res = f->res->h->data; + res->digits = (t1->digits && t2->digits)?t1->digits + t2->digits:0; } if (card == card_relation && l->card > CARD_ATOM) { sql_subaggr *zero_or_one = sql_bind_aggr(sql->sa, sql->session->schema, "zero_or_one", exp_subtype(l)); @@ -3470,8 +3471,8 @@ rel_binop_(mvc *sql, sql_exp *l, sql_exp } else if (f->func->fix_scale == SCALE_MUL) { l = exp_sum_scales(sql, f, l, r); } else if (f->func->fix_scale == DIGITS_ADD) { - sql_arg *res = f->res->h->data; - res->type.digits = (t1->digits && t2->digits)?t1->digits + t2->digits:0; + sql_subtype *res = f->res->h->data; + res->digits = (t1->digits && t2->digits)?t1->digits + t2->digits:0; } return exp_binop(sql->sa, l, r, f); } diff --git a/sql/test/ADT2006/Tests/bram.stable.out b/sql/test/ADT2006/Tests/bram.stable.out --- a/sql/test/ADT2006/Tests/bram.stable.out +++ b/sql/test/ADT2006/Tests/bram.stable.out @@ -476,7 +476,7 @@ Ready. % .L6, .L6 # table_name % L1, average_height # name % char, char # type -% 6, 0 # length +% 6, 4 # length [ "blonde", "5'7\"" ] [ "brown", "5'5\"" ] #SELECT name as victim FROM victim WHERE date_of_birth is null or date_of_birth = 'unknown'; diff --git a/sql/test/leaks/Tests/check1.stable.out b/sql/test/leaks/Tests/check1.stable.out --- a/sql/test/leaks/Tests/check1.stable.out +++ b/sql/test/leaks/Tests/check1.stable.out @@ -41,11 +41,11 @@ Ready. [ "oid", "bit", 40 ] [ "oid", "bit", 40 ] [ "oid", "bit", 286 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bte", 3654 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bte", 3656 ] [ "oid", "int", 0 ] [ "oid", "int", 0 ] [ "oid", "int", 0 ] @@ -99,15 +99,15 @@ Ready. [ "oid", "int", 286 ] [ "oid", "int", 286 ] [ "oid", "int", 286 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] [ "oid", "lng", 0 ] [ "oid", "lng", 0 ] [ "oid", "lng", 0 ] @@ -188,11 +188,11 @@ Ready. [ "oid", "str", 286 ] [ "oid", "str", 286 ] [ "oid", "str", 286 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 3654 ] -[ "oid", "str", 3654 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 3656 ] +[ "oid", "str", 3656 ] [ "oid", "timestamp", 0 ] #select 'transient', count(*) from bbp() as bbp where kind like 'tran%'; % .L1, .L2 # table_name diff --git a/sql/test/leaks/Tests/check2.stable.out b/sql/test/leaks/Tests/check2.stable.out --- a/sql/test/leaks/Tests/check2.stable.out +++ b/sql/test/leaks/Tests/check2.stable.out @@ -41,11 +41,11 @@ Ready. [ "oid", "bit", 40 ] [ "oid", "bit", 40 ] [ "oid", "bit", 286 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bte", 3654 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bte", 3656 ] [ "oid", "int", 0 ] [ "oid", "int", 0 ] [ "oid", "int", 0 ] @@ -99,15 +99,15 @@ Ready. [ "oid", "int", 286 ] [ "oid", "int", 286 ] [ "oid", "int", 286 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] [ "oid", "lng", 0 ] [ "oid", "lng", 0 ] [ "oid", "lng", 0 ] @@ -188,11 +188,11 @@ Ready. [ "oid", "str", 286 ] [ "oid", "str", 286 ] [ "oid", "str", 286 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 3654 ] -[ "oid", "str", 3654 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 3656 ] +[ "oid", "str", 3656 ] [ "oid", "timestamp", 0 ] #select 'transient', count(*) from bbp() as bbp where kind like 'tran%'; % .L1, .L2 # table_name diff --git a/sql/test/leaks/Tests/check3.stable.out b/sql/test/leaks/Tests/check3.stable.out --- a/sql/test/leaks/Tests/check3.stable.out +++ b/sql/test/leaks/Tests/check3.stable.out @@ -41,11 +41,11 @@ Ready. [ "oid", "bit", 41 ] [ "oid", "bit", 41 ] [ "oid", "bit", 288 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bte", 3654 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bte", 3656 ] [ "oid", "int", 0 ] [ "oid", "int", 0 ] [ "oid", "int", 0 ] @@ -99,15 +99,15 @@ Ready. [ "oid", "int", 288 ] [ "oid", "int", 288 ] [ "oid", "int", 288 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 1307 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] -[ "oid", "int", 3654 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 1308 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] +[ "oid", "int", 3656 ] [ "oid", "lng", 0 ] [ "oid", "lng", 0 ] [ "oid", "lng", 0 ] @@ -188,11 +188,11 @@ Ready. [ "oid", "str", 288 ] [ "oid", "str", 288 ] [ "oid", "str", 288 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 1307 ] -[ "oid", "str", 3654 ] -[ "oid", "str", 3654 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 1308 ] +[ "oid", "str", 3656 ] +[ "oid", "str", 3656 ] [ "oid", "timestamp", 0 ] #select 'transient', count(*) from bbp() as bbp where kind like 'tran%'; % .L1, .L2 # table_name diff --git a/sql/test/leaks/Tests/check4.stable.out b/sql/test/leaks/Tests/check4.stable.out --- a/sql/test/leaks/Tests/check4.stable.out +++ b/sql/test/leaks/Tests/check4.stable.out @@ -41,11 +41,11 @@ Ready. [ "oid", "bit", 42 ] [ "oid", "bit", 42 ] [ "oid", "bit", 290 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bit", 1307 ] -[ "oid", "bte", 3654 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bit", 1308 ] +[ "oid", "bte", 3656 ] [ "oid", "int", 0 ] [ "oid", "int", 0 ] [ "oid", "int", 0 ] @@ -99,15 +99,15 @@ Ready. [ "oid", "int", 290 ] [ "oid", "int", 290 ] [ "oid", "int", 290 ] -[ "oid", "int", 1307 ] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list