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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list