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