MonetDB: Jul2015 - fix bug 3838, ie handle outer joins with updates
Changeset: 2153348bd11a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2153348bd11a Modified Files: monetdb5/optimizer/opt_mergetable.c sql/server/rel_optimizer.c sql/server/rel_select.c sql/server/rel_updates.c sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.err sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.out sql/test/BugTracker-2015/Tests/update_with_without_parenthesis.Bug-3838.stable.out Branch: Jul2015 Log Message: fix bug 3838, ie handle outer joins with updates diffs (truncated from 332 to 300 lines): diff --git a/monetdb5/optimizer/opt_mergetable.c b/monetdb5/optimizer/opt_mergetable.c --- a/monetdb5/optimizer/opt_mergetable.c +++ b/monetdb5/optimizer/opt_mergetable.c @@ -847,6 +847,7 @@ mat_group_project(MalBlkPtr mb, InstrPtr getArg(q,1) = getArg(mat[e].mi,k); getArg(q,2) = getArg(mat[a].mi,k); pushInstruction(mb,q); + setPartnr(mb, getArg(mat[a].mi,k), getArg(q,0), k); /* pack the result into a mat */ ai1 = pushArgument(mb,ai1,getArg(q,0)); @@ -1122,6 +1123,9 @@ mat_group_new(MalBlkPtr mb, InstrPtr p, getArg(q, 2) = newTmpVariable(mb, tp2); getArg(q, 3) = getArg(ml->v[b].mi, i); pushInstruction(mb, q); + setPartnr(mb, getArg(ml->v[b].mi,i), getArg(q,0), i); + setPartnr(mb, getArg(ml->v[b].mi,i), getArg(q,1), i); + setPartnr(mb, getArg(ml->v[b].mi,i), getArg(q,2), i); /* add result to mats */ r0 = pushArgument(mb,r0,getArg(q,0)); @@ -1132,9 +1136,9 @@ mat_group_new(MalBlkPtr mb, InstrPtr p, setModuleId(r, algebraRef); setFunctionId(r, leftfetchjoinRef); getArg(r, 0) = newTmpVariable(mb, atp); - r = pushArgument(mb, r, getArg(q,1)); r = pushArgument(mb, r, getArg(ml->v[b].mi,i)); + setPartnr(mb, getArg(ml->v[b].mi,i), getArg(r,0), i); pushInstruction(mb,r); attr = pushArgument(mb, attr, getArg(r, 0)); @@ -1206,6 +1210,9 @@ mat_group_derive(MalBlkPtr mb, InstrPtr getArg(q,3) = getArg(ml->v[b].mi,i); getArg(q,4) = getArg(ml->v[g].mi,i); pushInstruction(mb,q); + setPartnr(mb, getArg(ml->v[b].mi,i), getArg(q,0), i); + setPartnr(mb, getArg(ml->v[b].mi,i), getArg(q,1), i); + setPartnr(mb, getArg(ml->v[b].mi,i), getArg(q,2), i); /* add result to mats */ r0 = pushArgument(mb,r0,getArg(q,0)); @@ -1216,9 +1223,9 @@ mat_group_derive(MalBlkPtr mb, InstrPtr setModuleId(r, algebraRef); setFunctionId(r, leftfetchjoinRef); getArg(r, 0) = newTmpVariable(mb, atp); - r = pushArgument(mb, r, getArg(q,1)); r = pushArgument(mb, r, getArg(ml->v[b].mi,i)); + setPartnr(mb, getArg(ml->v[b].mi,i), getArg(r,0), i); pushInstruction(mb,r); attr = pushArgument(mb, attr, getArg(r, 0)); diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -7094,6 +7094,20 @@ rel_add_identity(mvc *sql, sql_rel *rel, return rel; } +static int +exps_from_rel( list *exps, sql_rel *rel ) +{ + node *n; + + if (!rel || !exps) + return 0; + for (n=exps->h; n; n=n->next) { + sql_exp *e = n->data; + if (rel_find_exp(rel, e) ) + return 1; + } + return 0; +} /* push down apply until its gone */ static sql_rel * @@ -7145,6 +7159,31 @@ rel_apply_rewrite(int *changes, mvc *sql (*changes)++; return nrel; } + if (rel->flag == APPLY_LOJ && r->op == op_project && exps_from_rel(r->exps, rel->l)) { + sql_exp *ident, *le = NULL; + sql_rel *nrel = rel_add_identity(sql, l, ), *arel = rel; + + rel->l = nrel; + ident = exp_column(sql->sa, exp_relname(ident), exp_name(ident), exp_subtype(ident), ident->card, has_nil(ident), is_intern(ident)); + + rel = rel_project(sql->sa, rel, rel_projections(sql, rel, NULL, 1, 1)); + + /* look up the identity column and label these */ + le = exps_bind_column2(rel->exps, exp_relname(ident), exp_name(ident)); + exp_label(sql->sa, le, ++sql->label); + /* zap rel->exps name hash tables as we changed names */ + rel->exps->ht = NULL; + le = exp_column(sql->sa, exp_relname(le), exp_name(le), exp_subtype(le), le->card, has_nil(le), is_intern(le)); + +
MonetDB: mosaic - Merge with default
Changeset: 373aeeb182df for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=373aeeb182df Added Files: clients/ruby/Tests/All clients/ruby/Tests/gemtest.rb clients/ruby/Tests/gemtest.stable.err clients/ruby/Tests/gemtest.stable.out clients/ruby/Tests/rubytest.rb.in clients/ruby/Tests/rubytest.stable.err clients/ruby/Tests/rubytest.stable.out clients/ruby/doc/readme.txt clients/ruby/lib/example.rb clients/ruby/ruby-monetdb-sql-0.2.gemspec monetdb5/mal/Tests/tst1602.timeout monetdb5/modules/mal/Tests/bigsum.timeout monetdb5/optimizer/opt_candidates.c monetdb5/optimizer/opt_candidates.h sql/backends/monet5/Tests/rapi17.stable.err sql/backends/monet5/Tests/rapi17.stable.out sql/backends/monet5/Tests/rapi18.stable.err sql/backends/monet5/Tests/rapi18.stable.out sql/backends/monet5/Tests/rapi19.sql sql/backends/monet5/Tests/rapi19.stable.err sql/backends/monet5/Tests/rapi19.stable.out sql/backends/monet5/vaults/bam/85_bam.mal sql/backends/monet5/vaults/bam/85_bam.sql sql/backends/monet5/vaults/bam/BAMRecipe.pdf sql/backends/monet5/vaults/bam/Makefile.ag sql/backends/monet5/vaults/bam/Tests/All sql/backends/monet5/vaults/bam/Tests/bam.py sql/backends/monet5/vaults/bam/Tests/bam_export.SQL.py sql/backends/monet5/vaults/bam/Tests/bam_lib.reqtests sql/backends/monet5/vaults/bam/Tests/bam_lib.sql sql/backends/monet5/vaults/bam/Tests/bam_lib.stable.err sql/backends/monet5/vaults/bam/Tests/bam_lib.stable.out sql/backends/monet5/vaults/bam/Tests/bam_lib_mal.mal sql/backends/monet5/vaults/bam/Tests/bam_lib_mal.stable.err sql/backends/monet5/vaults/bam/Tests/bam_lib_mal.stable.out sql/backends/monet5/vaults/bam/Tests/bam_loader_file.SQL.py sql/backends/monet5/vaults/bam/Tests/bam_loader_file.stable.err sql/backends/monet5/vaults/bam/Tests/bam_loader_file.stable.out sql/backends/monet5/vaults/bam/Tests/bam_loader_files.SQL.py sql/backends/monet5/vaults/bam/Tests/bam_loader_files.stable.err sql/backends/monet5/vaults/bam/Tests/bam_loader_files.stable.out sql/backends/monet5/vaults/bam/Tests/bam_loader_repos.SQL.py sql/backends/monet5/vaults/bam/Tests/bam_loader_repos.stable.err sql/backends/monet5/vaults/bam/Tests/bam_loader_repos.stable.out sql/backends/monet5/vaults/bam/Tests/check_files.reqtests sql/backends/monet5/vaults/bam/Tests/check_files.sql sql/backends/monet5/vaults/bam/Tests/check_files.stable.err sql/backends/monet5/vaults/bam/Tests/check_files.stable.out sql/backends/monet5/vaults/bam/Tests/check_files_exact.sql sql/backends/monet5/vaults/bam/Tests/check_files_exact.stable.err sql/backends/monet5/vaults/bam/Tests/check_files_exact.stable.out sql/backends/monet5/vaults/bam/Tests/coverage_usecase.reqtests sql/backends/monet5/vaults/bam/Tests/coverage_usecase.sql sql/backends/monet5/vaults/bam/Tests/drop_last_files.SQL.py sql/backends/monet5/vaults/bam/Tests/drop_last_files.stable.err sql/backends/monet5/vaults/bam/Tests/drop_last_files.stable.out sql/backends/monet5/vaults/bam/Tests/files/file1.bam sql/backends/monet5/vaults/bam/Tests/files/file2.sam sql/backends/monet5/vaults/bam/Tests/files/queryname/file1.bam sql/backends/monet5/vaults/bam/Tests/files/queryname/file2.sam sql/backends/monet5/vaults/bam/Tests/mergetable.reqtests sql/backends/monet5/vaults/bam/Tests/mergetable.sql sql/backends/monet5/vaults/bam/Tests/mergetable.stable.err sql/backends/monet5/vaults/bam/Tests/mergetable.stable.out sql/backends/monet5/vaults/bam/Tests/query1.1.reqtests sql/backends/monet5/vaults/bam/Tests/query1.1.sql sql/backends/monet5/vaults/bam/Tests/query1.1.stable.err sql/backends/monet5/vaults/bam/Tests/query1.1.stable.out sql/backends/monet5/vaults/bam/Tests/query1.2.reqtests sql/backends/monet5/vaults/bam/Tests/query1.2.sql sql/backends/monet5/vaults/bam/Tests/query1.2.stable.err sql/backends/monet5/vaults/bam/Tests/query1.2.stable.out sql/backends/monet5/vaults/bam/Tests/query1.3.reqtests sql/backends/monet5/vaults/bam/Tests/query1.3.sql sql/backends/monet5/vaults/bam/Tests/query1.3.stable.err sql/backends/monet5/vaults/bam/Tests/query1.3.stable.out sql/backends/monet5/vaults/bam/Tests/query1.4.reqtests sql/backends/monet5/vaults/bam/Tests/query1.4.sql sql/backends/monet5/vaults/bam/Tests/query1.4.stable.err sql/backends/monet5/vaults/bam/Tests/query1.4.stable.out sql/backends/monet5/vaults/bam/Tests/query1.5.reqtests
MonetDB: default - Add test for bug 3710
Changeset: 995872b4375d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=995872b4375d Added Files: sql/test/BugTracker-2015/Tests/schema-trigger.Bug-3710.sql Modified Files: sql/test/BugTracker-2015/Tests/All Branch: default Log Message: Add test for bug 3710 diffs (24 lines): diff --git a/sql/test/BugTracker-2015/Tests/All b/sql/test/BugTracker-2015/Tests/All --- a/sql/test/BugTracker-2015/Tests/All +++ b/sql/test/BugTracker-2015/Tests/All @@ -98,3 +98,4 @@ mserver-creates-but-not-accept-column-ty NOT_x_LIKE-triggers-too_many_nested_operators-error.Bug-3871 foreignkey_over_schemas.Bug-3855 mserver-crashes-under-specific-combination-of-JOIN-and-WHERE-conditions.Bug-3872 +schema-trigger.Bug-3710 diff --git a/sql/test/BugTracker-2015/Tests/schema-trigger.Bug-3710.sql b/sql/test/BugTracker-2015/Tests/schema-trigger.Bug-3710.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2015/Tests/schema-trigger.Bug-3710.sql @@ -0,0 +1,11 @@ +create schema marketdata; +create table marketdata.quotes (i integer); +CREATE TRIGGER marketdata.calc_sdate BEFORE INSERT ON marketdata.quotes +FOR EACH ROW +BEGIN ATOMIC +-- select * from marketdata.quotes limit 1; +END; +--syntax error, unexpected '.', expecting WHILE in: "create trigger marketdata.calc_sdate before insert on marketdata." +drop table marketdata.quotes; +drop schema marketdata; + ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list