Changeset: 1432d91c86c3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1432d91c86c3
Modified Files:
        clients/R/MonetDB.R/DESCRIPTION
        clients/R/MonetDB.R/R/control.R
        clients/R/Tests/dbi.R
        clients/Tests/exports.stable.out
        common/stream/stream.c
        gdk/gdk_system.c
        geom/lib/libgeom.h
        geom/monetdb5/geom.c
        monetdb5/mal/mal.h
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_debugger.h
        monetdb5/modules/atoms/blob.h
        monetdb5/modules/mal/tablet.h
        sql/storage/bat/bat_storage.c
Branch: default
Log Message:

merged with Oct2014


diffs (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
@@ -1,5 +1,5 @@
 Package: MonetDB.R
-Version: 0.9.5
+Version: 0.9.6
 Title: Connect MonetDB to R
 Authors@R: c(person("Hannes Muehleisen", role = c("aut", "cre"),email = 
"han...@cwi.nl"),
        person("Thomas Lumley", role = "ctb"),
diff --git a/clients/R/MonetDB.R/R/control.R b/clients/R/MonetDB.R/R/control.R
--- a/clients/R/MonetDB.R/R/control.R
+++ b/clients/R/MonetDB.R/R/control.R
@@ -10,7 +10,7 @@ monetdb.server.start <-
       
       # run script
       system(bat.file,wait=T)
-      
+
       # read pid from file
       pid <- scan(pidfile,what=integer(),n=1)
       return(pid)
@@ -75,7 +75,7 @@ monetdb.server.stop <-
       system(paste0("kill ",correct.pid))  
       waittime <- 2
       if (!wait) return(TRUE)
-      Sys.sleep(1)
+      Sys.sleep(.5)
       repeat {
         psout <- system(paste0("ps ax | grep \"^", correct.pid, 
".*mserver5\""), ignore.stdout=T) 
         if (psout != 0) break
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
@@ -11,6 +11,7 @@ if (length(args) > 0)
        dbport <- args[[1]]
 
 options(monetdb.insert.splitsize=10)
+
 tname <- "monetdbtest"
 
 
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
@@ -2553,13 +2553,13 @@ str maxRef;
 str max_no_nilRef;
 int mayhaveSideEffects(Client cntxt, MalBlkPtr mb, InstrPtr p, int strict);
 void mdbDump(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str mdbGrab(Client cntxt, MalBlkPtr mb1, MalStkPtr stk1, InstrPtr pc1);
+str mdbGrab(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str mdbRef;
 int mdbSession(void);
 void mdbSetBreakRequest(Client cntxt, MalBlkPtr mb, str request, char cmd);
 int mdbSetTrap(Client cntxt, str modnme, str fcnnme, int flag);
-str mdbTrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, int pc);
-str mdbTrapClient(Client cntxt, MalBlkPtr mb1, MalStkPtr stk1, InstrPtr pc1);
+str mdbTrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str mdbTrapClient(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 int memoryclaims;
 lng memorypool;
 str mergecandRef;
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -3614,7 +3614,7 @@ bstream_destroy(bstream *s)
 typedef struct {
        stream *s;
        size_t len, pos;
-       char buf[1];            /* NOTE: buf extends beyond array for wbs->len 
bytes */
+       char buf[];             /* NOTE: buf extends beyond array for wbs->len 
bytes */
 } wbs_stream;
 
 static int
@@ -3716,7 +3716,7 @@ wbstream(stream *s, size_t buflen)
        ns = create_stream(s->name);
        if (ns == NULL)
                return NULL;
-       wbs = (wbs_stream *) malloc(sizeof(wbs_stream) + buflen - 1);
+       wbs = (wbs_stream *) malloc(sizeof(wbs_stream) + buflen);
        if (wbs == NULL) {
                destroy(ns);
                return NULL;
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -495,7 +495,6 @@ rm_posthread(struct posthread *p, int lo
                *pp = p->next;
        if (lock)
                pthread_mutex_unlock(&posthread_lock);
-       free(p);
 }
 
 static void
@@ -512,20 +511,22 @@ thread_starter(void *arg)
 static void
 join_threads(void)
 {
-       struct posthread *p;
+       struct posthread *p, *n = NULL;
        int waited;
        pthread_t tid;
 
        pthread_mutex_lock(&posthread_lock);
        do {
                waited = 0;
-               for (p = posthreads; p; p = p->next) {
+               for (p = posthreads; p; p = n) {
+                       n = p->next;
                        if (p->exited) {
                                tid = p->tid;
                                rm_posthread(p, 0);
                                pthread_mutex_unlock(&posthread_lock);
                                pthread_join(tid, NULL);
                                pthread_mutex_lock(&posthread_lock);
+                               free(p);
                                waited = 1;
                                break;
                        }
@@ -578,6 +579,7 @@ MT_create_thread(MT_Id *t, void (*f) (vo
 #endif
        } else if (p) {
                rm_posthread(p, 1);
+               free(p);
        }
 #ifdef HAVE_PTHREAD_SIGMASK
        MT_thread_sigmask(&orig_mask, NULL);
diff --git a/geom/lib/libgeom.h b/geom/lib/libgeom.h
--- a/geom/lib/libgeom.h
+++ b/geom/lib/libgeom.h
@@ -106,7 +106,7 @@ libgeom_export const char *geom_type2str
 
 typedef struct wkb {
        int len;
-       char data[1];
+       char data[];
 } wkb;
 
 typedef struct {
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -354,8 +354,8 @@ wkb_size(size_t len)
 {
        if (len == ~(size_t) 0)
                len = 0;
-       assert(sizeof(wkb) - 1 + len <= VAR_MAX);
-       return (var_t) (sizeof(wkb) - 1 + len);
+       assert(sizeof(wkb) + len <= VAR_MAX);
+       return (var_t) (sizeof(wkb) + len);
 }
 
 /* TOSTR: print atom in a string. */
@@ -539,7 +539,7 @@ wkbCOMP(wkb *l, wkb *r)
        if (len != r->len)
                return len - r->len;
 
-       if (len == ~(int) 0)
+       if (len == ~0)
                return (0);
 
        return memcmp(l->data, r->data, len);
@@ -550,7 +550,7 @@ wkbNULL(void)
 {
        static wkb nullval;
 
-       nullval.len = ~(int) 0;
+       nullval.len = ~0;
        return (&nullval);
 }
 
diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
+++ b/monetdb5/mal/mal.h
@@ -263,7 +263,7 @@ typedef struct MALSTK {
        int pcup;               /* saved pc upon a recursive all */
        struct MALSTK *up;      /* stack trace list */
        struct MALBLK *blk;     /* associated definition */
-       ValRecord stk[1];
+       ValRecord stk[];
 } MalStack, *MalStkPtr;
 
 #endif /*  _MAL_H*/
diff --git a/monetdb5/mal/mal_debugger.c b/monetdb5/mal/mal_debugger.c
--- a/monetdb5/mal/mal_debugger.c
+++ b/monetdb5/mal/mal_debugger.c
@@ -1049,11 +1049,11 @@ static MalBlkPtr trapped_mb;
 static MalStkPtr trapped_stk;
 static int trapped_pc;
 
-str mdbTrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, int pc)
+str mdbTrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
 {
-       InstrPtr p;
        int cnt = 20;   /* total 10 sec delay */
-       p = getInstrPtr(mb, pc);
+       int pc = getPC(mb,p);
+
        mnstr_printf(mal_clients[0].fdout, "#trapped %s.%s[%d]\n",
                        getModuleId(mb->stmt[0]), getFunctionId(mb->stmt[0]), 
pc);
        printInstruction(mal_clients[0].fdout, mb, stk, p, LIST_MAL_DEBUG);
@@ -1097,7 +1097,7 @@ mdbStep(Client cntxt, MalBlkPtr mb, MalS
                cntxt->mdb = &state;
                mnstr_printf(mal_clients[0].fdout, "#Process %d put to 
sleep\n", (int) (cntxt - mal_clients));
                cntxt->itrace = 'W';
-               mdbTrap(cntxt, mb, stk, pc);
+               mdbTrap(cntxt, mb, stk, state.p);
                while (cntxt->itrace == 'W')
                        MT_sleep_ms(300);
                mnstr_printf(mal_clients[0].fdout, "#Process %d woke up\n", 
(int) (cntxt - mal_clients));
@@ -1108,7 +1108,7 @@ mdbStep(Client cntxt, MalBlkPtr mb, MalS
        /* a trapped call leads to process suspension */
        /* then the console can be used to attach a debugger */
        if (mb->trap) {
-               mdbTrap(cntxt, mb, stk, pc);
+               mdbTrap(cntxt, mb, stk, getInstrPtr(mb,pc));
                return;
        }
        p = getInstrPtr(mb, pc);
diff --git a/monetdb5/mal/mal_debugger.h b/monetdb5/mal/mal_debugger.h
--- a/monetdb5/mal/mal_debugger.h
+++ b/monetdb5/mal/mal_debugger.h
@@ -32,9 +32,9 @@ mal_export int MDBdelay;      /* do not immed
 
 mal_export void mdbSetBreakRequest(Client cntxt, MalBlkPtr mb, str request, 
char cmd);
 mal_export int mdbSetTrap(Client cntxt, str modnme, str fcnnme, int flag);
-mal_export str mdbGrab(Client cntxt, MalBlkPtr mb1, MalStkPtr stk1, InstrPtr 
pc1);
-mal_export str mdbTrapClient(Client cntxt, MalBlkPtr mb1, MalStkPtr stk1, 
InstrPtr pc1);
-mal_export str mdbTrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, int pc);
+mal_export str mdbGrab(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
+mal_export str mdbTrapClient(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+mal_export str mdbTrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 mal_export int mdbSession(void);
 mal_export void mdbDump(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 mal_export void printStack(stream *f, MalBlkPtr mb, MalStkPtr s);
diff --git a/monetdb5/modules/atoms/blob.h b/monetdb5/modules/atoms/blob.h
--- a/monetdb5/modules/atoms/blob.h
+++ b/monetdb5/modules/atoms/blob.h
@@ -27,7 +27,7 @@
 
 typedef struct blob {
        size_t nitems;
-       /*unsigned */ char data[1];
+       /*unsigned */ char data[];
 } blob;
 
 #define sqlblob blob
diff --git a/monetdb5/modules/mal/tablet.h b/monetdb5/modules/mal/tablet.h
--- a/monetdb5/modules/mal/tablet.h
+++ b/monetdb5/modules/mal/tablet.h
@@ -84,30 +84,13 @@ typedef struct Column_t {
  */
 
 typedef struct Table_t {
-       char *sep;                                      /* default separator */
-       str ttopbrk, tbotbrk;           /* table brackets */
-       str rlbrk, rrbrk;                       /* row brackets */
-       str properties;                         /* of header to display */
-       str title, footer;                      /* alternatives */
        BUN offset;
        BUN nr;                                         /* allocated space for 
table loads */
-       size_t pageLimit;
-       size_t firstrow, lastrow;       /* last window to print */
        BUN nr_attrs;                           /* attributes found sofar */
-       size_t max_attrs;
        Column *format;                         /* remove later */
-       stream *fd;
-       BAT *pivot;
        str error;                                      /* last error */
        int tryall;                                     /* skip erroneous lines 
*/
        BAT *complaints;                        /* lines that did not match the 
required input */
-       unsigned int rowwidth;          /* sum of columns used for mallocs */
-       bstream *input;                         /* where to get the data from */
-       stream *output;                         /* where to leave immediate 
output */
-       lng bytes;                                      /* required bytes to 
load (round up to end of record) */
-       MT_Id tid;                                      /* Thread id for 
parallel loads only */
-       int partid;                                     /* partition number */
-       Column columns[1];                      /* at least one column, 
enlarged upon need */
 } Tablet;
 
 tablet_export BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream 
*out, char *csep, char *rsep, char quote, lng skip, lng maxrow);
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -1381,6 +1381,7 @@ empty_col(sql_column *c)
        assert(c->data && c->base.allocated && bat->bid == 0);
        bat->bid = bat->ibid;
        bat->ibid = e_bat(type);
+       bat->ibase = BATcount(BBPquickdesc(bat->bid, 0));
        if (bat->bid == bat->ibid)
                bat->bid = copyBat(bat->ibid, type, 0);
 }
@@ -1394,6 +1395,7 @@ empty_idx(sql_idx *i)
        assert(i->data && i->base.allocated && bat->bid == 0);
        bat->bid = bat->ibid;
        bat->ibid = e_bat(type);
+       bat->ibase = BATcount(BBPquickdesc(bat->bid, 0));
        if (bat->bid == bat->ibid) 
                bat->bid = copyBat(bat->ibid, type, 0);
 }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to