Changeset: 31dd2cc775d7 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=31dd2cc775d7 Modified Files: gdk/gdk.h gdk/gdk_imprints.c gdk/gdk_join.c gdk/gdk_select.c monetdb5/mal/mal.h tools/mserver/mserver5.c Branch: leftmart Log Message:
added to mserver5 the --indexes debug option. This option will print all index load and access events during select, join, group by etc. Use IDXACCESS fprintf(stderr, ""); diffs (134 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -475,6 +475,8 @@ #define XPROPMASK (1<<23) #define XPROPDEBUG if (GDKdebug & XPROPMASK) */ +#define IDXACCMASK (1<<23) +#define IDXACCESS if (GDKdebug & IDXACCMASK) #define JOINPROPMASK (1<<24) #define JOINPROPCHK if (!(GDKdebug & JOINPROPMASK)) diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c --- a/gdk/gdk_imprints.c +++ b/gdk/gdk_imprints.c @@ -243,6 +243,7 @@ BATcheckimprints(BAT *b) imprints->imprints->parentid = b->batCacheid; b->T->imprints = imprints; ALGODEBUG fprintf(stderr, "#BATcheckimprints: reusing persisted imprints %d\n", b->batCacheid); + IDXACCESS fprintf(stderr, "[%d] #BATcheckimprints: loaded persistent imprints\n", b->batCacheid); MT_lock_unset(&GDKimprintsLock(abs(b->batCacheid))); return 1; } @@ -493,6 +494,7 @@ BATimprints(BAT *b) t1 = GDKusec(); ALGODEBUG fprintf(stderr, "#BATimprints: imprints construction " LLFMT " usec\n", t1 - t0); + IDXACCESS fprintf(stderr, "[%d] #BATimprints: created imprints\n", b->batCacheid); MT_lock_unset(&GDKimprintsLock(abs(b->batCacheid))); /* BBPUnfix tries to get the imprints lock which might lead to a deadlock diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -2642,7 +2642,7 @@ binsearchcand(const oid *cand, BUN lo, B r1->trevsorted = 0; \ } \ } \ - fprintf(stderr,"#hashjoin(b=%s#" BUNFMT ") %s: " \ + ALGODEBUG fprintf(stderr,"#hashjoin(b=%s#" BUNFMT ") %s: " \ "ask bloom filter: yes = " BUNFMT ", no = " BUNFMT \ ", probes = " BUNFMT ", false positives = " BUNFMT "\n", \ BATgetId(r), BATcount(r), r->T->heap.filename, \ diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -432,11 +432,15 @@ do { \ #define scanloop(NAME,CAND,TEST) \ do { \ ALGODEBUG fprintf(stderr, \ - "#BATselect(b=%s#"BUNFMT",s=%s%s,anti=%d): " \ + "#BATselect(b=%s#"BUNFMT",s=%s%s,anti=%d): " \ "%s %s\n", BATgetId(b), BATcount(b), \ s ? BATgetId(s) : "NULL", \ s && BATtdense(s) ? "(dense)" : "", \ anti, #NAME, #TEST); \ + IDXACCESS fprintf(stderr, \ + "[%d]%s #BATselect: using imprints\n", \ + VIEWtparent(b)?-VIEWtparent(b):b->batCacheid, \ + VIEWtparent(b)?"*":" "); \ if (BATcapacity(bn) < maximum) { \ while (p < q) { \ CAND; \ @@ -559,7 +563,7 @@ NAME##_##TYPE(BAT *b, BAT *s, BAT *bn, c (TYPE *)Tloc(parent,0)+BUNfirst(parent)); \ BBPunfix(parent->batCacheid); \ } else { \ - imprints= b->T->imprints; \ + imprints = b->T->imprints; \ basesrc = (const TYPE *) Tloc(b, BUNfirst(b)); \ } \ END; \ @@ -1846,6 +1850,11 @@ BATselect(BAT *b, BAT *s, const void *tl * ii) it is not an equi-select, and * iii) is not var-sized. */ + IDXACCESS fprintf(stderr, + "[%d] #BATselect: use imprints %s\n", + VIEWtparent(b)?-VIEWtparent(b):b->batCacheid, + VIEWtparent(b)?BATgetId(b):"\b"); + use_imprints = 1; } bn = BAT_scanselect(b, s, bn, tl, th, li, hi, equi, anti, diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h --- a/monetdb5/mal/mal.h +++ b/monetdb5/mal/mal.h @@ -69,6 +69,7 @@ mal_export int have_hge; #define GRPtransactions (TMMASK | DELTAMASK | TEMMASK) #define GRPmodules (LOADMASK) #define GRPalgorithms (ALGOMASK | ESTIMASK) +#define GRPindexes (IDXACCMASK) #define GRPperformance (JOINPROPMASK | DEADBEEFMASK) #define GRPoptimizers (OPTMASK) #define GRPforcemito (FORCEMITOMASK) @@ -97,7 +98,7 @@ mal_export void mserver_reset(void); #define LIST_INPUT 1 /* echo original input */ #define LIST_MAL_NAME 2 /* show variable name */ #define LIST_MAL_TYPE 4 /* show type resolutoin */ -#define LIST_MAL_VALUE 8 /* list bat tuple count */ +#define LIST_MAL_VALUE 8 /* list bat tuple count */ #define LIST_MAL_PROPS 16 /* show variable properties */ #define LIST_MAL_MAPI 32 /* output Mapi compatible output */ #define LIST_MAL_REMOTE 64 /* output MAL for remote execution */ diff --git a/tools/mserver/mserver5.c b/tools/mserver/mserver5.c --- a/tools/mserver/mserver5.c +++ b/tools/mserver/mserver5.c @@ -115,6 +115,7 @@ usage(char *prog, int xit) fprintf(stderr, " --transactions\n"); fprintf(stderr, " --modules\n"); fprintf(stderr, " --algorithms\n"); + fprintf(stderr, " --indexes\n"); fprintf(stderr, " --performance\n"); fprintf(stderr, " --optimizers\n"); fprintf(stderr, " --trace\n"); @@ -271,6 +272,7 @@ main(int argc, char **av) { "trace", 2, 0, 't' }, { "modules", 0, 0, 0 }, { "algorithms", 0, 0, 0 }, + { "indexes", 0, 0, 0 }, { "optimizers", 0, 0, 0 }, { "performance", 0, 0, 0 }, { "forcemito", 0, 0, 0 }, @@ -380,6 +382,10 @@ main(int argc, char **av) grpdebug |= GRPalgorithms; break; } + if (strcmp(long_options[option_index].name, "indexes") == 0) { + grpdebug |= GRPindexes; + break; + } if (strcmp(long_options[option_index].name, "optimizers") == 0) { grpdebug |= GRPoptimizers; break; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list