Changeset: bde558ae13a8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/bde558ae13a8 Modified Files: monetdb5/modules/atoms/str.c Branch: sw_ew_c_sorting Log Message:
Skipping because of nil works the same as not having a match.
Fixes the tdense property.
diffs (118 lines):
diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -5546,69 +5546,69 @@ STRcontainsselect(Client cntxt, MalBlkPt
#define STR_JOIN_NESTED_LOOP(STR_CMP, STR_LEN, FNAME)
\
do {
\
- canditer_init(&rci, r, cr);
\
+ canditer_init(&rci, r, cr);
\
for (BUN ridx = 0; ridx < rci.ncand; ridx++) {
\
GDK_CHECK_TIMEOUT(timeoffset, counter,
GOTO_LABEL_TIMEOUT_HANDLER(exit)); \
ro = canditer_next(&rci);
\
vr = VALUE(r, ro - rbase);
\
- if (strNil(vr))
\
- continue;
\
- vr_len = STR_LEN;
\
matches = 0;
\
- canditer_init(&lci, l, cl);
\
- for (BUN lidx = 0; lidx < lci.ncand; lidx++) {
\
- lo = canditer_next(&lci);
\
- vl = VALUE(l, lo - lbase);
\
- if (strNil(vl))
\
- continue;
\
- if (!(STR_CMP))
\
- continue;
\
- if (BATcount(rl) == BATcapacity(rl)) {
\
- newcap = BATgrows(rl);
\
- BATsetcount(rl, BATcount(rl));
\
- if (rr)
\
- BATsetcount(rr, BATcount(rr));
\
- if (BATextend(rl, newcap) !=
GDK_SUCCEED || \
- (rr && BATextend(rr, newcap) !=
GDK_SUCCEED)) { \
- msg = createException(MAL,
FNAME, SQLSTATE(HY013) MAL_MALLOC_FAIL); \
- goto exit;
\
+ if (!strNil(vr)) {
\
+ vr_len = STR_LEN;
\
+ canditer_init(&lci, l, cl);
\
+ for (BUN lidx = 0; lidx < lci.ncand; lidx++) {
\
+ lo = canditer_next(&lci);
\
+ vl = VALUE(l, lo - lbase);
\
+ if (strNil(vl))
\
+ continue;
\
+ if (!(STR_CMP))
\
+ continue;
\
+ if (BATcount(rl) == BATcapacity(rl)) {
\
+ newcap = BATgrows(rl);
\
+ BATsetcount(rl, BATcount(rl));
\
+ if (rr)
\
+ BATsetcount(rr,
BATcount(rr)); \
+ if (BATextend(rl, newcap) !=
GDK_SUCCEED || \
+ (rr && BATextend(rr,
newcap) != GDK_SUCCEED)) { \
+ msg =
createException(MAL, FNAME, SQLSTATE(HY013) MAL_MALLOC_FAIL); \
+ goto exit;
\
+ }
\
+ assert(!rr || BATcapacity(rl)
== BATcapacity(rr)); \
}
\
- assert(!rr || BATcapacity(rl) ==
BATcapacity(rr)); \
- }
\
- if (BATcount(rl) > 0) {
\
- if (last_lo + 1 != lo)
\
- rl->tseqbase = oid_nil;
\
- if (matches == 0) {
\
- if (rr)
\
- rr->trevsorted = false;
\
- if (last_lo > lo) {
\
- rl->tsorted = false;
\
- rl->tkey = false;
\
- } else if (last_lo < lo) {
\
- rl->trevsorted = false;
\
- } else {
\
- rl->tkey = false;
\
+ if (BATcount(rl) > 0) {
\
+ if (last_lo + 1 != lo)
\
+ rl->tseqbase = oid_nil;
\
+ if (matches == 0) {
\
+ if (rr)
\
+ rr->trevsorted
= false; \
+ if (last_lo > lo) {
\
+ rl->tsorted =
false; \
+ rl->tkey =
false; \
+ } else if (last_lo <
lo) { \
+ rl->trevsorted
= false; \
+ } else {
\
+ rl->tkey =
false; \
+ }
\
}
\
}
\
+ APPEND(rl, lo);
\
+ if (rr)
\
+ APPEND(rr, ro);
\
+ last_lo = lo;
\
+ matches++;
\
}
\
- APPEND(rl, lo);
\
- if (rr)
\
- APPEND(rr, ro);
\
- last_lo = lo;
\
- matches++;
\
}
\
if (rr) {
\
if (matches > 1) {
\
rr->tkey = false;
\
- rr->tseqbase = oid_nil;
\
- rl->trevsorted = false;
\
+ rr->tseqbase = oid_nil;
\
+ rl->trevsorted = false;
\
} else if (matches == 0) {
\
rskipped = BATcount(rr) > 0;
\
} else if (rskipped) {
\
- rr->tseqbase = oid_nil;
\
+ rr->tseqbase = oid_nil;
\
}
\
} else if (matches > 1) {
\
- rl->trevsorted = false;
\
+ rl->trevsorted = false;
\
}
\
}
\
} while (0)
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]
