Changeset: ecbd9c7bdd82 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ecbd9c7bdd82
Modified Files:
gdk/gdk_select.c
Branch: Aug2024
Log Message:
Fix anti-equi select on view when using hashselect.
diffs (47 lines):
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -110,6 +110,7 @@ hashselect(BATiter *bi, struct canditer
oid seq;
int (*cmp)(const void *, const void *);
BAT *b2 = NULL;
+ BATiter pbi = {0};
size_t counter = 0;
QryCtx *qry_ctx = MT_thread_get_qry_ctx();
@@ -130,14 +131,18 @@ hashselect(BATiter *bi, struct canditer
d = bi->baseoff - b2->tbaseoff;
l += d;
h += d;
- bat_iterator_end(bi);
- *bi = bat_iterator(b2);
+ pbi = bat_iterator(b2);
+ bi = &pbi;
+ } else {
+ phash = false;
}
if (!havehash) {
if (BAThash(bi->b) != GDK_SUCCEED) {
BBPreclaim(bn);
BBPreclaim(b2);
+ if (phash)
+ bat_iterator_end(&pbi);
return NULL;
}
MT_rwlock_rdlock(&bi->b->thashlock);
@@ -200,10 +205,14 @@ hashselect(BATiter *bi, struct canditer
bn->tsorted = true;
bn->trevsorted = bn->batCount <= 1;
bn->tseqbase = bn->batCount == 0 ? 0 : bn->batCount == 1 ? *dst :
oid_nil;
+ if (phash)
+ bat_iterator_end(&pbi);
return bn;
bailout:
MT_rwlock_rdunlock(&bi->b->thashlock);
+ if (phash)
+ bat_iterator_end(&pbi);
BBPreclaim(b2);
BBPreclaim(bn);
return NULL;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]