Changeset: 59158c722e24 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=59158c722e24 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: HTM 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); @@ -2022,7 +2022,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); @@ -2357,23 +2357,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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list