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 =
"[email protected]"),
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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list