Changeset: 152cf6b806e0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=152cf6b806e0
Added Files:
clients/R/MonetDB.R/man/src_monetdb.Rd
sql/test/BugTracker-2014/Tests/duplicate_primary_keys.Bug-3474.sql
sql/test/BugTracker-2014/Tests/manifold.Bug-3556.sql
sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.err
sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.sql
sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.err
sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
Modified Files:
clients/R/MonetDB.R/DESCRIPTION
clients/R/MonetDB.R/NAMESPACE
clients/R/MonetDB.R/R/dbi.R
clients/R/MonetDB.R/R/dplyr.R
clients/R/Tests/dbi.R
gdk/gdk_imprints.c
monetdb5/mal/mal_runtime.c
monetdb5/modules/atoms/Tests/xml10.mal
monetdb5/modules/atoms/Tests/xml10.stable.out
monetdb5/modules/mal/manifold.c
monetdb5/scheduler/Tests/memo01.mal
monetdb5/scheduler/Tests/memo01.stable.out
monetdb5/scheduler/Tests/memo02.mal
monetdb5/scheduler/Tests/memo02.stable.out
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cast.c
sql/backends/monet5/sql_fround.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_round.c
sql/benchmarks/ssbm/Tests/01-explain.stable.out
sql/benchmarks/ssbm/Tests/02-explain.stable.out
sql/benchmarks/ssbm/Tests/03-explain.stable.out
sql/benchmarks/ssbm/Tests/04-explain.stable.out
sql/benchmarks/ssbm/Tests/05-explain.stable.out
sql/benchmarks/ssbm/Tests/06-explain.stable.out
sql/benchmarks/ssbm/Tests/07-explain.stable.out
sql/benchmarks/ssbm/Tests/08-explain.stable.out
sql/benchmarks/ssbm/Tests/09-explain.stable.out
sql/benchmarks/ssbm/Tests/10-explain.stable.out
sql/benchmarks/ssbm/Tests/11-explain.stable.out
sql/benchmarks/ssbm/Tests/12-explain.stable.out
sql/benchmarks/ssbm/Tests/13-explain.stable.out
sql/benchmarks/tpch/Tests/01-explain.stable.out
sql/benchmarks/tpch/Tests/02-explain.stable.out
sql/benchmarks/tpch/Tests/03-explain.stable.out
sql/benchmarks/tpch/Tests/04-explain.stable.out
sql/benchmarks/tpch/Tests/05-explain.stable.out
sql/benchmarks/tpch/Tests/06-explain.stable.out
sql/benchmarks/tpch/Tests/07-explain.stable.out
sql/benchmarks/tpch/Tests/08-explain.stable.out
sql/benchmarks/tpch/Tests/09-explain.stable.out
sql/benchmarks/tpch/Tests/10-explain.stable.out
sql/benchmarks/tpch/Tests/11-explain.stable.out
sql/benchmarks/tpch/Tests/12-explain.stable.out
sql/benchmarks/tpch/Tests/13-explain.stable.out
sql/benchmarks/tpch/Tests/14-explain.stable.out
sql/benchmarks/tpch/Tests/15-explain.stable.out
sql/benchmarks/tpch/Tests/16-explain.stable.out
sql/benchmarks/tpch/Tests/17-explain.stable.out
sql/benchmarks/tpch/Tests/18-explain.stable.out
sql/benchmarks/tpch/Tests/19-explain.stable.out
sql/benchmarks/tpch/Tests/20-explain.stable.out
sql/benchmarks/tpch/Tests/21-explain.stable.out
sql/benchmarks/tpch/Tests/22-explain.stable.out
sql/server/sql_atom.c
sql/server/sql_atom.h
sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
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
sql/test/BugTracker-2014/Tests/All
sql/test/BugTracker/Tests/alter_col_to_set_same_constraint.SF-1850781.stable.err
sql/test/BugTracker/Tests/alter_table_add_fkey.SF-1737668.stable.err
sql/test/BugTracker/Tests/alter_table_set_not_null.SF-1997030.stable.err
sql/test/BugTracker/Tests/ambiguous_join.SF-1580565.stable.err
sql/test/BugTracker/Tests/auto_increment.SF-1834820.stable.err
sql/test/BugTracker/Tests/between_having_problem.SF-1959391.stable.err
sql/test/BugTracker/Tests/between_with_column.SF-1959410.stable.err
sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
sql/test/BugTracker/Tests/broken_join.SF-1373391.stable.err
sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.err
sql/test/BugTracker/Tests/coalesce_equal_coalesce.SF-1907905.stable.err
sql/test/BugTracker/Tests/copy_decimal.SF-1582957.stable.err
sql/test/BugTracker/Tests/copy_overflow_null_bug.SF-1842550.stable.err
sql/test/BugTracker/Tests/crash_on_fkey_update.SF-1703497.stable.err
sql/test/BugTracker/Tests/crash_on_fkey_update2.SF-1703497.stable.err
sql/test/BugTracker/Tests/create_column.SF-1643542.stable.err
sql/test/BugTracker/Tests/create_same_temp_tab_after_its_drop.SF-1850809.stable.err
sql/test/BugTracker/Tests/creation_of_exeception_for_select.SF-1841749.stable.err
sql/test/BugTracker/Tests/drop_system_tables.SF-1550768.stable.err
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/groupby_orderby_nonselected.SF-1723863.stable.err
sql/test/BugTracker/Tests/insert_date.SF-1838785.stable.err
sql/test/BugTracker/Tests/insert_values.SF-1578838.stable.err
sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/BugTracker/Tests/limits_of_decimal.SF-1685357.stable.err
sql/test/BugTracker/Tests/multivalue_insert.SF-1509864.stable.err
sql/test/BugTracker/Tests/number_null_first_row.SF-1833286.stable.err
sql/test/BugTracker/Tests/reset_session_vars.SF-1505987.stable.err
sql/test/BugTracker/Tests/revoke_role.SF-1691646.stable.err
sql/test/BugTracker/Tests/set_a_new_user_password.SF-1844050.stable.err
sql/test/BugTracker/Tests/set_operation_coersions.SF-1543216.stable.err
sql/test/BugTracker/Tests/string2int_conversion.SF-1356068.stable.err
sql/test/BugTracker/Tests/subquery_orderby.SF-1688915.stable.err
sql/test/BugTracker/Tests/table_dependency_inside_union.SF-1884382.stable.err
sql/test/BugTracker/Tests/temporary_tables.SF-1715669.stable.err
sql/test/BugTracker/Tests/update_fkey_with_value_not_in_the_pkey.SF-1734143.stable.err
sql/test/BugTracker/Tests/update_pkey_bug.SF-1733712.stable.err
sql/test/BugTracker/Tests/variables.SF-1508160.stable.err
sql/test/BugTracker/Tests/view_creation_using_func.SF-1714814.stable.err
Branch: default
Log Message:
Merge with Oct2014 branch.
diffs (truncated from 4898 to 300 lines):
diff --git a/clients/R/MonetDB.R/DESCRIPTION b/clients/R/MonetDB.R/DESCRIPTION
--- a/clients/R/MonetDB.R/DESCRIPTION
+++ b/clients/R/MonetDB.R/DESCRIPTION
@@ -7,7 +7,7 @@ Authors@R: c(person("Hannes Muehleisen",
Author: Hannes Muehleisen [aut, cre], Thomas Lumley [ctb], Anthony Damico [ctb]
Maintainer: Hannes Muehleisen <[email protected]>
Depends: DBI (>= 0.3.1), digest (>= 0.6.4), methods, R (>= 3.1.1)
-Suggests: dplyr
+Enhances: dplyr (>= 0.3.0)
Description: Allows to pull data from MonetDB into R. Includes a DBI
implementation and a dplyr backend.
License: MPL (== 1.1)
URL: http://monetr.r-forge.r-project.org
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,5 +28,4 @@ export(db_insert_into.MonetDBConnection)
export(db_create_index.MonetDBConnection)
export(db_analyze.MonetDBConnection)
export(sql_subquery.MonetDBConnection)
-export(sql_join.MonetDBConnection)
export(monetdb_queryinfo)
diff --git a/clients/R/MonetDB.R/R/dbi.R b/clients/R/MonetDB.R/R/dbi.R
--- a/clients/R/MonetDB.R/R/dbi.R
+++ b/clients/R/MonetDB.R/R/dbi.R
@@ -102,7 +102,7 @@ setMethod("dbConnect", "MonetDBDriver",
continue <- FALSE
tryCatch ({
# open socket with 5-sec timeout so we can check whether everything
works
- socket <- socket <<- .mapiConnect(host, port, 5)
+ suppressWarnings(socket <- socket <<- .mapiConnect(host, port, 5))
# authenticate
.mapiAuthenticate(socket, dbname, user, password, language=language)
.mapiDisconnect(socket)
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
@@ -1,5 +1,6 @@
src_monetdb <- function(dbname, host = "localhost", port = 50000L, user =
"monetdb",
password = "monetdb", ...) {
+ require(dplyr)
con <- dbConnect(MonetDB.R(), dbname = dbname , host = host, port = port,
user = user, password = password, ...)
src_sql("monetdb", con, info = dbGetInfo(con))
@@ -17,10 +18,6 @@ src_translate_env.src_monetdb <- functio
)
}
-sql_join.MonetDBConnection <- function(con, x, y, type = "inner", by = NULL,
...) {
- NextMethod("sql_join",...)
-}
-
src_desc.src_monetdb <- function(x) {
paste0("MonetDB ",x$info$monet_version, " (",x$info$monet_release, ") [",
x$info$merovingian_uri,"]")
}
diff --git a/clients/R/MonetDB.R/man/src_monetdb.Rd
b/clients/R/MonetDB.R/man/src_monetdb.Rd
new file mode 100644
--- /dev/null
+++ b/clients/R/MonetDB.R/man/src_monetdb.Rd
@@ -0,0 +1,51 @@
+\name{src_monetdb}
+\alias{src_monetdb}
+\alias{tbl.src_monetdb}
+\alias{src_desc.src_monetdb}
+\alias{src_translate_env.src_monetdb}
+\alias{db_analyze.MonetDBConnection}
+\alias{db_create_index.MonetDBConnection}
+\alias{db_insert_into.MonetDBConnection}
+\alias{db_query_fields.MonetDBConnection}
+\alias{db_query_rows.MonetDBConnection}
+\alias{db_save_query.MonetDBConnection}
+\alias{sql_subquery.MonetDBConnection}
+
+\title{dplyr integration from MonetDB.R}
+\usage{
+src_monetdb(dbname, host = "localhost", port = 50000L, user = "monetdb",
+ password = "monetdb", ...)
+
+\method{tbl}{src_monetdb}(src, from, ...)
+}
+\arguments{
+\item{dbname}{Database name}
+
+\item{host,port}{Host name and port number of database (defaults to
localhost:50000)}
+
+\item{user,password}{User name and password (if needed)}
+
+\item{...}{for the src, other arguments passed on to the underlying
+database connector, \code{dbConnect}.}
+
+\item{src}{a MonetDB src created with \code{src_monetdb}.}
+
+\item{from}{Either a string giving the name of table in database, or SQL
described a derived table or compound join.}
+}
+\description{
+Use \code{src_monetdb} to connect to an existing MonetDB database,
+and \code{tbl} to connect to tables within that database. Please note that the
ORDER BY, LIMIT and OFFSET keywords
+are not supported in the query when using \code{tbl} on a connection to a
MonetDB database.
+If you are running a local database, you only need to define the name of the
database you want to connect to.
+}
+
+\examples{
+\dontrun{
+# Connection basics ---------------------------------------------------------
+# To connect to a database first create a src:
+my_db <- src_monetdb(dbname="demo")
+# Then reference a tbl within that src
+my_tbl <- tbl(my_db, "my_table")
+}
+}
+
diff --git a/clients/R/Tests/dbi.R b/clients/R/Tests/dbi.R
--- a/clients/R/Tests/dbi.R
+++ b/clients/R/Tests/dbi.R
@@ -17,7 +17,7 @@ tname <- "monetdbtest"
drv <- dbDriver("MonetDB")
stopifnot(identical(dbGetInfo(drv)$name,"MonetDBDriver"))
-con <- conn <- dbConnect(drv, port=dbport, dbname=dbname)
+con <- conn <- dbConnect(drv, port=dbport, dbname=dbname, wait=T)
stopifnot(identical(class(con)[[1]],"MonetDBConnection"))
# basic MAPI/SQL test
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -550,6 +550,7 @@ BATimprints(BAT *b)
{
BAT *o = NULL;
Imprints *imprints;
+ lng t0 =0,t1=0;
assert(BAThdense(b)); /* assert void head */
@@ -590,6 +591,7 @@ BATimprints(BAT *b)
}
MT_lock_set(&GDKimprintsLock(abs(b->batCacheid)), "BATimprints");
+ t0= GDKusec();
if (b->T->imprints == NULL) {
BAT *smp, *s;
BUN cnt;
@@ -795,6 +797,9 @@ BATimprints(BAT *b)
}
b->T->imprints = imprints;
}
+
+ t1 = GDKusec();
+ ALGODEBUG fprintf(stderr, "#BATimprints: imprints construction " LLFMT
" usec\n", t1 - t0);
do_return:
MT_lock_unset(&GDKimprintsLock(abs(b->batCacheid)), "BATimprints");
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -187,7 +187,7 @@ runtimeProfileExit(Client cntxt, MalBlkP
assert(pci);
assert(prof);
/* always collect the MAL instruction execution time */
- pci->ticks += GDKusec() - prof->ticks;
+ pci->ticks = GDKusec() - prof->ticks;
pci->calls++;
if (getProfileCounter(PROFfootprint) ){
diff --git a/monetdb5/modules/atoms/Tests/xml10.mal
b/monetdb5/modules/atoms/Tests/xml10.mal
--- a/monetdb5/modules/atoms/Tests/xml10.mal
+++ b/monetdb5/modules/atoms/Tests/xml10.mal
@@ -35,7 +35,7 @@ bat.insert(g,0@0,0@0);
bat.insert(g,1@0,0@0);
bat.insert(g,2@0,1@0);
-k:= algebra.join(g,te);
+k:= algebra.leftfetchjoin(g,te);
io.print(k);
l:= algebra.subsort(k,false,false);
io.print(l);
diff --git a/monetdb5/modules/atoms/Tests/xml10.stable.out
b/monetdb5/modules/atoms/Tests/xml10.stable.out
--- a/monetdb5/modules/atoms/Tests/xml10.stable.out
+++ b/monetdb5/modules/atoms/Tests/xml10.stable.out
@@ -48,7 +48,7 @@ function user.main():void;
bat.insert(g,0@0,0@0);
bat.insert(g,1@0,0@0);
bat.insert(g,2@0,1@0);
- k := algebra.join(g,te);
+ k := algebra.leftfetchjoin(g,te);
io.print(k);
l := algebra.subsort(k,false,false);
io.print(l);
diff --git a/monetdb5/modules/mal/manifold.c b/monetdb5/modules/mal/manifold.c
--- a/monetdb5/modules/mal/manifold.c
+++ b/monetdb5/modules/mal/manifold.c
@@ -47,6 +47,7 @@ typedef struct{
void *last;
int size;
int type;
+ BUN cnt;
BATiter bi;
BUN o;
BUN q;
@@ -67,12 +68,15 @@ typedef struct{
// keep the last error message received
#define ManifoldLoop(Type, ...) { \
Type *v = (Type*) mut->args[0].first; \
- for( ; p<q ; p += mut->args[mut->fvar].size){ \
+ oid oo, olimit = mut->args[mut->fvar].cnt; \
+ for( oo= 0; oo < olimit; oo++){\
msg = (*mut->pci->fcn)(v, __VA_ARGS__); \
- if (msg) \
- break; \
+ if (msg) break; \
for( i = mut->fvar; i<= mut->lvar; i++) { \
- if(ATOMstorage(mut->args[i].type) < TYPE_str){ \
+ if(ATOMstorage(mut->args[i].type == TYPE_void) ){
\
+ args[i] = (void*) &mut->args[i].o; \
+ mut->args[i].o++; \
+ } else if(ATOMstorage(mut->args[i].type) < TYPE_str ) {
\
args[i] += mut->args[i].size; \
} else if (ATOMvarsized(mut->args[i].type)) { \
mut->args[i].o++; \
@@ -107,13 +111,17 @@ case TYPE_flt: ManifoldLoop(flt,__VA_ARG
case TYPE_dbl: ManifoldLoop(dbl,__VA_ARGS__); break;\
case TYPE_str: \
default:\
- for( ; p< q ; p += mut->args[mut->fvar].size){ \
+{ oid oo, olimit = mut->args[mut->fvar].cnt; \
+ for( oo= 0; oo < olimit; oo++){\
msg = (*mut->pci->fcn)(&y, __VA_ARGS__); \
if (msg) \
break; \
bunfastapp(mut->args[0].b, (void*) y); \
for( i = mut->fvar; i<= mut->lvar; i++) { \
- if(ATOMstorage(mut->args[i].type) < TYPE_str){ \
+ if(ATOMstorage(mut->args[i].type == TYPE_void) ){
\
+ args[i] = (void*) &mut->args[i].o; \
+ mut->args[i].o++; \
+ } else if(ATOMstorage(mut->args[i].type) < TYPE_str){
\
args[i] += mut->args[i].size; \
} else if(ATOMvarsized(mut->args[i].type)){ \
mut->args[i].o++; \
@@ -126,7 +134,7 @@ default:\
} \
} \
} \
-}
+} }
// single argument is preparatory step for GDK_mapreduce
// Only the last error message is returned, the value of
@@ -134,7 +142,6 @@ default:\
static str
MANIFOLDjob(MULTItask *mut)
{ int i;
- char *p, *q;
char **args;
str y = NULL, msg= MAL_SUCCEED;
@@ -145,9 +152,9 @@ MANIFOLDjob(MULTItask *mut)
// the mod.fcn arguments are ignored from the call
for( i = mut->pci->retc+2; i< mut->pci->argc; i++) {
if ( mut->args[i].b ){
- if(ATOMstorage(mut->args[i].type) < TYPE_str){ \
+ if(ATOMstorage(mut->args[i].type) < TYPE_str){
args[i] = (char*) mut->args[i].first;
- } else if(ATOMvarsized(mut->args[i].type)){ \
+ } else if(ATOMvarsized(mut->args[i].type)){
mut->args[i].s = (str*)
BUNtail(mut->args[i].bi, mut->args[i].o);
args[i] = (void*) & mut->args[i].s;
} else {
@@ -162,8 +169,6 @@ MANIFOLDjob(MULTItask *mut)
#ifdef _DEBUG_MANIFOLD_
mnstr_printf(mut->cntxt->fdout,"#MANIFOLDjob fvar %d lvar %d type
%d\n",mut->fvar,mut->lvar, ATOMstorage(mut->args[mut->fvar].b->ttype));
#endif
- p = (char*) mut->args[mut->fvar].first;
- q = (char*) mut->args[mut->fvar].last;
// use limited argument list expansion.
switch(mut->pci->argc){
case 4: Manifoldbody(args[3]); break;
@@ -203,7 +208,17 @@ MANIFOLDtypecheck(Client cntxt, MalBlkPt
getVarConstant(mb,getArg(pci,pci->retc+1)).val.sval);
// Prepare the single result variable
- tpe =getColumnType(getArgType(mb,pci,0));
+ tpe = TYPE_any;
+ for( i = pci->retc+2; i < pci->argc; i++)
+ if ( isaBatType(getArgType(mb,pci,i)) ){
+ tpe =getColumnType(getArgType(mb,pci,i));
+ break;
+ }
+ if( tpe == TYPE_any ){
+ freeMalBlk(nmb);
+ return NULL;
+ }
+
k= getArg(q,0);
setVarType(nmb,k,tpe);
setVarFixed(nmb,k);
@@ -246,6 +261,7 @@ MANIFOLDevaluate(Client cntxt, MalBlkPtr
MULTIarg *mat;
int i, tpe= 0;
BUN cnt = 0;
+ oid o = 0;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list