Changeset: b106bdb4d963 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b106bdb4d963 Modified Files: monetdb5/modules/mal/pcre.c Branch: default Log Message:
Describe pcre path chosen on tracer diffs (83 lines): diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c --- a/monetdb5/modules/mal/pcre.c +++ b/monetdb5/modules/mal/pcre.c @@ -1331,13 +1331,16 @@ PCRElike4(bit *ret, const str *s, const { str res = MAL_SUCCEED; char *ppat = NULL; - bool use_re = false, use_strcmp = false, isnull = false; + bool use_re = false, use_strcmp = false, empty = false; struct RE *re = NULL; - if ((res = choose_like_path(&ppat, &use_re, &use_strcmp, &isnull, pat, esc)) != MAL_SUCCEED) + if ((res = choose_like_path(&ppat, &use_re, &use_strcmp, &empty, pat, esc)) != MAL_SUCCEED) return res; - if (strNil(*s) || isnull) { + MT_thread_setalgorithm(empty ? "pcrelike: trivially empty" : use_strcmp ? "pcrelike: pattern matching using strcmp" : + use_re ? "pcrelike: pattern matching using RE" : "pcrelike: pattern matching using pcre"); + + if (strNil(*s) || empty) { *ret = bit_nil; } else if (use_re) { if (use_strcmp) { @@ -1625,7 +1628,7 @@ BATPCRElike3(Client cntxt, MalBlkPtr mb, str msg = MAL_SUCCEED, input = NULL, pat = NULL; BAT *b = NULL, *pbn = NULL, *bn = NULL; char *ppat = NULL; - bool use_re = false, use_strcmp = false, allnulls = false, isensitive = (bool) *isens, anti = (bool) *not, has_nil = false, + bool use_re = false, use_strcmp = false, empty = false, isensitive = (bool) *isens, anti = (bool) *not, has_nil = false, input_is_a_bat = isaBatType(getArgType(mb, pci, 1)), pattern_is_a_bat = isaBatType(getArgType(mb, pci, 2)); bat *r = getArgReference_bat(stk, pci, 0); BUN q = 0; @@ -1675,7 +1678,7 @@ BATPCRElike3(Client cntxt, MalBlkPtr mb, for (BUN p = 0; p < q; p++) { const str next_input = b ? BUNtail(bi, p) : input, np = BUNtail(pi, p); - if ((msg = choose_like_path(&ppat, &use_re, &use_strcmp, &allnulls, &np, esc)) != MAL_SUCCEED) + if ((msg = choose_like_path(&ppat, &use_re, &use_strcmp, &empty, &np, esc)) != MAL_SUCCEED) goto bailout; if (use_re) { @@ -1683,7 +1686,7 @@ BATPCRElike3(Client cntxt, MalBlkPtr mb, goto bailout; ret[p] = re_like_proj_apply(next_input, re_simple, wpat, np, isensitive, anti, use_strcmp); re_like_clean(&re_simple, &wpat); - } else if (allnulls) { + } else if (empty) { ret[p] = bit_nil; } else { if ((msg = pcre_like_build(&re, &ex, ppat, isensitive, 1)) != MAL_SUCCEED) @@ -1699,9 +1702,12 @@ BATPCRElike3(Client cntxt, MalBlkPtr mb, } else { bi = bat_iterator(b); pat = *getArgReference_str(stk, pci, 2); - if ((msg = choose_like_path(&ppat, &use_re, &use_strcmp, &allnulls, &pat, esc)) != MAL_SUCCEED) + if ((msg = choose_like_path(&ppat, &use_re, &use_strcmp, &empty, &pat, esc)) != MAL_SUCCEED) goto bailout; + MT_thread_setalgorithm(empty ? "pcrelike: trivially empty" : use_strcmp ? "pcrelike: pattern matching using strcmp" : + use_re ? "pcrelike: pattern matching using RE" : "pcrelike: pattern matching using pcre"); + if (use_re) { if ((msg = re_like_build(&re_simple, &wpat, pat, isensitive, use_strcmp, (unsigned char) **esc)) != MAL_SUCCEED) goto bailout; @@ -1710,7 +1716,7 @@ BATPCRElike3(Client cntxt, MalBlkPtr mb, ret[p] = re_like_proj_apply(s, re_simple, wpat, pat, isensitive, anti, use_strcmp); has_nil |= is_bit_nil(ret[p]); } - } else if (allnulls) { + } else if (empty) { for (BUN p = 0; p < q; p++) ret[p] = bit_nil; has_nil = true; @@ -2053,6 +2059,9 @@ PCRElikeselect2(bat *ret, const bat *bid if ((msg = choose_like_path(&ppat, &use_re, &use_strcmp, &empty, pat, esc)) != MAL_SUCCEED) goto bailout; + MT_thread_setalgorithm(empty ? "pcrelike: trivially empty" : use_strcmp ? "pcrelike: pattern matching using strcmp" : + use_re ? "pcrelike: pattern matching using RE" : "pcrelike: pattern matching using pcre"); + if (use_re) { msg = re_likeselect(&bn, b, s, *pat, (bool) *caseignore, (bool) *anti, use_strcmp, (unsigned char) **esc); } else if (empty) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list