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

Reply via email to