Changeset: 615d76711e02 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=615d76711e02
Modified Files:
        .editorconfig
        gdk/gdk_join.c
Branch: Jun2020
Log Message:

A little cleanup of the code.


diffs (102 lines):

diff --git a/.editorconfig b/.editorconfig
--- a/.editorconfig
+++ b/.editorconfig
@@ -19,3 +19,4 @@ charset = utf-8
 
 [gdk/*.{c,h}]
 tab_width = 8
+max_line_length = 72
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3073,9 +3073,13 @@ bitmaskjoin(BAT *l, BAT *r,
 
        for (BUN n = 0; n < rci->ncand; n++) {
                oid o = canditer_next(rci) - r->hseqbase;
-               o = rp ? rp[o] : o - r->hseqbase + r->tseqbase;
-               if (is_oid_nil(o))
-                       continue;
+               if (rp) {
+                       o = rp[o];
+                       if (is_oid_nil(o))
+                               continue;
+               } else {
+                       o = o - r->hseqbase + r->tseqbase;
+               }
                o += l->hseqbase;
                if (o < lci->seq + l->tseqbase)
                        continue;
@@ -3087,47 +3091,43 @@ bitmaskjoin(BAT *l, BAT *r,
                        mask[o >> 5] |= 1U << (o & 0x1F);
                }
        }
+       if (only_misses)
+               cnt = lci->ncand - cnt;
        if (cnt == 0 || cnt == lci->ncand) {
                GDKfree(mask);
-               if (cnt == (only_misses ? lci->ncand : 0))
+               if (cnt == 0)
                        return BATdense(0, 0, 0);
-               assert(cnt == (only_misses ? 0 : lci->ncand));
                return BATdense(0, lci->seq, lci->ncand);
        }
-       if (only_misses)
-               r1 = COLnew(0, TYPE_oid, lci->ncand - cnt, TRANSIENT);
-       else
-               r1 = COLnew(0, TYPE_oid, cnt, TRANSIENT);
+       r1 = COLnew(0, TYPE_oid, cnt, TRANSIENT);
        if (r1 != NULL) {
+               oid *r1p = Tloc(r1, 0);
+
                r1->tkey = true;
                r1->tnil = false;
                r1->tnonil = true;
                r1->tsorted = true;
-               if (only_misses ? cnt < lci->ncand : cnt > 0) {
-                       oid *r1p = Tloc(r1, 0);
-                       if (only_misses) {
-                               /* set the bits for unused values at the
-                                * end so that we don't need special
-                                * code in the loop */
-                               if (lci->ncand & 0x1F)
-                                       mask[nmsk - 1] |= ~0U << (lci->ncand & 
0x1F);
-                               for (size_t i = 0; i < nmsk; i++)
-                                       if (mask[i] != ~0U)
-                                               for (uint32_t j = 0; j < 32; 
j++)
-                                                       if ((mask[i] & (1U << 
j)) == 0)
-                                                               *r1p++ = i * 32 
+ j + lci->seq;
-                               BATsetcount(r1, lci->ncand - cnt);
-                       } else {
-                               for (size_t i = 0; i < nmsk; i++)
-                                       if (mask[i] != 0U)
-                                               for (uint32_t j = 0; j < 32; 
j++)
-                                                       if ((mask[i] & (1U << 
j)) != 0)
-                                                               *r1p++ = i * 32 
+ j + lci->seq;
-                               BATsetcount(r1, cnt);
-                       }
-                       assert((BUN) (r1p - (oid*) Tloc(r1, 0)) == 
BATcount(r1));
+               r1->trevsorted = cnt <= 1;
+               if (only_misses) {
+                       /* set the bits for unused values at the
+                        * end so that we don't need special
+                        * code in the loop */
+                       if (lci->ncand & 0x1F)
+                               mask[nmsk - 1] |= ~0U << (lci->ncand & 0x1F);
+                       for (size_t i = 0; i < nmsk; i++)
+                               if (mask[i] != ~0U)
+                                       for (uint32_t j = 0; j < 32; j++)
+                                               if ((mask[i] & (1U << j)) == 0)
+                                                       *r1p++ = i * 32 + j + 
lci->seq;
+               } else {
+                       for (size_t i = 0; i < nmsk; i++)
+                               if (mask[i] != 0U)
+                                       for (uint32_t j = 0; j < 32; j++)
+                                               if ((mask[i] & (1U << j)) != 0)
+                                                       *r1p++ = i * 32 + j + 
lci->seq;
                }
-               r1->trevsorted = r1->batCount <= 1;
+               BATsetcount(r1, cnt);
+               assert((BUN) (r1p - (oid*) Tloc(r1, 0)) == BATcount(r1));
 
                TRC_DEBUG(ALGO, "l=" ALGOBATFMT ","
                          "r=" ALGOBATFMT ",sl=" ALGOOPTBATFMT ","
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to