Changeset: cf441e717e5c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cf441e717e5c
Added Files:
sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.sql
sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.err
sql/test/BugTracker-2015/Tests/convert-to-bit.Bug-3719.stable.out
Modified Files:
MonetDB.spec
clients/Tests/exports.stable.out
clients/mapiclient/eventparser.h
clients/mapiclient/tachograph.c
clients/mapiclient/tomograph.c
debian/control
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_align.c
gdk/gdk_atoms.c
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_calc.c
gdk/gdk_calc.h
gdk/gdk_calc_compare.h
gdk/gdk_cross.c
gdk/gdk_delta.c
gdk/gdk_imprints.c
gdk/gdk_join.c
gdk/gdk_join_legacy.c
gdk/gdk_logger.c
gdk/gdk_select.c
gdk/gdk_setop.c
gdk/gdk_storage.c
gdk/gdk_utils.c
gdk/gdk_value.c
geom/monetdb5/geom.c
monetdb5/mal/mal_atom.c
monetdb5/mal/mal_profiler.c
monetdb5/modules/atoms/batxml.c
monetdb5/modules/atoms/blob.c
monetdb5/modules/atoms/json.c
monetdb5/modules/atoms/uuid.c
monetdb5/modules/kernel/aggr.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/kernel/bat5.c
monetdb5/modules/kernel/logger.c
monetdb5/modules/kernel/microbenchmark.c
monetdb5/modules/mal/batcalc.c
monetdb5/modules/mal/calc.c
monetdb5/modules/mal/mal_io.c
monetdb5/modules/mal/mat.c
monetdb5/modules/mal/pcre.c
monetdb5/modules/mal/tablet.c
monetdb5/modules/mal/tokenizer.c
sql/backends/monet5/generator/generator.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_result.c
sql/include/sql_mem.h
sql/server/rel_schema.c
sql/test/BugTracker-2015/Tests/All
sql/test/pg_regress/Tests/timestamptz.stable.out
testing/malcheck.py
Branch: mosaic
Log Message:
Merge with default branch.
diffs (truncated from 4092 to 300 lines):
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -161,6 +161,8 @@ more client packages.
Summary: MonetDB development files
Group: Applications/Databases
Requires: %{name} = %{version}-%{release}
+Requires: %{name}-stream-devel = %{version}-%{release}
+Requires: libatomic_ops-devel
%description devel
MonetDB is a database management system that is developed from a
@@ -688,6 +690,7 @@ MonetDB5-server component.
Summary: MonetDB development files
Group: Applications/Databases
Requires: MonetDB5-server = %{version}-%{release}
+Requires: %{name}-devel = %{version}-%{release}
%description -n MonetDB5-server-devel
MonetDB is a database management system that is developed from a
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
@@ -30,7 +30,7 @@ BAT *BATcalcadd(BAT *b1, BAT *b2, BAT *s
BAT *BATcalcaddcst(BAT *b, const ValRecord *v, BAT *s, int tp, int
abort_on_error);
BAT *BATcalcand(BAT *b1, BAT *b2, BAT *s);
BAT *BATcalcandcst(BAT *b, const ValRecord *v, BAT *s);
-int BATcalcavg(BAT *b, BAT *s, dbl *avg, BUN *vals);
+gdk_return BATcalcavg(BAT *b, BAT *s, dbl *avg, BUN *vals);
BAT *BATcalcbetween(BAT *b, BAT *lo, BAT *hi, BAT *s, int sym);
BAT *BATcalcbetweenbatcst(BAT *b, BAT *lo, const ValRecord *hi, BAT *s, int
sym);
BAT *BATcalcbetweencstbat(BAT *b, const ValRecord *lo, BAT *hi, BAT *s, int
sym);
@@ -338,34 +338,34 @@ void *VALget(ValPtr v);
ValPtr VALinit(ValPtr d, int tpe, const void *s);
int VALisnil(const ValRecord *v);
ValPtr VALset(ValPtr v, int t, ptr p);
-int VARcalcabsolute(ValPtr ret, const ValRecord *v);
-int VARcalcadd(ValPtr ret, const ValRecord *lft, const ValRecord *rgt, int
abort_on_error);
-int VARcalcand(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalcbetween(ValPtr ret, const ValRecord *v, const ValRecord *lo, const
ValRecord *hi, int sym);
-int VARcalccmp(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalcdecr(ValPtr ret, const ValRecord *v, int abort_on_error);
-int VARcalcdiv(ValPtr ret, const ValRecord *lft, const ValRecord *rgt, int
abort_on_error);
-int VARcalceq(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalcge(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalcgt(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalcincr(ValPtr ret, const ValRecord *v, int abort_on_error);
-int VARcalcisnil(ValPtr ret, const ValRecord *v);
-int VARcalcisnotnil(ValPtr ret, const ValRecord *v);
-int VARcalciszero(ValPtr ret, const ValRecord *v);
-int VARcalcle(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalclsh(ValPtr ret, const ValRecord *lft, const ValRecord *rgt, int
abort_on_error);
-int VARcalclt(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalcmod(ValPtr ret, const ValRecord *lft, const ValRecord *rgt, int
abort_on_error);
-int VARcalcmul(ValPtr ret, const ValRecord *lft, const ValRecord *rgt, int
abort_on_error);
-int VARcalcne(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalcnegate(ValPtr ret, const ValRecord *v);
-int VARcalcnot(ValPtr ret, const ValRecord *v);
-int VARcalcor(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARcalcrsh(ValPtr ret, const ValRecord *lft, const ValRecord *rgt, int
abort_on_error);
-int VARcalcsign(ValPtr ret, const ValRecord *v);
-int VARcalcsub(ValPtr ret, const ValRecord *lft, const ValRecord *rgt, int
abort_on_error);
-int VARcalcxor(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
-int VARconvert(ValPtr ret, const ValRecord *v, int abort_on_error);
+gdk_return VARcalcabsolute(ValPtr ret, const ValRecord *v);
+gdk_return VARcalcadd(ValPtr ret, const ValRecord *lft, const ValRecord *rgt,
int abort_on_error);
+gdk_return VARcalcand(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalcbetween(ValPtr ret, const ValRecord *v, const ValRecord *lo,
const ValRecord *hi, int sym);
+gdk_return VARcalccmp(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalcdecr(ValPtr ret, const ValRecord *v, int abort_on_error);
+gdk_return VARcalcdiv(ValPtr ret, const ValRecord *lft, const ValRecord *rgt,
int abort_on_error);
+gdk_return VARcalceq(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalcge(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalcgt(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalcincr(ValPtr ret, const ValRecord *v, int abort_on_error);
+gdk_return VARcalcisnil(ValPtr ret, const ValRecord *v);
+gdk_return VARcalcisnotnil(ValPtr ret, const ValRecord *v);
+gdk_return VARcalciszero(ValPtr ret, const ValRecord *v);
+gdk_return VARcalcle(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalclsh(ValPtr ret, const ValRecord *lft, const ValRecord *rgt,
int abort_on_error);
+gdk_return VARcalclt(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalcmod(ValPtr ret, const ValRecord *lft, const ValRecord *rgt,
int abort_on_error);
+gdk_return VARcalcmul(ValPtr ret, const ValRecord *lft, const ValRecord *rgt,
int abort_on_error);
+gdk_return VARcalcne(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalcnegate(ValPtr ret, const ValRecord *v);
+gdk_return VARcalcnot(ValPtr ret, const ValRecord *v);
+gdk_return VARcalcor(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARcalcrsh(ValPtr ret, const ValRecord *lft, const ValRecord *rgt,
int abort_on_error);
+gdk_return VARcalcsign(ValPtr ret, const ValRecord *v);
+gdk_return VARcalcsub(ValPtr ret, const ValRecord *lft, const ValRecord *rgt,
int abort_on_error);
+gdk_return VARcalcxor(ValPtr ret, const ValRecord *lft, const ValRecord *rgt);
+gdk_return VARconvert(ValPtr ret, const ValRecord *v, int abort_on_error);
void VIEWbounds(BAT *b, BAT *view, BUN l, BUN h);
BAT *VIEWcombine(BAT *b);
BAT *VIEWcreate(BAT *h, BAT *t);
@@ -923,7 +923,7 @@ blob *BLOBread(blob *a, stream *s, size_
str BLOBsqlblob_fromstr(sqlblob **b, str *d);
str BLOBtoblob(blob **retval, str *s);
int BLOBtostr(str *tostr, int *l, blob *pin);
-int BLOBwrite(blob *a, stream *s, size_t cnt);
+gdk_return BLOBwrite(blob *a, stream *s, size_t cnt);
str CALCmax(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
str CALCmax_no_nil(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
str CALCmin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
@@ -2117,7 +2117,7 @@ uuid *UUIDread(uuid *u, stream *s, size_
str UUIDstr2uuid(uuid **retval, str *s);
int UUIDtoString(str *retval, int *len, const uuid *value);
str UUIDuuid2str(str *retval, uuid **u);
-int UUIDwrite(const uuid *u, stream *s, size_t cnt);
+gdk_return UUIDwrite(const uuid *u, stream *s, size_t cnt);
str XMLattribute(xml *ret, str *name, str *val);
str XMLcomment(xml *x, str *s);
str XMLconcat(xml *ret, xml *left, xml *right);
@@ -2454,23 +2454,23 @@ str listRef;
str loadLibrary(str modulename, int flag);
char *locate_file(const char *basename, const char *ext, bit recurse);
str lockRef;
-int log_abort_wrap(logger *L);
-int log_bat_clear_wrap(logger *L, str nme);
-int log_bat_persists_wrap(logger *L, BAT *b, str nme);
-int log_bat_transient_wrap(logger *L, str nme);
-int log_bat_wrap(logger *L, BAT *b, str nme);
-int log_delta_wrap(logger *L, BAT *uid, BAT *b, str nme);
-int log_tend_wrap(logger *L);
-int log_tstart_wrap(logger *L);
-int logger_add_bat_wrap(int *bid, logger *L, BAT *b, str nme);
-int logger_changes_wrap(int *r, logger *L);
-int logger_cleanup_wrap(logger *L);
+gdk_return log_abort_wrap(logger *L);
+gdk_return log_bat_clear_wrap(logger *L, str nme);
+gdk_return log_bat_persists_wrap(logger *L, BAT *b, str nme);
+gdk_return log_bat_transient_wrap(logger *L, str nme);
+gdk_return log_bat_wrap(logger *L, BAT *b, str nme);
+gdk_return log_delta_wrap(logger *L, BAT *uid, BAT *b, str nme);
+gdk_return log_tend_wrap(logger *L);
+gdk_return log_tstart_wrap(logger *L);
+gdk_return logger_add_bat_wrap(int *bid, logger *L, BAT *b, str nme);
+gdk_return logger_changes_wrap(int *r, logger *L);
+gdk_return logger_cleanup_wrap(logger *L);
str logger_create_wrap(logger *L, int *debug, str *fn, str *dirname, int
*version);
-int logger_del_bat_wrap(logger *L, int *bid);
+gdk_return logger_del_bat_wrap(logger *L, int *bid);
str logger_destroy_wrap(void *ret, logger *L);
-int logger_exit_wrap(logger *L);
-int logger_find_bat_wrap(int *bid, logger *L, str nme);
-int logger_restart_wrap(logger *L);
+gdk_return logger_exit_wrap(logger *L);
+gdk_return logger_find_bat_wrap(int *bid, logger *L, str nme);
+gdk_return logger_restart_wrap(logger *L);
str lookupRef;
str mal2str(MalBlkPtr mb, int first, int last);
malType malAnyBatType(malType t1, malType t2);
diff --git a/clients/mapiclient/eventparser.h b/clients/mapiclient/eventparser.h
--- a/clients/mapiclient/eventparser.h
+++ b/clients/mapiclient/eventparser.h
@@ -55,9 +55,6 @@
#define US_HH (US_MM * 60)
#define US_DD (US_HH * 24)
-#define MAXTHREADS 1048
-#define MAXBOX 32678 /* should be > MAXTHREADS */
-
#define MDB_START 1
#define MDB_DONE 2
#define MDB_PING 3
diff --git a/clients/mapiclient/tachograph.c b/clients/mapiclient/tachograph.c
--- a/clients/mapiclient/tachograph.c
+++ b/clients/mapiclient/tachograph.c
@@ -888,7 +888,8 @@ main(int argc, char **argv)
#else
snprintf(cachebuf,BUFSIZ,"%s/",cache);
#endif
- if(dbname == NULL){
+ if ( dbname == NULL){
+ fprintf(stderr,"Database name missing\n");
usageTachograph();
exit(-1);
}
@@ -959,10 +960,13 @@ main(int argc, char **argv)
doQ(buf);
if( cache){
#ifdef NATIVE_WIN32
- _mkdir(cache);
+ if( access(cache,F_OK) && _mkdir(cache)){
#else
- mkdir(cache,0755);
+ if( access(cache,F_OK) && mkdir(cache,0755) ) {
#endif
+ fprintf(stderr,"Failed to create cache '%s'\n",cache);
+ exit(-1);
+ }
}
snprintf(buf,BUFSIZ,"%s%s_%s.trace", cachebuf, basefilename,dbname);
// keep a trace of the events received
diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c
--- a/clients/mapiclient/tomograph.c
+++ b/clients/mapiclient/tomograph.c
@@ -469,7 +469,7 @@ stopListening(int i)
#define BSIZE 64*1024
char buf[BSIZE + BUFSIZ]={0};
char pages[BSIZE]={0};
- int error =0, plen =0;
+ int j, error =0, plen =0;
if( i)
fprintf(stderr,"signal %d received\n",i);
if( dbh)
@@ -479,10 +479,17 @@ stop_disconnect:
createTomogram();
// show follow up action only once
if(atlaspage >= 1){
- for (i = 0; systemcall && error == 0 && i< atlaspage; i++){
+ for (i = 0; systemcall && i< atlaspage; i++){
snprintf(buf, BUFSIZ, "gnuplot %s%s_%s_%02d.gpl;",
cachebuf, basefilename, dbname, i);
- fprintf(stderr,"-- exec:%s\n",buf);
- error = system(buf);
+ if( error == 0){
+ fprintf(stderr,"-- exec:%s\n",buf);
+ error = system(buf);
+ if( error){
+ fprintf(stderr, "To finish the atlas
make sure gnuplot is available and run:\n");
+ for (j=i; j< atlaspage; j++)
+ fprintf(stderr, "gnuplot
%s%s_%s_%02d.gpl\n", cachebuf, basefilename, dbname,j);
+ }
+ }
snprintf(buf, BUFSIZ, "%s%s_%s_%02d.pdf ", cachebuf,
basefilename, dbname, i);
plen += snprintf(pages + plen, BSIZE -plen,"%s",buf);
@@ -492,10 +499,6 @@ stop_disconnect:
}
}
- if( i < atlaspage)
- fprintf(stderr, "To finish the atlas run:\n");
- for (; i< atlaspage; i++)
- fprintf(stderr, "gnuplot %s%s_%s_%02d.gpl;", cachebuf,
basefilename, dbname,i);
if( systemcall && error == 0) {
snprintf(buf, BSIZE, "gs -q -dNOPAUSE -sDEVICE=pdfwrite
-sOUTPUTFILE=%s%s_%s.pdf -dBATCH %s",cachebuf,basefilename,dbname,pages);
@@ -531,8 +534,9 @@ typedef struct BOX {
int threads[MAXTHREADS];
lng lastclk[MAXTHREADS];
-Box box[MAXBOX];
+Box *box= 0;
int topbox = 0;
+int maxbox = 0;
int events = 0;
lng totalclkticks = 0; /* number of clock ticks reported */
@@ -568,7 +572,7 @@ static void resetTomograph(void){
events = 0;
for (i = 0; i < MAXTHREADS; i++)
threads[i] = topbox++;
- memset((char*) box, 0, sizeof(Box) * MAXBOX);
+ memset((char*) box, 0, sizeof(Box) * maxbox);
totalclkticks = 0;
totalexecticks = 0;
@@ -1331,10 +1335,18 @@ update(char *line, EventRecord *ev)
char *s;
int uid = 0,qid = 0;
- if (topbox == MAXBOX) {
- fprintf(stderr, "Out of space for trace");
- createTomogram();
- exit(0);
+ if (topbox == maxbox || maxbox < topbox) {
+
+ if( box == 0)
+ box = (Box*) malloc(MAXBOX * sizeof(Box));
+ else
+ box = (Box*) realloc((void*)box, (maxbox + MAXBOX) *
sizeof(Box));
+ if( box == NULL){
+ fprintf(stderr, "Out of space for trace, exceeds max
entries %d\n", maxbox);
+ fprintf(stderr, "Restart with a slower beat might help,
e.g. --beat=5000 or --beat=0\n");
+ exit(0);
+ }
+ maxbox += MAXBOX;
}
/* handle a ping event, keep the current instruction in focus */
if (ev->state >= MDB_PING ) {
@@ -1570,6 +1582,10 @@ main(int argc, char **argv)
/* parse config file first, command line options override */
parse_dotmonetdb(&user, &password, NULL, NULL, NULL, NULL);
+ if( argc == 1){
+ usageTomograph();
+ exit(-1);
+ }
while (1) {
int option_index = 0;
int c = getopt_long(argc, argv,
"d:u:p:P:h:?T:i:r:s:q:o:c:Db:A:m",
@@ -1670,6 +1686,16 @@ main(int argc, char **argv)
}
}
+ if ( dbname == NULL && inputfile == NULL){
+ fprintf(stderr,"Database name and inputfile missing\n");
+ usageTomograph();
+ exit(-1);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list