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

Reply via email to