Changeset: 0bb0edbc1a21 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0bb0edbc1a21 Added Files: clients/ruby/Tests/All clients/ruby/Tests/rubytest.rb 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 sql/backends/monet5/Tests/rapi18.stable.err sql/backends/monet5/Tests/rapi18.stable.out sql/test/BugTracker-2015/Tests/msqldump_generates_incorrect_syntax_ON_UPDATE_null.Bug-3839.sql sql/test/BugTracker-2015/Tests/msqldump_generates_incorrect_syntax_ON_UPDATE_null.Bug-3839.stable.err sql/test/BugTracker-2015/Tests/msqldump_generates_incorrect_syntax_ON_UPDATE_null.Bug-3839.stable.out sql/test/BugTracker-2015/Tests/update_with_without_parenthesis.Bug-3838.sql sql/test/BugTracker-2015/Tests/update_with_without_parenthesis.Bug-3838.stable.err sql/test/BugTracker-2015/Tests/update_with_without_parenthesis.Bug-3838.stable.out Removed Files: clients/ruby/README clients/ruby/adapter/Makefile.ag clients/ruby/adapter/active_record/connection_adapters/monetdb_adapter.rb clients/ruby/adapter/activerecord-monetdb-adapter-0.1.gemspec clients/ruby/adapter/lib/active_record/connection_adapters/monetdb_adapter.rb clients/ruby/doc/rails.txt clients/ruby/examples/activerecord.rb clients/ruby/examples/standalone.rb clients/ruby/lib/demo.rb clients/ruby/lib/test/test_capabilities.rb clients/ruby/ruby-monetdb-sql-0.1.gemspec monetdb5/mal/Tests/tst062.stable.err monetdb5/mal/Tests/tst062.stable.out Modified Files: .hgignore NT/monetdb_config.h.in clients/R/Tests/install.R clients/Tests/exports.stable.out clients/mapiclient/dump.c clients/mapiclient/mclient.c clients/mapilib/mapi.c clients/ruby/Makefile.ag clients/ruby/lib/MonetDB.rb clients/ruby/lib/MonetDBConnection.rb clients/ruby/lib/MonetDBData.rb common/stream/stream.c common/stream/stream.h gdk/gdk_join.c gdk/gdk_logger.c monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.err monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/mal/mal.h monetdb5/mal/mal_client.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/optimizer/Tests/All monetdb5/optimizer/Tests/dataflow.mal monetdb5/optimizer/Tests/dataflow.stable.out monetdb5/optimizer/opt_costModel.c monetdb5/optimizer/opt_mitosis.c monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_support.c monetdb5/optimizer/opt_support.h sql/backends/monet5/Tests/All sql/backends/monet5/Tests/rapi18.sql sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_optimizer.c sql/backends/monet5/sql_scenario.c sql/benchmarks/ssbm/Tests/01-explain.stable.out sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/02-explain.stable.out sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/03-explain.stable.out sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/04-explain.stable.out sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/05-explain.stable.out sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/06-explain.stable.out sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/07-explain.stable.out sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/08-explain.stable.out sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/09-explain.stable.out sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/10-explain.stable.out sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128 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/02-explain.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out.int128 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/06-explain.stable.out.int128 sql/benchmarks/tpch/Tests/08-explain.stable.out.int128 sql/benchmarks/tpch/Tests/09-explain.stable.out.int128 sql/benchmarks/tpch/Tests/10-explain.stable.out sql/benchmarks/tpch/Tests/10-explain.stable.out.int128 sql/benchmarks/tpch/Tests/12-explain.stable.out sql/benchmarks/tpch/Tests/12-explain.stable.out.int128 sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128 sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.sql sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.out sql/test/BugTracker-2015/Tests/schemadiff.Bug-3778.SQL.py sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out sql/test/BugTracker/Tests/explain.SF-1739353.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/mergetables/Tests/mergequery.stable.out sql/test/pg_regress/Tests/horology.sql sql/test/pg_regress/Tests/horology.stable.out sql/test/remote/Tests/partition_elim.stable.out testing/Mtest.py.in Branch: embedded-java Log Message:
Merge with embedded branch diffs (truncated from 10403 to 300 lines): diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -101,6 +101,9 @@ NT/unistd.h MacOSX/build MacOSX/usr +# Build directory +BUILD + syntax: regexp ^java/build$ syntax: regexp diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in --- a/NT/monetdb_config.h.in +++ b/NT/monetdb_config.h.in @@ -688,6 +688,9 @@ /* Define if you have valgrind installed and want to use it */ /* #undef HAVE_VALGRIND */ +/* Define to 1 if you have the `_wfopen' function. */ +#define HAVE__WFOPEN 1 + /* Define to 1 if you have the <winsock2.h> header file. */ #define HAVE_WINSOCK2_H 1 diff --git a/clients/R/Tests/install.R b/clients/R/Tests/install.R --- a/clients/R/Tests/install.R +++ b/clients/R/Tests/install.R @@ -12,7 +12,7 @@ dir.create(installdir) file.copy(from=file.path(srcdir, "..", "MonetDB.R"), to=builddir, recursive=T) dd <- capture.output(suppressMessages( { sink(file=file(tempfile(), open = "wt"), type = "message") - install.packages(file.path(builddir, "MonetDB.R"), repos=NULL, lib=installdir, quiet=T) + install.packages(file.path(builddir, "MonetDB.R"), repos=NULL, lib=installdir, quiet=T, type="source") sink(type = "message") })) library(MonetDB.R,quietly=T,lib.loc=installdir) 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 @@ -1981,6 +1981,7 @@ str batcalcRef; str batmalRef; str batmmathRef; str batmtimeRef; +str batrapiRef; str batsqlRef; str batstrRef; str batxmlRef; @@ -2159,7 +2160,6 @@ int getTypeIndex(str nme, int len, int d str getTypeName(malType tpe); lng getUserTime(void); str getVarName(MalBlkPtr mb, int i); -wrd getVarRows(MalBlkPtr mb, int v); lng getVolume(MalStkPtr stk, InstrPtr pci, int rd); int getWrdConstant(MalBlkPtr mb, wrd val); MalBlkPtr gotoMalBlkMarker(MalBlkPtr mb, str marker); @@ -2477,7 +2477,6 @@ str resultSetRef; str reuseRef; malType reverseBatType(malType v); str row_numberRef; -int rowsProp; str rpcRef; str rsColumnRef; int rule_fromstr(const char *buf, int *len, rule **d); @@ -2539,7 +2538,6 @@ str soundex_impl(str *res, str *Name); str sqlRef; int sqlblob_fromstr(char *instr, int *l, blob **val); int sqlblob_tostr(str *tostr, int *l, const blob *p); -int sqlfunctionProp; str srvpoolRef; str startProfiler(oid user, int mode, int beat); str startRef; @@ -2558,6 +2556,7 @@ str subbandjoinRef; str subcountRef; str subdeltaRef; str subdiffRef; +str subeval_aggrRef; str subgroupRef; str subgroupdoneRef; str subinterRef; @@ -2624,6 +2623,7 @@ char *buffer_get_buf(buffer *b); void buffer_init(buffer *b, char *buf, size_t size); stream *buffer_rastream(buffer *b, const char *name); stream *buffer_wastream(buffer *b, const char *name); +stream *callback_stream(void *private, ssize_t( *read)(void *private, void *buf, size_t elmsize, size_t cnt), void( *close)(void *private), void( *destroy)(void *private), const char *name); void close_stream(stream *s); stream *file_rastream(FILE *fp, const char *name); stream *file_rstream(FILE *fp, const char *name); diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -372,13 +372,13 @@ dump_foreign_keys(Mapi mid, const char * int on_update; int on_delete; - if (action > 0 && - (on_delete = action & 255) < NR_ACTIONS && + if ((on_delete = action & 255) != 0 && + on_delete < NR_ACTIONS && on_delete != 2 /* RESTRICT -- default */) mnstr_printf(toConsole, " ON DELETE %s", actions[on_delete]); - if (action > 0 && - (on_update = (action >> 8) & 255) < NR_ACTIONS && + if ((on_update = (action >> 8) & 255) != 0 && + on_update < NR_ACTIONS && on_update != 2 /* RESTRICT -- default */) mnstr_printf(toConsole, " ON UPDATE %s", actions[on_update]); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -24,7 +24,6 @@ #include "mapi.h" #include <unistd.h> #include <stdlib.h> -#include <ctype.h> #include <sys/stat.h> #include <errno.h> #ifdef HAVE_STRING_H @@ -74,10 +73,9 @@ enum modes { static enum modes mode = SQL; static stream *toConsole; -static stream *toConsole_raw; /* toConsole without iconv conversion */ static stream *stdout_stream; static stream *stderr_stream; -static FILE *fromConsole = NULL; +static stream *fromConsole = NULL; static char *language = NULL; static char *logfile = NULL; static char promptbuf[16]; @@ -85,7 +83,6 @@ static int echoquery = 0; static int showtiming = 0; #ifdef HAVE_ICONV static char *encoding; -static iconv_t cd_in; #endif static int errseen = 0; @@ -188,9 +185,10 @@ static char *nullstring = default_nullst #if defined(_MSC_VER) && _MSC_VER >= 1400 #define fileno _fileno -#define isatty _isatty #endif +#define my_isspace(c) ((c) == '\f' || (c) == '\n' || (c) == ' ') + static timertype gettime(void) { @@ -498,7 +496,7 @@ SQLrow(int *len, int *numeric, char **re if ((t = rest[i]) != NULL && utf8strlen(t, NULL) > (size_t) len[i]) { /* eat leading whitespace */ - while (*t != 0 && isascii((int) *t) && isspace((int) *t)) + while (*t != 0 && my_isspace(*t)) t++; rest[i] = t; } @@ -544,10 +542,10 @@ SQLrow(int *len, int *numeric, char **re t = utf8skip(rest[i], len[i]); if (trim == 1) { - while (t > rest[i] && !(isascii((int) *t) && isspace((int) *t))) + while (t > rest[i] && !my_isspace(*t)) while ((*--t & 0xC0) == 0x80) ; - if (t == rest[i] && !(isascii((int) *t) && isspace((int) *t))) + if (t == rest[i] && !my_isspace(*t)) t = utf8skip(rest[i], len[i]); } mnstr_printf(toConsole, "%c", @@ -570,8 +568,7 @@ SQLrow(int *len, int *numeric, char **re s = t; if (trim == 1) - while (isascii((int) *s) && - isspace((int) *s)) + while (my_isspace(*s)) s++; if (trim == 2 && *s == '\n') s++; @@ -579,8 +576,7 @@ SQLrow(int *len, int *numeric, char **re t = utf8skip(rest[i], len[i] - 2); s = t; if (trim == 1) - while (isascii((int) *s) && - isspace((int) *s)) + while (my_isspace(*s)) s++; if (trim == 2 && *s == '\n') s++; @@ -664,17 +660,17 @@ XMLprdata(const char *val) return; while (*val) { if (*val == '&') - mnstr_printf(toConsole_raw, "&"); + mnstr_printf(toConsole, "&"); else if (*val == '<') - mnstr_printf(toConsole_raw, "<"); + mnstr_printf(toConsole, "<"); else if (*val == '>') - mnstr_printf(toConsole_raw, ">"); + mnstr_printf(toConsole, ">"); else if (*val == '"') - mnstr_printf(toConsole_raw, """); + mnstr_printf(toConsole, """); else if (*val == '\'') - mnstr_printf(toConsole_raw, "'"); + mnstr_printf(toConsole, "'"); else if ((*val & 0xFF) < 0x20) /* control character */ - mnstr_printf(toConsole_raw, "&#%d;", *val & 0xFF); + mnstr_printf(toConsole, "&#%d;", *val & 0xFF); else if ((*val & 0x80) != 0 /* && encoding != NULL */ ) { int n; unsigned int m; @@ -684,9 +680,9 @@ XMLprdata(const char *val) c &= ~m; while (--n >= 0) c = (c << 6) | (*++val & 0x3F); - mnstr_printf(toConsole_raw, "&#x%x;", c); + mnstr_printf(toConsole, "&#x%x;", c); } else - mnstr_write(toConsole_raw, val, 1, 1); + mnstr_write(toConsole, val, 1, 1); val++; } } @@ -694,9 +690,9 @@ XMLprdata(const char *val) static void XMLprattr(const char *name, const char *val) { - mnstr_printf(toConsole_raw, " %s=\"", name); + mnstr_printf(toConsole, " %s=\"", name); XMLprdata(val); - mnstr_write(toConsole_raw, "\"", 1, 1); + mnstr_write(toConsole, "\"", 1, 1); } static void @@ -705,10 +701,10 @@ XMLrenderer(MapiHdl hdl) int i, fields; char *name; - /* we must use toConsole_raw since the XML file is encoded in UTF-8 */ + /* we must use toConsole since the XML file is encoded in UTF-8 */ mnstr_flush(toConsole); - mnstr_printf(toConsole_raw, "<?xml version='1.0' encoding='UTF-8'?>\n"); - mnstr_printf(toConsole_raw, + mnstr_printf(toConsole, "<?xml version='1.0' encoding='UTF-8'?>\n"); + mnstr_printf(toConsole, "<!DOCTYPE table [\n" " <!ELEMENT table (row)*>\n" /* a table consists of zero or more rows */ " <!ELEMENT row (column)+>\n" /* a row consists of one or more columns */ @@ -716,34 +712,34 @@ XMLrenderer(MapiHdl hdl) " <!ATTLIST table name CDATA #IMPLIED>\n" /* a table may have a name */ " <!ATTLIST column name CDATA #IMPLIED\n" /* a column may have a name */ " isnull (true|false) 'false'>]>\n"); - mnstr_printf(toConsole_raw, "<table"); + mnstr_printf(toConsole, "<table"); name = mapi_get_table(hdl, 0); if (name != NULL && *name != 0) XMLprattr("name", name); - mnstr_printf(toConsole_raw, ">\n"); + mnstr_printf(toConsole, ">\n"); while (!mnstr_errnr(toConsole) && (fields = fetch_row(hdl)) != 0) { - mnstr_printf(toConsole_raw, "<row>"); + mnstr_printf(toConsole, "<row>"); for (i = 0; i < fields; i++) { char *data = mapi_fetch_field(hdl, i); - mnstr_printf(toConsole_raw, "<column"); + mnstr_printf(toConsole, "<column"); name = mapi_get_name(hdl, i); if (name != NULL && *name != 0) XMLprattr("name", name); if (data == NULL) { XMLprattr("isnull", "true"); - mnstr_write(toConsole_raw, "/", 1, 1); + mnstr_write(toConsole, "/", 1, 1); } - mnstr_write(toConsole_raw, ">", 1, 1); + mnstr_write(toConsole, ">", 1, 1); if (data) { XMLprdata(data); - mnstr_printf(toConsole_raw, "</column>"); + mnstr_printf(toConsole, "</column>"); } } - mnstr_printf(toConsole_raw, "</row>\n"); + mnstr_printf(toConsole, "</row>\n"); } - mnstr_printf(toConsole_raw, "</table>\n"); - mnstr_flush(toConsole_raw); + mnstr_printf(toConsole, "</table>\n"); + mnstr_flush(toConsole); } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list