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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list