Changeset: 4954a28ae547 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4954a28ae547
Modified Files:
monetdb5/extras/crackers/crackers_core_unordered.mx
Branch: holindex
Log Message:
Fix return position when there are not any qualifying tuples.
diffs (59 lines):
diff --git a/monetdb5/extras/crackers/crackers_core_unordered.mx
b/monetdb5/extras/crackers/crackers_core_unordered.mx
--- a/monetdb5/extras/crackers/crackers_core_unordered.mx
+++ b/monetdb5/extras/crackers/crackers_core_unordered.mx
@@ -1270,9 +1270,6 @@ static str CRKvectorized_MT_@2_@1 (const
}*/
}
}
- assert(f != BUN_NONE);
- assert((f == last + 1 && src_t[f-1] @7 pivot) || src_t[f] @8 pivot);
- assert((f == first && src_t[f] @8 pivot) || src_t[f-1] @7 pivot);
if(remaining_elements > 0)
{
@@ -1281,6 +1278,11 @@ static str CRKvectorized_MT_@2_@1 (const
oid *tmp_head = GDKmalloc(remaining_elements * sizeof(oid));
@1 *tmp_tail = GDKmalloc(remaining_elements * sizeof(@1 ));
+ if (f == BUN_NONE) /*if there are not qualifying tuples*/
+ {
+ f = first;
+ }
+
while (src_t[lowerCursor] @7 pivot)
{
lowerCursor++;
@@ -1309,19 +1311,25 @@ static str CRKvectorized_MT_@2_@1 (const
}
if (lowerCursor == upperCursor && src_t[lowerCursor] @7 pivot)
qualifying_elements += 1;
-
- memcpy(tmp_head, src_h + f, sizeof(oid)*qualifying_elements);
- memcpy(src_h + f, src_h + last + 1,
sizeof(oid)*qualifying_elements);
- memcpy(src_h + last + 1, tmp_head,
sizeof(oid)*qualifying_elements);
- memcpy(tmp_tail, src_t + f, sizeof(@1)*qualifying_elements);
- memcpy(src_t + f, src_t + last + 1,
sizeof(@1)*qualifying_elements);
- memcpy(src_t + last + 1, tmp_tail,
sizeof(@1)*qualifying_elements);
-
+
+ if (qualifying_elements > 0)
+ {
+ memcpy(tmp_head, src_h + f,
sizeof(oid)*qualifying_elements);
+ memcpy(src_h + f, src_h + last + 1,
sizeof(oid)*qualifying_elements);
+ memcpy(src_h + last + 1, tmp_head,
sizeof(oid)*qualifying_elements);
+ memcpy(tmp_tail, src_t + f,
sizeof(@1)*qualifying_elements);
+ memcpy(src_t + f, src_t + last + 1,
sizeof(@1)*qualifying_elements);
+ memcpy(src_t + last + 1, tmp_tail,
sizeof(@1)*qualifying_elements);
+ }
f += qualifying_elements;
GDKfree(tmp_head);
GDKfree(tmp_tail);
}
+ assert(f != BUN_NONE);
+ assert((f == last + 1 && src_t[f-1] @7 pivot) || src_t[f] @8 pivot);
+ assert((f == first && src_t[f] @8 pivot) || src_t[f-1] @7 pivot);
+
*pos = (BUN) (f == 0 ? 0 : f - 1);
GDKfree(tmp_h);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list