MonetDB: Jul2015 - fix bug 3838, ie handle outer joins with updates

2015-11-25 Thread Niels Nes
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

2015-11-25 Thread Martin Kersten
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

2015-11-25 Thread Martin Kersten
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