Changeset: 9800c327ec58 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9800c327ec58 Modified Files: NT/winconfig.py clients/mapiclient/tomograph.c gdk/gdk_logger.c sql/backends/monet5/sql_upgrades.c sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 testing/Mtest.py.in Branch: rdf Log Message:
Merge with default branch diffs (truncated from 1000 to 300 lines): diff --git a/NT/winconfig.py b/NT/winconfig.py --- a/NT/winconfig.py +++ b/NT/winconfig.py @@ -31,7 +31,7 @@ subs = [("@exec_prefix@", r'%prefix%'), ("@DIRSEP@", '\\'), ("@PATHSEP@", ';')] -if len(sys.argv) > 1 and sys.argv[1][-19:] == '\\winconfig_conds.py': +if len(sys.argv) > 1 and sys.argv[1].endswith(r'\winconfig_conds.py'): conds = {} for line in fileinput.input(sys.argv[1]): exec(line, None, conds) @@ -50,8 +50,11 @@ while len(sys.argv) > 2 and '=' in sys.a subs.append(('@SOURCE@', os.path.abspath(os.path.dirname(os.path.dirname(sys.argv[0]))))) for key, val in subs[:]: + # X prefix for execution-time value subs.insert(0, ('@X'+key[1:], val)) + # Q prefix for quoted value (i.e. \ needs to be scaped) subs.insert(0, ('@Q'+key[1:], val.replace('\\', r'\\'))) + # QX prefix for quoted execution-time value subs.insert(0, ('@QX'+key[1:], val.replace('\\', r'\\'))) def substitute(line): diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c --- a/clients/mapiclient/tomograph.c +++ b/clients/mapiclient/tomograph.c @@ -362,6 +362,7 @@ base_colors[NUM_COLORS] = { /* 2 */ { 0, 0, "calc", "bit", 0 }, /* 2 */ { 0, 0, "calc", "*", 0 }, /* 2 */ { 0, 0, "algebra", "thetajoin", 0 }, +/* 2 */ { 0, 0, "algebra", "subthetajoin", 0 }, /* 1 */ { 0, 0, "sql", "dec_round", 0 }, /* 1 */ { 0, 0, "pqueue", "topn_min", 0 }, /* 1 */ { 0, 0, "mtime", "date_sub_msec_interval", 0 }, @@ -377,6 +378,20 @@ base_colors[NUM_COLORS] = { /* 1 */ { 0, 0, "aggr", "max", 0 }, /* ? */ { 0, 0, "aggr", "avg", 0 }, /* ? */ { 0, 0, "aggr", "subavg", 0 }, +/* ? */ { 0, 0, "aggr", "submedian", 0 }, +/* ? */ { 0, 0, "aggr", "subquantile", 0 }, +/* ? */ { 0, 0, "aggr", "substdev", 0 }, +/* ? */ { 0, 0, "batcalc", "floor", 0 }, +/* ? */ { 0, 0, "batcalc", "identity", 0 }, +/* ? */ { 0, 0, "batmkey", "hash", 0 }, +/* ? */ { 0, 0, "calc", "hge", 0 }, +/* ? */ { 0, 0, "batcalc", "hge", 0 }, +/* ? */ { 0, 0, "algebra", "firstn", 0 }, +/* ? */ { 0, 0, "sql", "single", 0 }, +/* ? */ { 0, 0, "algebra", "crossproduct", 0 }, +/* ? */ { 0, 0, "profiler", "wait", 0 }, +/* ? */ { 0, 0, "querylog", "define", 0 }, +/* ? */ { 0, 0, "*", "*", 0 }, /* 0 */ { 0, 0, 0, 0, 0 } }; @@ -776,10 +791,11 @@ showmemory(void) static char * getHeatColor(double load) { - if ( load > 0.75 ) return "yellow"; + if ( load > 0.9 ) return "red"; + if ( load > 0.75 ) return "orangered"; if ( load > 0.5 ) return "orange"; - if ( load > 0.25 ) return "red"; - if ( load > 0.02 ) return "blue"; + if ( load > 0.25 ) return "gold"; + if ( load > 0.02 ) return "yellow"; return "white"; } @@ -796,7 +812,7 @@ showcpu(void) fprintf(gnudata, "set lmarg 10\n"); fprintf(gnudata, "set rmarg 10\n"); fprintf(gnudata, "set size 1,0.%02d\n", cpus?cpus:1); - fprintf(gnudata, "set origin 0.0, 0.%d\n", 89 - cpus); + fprintf(gnudata, "set origin 0.0, 0.%d\n", 88 - cpus); fprintf(gnudata, "set ylabel \"CPU\"\n"); fprintf(gnudata, "unset xtics\n"); fprintf(gnudata, "unset ytics\n"); @@ -949,18 +965,31 @@ fprintf_time(FILE *f, lng time) } /* produce a legenda image for the color map */ -#define COLUMNS 5 +#define COLUMNS 3 static void showcolormap(char *filename, int all) { FILE *f = 0; char buf[BUFSIZ]; - int i, k = 0; + int i, k = 0,nl; int w = 380; // 600 for 3 columns - int h = 590; + int h = 590, h1=h; lng totfreq = 0, tottime = 0; Color *clrs = colors, *_clrs_ = NULL; + char *c; + time_t tm; + char *date; + + tm = time(0); + date = ctime(&tm); + if (strchr(date, '\n')) + *strchr(date, '\n') = 0; + + + // count size of query text + for (nl=0, c= currentquery; c && *c; c++) + nl += *c == '\n'; if (all) { snprintf(buf, BUFSIZ, "%s%s_%s_%02d.gpl", cachebuf, basefilename, dbname, atlaspage); @@ -989,7 +1018,7 @@ showcolormap(char *filename, int all) fprintf(f, "set lmarg 10\n"); fprintf(f, "set rmarg 10\n"); fprintf(f, "set size 1,0.4\n"); - fprintf(f, "set origin 0.0,%s\n", "-0.05"); + fprintf(f, "set origin 0.0,%s\n", "-0.04"); fprintf(f, "set xrange [0:1800]\n"); fprintf(f, "set yrange [0:600]\n"); fprintf(f, "unset xtics\n"); @@ -1016,17 +1045,15 @@ showcolormap(char *filename, int all) tottime += clrs[i].timeused; totfreq += clrs[i].freq; - if (k % COLUMNS == 0) - h -= 45; + if (k % COLUMNS == 0 && i) + h -= 35; fprintf(f, "set object %d rectangle from %.2f, %.2f to %.2f, %.2f fillcolor rgb \"%s\" fillstyle solid 1.0\n", - object++, (double) (k % COLUMNS) * w, (double) h - 40, (double) ((k % COLUMNS) * w + 0.05 * w), (double) h - 5, clrs[i].col); + object++, (double) (k % COLUMNS) * w, (double) h - 40, (double) ((k % COLUMNS) * w + 0.09 * w), (double) h - 15, clrs[i].col); fprintf(f, "set label %d \"%s.%s \" at %d,%d\n", - object++, (clrs[i].mod?clrs[i].mod:""), clrs[i].fcn, (int) ((k % COLUMNS) * w + 0.07 * w), h - 15); - fprintf(f, "set label %d \"%d call%s: ", - object++, clrs[i].freq, clrs[i].freq>1?"s":""); + object++, (clrs[i].mod?clrs[i].mod:""), clrs[i].fcn, (int) ((k % COLUMNS) * w + 0.1 * w), h - 20); + fprintf(f, "set label %d \"%d call%s: ", object++, clrs[i].freq, clrs[i].freq>1?"s":""); fprintf_time(f, clrs[i].timeused); - fprintf(f, "\" at %f,%f\n", - (double) ((k % COLUMNS) * w + 0.07 * w), (double) h - 35); + fprintf(f, "\" at %f,%f\n", (double) ((k % COLUMNS) * w + 0.1 * w), (double) h - 35); k++; } else { clrs[0].timeused += clrs[i].timeused; @@ -1039,13 +1066,37 @@ showcolormap(char *filename, int all) _clrs_ = NULL; } - h -= 45; - fprintf(f, "set label %d \" "LLFMT" MAL instructions executed; total CPU core time: ", - object++, totfreq); + h -= 30; + fprintf(f, "set label %d \"MAL instructions executed: "LLFMT, object++, totfreq); + fprintf(f, "\" at 0,%d\n", h - 30); + + fprintf(f, "set label %d \"Total CPU core time: ", object++); fprintf_time(f, tottime); - fprintf(f, "; parallelism usage %.1f %%", totalclkticks / (totalticks / 100.0)); - fprintf(f, "\" at %d,%d\n", - (int) (0.2 * w), h - 35); + fprintf(f, "\" at 0,%d\n", h - 50); + + fprintf(f, "set label %d \"Parallelism used: %.1f %%", object++, totalclkticks / (totalticks / 100.0)); + fprintf(f, "\" at 0,%d\n", h - 70); + // show complete query text + if( currentquery ){ + h = h1-40; + //fprintf(gnudata, "set object %d rectangle from %d.0, 250.0 to %d.0,%d.0\n", object++, 3 * w, 5 *w , h -5); + fprintf(f, "set label %d \"", object++); + k=0; + for (c= currentquery; *c; c++){ + if (*c == '"') fprintf(f,"\\"); else + if (*c == '\t') fprintf(f," "); else + if (*c == '\n') { fprintf(f,"\\n"); k=0; continue;} else + if( ++k >60 && (*c == ' ' || *c =='\t')){ + fprintf(f,"\\n"); + k = 1; + } + fputc(*c,f); + } + fprintf(f, "\" at %d,%d\n", (int) ( 3 * w ), h - 17); + h-= 17; + } + fprintf(f, "set label %d \"%d\" at 1750.0, 100.00\n", object++, atlaspage + 1); + fprintf(f, "set label %d \"%s\" at 0.0, 100.00\n", object++, date); fprintf(f, "plot 0 notitle with lines linecolor rgb \"white\"\n"); if (all) { fclose(f); @@ -1053,21 +1104,25 @@ showcolormap(char *filename, int all) } static void -updmap(int idx) +updatecolormap(int idx) { char *mod, *fcn, buf[BUFSIZ], *call = buf; int i, fnd = 0; if( box[idx].fcn == 0) return; + snprintf(buf, sizeof(buf), "%s", box[idx].fcn); mod = call; fcn = strchr(call, '.'); if (fcn) { *fcn = 0; fcn++; - } else + } else{ fcn = "*"; + } + if( strncmp(call,"end",3) == 0) + mod ="*"; /* find "mod.fcn" */ for (i = 1; i < NUM_COLORS && colors[i].mod; i++) if (strcmp(mod, colors[i].mod) == 0 && @@ -1080,8 +1135,8 @@ updmap(int idx) fnd = i; colors[fnd].mod = mod?strdup(mod): 0; colors[fnd].fcn = strdup(fcn); - if( debug) - printf("added function #%d: %s.%s\n", fnd, (mod?mod:""), fcn); + if( debug) + fprintf(stderr,"-- Added function #%d: %s.%s\n", fnd, (mod?mod:""), fcn); } colors[fnd].freq++; @@ -1095,41 +1150,25 @@ static int height = 160; static void gnuplotheader(char *filename) { - time_t tm; - char *date, *c,ch; + char *c,ch; int i=0; fprintf(gnudata, "set terminal pdfcairo noenhanced font 'verdana,10' color solid size 8.3,11.7\n"); fprintf(gnudata, "set output \"%s.pdf\"\n", filename); fprintf(gnudata, "set size 1,1\n"); fprintf(gnudata, "set tics front\n"); - tm = time(0); - date = ctime(&tm); - if (strchr(date, '\n')) - *strchr(date, '\n') = 0; + if( title){ for (c = title; c && *c && i <100; c++, i++) if (*c == '_')// for gnuplot *c = '-'; ch= *c; *c =0; - fprintf(gnudata, "set title \"%s\t%s%s\"\n", date, title, *c? "...":""); + fprintf(gnudata, "set title \"%s%s\"\n", title, (*c? "...":"")); *c =ch; - } else - if( currentquery ){ - fprintf(gnudata, "set title \"%s\t", date); - for (c= currentquery; *c && i <100; c++, i++) - if( *c =='"') - fprintf(gnudata,"\\\""); - else - if( *c != '\n' && *c != '\t') - fputc(*c,gnudata); - if(*c) - fprintf(gnudata, "..."); - fprintf(gnudata, "\"\n"); - } - else - fprintf(gnudata, "set title \"%s\tTomogram\"\n", date); + } else + fprintf(gnudata, "set title \"MonetDB tomogram for database %s\"\n", dbname); fprintf(gnudata, "set multiplot\n"); + } static void @@ -1157,6 +1196,7 @@ createTomogram(void) if( strchr(buf,'.')) *strchr(buf, '.') = 0; gnuplotheader(buf); + object=1; dumpboxes(); showio(); //DISABLED due to access permissions showmemory(); @@ -1167,7 +1207,7 @@ createTomogram(void) fprintf(gnudata, "set lmarg 10\n"); fprintf(gnudata, "set rmarg 10\n"); fprintf(gnudata, "set size 1,0.48\n"); - fprintf(gnudata, "set origin 0.0,%s\n", "0.32"); + fprintf(gnudata, "set origin 0.0,%s\n", "0.33"); fprintf(gnudata, "set xrange ["LLFMT".0:"LLFMT".0]\n", startrange, lastclktick - starttime); /* detect all different threads and assign them a row */ @@ -1183,12 +1223,12 @@ createTomogram(void) rows[top++] = box[i].thread; } if( box[i].state != MDB_WAIT) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list