Changeset: 1289bc0d85de for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1289bc0d85de
Added Files:
clients/nodejs/monetdb/README.md
sql/backends/monet5/generator/Tests/crash.Bug-3609.sql
sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.err
sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.out
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/sql_upgrades.h
sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.sql
sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.err
sql/test/BugTracker-2014/Tests/empty_intermediate_quantile.Bug-3611.stable.out
sql/test/BugTracker-2014/Tests/fk-property-assert.Bug-3612.sql
sql/test/BugTracker-2014/Tests/fk-property-assert.Bug-3612.stable.err
sql/test/BugTracker-2014/Tests/fk-property-assert.Bug-3612.stable.out
sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out.single
sql/test/BugTracker-2014/Tests/querylog.Bug-3607.sql
sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.err
sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
sql/test/json/Tests/shop.sql
sql/test/json/Tests/shop.stable.err
sql/test/json/Tests/shop.stable.out
sql/test/mergetables/Tests/doubletable.sql
sql/test/mergetables/Tests/singlekeyconstraint.sql
sql/test/pg_regress/Tests/loadwisconsin.sql
Removed Files:
clients/nodejs/monetdb/README
Modified Files:
.hgtags
MonetDB.spec
NT/installer32/MonetDB-ODBC-Installer.vdproj
NT/installer32/MonetDB5-Geom-Module.vdproj
NT/installer32/MonetDB5-SQL-Installer.vdproj
NT/installer64/MonetDB-ODBC-Installer.vdproj
NT/installer64/MonetDB5-Geom-Module.vdproj
NT/installer64/MonetDB5-SQL-Installer.vdproj
NT/monetdb_config.h.in
NT/rules.msc
clients/R/MonetDB.R/NAMESPACE
clients/R/MonetDB.R/NEWS
clients/R/MonetDB.R/R/dplyr.R
clients/R/Tests/dplyr.R
clients/Tests/MAL-signatures_all.stable.out.int128
clients/Tests/MAL-signatures_fits_geom.stable.out.int128
clients/Tests/MAL-signatures_geom.stable.out.int128
clients/Tests/MAL-signatures_none.stable.out.int128
clients/Tests/exports.stable.out
clients/mapiclient/mclient.c
clients/mapilib/mapi.rc
clients/nodejs/Tests/nodetest.js
clients/nodejs/monetdb/mapiclient.js
clients/nodejs/monetdb/package.json
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
clients/python2/setup.py
clients/python3/setup.py
configure.ag
debian/changelog
gdk/ChangeLog
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_align.c
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_delta.c
gdk/gdk_firstn.c
gdk/gdk_group.c
gdk/gdk_imprints.c
gdk/gdk_join.c
gdk/gdk_logger.c
gdk/gdk_private.h
gdk/gdk_search.c
gdk/gdk_search.h
gdk/gdk_select.c
gdk/gdk_setop.c
gdk/gdk_utils.c
gdk/libbat.rc
java/src/nl/cwi/monetdb/jdbc/MonetDriver.java.in
libversions
monetdb5/extras/rdf/rdf_shredder.c
monetdb5/mal/mal_authorize.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_interpreter.h
monetdb5/modules/atoms/json.c
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/str.c
monetdb5/modules/kernel/aggr.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/kernel/bat5.c
monetdb5/modules/mal/00_calc_hge.mal
monetdb5/modules/mal/00_mkey_hge.mal
monetdb5/modules/mal/Tests/pqueue3.stable.out
monetdb5/modules/mal/clients.c
monetdb5/modules/mal/cluster.c
monetdb5/modules/mal/mkey.c
monetdb5/modules/mal/querylog.c
monetdb5/modules/mal/tablet.c
monetdb5/modules/mal/tokenizer.c
monetdb5/optimizer/opt_generator.c
monetdb5/optimizer/opt_querylog.c
monetdb5/optimizer/opt_statistics.c
monetdb5/tests/gdkTests/Tests/firstn.stable.out
monetdb5/tools/libmonetdb5.rc
sql/backends/monet5/Makefile.ag
sql/backends/monet5/datacell/datacell.c
sql/backends/monet5/datacell/opt_datacell.c
sql/backends/monet5/datacell/opt_datacell.h
sql/backends/monet5/generator/Tests/All
sql/backends/monet5/sql.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_scenario.h
sql/backends/monet5/sql_user.c
sql/benchmarks/tpch/Tests/13-explain.stable.out.32bit
sql/benchmarks/tpch/Tests/16-explain.stable.out.32bit
sql/benchmarks/tpch/Tests/20-explain.stable.out.32bit
sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit
sql/server/rel_select.c
sql/storage/bat/bat_table.c
sql/storage/restrict/restrict_storage.c
sql/storage/restrict/restrict_table.c
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit
sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.single
sql/test/BugTracker-2014/Tests/All
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit
sql/test/json/Tests/All
sql/test/mergetables/Tests/All
sql/test/pg_regress/Tests/All
sql/test/pg_regress/Tests/alter_table.sql
sql/test/pg_regress/Tests/alter_table.stable.err
sql/test/pg_regress/Tests/alter_table.stable.out
sql/test/pg_regress/Tests/arrays.stable.err
sql/test/pg_regress/Tests/boolean.stable.err
sql/test/pg_regress/Tests/case.stable.err
sql/test/pg_regress/Tests/case.stable.out
sql/test/pg_regress/Tests/char.stable.err
sql/test/pg_regress/Tests/comments.stable.err
sql/test/pg_regress/Tests/create_aggregate.stable.err
sql/test/pg_regress/Tests/create_misc.stable.out
sql/test/pg_regress/Tests/create_operator.stable.err
sql/test/pg_regress/Tests/date.stable.err
sql/test/pg_regress/Tests/date.stable.out
sql/test/pg_regress/Tests/drop.stable.err
sql/test/pg_regress/Tests/float4.stable.err
sql/test/pg_regress/Tests/float8.stable.err
sql/test/pg_regress/Tests/inet.stable.err
sql/test/pg_regress/Tests/insert.stable.err
sql/test/pg_regress/Tests/int2.stable.err
sql/test/pg_regress/Tests/int4.stable.err
sql/test/pg_regress/Tests/int8.stable.err
sql/test/pg_regress/Tests/interval.stable.err
sql/test/pg_regress/Tests/interval.stable.out
sql/test/pg_regress/Tests/limit.sql
sql/test/pg_regress/Tests/limit.stable.err
sql/test/pg_regress/Tests/limit.stable.out
sql/test/pg_regress/Tests/numeric.stable.err
sql/test/pg_regress/Tests/numeric_big.stable.err
sql/test/pg_regress/Tests/numerology.stable.err
sql/test/pg_regress/Tests/numerology.stable.out
sql/test/pg_regress/Tests/oid.stable.err
sql/test/pg_regress/Tests/random.sql
sql/test/pg_regress/Tests/select_into.stable.err
sql/test/pg_regress/Tests/strings.stable.err
sql/test/pg_regress/Tests/strings_cast.stable.err
sql/test/pg_regress/Tests/strings_cast.stable.out
sql/test/pg_regress/Tests/strings_concat.stable.err
sql/test/pg_regress/Tests/timestamp.stable.err
sql/test/pg_regress/Tests/timestamp.stable.out
sql/test/pg_regress/Tests/timestamptz.stable.err
sql/test/pg_regress/Tests/timestamptz.stable.out
sql/test/pg_regress/Tests/timetz.stable.out
sql/test/pg_regress/Tests/vacuum.stable.out
sql/test/pg_regress/Tests/varchar.stable.err
sql/test/pg_regress/Tests/without_oid.stable.err
sql/test/pg_regress/Tests/without_oid.stable.out
tools/merovingian/daemon/forkmserver.c
tools/merovingian/daemon/merovingian.c
vertoo.data
Branch: transaction-replication
Log Message:
Merge with default branch
Manually resolve merge conflicts in gdk_logger.c and sql_screnario.c
diffs (truncated from 46511 to 300 lines):
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -578,3 +578,6 @@ 6c7d5f562fcb044b745c871344c25b1c6bab7cf4
3899334ca1f3c13924e8bd22d2afab8ab468e5ba Oct2014_root
0dd4a291a01def38d0d2f0a96559ea8c73a56b3f Oct2014_1
4f894ebf1a93ae895ec23d54ce2112bf21a6427e Oct2014_release
+e92e434d19b7308c2952d50978c2cfd78e1bdb80 Oct2014_3
+4f894ebf1a93ae895ec23d54ce2112bf21a6427e Oct2014_release
+88a29a5a2bef5c6cef6b3bfa5ab7c4d3b855a2c8 Oct2014_release
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -960,6 +960,9 @@ mv $RPM_BUILD_ROOT%{_datadir}/doc/MonetD
rm -fr $RPM_BUILD_ROOT
%changelog
+* Tue Oct 28 2014 Sjoerd Mullender <[email protected]> - 11.19.3-20141028
+- Rebuilt.
+
* Fri Oct 24 2014 Sjoerd Mullender <[email protected]> - 11.19.1-20141024
- Rebuilt.
- BZ#2618: Implement master slave scheme
diff --git a/clients/R/MonetDB.R/NAMESPACE b/clients/R/MonetDB.R/NAMESPACE
--- a/clients/R/MonetDB.R/NAMESPACE
+++ b/clients/R/MonetDB.R/NAMESPACE
@@ -28,4 +28,6 @@ export(db_insert_into.MonetDBConnection)
export(db_create_index.MonetDBConnection)
export(db_analyze.MonetDBConnection)
export(sql_subquery.MonetDBConnection)
-export(monetdb_queryinfo)
+export(monetdb_queryinfo)
+export(sample_n.tbl_monetdb)
+export(sample_frac.tbl_monetdb)
diff --git a/clients/R/MonetDB.R/NEWS b/clients/R/MonetDB.R/NEWS
--- a/clients/R/MonetDB.R/NEWS
+++ b/clients/R/MonetDB.R/NEWS
@@ -1,6 +1,7 @@
0.9.6
- Fixed non-ASCII character handling (thanks, Roman!)
- Fully removed C-based socket code
+- support for dplyr verbs sample_n() and sample_frac()
0.9.5
- Removed package date (Thanks, Dimitar)
diff --git a/clients/R/MonetDB.R/R/dplyr.R b/clients/R/MonetDB.R/R/dplyr.R
--- a/clients/R/MonetDB.R/R/dplyr.R
+++ b/clients/R/MonetDB.R/R/dplyr.R
@@ -19,7 +19,7 @@ src_translate_env.src_monetdb <- functio
}
src_desc.src_monetdb <- function(x) {
- paste0("MonetDB ",x$info$monet_version, " (",x$info$monet_release, ") [",
x$info$merovingian_uri,"]")
+ paste0("MonetDB ",x$info$monet_version, " (",x$info$monet_release, ")")
}
tbl.src_monetdb <- function(src, from, ...) {
@@ -27,6 +27,25 @@ tbl.src_monetdb <- function(src, from, .
dplyr::tbl_sql("monetdb", src = src, from = from, ...)
}
+sample_n.tbl_monetdb <- function(x, size, replace = FALSE, weight = NULL) {
+ if (replace || !is.null(weight)) {
+ stop("Sorry, replace and weight are not supported for MonetDB tables. \
+ Consider collect()'ing first.")
+ }
+ dbGetQuery(x$src$con, dplyr::build_sql(x$query$sql, " SAMPLE ",
as.integer(size)))
+}
+
+sample_frac.tbl_monetdb <- function(tbl, frac=1, replace = FALSE, weight =
NULL) {
+ if (frac < 0 || frac > 1) {
+ stop("frac must be in [0,1]")
+ }
+ n <- as.integer(round(dim(tbl)[[1]] * frac))
+ if (n < 1) {
+ stop("not sampling 0 rows...")
+ }
+ sample_n(tbl, n, replace, weight)
+}
+
db_query_fields.MonetDBConnection <- function(con, sql, ...) {
# prepare gives us column info without actually running a query. Nice.
dbGetQuery(con, dplyr::build_sql("PREPARE SELECT * FROM ", sql))$column
diff --git a/clients/R/Tests/dplyr.R b/clients/R/Tests/dplyr.R
--- a/clients/R/Tests/dplyr.R
+++ b/clients/R/Tests/dplyr.R
@@ -96,6 +96,10 @@ print(nrow(head(anti_join(player_info, h
}))
# TODO: set ops
+# sample functions
+print(nrow(sample_n(player_info, 10L)))
+print(nrow(head(sample_frac(player_info, .5), n=10L)))
+
# Arbitrary SQL -------------------------------------------------------------
# You can also provide sql as is, using the sql function:
batting2008 <- tbl(dps,
diff --git a/clients/Tests/MAL-signatures_all.stable.out.int128
b/clients/Tests/MAL-signatures_all.stable.out.int128
--- a/clients/Tests/MAL-signatures_all.stable.out.int128
+++ b/clients/Tests/MAL-signatures_all.stable.out.int128
@@ -40603,7 +40603,7 @@ command bat.delete(b:bat[:any_1,:any_2],
address BKCdelete_bun;
comment Delete one specific BUN.
-command bat.densebat(size:wrd):bat[:void,:void]
+command bat.densebat(size:wrd):bat[:oid,:oid]
address BKCdensebat;
comment Creates a new [void,void] BAT of size 'size'.
@@ -42476,7 +42476,7 @@ address CMDvarADDsignal;
comment Return V1 + V2, guarantee no overflow by returning larger type
pattern calc.++(v:hge):hge
-address CMDvarINCR;
+address CMDvarINCRsignal;
comment Unary V + 1
pattern calc.-(v1:dbl,v2:dbl):dbl
@@ -42944,7 +42944,7 @@ address CMDvarSUBsignal;
comment Return V1 - V2, guarantee no overflow by returning larger type
pattern calc.--(v:hge):hge
-address CMDvarDECR;
+address CMDvarDECRsignal;
comment Unary V - 1
pattern calc.-(v:hge):hge
@@ -51047,8 +51047,10 @@ pattern mkey.bulk_rotate_xor_hash(h:wrd,
address MKEYrotate_xor_hash;
comment post: [:xor=]([:rotate=](h, nbits), [hash](b))
-command mkey.hash(v:hge):wrd
-address MKEYhash_hge;
+pattern mkey.hash(v:hge):wrd
+address MKEYhash;
+comment calculate a hash value
+
pattern mkey.hash(v:str):wrd
address MKEYhash;
comment calculate a hash value
diff --git a/clients/Tests/MAL-signatures_fits_geom.stable.out.int128
b/clients/Tests/MAL-signatures_fits_geom.stable.out.int128
--- a/clients/Tests/MAL-signatures_fits_geom.stable.out.int128
+++ b/clients/Tests/MAL-signatures_fits_geom.stable.out.int128
@@ -40527,7 +40527,7 @@ command bat.delete(b:bat[:any_1,:any_2],
address BKCdelete_bun;
comment Delete one specific BUN.
-command bat.densebat(size:wrd):bat[:void,:void]
+command bat.densebat(size:wrd):bat[:oid,:oid]
address BKCdensebat;
comment Creates a new [void,void] BAT of size 'size'.
diff --git a/clients/Tests/MAL-signatures_geom.stable.out.int128
b/clients/Tests/MAL-signatures_geom.stable.out.int128
--- a/clients/Tests/MAL-signatures_geom.stable.out.int128
+++ b/clients/Tests/MAL-signatures_geom.stable.out.int128
@@ -40527,7 +40527,7 @@ command bat.delete(b:bat[:any_1,:any_2],
address BKCdelete_bun;
comment Delete one specific BUN.
-command bat.densebat(size:wrd):bat[:void,:void]
+command bat.densebat(size:wrd):bat[:oid,:oid]
address BKCdensebat;
comment Creates a new [void,void] BAT of size 'size'.
diff --git a/clients/Tests/MAL-signatures_none.stable.out.int128
b/clients/Tests/MAL-signatures_none.stable.out.int128
--- a/clients/Tests/MAL-signatures_none.stable.out.int128
+++ b/clients/Tests/MAL-signatures_none.stable.out.int128
@@ -40550,7 +40550,7 @@ command bat.delete(b:bat[:any_1,:any_2],
address BKCdelete_bun;
comment Delete one specific BUN.
-command bat.densebat(size:wrd):bat[:void,:void]
+command bat.densebat(size:wrd):bat[:oid,:oid]
address BKCdensebat;
comment Creates a new [void,void] BAT of size 'size'.
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
@@ -233,7 +233,7 @@ BAT *BUNdel(BAT *b, const void *left, co
BAT *BUNdelHead(BAT *b, const void *left, bit force);
BUN BUNdelete(BAT *b, BUN p, bit force);
BAT *BUNfastins(BAT *b, const void *left, const void *right);
-BUN BUNfnd(BAT *b, const void *left);
+BUN BUNfnd(BAT *b, const void *right);
BAT *BUNinplace(BAT *b, BUN p, const void *left, const void *right, bit force);
BAT *BUNins(BAT *b, const void *left, const void *right, bit force);
BAT *BUNreplace(BAT *b, const void *left, const void *right, bit force);
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1598,7 +1598,7 @@ format_result(Mapi mid, MapiHdl hdl, cha
mnstr_printf(toConsole,
LLFMT " affected row%s",
aff,
- aff == 1 ? "s" : "");
+ aff != 1 ? "s" : "");
if (lid != -1) {
mnstr_printf(toConsole,
", last generated key: "
diff --git a/clients/nodejs/Tests/nodetest.js b/clients/nodejs/Tests/nodetest.js
--- a/clients/nodejs/Tests/nodetest.js
+++ b/clients/nodejs/Tests/nodetest.js
@@ -13,21 +13,25 @@ monetdb.connect({dbname:'nonexist', port
assert(err);
});
-monetdb.connect({dbname:dbname, user:'nonexist', port:dbport}, function(err) {
+var failedconn = monetdb.connect({dbname:dbname, user:'nonexist',
port:dbport}, function(err) {
+ assert(err);
+});
+/* try to query on a failed connection, we need this callback */
+failedconn.query('SELECT 1',function(err,res) {
assert(err);
});
/* now actually connect */
-var conn = monetdb.connect({dbname:dbname, port:dbport, debug: true},
function(err) {
+var conn = monetdb.connect({dbname:dbname, port:dbport, debug: false},
function(err) {
assert.equal(null, err);
+ assert.equal(conn.env.gdk_dbname, dbname);
});
-/* some querying */
-conn.query('start transaction');
-
-conn.query('create table foo(a int, b float, c clob)');
-conn.query("insert into foo values
(42,4.2,'42'),(43,4.3,'43'),(44,4.4,'44'),(45,4.5,'45')");
+/* some querying, call chaining */
+conn.query('start transaction').
+ query('create table foo(a int, b float, c clob)').
+ query("insert into foo values
(42,4.2,'42'),(43,4.3,'43'),(44,4.4,'44'),(45,4.5,'45')");
conn.query('select * from foo', function(err, res) {
assert.equal(null, err);
@@ -44,10 +48,11 @@ conn.query('select * from foo', function
assert.equal(4, res.data.length);
assert.equal(42, res.data[0][res.structure[0].index]);
- assert.equal(4.3, res.data[1][1]);
+ assert.equal(4.3, res.data[1][res.col['b']]);
assert.equal('44', res.data[2][2]);
});
+/* we can also just put the queries in one .query call */
conn.query('delete from foo; drop table foo; rollback');
/* query that will stress multi-block operations */
@@ -85,6 +90,16 @@ conn.query('SELECT id from tables where
});
+/* some quoting fun, jesus */
+conn.query("SELECT '\\\\asdf','\"', '\\\"', '\\\\\"', '\\''", function(err,
res) {
+ assert.equal(null, err);
+ assert.equal('\\asdf', res.data[0][0]);
+ assert.equal('"', res.data[0][1]);
+ assert.equal('\"', res.data[0][2]);
+ assert.equal('\\"', res.data[0][3]);
+ assert.equal("'", res.data[0][4]);
+});
+
/* prepared statements can also be re-used */
conn.prepare('SELECT id from tables where name=? and type=? and readonly=?',
function(err, res){
assert.equal(null, err);
@@ -104,6 +119,3 @@ conn.prepare('SELECT id from tables wher
});
conn.close();
-
-
-
diff --git a/clients/nodejs/monetdb/README b/clients/nodejs/monetdb/README.md
rename from clients/nodejs/monetdb/README
rename to clients/nodejs/monetdb/README.md
--- a/clients/nodejs/monetdb/README
+++ b/clients/nodejs/monetdb/README.md
@@ -1,8 +1,21 @@
-This package connects node.js and MonetDB
+# monetdb
+This package defines a mapiclient that allows easy communication between a
NodeJS application and a running MonetDB server process.
-Example usage:
+# Installation
+npm install [-g] monetdb
-var conn = require('../monetdb').connect({'dbname':'mydb'} , function(err) {
+# Example usage:
+
+```
+var options = {
+ host : 'localhost',
+ port : 50000,
+ dbname : 'mydb',
+ user : 'monetdb',
+ password : 'monetdb'
+};
+
+var conn = require('monetdb').connect(options , function(err) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list