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 <sjo...@acm.org> - 11.19.3-20141028
+- Rebuilt.
+
 * Fri Oct 24 2014 Sjoerd Mullender <sjo...@acm.org> - 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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to