Changeset: 5ffeb8ac82d0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5ffeb8ac82d0 Added Files: clients/mapiclient/mhelp.c clients/mapiclient/mhelp.h monetdb5/optimizer/Tests/flowgraph.malC monetdb5/optimizer/Tests/flowgraph.stable.err monetdb5/optimizer/Tests/flowgraph.stable.out sql/jdbc/tests/Tests/Test_PSlargeamount.SQL.bat sql/jdbc/tests/Tests/Test_PSlargeamount.SQL.sh sql/jdbc/tests/Tests/Test_PSlargeamount.stable.err sql/jdbc/tests/Tests/Test_PSlargeamount.stable.out sql/jdbc/tests/Tests/Test_PSlargeresponse.SQL.bat sql/jdbc/tests/Tests/Test_PSlargeresponse.SQL.sh sql/jdbc/tests/Tests/Test_PSlargeresponse.stable.err sql/jdbc/tests/Tests/Test_PSlargeresponse.stable.out sql/jdbc/tests/Tests/Test_Smoreresults.SQL.bat sql/jdbc/tests/Tests/Test_Smoreresults.SQL.sh sql/jdbc/tests/Tests/Test_Smoreresults.stable.err sql/jdbc/tests/Tests/Test_Smoreresults.stable.out Removed Files: monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows.single monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.single sql/benchmarks/ssbm/Tests/01-explain.SQL.py.src sql/benchmarks/ssbm/Tests/01-explain.reqtests sql/benchmarks/ssbm/Tests/01-explain.stable.err sql/benchmarks/ssbm/Tests/01-explain.stable.out sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/01-plan.SQL.py.src sql/benchmarks/ssbm/Tests/01-plan.reqtests sql/benchmarks/ssbm/Tests/01-plan.stable.err sql/benchmarks/ssbm/Tests/01-plan.stable.out sql/benchmarks/ssbm/Tests/02-explain.SQL.py.src sql/benchmarks/ssbm/Tests/02-explain.reqtests sql/benchmarks/ssbm/Tests/02-explain.stable.err sql/benchmarks/ssbm/Tests/02-explain.stable.out sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/02-plan.SQL.py.src sql/benchmarks/ssbm/Tests/02-plan.reqtests sql/benchmarks/ssbm/Tests/02-plan.stable.err sql/benchmarks/ssbm/Tests/02-plan.stable.out sql/benchmarks/ssbm/Tests/03-explain.SQL.py.src sql/benchmarks/ssbm/Tests/03-explain.reqtests sql/benchmarks/ssbm/Tests/03-explain.stable.err sql/benchmarks/ssbm/Tests/03-explain.stable.out sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/03-plan.SQL.py.src sql/benchmarks/ssbm/Tests/03-plan.reqtests sql/benchmarks/ssbm/Tests/03-plan.stable.err sql/benchmarks/ssbm/Tests/03-plan.stable.out sql/benchmarks/ssbm/Tests/04-explain.SQL.py.src sql/benchmarks/ssbm/Tests/04-explain.reqtests sql/benchmarks/ssbm/Tests/04-explain.stable.err sql/benchmarks/ssbm/Tests/04-explain.stable.out sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/04-plan.SQL.py.src sql/benchmarks/ssbm/Tests/04-plan.reqtests sql/benchmarks/ssbm/Tests/04-plan.stable.err sql/benchmarks/ssbm/Tests/04-plan.stable.out sql/benchmarks/ssbm/Tests/05-explain.SQL.py.src sql/benchmarks/ssbm/Tests/05-explain.reqtests sql/benchmarks/ssbm/Tests/05-explain.stable.err sql/benchmarks/ssbm/Tests/05-explain.stable.out sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/05-plan.SQL.py.src sql/benchmarks/ssbm/Tests/05-plan.reqtests sql/benchmarks/ssbm/Tests/05-plan.stable.err sql/benchmarks/ssbm/Tests/05-plan.stable.out sql/benchmarks/ssbm/Tests/06-explain.SQL.py.src sql/benchmarks/ssbm/Tests/06-explain.reqtests sql/benchmarks/ssbm/Tests/06-explain.stable.err sql/benchmarks/ssbm/Tests/06-explain.stable.out sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/06-plan.SQL.py.src sql/benchmarks/ssbm/Tests/06-plan.reqtests sql/benchmarks/ssbm/Tests/06-plan.stable.err sql/benchmarks/ssbm/Tests/06-plan.stable.out sql/benchmarks/ssbm/Tests/07-explain.SQL.py.src sql/benchmarks/ssbm/Tests/07-explain.reqtests sql/benchmarks/ssbm/Tests/07-explain.stable.err sql/benchmarks/ssbm/Tests/07-explain.stable.out sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/07-plan.SQL.py.src sql/benchmarks/ssbm/Tests/07-plan.reqtests sql/benchmarks/ssbm/Tests/07-plan.stable.err sql/benchmarks/ssbm/Tests/07-plan.stable.out sql/benchmarks/ssbm/Tests/08-explain.SQL.py.src sql/benchmarks/ssbm/Tests/08-explain.reqtests sql/benchmarks/ssbm/Tests/08-explain.stable.err sql/benchmarks/ssbm/Tests/08-explain.stable.out sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/08-plan.SQL.py.src sql/benchmarks/ssbm/Tests/08-plan.reqtests sql/benchmarks/ssbm/Tests/08-plan.stable.err sql/benchmarks/ssbm/Tests/08-plan.stable.out sql/benchmarks/ssbm/Tests/09-explain.SQL.py.src sql/benchmarks/ssbm/Tests/09-explain.reqtests sql/benchmarks/ssbm/Tests/09-explain.stable.err sql/benchmarks/ssbm/Tests/09-explain.stable.out sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/09-plan.SQL.py.src sql/benchmarks/ssbm/Tests/09-plan.reqtests sql/benchmarks/ssbm/Tests/09-plan.stable.err sql/benchmarks/ssbm/Tests/09-plan.stable.out sql/benchmarks/ssbm/Tests/10-explain.SQL.py.src sql/benchmarks/ssbm/Tests/10-explain.reqtests sql/benchmarks/ssbm/Tests/10-explain.stable.err sql/benchmarks/ssbm/Tests/10-explain.stable.out sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/10-plan.SQL.py.src sql/benchmarks/ssbm/Tests/10-plan.reqtests sql/benchmarks/ssbm/Tests/10-plan.stable.err sql/benchmarks/ssbm/Tests/10-plan.stable.out sql/benchmarks/ssbm/Tests/11-explain.SQL.py.src sql/benchmarks/ssbm/Tests/11-explain.reqtests sql/benchmarks/ssbm/Tests/11-explain.stable.err sql/benchmarks/ssbm/Tests/11-explain.stable.out sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/11-plan.SQL.py.src sql/benchmarks/ssbm/Tests/11-plan.reqtests sql/benchmarks/ssbm/Tests/11-plan.stable.err sql/benchmarks/ssbm/Tests/11-plan.stable.out sql/benchmarks/ssbm/Tests/12-explain.SQL.py.src sql/benchmarks/ssbm/Tests/12-explain.reqtests sql/benchmarks/ssbm/Tests/12-explain.stable.err sql/benchmarks/ssbm/Tests/12-explain.stable.out sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/12-plan.SQL.py.src sql/benchmarks/ssbm/Tests/12-plan.reqtests sql/benchmarks/ssbm/Tests/12-plan.stable.err sql/benchmarks/ssbm/Tests/12-plan.stable.out sql/benchmarks/ssbm/Tests/13-explain.SQL.py.src sql/benchmarks/ssbm/Tests/13-explain.reqtests sql/benchmarks/ssbm/Tests/13-explain.stable.err sql/benchmarks/ssbm/Tests/13-explain.stable.out sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/13-plan.SQL.py.src sql/benchmarks/ssbm/Tests/13-plan.reqtests sql/benchmarks/ssbm/Tests/13-plan.stable.err sql/benchmarks/ssbm/Tests/13-plan.stable.out sql/benchmarks/tpch/Tests/01-explain.SQL.py.src sql/benchmarks/tpch/Tests/01-explain.reqtests sql/benchmarks/tpch/Tests/01-explain.stable.err sql/benchmarks/tpch/Tests/01-explain.stable.out sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit sql/benchmarks/tpch/Tests/01-explain.stable.out.int128 sql/benchmarks/tpch/Tests/01-plan.SQL.py.src sql/benchmarks/tpch/Tests/01-plan.reqtests sql/benchmarks/tpch/Tests/01-plan.stable.err sql/benchmarks/tpch/Tests/01-plan.stable.out sql/benchmarks/tpch/Tests/01-plan.stable.out.int128 sql/benchmarks/tpch/Tests/02-explain.SQL.py.src sql/benchmarks/tpch/Tests/02-explain.reqtests sql/benchmarks/tpch/Tests/02-explain.stable.err sql/benchmarks/tpch/Tests/02-explain.stable.out sql/benchmarks/tpch/Tests/02-explain.stable.out.32bit sql/benchmarks/tpch/Tests/02-plan.SQL.py.src sql/benchmarks/tpch/Tests/02-plan.reqtests sql/benchmarks/tpch/Tests/02-plan.stable.err sql/benchmarks/tpch/Tests/02-plan.stable.out sql/benchmarks/tpch/Tests/02-plan.stable.out.32bit sql/benchmarks/tpch/Tests/03-explain.SQL.py.src sql/benchmarks/tpch/Tests/03-explain.reqtests sql/benchmarks/tpch/Tests/03-explain.stable.err sql/benchmarks/tpch/Tests/03-explain.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out.int128 sql/benchmarks/tpch/Tests/03-plan.SQL.py.src sql/benchmarks/tpch/Tests/03-plan.reqtests sql/benchmarks/tpch/Tests/03-plan.stable.err sql/benchmarks/tpch/Tests/03-plan.stable.out sql/benchmarks/tpch/Tests/03-plan.stable.out.int128 sql/benchmarks/tpch/Tests/04-explain.SQL.py.src sql/benchmarks/tpch/Tests/04-explain.reqtests sql/benchmarks/tpch/Tests/04-explain.stable.err sql/benchmarks/tpch/Tests/04-explain.stable.out sql/benchmarks/tpch/Tests/04-explain.stable.out.32bit sql/benchmarks/tpch/Tests/04-plan.SQL.py.src sql/benchmarks/tpch/Tests/04-plan.reqtests sql/benchmarks/tpch/Tests/04-plan.stable.err sql/benchmarks/tpch/Tests/04-plan.stable.out sql/benchmarks/tpch/Tests/05-explain.SQL.py.src sql/benchmarks/tpch/Tests/05-explain.reqtests sql/benchmarks/tpch/Tests/05-explain.stable.err sql/benchmarks/tpch/Tests/05-explain.stable.out sql/benchmarks/tpch/Tests/05-explain.stable.out.32bit sql/benchmarks/tpch/Tests/05-explain.stable.out.int128 sql/benchmarks/tpch/Tests/05-plan.SQL.py.src sql/benchmarks/tpch/Tests/05-plan.reqtests sql/benchmarks/tpch/Tests/05-plan.stable.err sql/benchmarks/tpch/Tests/05-plan.stable.out sql/benchmarks/tpch/Tests/05-plan.stable.out.int128 sql/benchmarks/tpch/Tests/06-explain.SQL.py.src sql/benchmarks/tpch/Tests/06-explain.reqtests sql/benchmarks/tpch/Tests/06-explain.stable.err sql/benchmarks/tpch/Tests/06-explain.stable.out sql/benchmarks/tpch/Tests/06-explain.stable.out.int128 sql/benchmarks/tpch/Tests/06-plan.SQL.py.src sql/benchmarks/tpch/Tests/06-plan.reqtests sql/benchmarks/tpch/Tests/06-plan.stable.err sql/benchmarks/tpch/Tests/06-plan.stable.out sql/benchmarks/tpch/Tests/06-plan.stable.out.int128 sql/benchmarks/tpch/Tests/07-explain.SQL.py.src sql/benchmarks/tpch/Tests/07-explain.reqtests sql/benchmarks/tpch/Tests/07-explain.stable.err sql/benchmarks/tpch/Tests/07-explain.stable.out sql/benchmarks/tpch/Tests/07-explain.stable.out.int128 sql/benchmarks/tpch/Tests/07-plan.SQL.py.src sql/benchmarks/tpch/Tests/07-plan.reqtests sql/benchmarks/tpch/Tests/07-plan.stable.err sql/benchmarks/tpch/Tests/07-plan.stable.out sql/benchmarks/tpch/Tests/07-plan.stable.out.int128 sql/benchmarks/tpch/Tests/08-explain.SQL.py.src sql/benchmarks/tpch/Tests/08-explain.reqtests sql/benchmarks/tpch/Tests/08-explain.stable.err sql/benchmarks/tpch/Tests/08-explain.stable.out sql/benchmarks/tpch/Tests/08-explain.stable.out.int128 sql/benchmarks/tpch/Tests/08-plan.SQL.py.src sql/benchmarks/tpch/Tests/08-plan.reqtests sql/benchmarks/tpch/Tests/08-plan.stable.err sql/benchmarks/tpch/Tests/08-plan.stable.out sql/benchmarks/tpch/Tests/08-plan.stable.out.int128 sql/benchmarks/tpch/Tests/09-explain.SQL.py.src sql/benchmarks/tpch/Tests/09-explain.reqtests sql/benchmarks/tpch/Tests/09-explain.stable.err sql/benchmarks/tpch/Tests/09-explain.stable.out sql/benchmarks/tpch/Tests/09-explain.stable.out.int128 sql/benchmarks/tpch/Tests/09-plan.SQL.py.src sql/benchmarks/tpch/Tests/09-plan.reqtests sql/benchmarks/tpch/Tests/09-plan.stable.err sql/benchmarks/tpch/Tests/09-plan.stable.out sql/benchmarks/tpch/Tests/09-plan.stable.out.int128 sql/benchmarks/tpch/Tests/10-explain.SQL.py.src sql/benchmarks/tpch/Tests/10-explain.reqtests sql/benchmarks/tpch/Tests/10-explain.stable.err sql/benchmarks/tpch/Tests/10-explain.stable.out sql/benchmarks/tpch/Tests/10-explain.stable.out.int128 sql/benchmarks/tpch/Tests/10-plan.SQL.py.src sql/benchmarks/tpch/Tests/10-plan.reqtests sql/benchmarks/tpch/Tests/10-plan.stable.err sql/benchmarks/tpch/Tests/10-plan.stable.out sql/benchmarks/tpch/Tests/10-plan.stable.out.int128 sql/benchmarks/tpch/Tests/11-explain.SQL.py.src sql/benchmarks/tpch/Tests/11-explain.reqtests sql/benchmarks/tpch/Tests/11-explain.stable.err sql/benchmarks/tpch/Tests/11-explain.stable.out sql/benchmarks/tpch/Tests/11-explain.stable.out.int128 sql/benchmarks/tpch/Tests/11-plan.SQL.py.src sql/benchmarks/tpch/Tests/11-plan.reqtests sql/benchmarks/tpch/Tests/11-plan.stable.err sql/benchmarks/tpch/Tests/11-plan.stable.out sql/benchmarks/tpch/Tests/11-plan.stable.out.int128 sql/benchmarks/tpch/Tests/12-explain.SQL.py.src sql/benchmarks/tpch/Tests/12-explain.reqtests sql/benchmarks/tpch/Tests/12-explain.stable.err sql/benchmarks/tpch/Tests/12-explain.stable.out sql/benchmarks/tpch/Tests/12-explain.stable.out.int128 sql/benchmarks/tpch/Tests/12-plan.SQL.py.src sql/benchmarks/tpch/Tests/12-plan.reqtests sql/benchmarks/tpch/Tests/12-plan.stable.err sql/benchmarks/tpch/Tests/12-plan.stable.out sql/benchmarks/tpch/Tests/13-explain.SQL.py.src sql/benchmarks/tpch/Tests/13-explain.reqtests sql/benchmarks/tpch/Tests/13-explain.stable.err sql/benchmarks/tpch/Tests/13-explain.stable.out sql/benchmarks/tpch/Tests/13-explain.stable.out.32bit sql/benchmarks/tpch/Tests/13-plan.SQL.py.src sql/benchmarks/tpch/Tests/13-plan.reqtests sql/benchmarks/tpch/Tests/13-plan.stable.err sql/benchmarks/tpch/Tests/13-plan.stable.out sql/benchmarks/tpch/Tests/13-plan.stable.out.32bit sql/benchmarks/tpch/Tests/14-explain.SQL.py.src sql/benchmarks/tpch/Tests/14-explain.reqtests sql/benchmarks/tpch/Tests/14-explain.stable.err sql/benchmarks/tpch/Tests/14-explain.stable.out sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 sql/benchmarks/tpch/Tests/14-plan.SQL.py.src sql/benchmarks/tpch/Tests/14-plan.reqtests sql/benchmarks/tpch/Tests/14-plan.stable.err sql/benchmarks/tpch/Tests/14-plan.stable.out sql/benchmarks/tpch/Tests/14-plan.stable.out.int128 sql/benchmarks/tpch/Tests/15-explain.SQL.py.src sql/benchmarks/tpch/Tests/15-explain.reqtests sql/benchmarks/tpch/Tests/15-explain.stable.err sql/benchmarks/tpch/Tests/15-explain.stable.out sql/benchmarks/tpch/Tests/15-explain.stable.out.int128 sql/benchmarks/tpch/Tests/15-plan.SQL.py.src sql/benchmarks/tpch/Tests/15-plan.reqtests sql/benchmarks/tpch/Tests/15-plan.stable.err sql/benchmarks/tpch/Tests/15-plan.stable.out sql/benchmarks/tpch/Tests/15-plan.stable.out.int128 sql/benchmarks/tpch/Tests/16-explain.SQL.py.src sql/benchmarks/tpch/Tests/16-explain.reqtests sql/benchmarks/tpch/Tests/16-explain.stable.err sql/benchmarks/tpch/Tests/16-explain.stable.out sql/benchmarks/tpch/Tests/16-explain.stable.out.32bit sql/benchmarks/tpch/Tests/16-plan.SQL.py.src sql/benchmarks/tpch/Tests/16-plan.reqtests sql/benchmarks/tpch/Tests/16-plan.stable.err sql/benchmarks/tpch/Tests/16-plan.stable.out sql/benchmarks/tpch/Tests/16-plan.stable.out.32bit sql/benchmarks/tpch/Tests/17-explain.SQL.py.src sql/benchmarks/tpch/Tests/17-explain.reqtests sql/benchmarks/tpch/Tests/17-explain.stable.err sql/benchmarks/tpch/Tests/17-explain.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 sql/benchmarks/tpch/Tests/17-plan.SQL.py.src sql/benchmarks/tpch/Tests/17-plan.reqtests sql/benchmarks/tpch/Tests/17-plan.stable.err sql/benchmarks/tpch/Tests/17-plan.stable.out sql/benchmarks/tpch/Tests/17-plan.stable.out.int128 sql/benchmarks/tpch/Tests/18-explain.SQL.py.src sql/benchmarks/tpch/Tests/18-explain.reqtests sql/benchmarks/tpch/Tests/18-explain.stable.err sql/benchmarks/tpch/Tests/18-explain.stable.out sql/benchmarks/tpch/Tests/18-explain.stable.out.int128 sql/benchmarks/tpch/Tests/18-plan.SQL.py.src sql/benchmarks/tpch/Tests/18-plan.reqtests sql/benchmarks/tpch/Tests/18-plan.stable.err sql/benchmarks/tpch/Tests/18-plan.stable.out sql/benchmarks/tpch/Tests/18-plan.stable.out.int128 sql/benchmarks/tpch/Tests/19-explain.SQL.py.src sql/benchmarks/tpch/Tests/19-explain.reqtests sql/benchmarks/tpch/Tests/19-explain.stable.err sql/benchmarks/tpch/Tests/19-explain.stable.out sql/benchmarks/tpch/Tests/19-explain.stable.out.int128 sql/benchmarks/tpch/Tests/19-plan.SQL.py.src sql/benchmarks/tpch/Tests/19-plan.reqtests sql/benchmarks/tpch/Tests/19-plan.stable.err sql/benchmarks/tpch/Tests/19-plan.stable.out sql/benchmarks/tpch/Tests/19-plan.stable.out.int128 sql/benchmarks/tpch/Tests/20-explain.SQL.py.src sql/benchmarks/tpch/Tests/20-explain.reqtests sql/benchmarks/tpch/Tests/20-explain.stable.err sql/benchmarks/tpch/Tests/20-explain.stable.out sql/benchmarks/tpch/Tests/20-explain.stable.out.32bit sql/benchmarks/tpch/Tests/20-explain.stable.out.int128 sql/benchmarks/tpch/Tests/20-plan.SQL.py.src sql/benchmarks/tpch/Tests/20-plan.reqtests sql/benchmarks/tpch/Tests/20-plan.stable.err sql/benchmarks/tpch/Tests/20-plan.stable.out sql/benchmarks/tpch/Tests/20-plan.stable.out.int128 sql/benchmarks/tpch/Tests/21-explain.SQL.py.src sql/benchmarks/tpch/Tests/21-explain.reqtests sql/benchmarks/tpch/Tests/21-explain.stable.err sql/benchmarks/tpch/Tests/21-explain.stable.out sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit sql/benchmarks/tpch/Tests/21-plan.SQL.py.src sql/benchmarks/tpch/Tests/21-plan.reqtests sql/benchmarks/tpch/Tests/21-plan.stable.err sql/benchmarks/tpch/Tests/21-plan.stable.out sql/benchmarks/tpch/Tests/22-explain.SQL.py.src sql/benchmarks/tpch/Tests/22-explain.reqtests sql/benchmarks/tpch/Tests/22-explain.stable.err sql/benchmarks/tpch/Tests/22-explain.stable.out sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit sql/benchmarks/tpch/Tests/22-explain.stable.out.int128 sql/benchmarks/tpch/Tests/22-plan.SQL.py.src sql/benchmarks/tpch/Tests/22-plan.reqtests sql/benchmarks/tpch/Tests/22-plan.stable.err sql/benchmarks/tpch/Tests/22-plan.stable.out Modified Files: clients/ChangeLog clients/Tests/MAL-signatures.stable.out clients/Tests/exports.stable.out clients/mapiclient/Makefile.ag clients/mapiclient/mclient.c gdk/gdk_value.c monetdb5/extras/mal_optimizer_template/Tests/All monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows monetdb5/mal/mal_debugger.c monetdb5/mal/mal_function.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/mal/mal_interpreter.c monetdb5/modules/kernel/bat5.c monetdb5/modules/mal/iterator.c monetdb5/modules/mal/mdb.c monetdb5/modules/mal/mdb.h monetdb5/modules/mal/mdb.mal monetdb5/optimizer/Tests/All monetdb5/optimizer/optimizer.c monetdb5/optimizer/optimizer.h monetdb5/optimizer/optimizer.mal sql/backends/monet5/Tests/pyapi10.stable.err sql/backends/monet5/Tests/pyapi10.stable.out sql/backends/monet5/Tests/pyapi25.stable.err sql/backends/monet5/Tests/pyapi25.stable.out sql/backends/monet5/UDF/pyapi/pytypes.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_gencode.c sql/benchmarks/ssbm/Tests/All sql/benchmarks/tpch/Tests/All sql/jdbc/tests/Tests/All sql/server/rel_exp.c sql/server/rel_optimizer.c sql/server/rel_select.c sql/server/rel_updates.c sql/server/sql_atom.c sql/server/sql_atom.h sql/server/sql_mvc.c sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows testing/Mfilter.py tools/merovingian/client/monetdb.c tools/merovingian/daemon/discoveryrunner.c tools/merovingian/daemon/multiplex-funnel.c tools/merovingian/utils/glob.c tools/merovingian/utils/glob.h Branch: protocol Log Message:
Merge with default. diffs (truncated from 23401 to 300 lines): diff --git a/clients/ChangeLog b/clients/ChangeLog --- a/clients/ChangeLog +++ b/clients/ChangeLog @@ -1,3 +1,6 @@ # ChangeLog file for clients # This file is updated with Maddlog +* Sun Oct 30 2016 Martin Kersten <m...@cwi.nl> +- Added an more elaborate \help command for SQL expressions. + diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -5661,43 +5661,11 @@ Ready. [ "batcalc", "sign", "pattern batcalc.sign(b:bat[:sht]):bat[:bte] ", "CMDbatSIGN;", "Unary sign (-1,0,1) over the tail of the bat" ] [ "batcalc", "sign", "pattern batcalc.sign(b:bat[:sht],s:bat[:oid]):bat[:bte] ", "CMDbatSIGN;", "Unary sign (-1,0,1) over the tail of the bat with candidates list" ] [ "batcalc", "sqlblob", "command batcalc.sqlblob(v:bat[:str]):bat[:sqlblob] ", "batstr_2_sqlblob;", "cast to sqlblob" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:bit]):bat[:str] ", "CMDconvertsignal_str;", "cast from bit to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:bit],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from bit to str with candidates list, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:bte]):bat[:str] ", "CMDconvertsignal_str;", "cast from bte to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:bte],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from bte to str with candidates list, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:dbl]):bat[:str] ", "CMDconvertsignal_str;", "cast from dbl to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:dbl],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from dbl to str with candidates list, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:flt]):bat[:str] ", "CMDconvertsignal_str;", "cast from flt to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:flt],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from flt to str with candidates list, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:int]):bat[:str] ", "CMDconvertsignal_str;", "cast from int to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:int],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from int to str with candidates list, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:lng]):bat[:str] ", "CMDconvertsignal_str;", "cast from lng to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:lng],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from lng to str with candidates list, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from oid to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:oid],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from oid to str with candidates list, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:sht]):bat[:str] ", "CMDconvertsignal_str;", "cast from sht to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:sht],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from sht to str with candidates list, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:str]):bat[:str] ", "CMDconvertsignal_str;", "cast from str to str, signal error on overflow" ] -[ "batcalc", "str", "pattern batcalc.str(b:bat[:str],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from str to str with candidates list, signal error on overflow" ] +[ "batcalc", "str", "pattern batcalc.str(b:bat[:any]):bat[:str] ", "CMDconvertsignal_str;", "cast from any to str, signal error on overflow" ] +[ "batcalc", "str", "pattern batcalc.str(b:bat[:any],s:bat[:oid]):bat[:str] ", "CMDconvertsignal_str;", "cast from any to str with candidates list, signal error on overflow" ] [ "batcalc", "str", "pattern batcalc.str(eclass:int,d1:int,s1:int,has_tz:int,v:bat[:any_1],digits:int):bat[:str] ", "SQLbatstr_cast;", "cast to string and check for overflow" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:bit]):bat[:str] ", "CMDconvert_str;", "cast from bit to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:bit],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from bit to str with candidates list" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:bte]):bat[:str] ", "CMDconvert_str;", "cast from bte to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:bte],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from bte to str with candidates list" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:dbl]):bat[:str] ", "CMDconvert_str;", "cast from dbl to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:dbl],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from dbl to str with candidates list" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:flt]):bat[:str] ", "CMDconvert_str;", "cast from flt to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:flt],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from flt to str with candidates list" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:int]):bat[:str] ", "CMDconvert_str;", "cast from int to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:int],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from int to str with candidates list" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:lng]):bat[:str] ", "CMDconvert_str;", "cast from lng to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:lng],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from lng to str with candidates list" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from oid to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:oid],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from oid to str with candidates list" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:sht]):bat[:str] ", "CMDconvert_str;", "cast from sht to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:sht],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from sht to str with candidates list" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:str]):bat[:str] ", "CMDconvert_str;", "cast from str to str" ] -[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:str],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from str to str with candidates list" ] +[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:any]):bat[:str] ", "CMDconvert_str;", "cast from any to str" ] +[ "batcalc", "str_noerror", "pattern batcalc.str_noerror(b:bat[:any],s:bat[:oid]):bat[:str] ", "CMDconvert_str;", "cast from any to str with candidates list" ] [ "batcalc", "strings", "command batcalc.strings(v:bat[:str]):bat[:str] ", "BATSTRstrings;", "Return the strings" ] [ "batcalc", "sub_noerror", "pattern batcalc.sub_noerror(b1:bat[:bte],b2:bat[:bte]):bat[:bte] ", "CMDbatSUB;", "Return B1 - B2, overflow causes NIL value" ] [ "batcalc", "sub_noerror", "pattern batcalc.sub_noerror(b1:bat[:bte],b2:bat[:bte],s:bat[:oid]):bat[:bte] ", "CMDbatSUB;", "Return B1 - B2 with candidates list, overflow causes NIL value" ] @@ -7329,16 +7297,7 @@ Ready. [ "calc", "sqlblob", "command calc.sqlblob(b:sqlblob):sqlblob ", "BLOBblob_blob;", "" ] [ "calc", "sqlblob", "command calc.sqlblob(s:str):sqlblob ", "BLOBsqlblob_fromstr;", "" ] [ "calc", "sqlblob", "command calc.sqlblob(v:str):sqlblob ", "str_2_sqlblob;", "cast to sqlblob" ] -[ "calc", "str", "pattern calc.str(v:bit):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:bte):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:dbl):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:flt):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:int):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:lng):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:oid):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:sht):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:str):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] -[ "calc", "str", "pattern calc.str(v:void):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] +[ "calc", "str", "pattern calc.str(v:any):str ", "CMDvarCONVERT;", "Cast VALUE to str" ] [ "calc", "str", "command calc.str(v:date):str ", "SQLdate_2_str;", "cast date to str" ] [ "calc", "str", "command calc.str(v:sqlblob):str ", "SQLsqlblob_2_str;", "cast sqlblob to str" ] [ "calc", "str", "pattern calc.str(eclass:int,d1:int,s1:int,has_tz:int,v:any_1,digits:int):str ", "SQLstr_cast;", "cast to string and check for overflow" ] diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -2316,7 +2316,7 @@ InstrPtr newStmt(MalBlkPtr mb, const cha Symbol newSymbol(str nme, int kind); int newTmpVariable(MalBlkPtr mb, malType type); int newTypeVariable(MalBlkPtr mb, malType type); -int newVariable(MalBlkPtr mb, str name, size_t len, malType type); +int newVariable(MalBlkPtr mb, const char *name, size_t len, malType type); str nextRef; str notRef; str not_ilikeRef; diff --git a/clients/mapiclient/Makefile.ag b/clients/mapiclient/Makefile.ag --- a/clients/mapiclient/Makefile.ag +++ b/clients/mapiclient/Makefile.ag @@ -13,7 +13,7 @@ lib_mcutil = { } bin_mclient = { - SOURCES = mclient.c ReadlineTools.c ReadlineTools.h + SOURCES = mclient.c ReadlineTools.c ReadlineTools.h mhelp.c mhelp.h LIBS = libmcutil ../mapilib/libmapi \ ../../common/stream/libstream \ ../../common/utils/libmutils \ diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -44,6 +44,7 @@ #include "msqldump.h" #include "mprompt.h" #include "dotmonetdb.h" + #ifdef HAVE_LOCALE_H #include <locale.h> #endif @@ -188,6 +189,9 @@ static char *nullstring = default_nullst #define my_isspace(c) ((c) == '\f' || (c) == '\n' || (c) == ' ') +#include <ctype.h> +#include "mhelp.h" + static timertype gettime(void) { @@ -2146,17 +2150,18 @@ static void showCommands(void) { /* shared control options */ - mnstr_printf(toConsole, "\\? - show this message\n"); + mnstr_printf(toConsole, "\\? - show this message\n"); if (mode == MAL) - mnstr_printf(toConsole, "?pat - MAL function help. pat=[modnme[.fcnnme][(][)]] wildcard *\n"); - mnstr_printf(toConsole, "\\<file - read input from file\n"); - mnstr_printf(toConsole, "\\>file - save response in file, or stdout if no file is given\n"); + mnstr_printf(toConsole, "?pat - MAL function help. pat=[modnme[.fcnnme][(][)]] wildcard *\n"); + mnstr_printf(toConsole, "\\<file - read input from file\n"); + mnstr_printf(toConsole, "\\>file - save response in file, or stdout if no file is given\n"); #ifdef HAVE_POPEN - mnstr_printf(toConsole, "\\|cmd - pipe result to process, or stop when no command is given\n"); + mnstr_printf(toConsole, "\\|cmd - pipe result to process, or stop when no command is given\n"); #endif #ifdef HAVE_LIBREADLINE - mnstr_printf(toConsole, "\\h - show the readline history\n"); + mnstr_printf(toConsole, "\\history - show the readline history\n"); #endif + mnstr_printf(toConsole, "\\help - synopsis of the SQL syntax\n"); #if 0 mnstr_printf(toConsole, "\\t - toggle timer\n"); #endif @@ -2772,20 +2777,25 @@ doFile(Mapi mid, stream *fp, int useinse pager = strdup(line); continue; #endif -#ifdef HAVE_LIBREADLINE case 'h': { +#ifdef HAVE_LIBREADLINE int h; char *nl; - for (h = 0; h < history_length; h++) { - nl = history_get(h) ? history_get(h)->line : 0; - if (nl) - mnstr_printf(toConsole, "%d %s\n", h, nl); - } + if( strcmp(line,"\\history") ==0){ + for (h = 0; h < history_length; h++) { + nl = history_get(h) ? history_get(h)->line : 0; + if (nl) + mnstr_printf(toConsole, "%d %s\n", h, nl); + } + } else +#endif + sql_help(line, toConsole); continue; } /* for later +#ifdef HAVE_LIBREADLINE case '!': { char *nl; @@ -2799,8 +2809,8 @@ doFile(Mapi mid, stream *fp, int useinse mnstr_printf(toConsole, "Expansion needs work\n"); continue; } +#endif */ -#endif case 'e': echoquery = 1; continue; diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c new file mode 100644 --- /dev/null +++ b/clients/mapiclient/mhelp.c @@ -0,0 +1,695 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +/** + * 2016 Martin Kersten + * + * The SQL syntax help synopsis. + */ + +/* produce a synposis of the SQL syntax, inspired by a competing product. + * Use the conventional grammar constructs: + * [ A | B ] optionally token A or B or none + * { A | B } exactly one of the options should be chosen + * A [ ',' ...] a comma separate lists of A elements + * { A | B } ... a series of A and Bs + * ( A B ) [','...] a series of AB,AB,AB,AB + * + * Ideally each major command line should point into the website for + * more details and variations not covered here. + * */ + +#include "monetdb_config.h" +#include <ctype.h> +#include <string.h> +#include "stream.h" +#include "mhelp.h" + +typedef struct{ + char *command; + char *synopsis; + char *syntax; + char *rules; + char *comments; +} SQLhelp; + +SQLhelp sqlhelp[]={ + // major commands + { "ALTER TABLE", + "", + "ALTER TABLE qname ADD [COLUMN] { column_def | table_constraint }\n" + "ALTER TABLE qname ALTER [COLUMN] ident SET DEFAULT value\n" + "ALTER TABLE qname ALTER [COLUMN] ident SET [NOT] NULL\n" + "ALTER TABLE qname ALTER [COLUMN] ident DROP DEFAULT\n" + "ALTER TABLE qname ALTER [COLUMN] ident SET STORAGE {string | NULL} \n" + "ALTER TABLE qname DROP [COLUMN] ident [RESTRICT | CASCADE]\n" + "ALTER TABLE qname DROP CONSTRAINT ident [RESTRICT | CASCADE]\n" + "ALTER TABLE qname SET { { READ | INSERT } ONLY | READ WRITE }", + "column_def,table_constraint", + "See also https://www.monetdb.org/Documentation/SQLreference/Alter" + }, + { "ALTER MERGE TABLE", + "", + "ALTER TABLE qname ADD TABLE qname\n" + "ALTER TABLE qname DROP TABLE qname [RESTRICT | CASCADE]\n", + "", + "See also https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/DataPartitioning" + }, + { "ALTER SEQUENCE", + "", + "ALTER SEQUENCE ident [ AS datatype] [ RESTART [WITH start]] [INCREMENT BY increment]\n" + "[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NOMAXVALUE] | [ [ NO] CYCLE]", + 0, + "See also https://www.monetdb.org/Documentation/Manuals/SQLreference/SerialTypes" + }, + { "ALTER USER", + "", + "ALTER USER ident WITH [ ENCRYPTED | UNENCRYPTED] PASSWORD string\n" + "ALTER USER ident SET SCHEMA ident\n" + "ALTER USER ident WITH [ENCRYPTED | UNENCRYPTED] PASSWORD SET SCHEMA ident\n" + "ALTER USER RENAME TO ident \n" + "ALTER USER SET [ ENCRYPTED | UNENCRYPTED] PASSWORD string USING OLD PASSWORD string", + 0, "See also https://www.monetdb.org/Documentation/SQLreference/Users" + }, + { "ANALYZE", + "Collect statistics for optimizations", + "ANALYZE qname [column_list] [SAMPLE size] [MINMAX]", + "column_list", + "See also https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/statistics" + }, + { "CALL", + "", + "CALL qname '(' [ [scalar_expression ] [ ',' ...] ]')' | CALL ident '.' ident", + 0,0 + }, + { "CASE", + "Case statement for procedures/functions", + "CASE scalar_expression [ when_statement ...] [ELSE procedure_statement ... ] END CASE", + 0,"See also https://www.monetdb.org/Documentation/SQLreference/Flowofcontrol" + }, + { "COMMIT", + "Commit the current transaction", + "COMMIT [ WORK ] [ AND CHAIN | AND NO CHAIN ]", + 0,0 + }, + { "COPY BINARY", + "Append binary representations into a table", + "COPY [nrofrecords] BINARY INTO qname [column_list] FROM string [','...] [NO CONSTRAINT]", + "nrofrecords", + "see https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/BinaryBulkLoad" _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list