Changeset: e776416d04b4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e776416d04b4
Modified Files:
        monetdb5/modules/mal/pp_hash.c
Branch: default
Log Message:

only setcount when needed.


diffs (36 lines):

diff --git a/monetdb5/modules/mal/pp_hash.c b/monetdb5/modules/mal/pp_hash.c
--- a/monetdb5/modules/mal/pp_hash.c
+++ b/monetdb5/modules/mal/pp_hash.c
@@ -726,11 +726,12 @@ OAHASHmark_nils(Client ctx, bat *res, co
        BUN cnt = BATcount(r);
        QryCtx *qry_ctx = MT_thread_get_qry_ctx();
        qry_ctx = qry_ctx ? qry_ctx : &(QryCtx) {.endtime = 0};
+
+       MT_lock_set(&m->theaplock);
        bit *mrk = Tloc(m, 0);
        bit *nil = Tloc(n, 0);
        oid *row = Tloc(r, 0);
 
-       MT_lock_set(&m->theaplock);
        oid max = BATcount(m);
        oid maxval = r->tmaxval;
        str err = MAL_SUCCEED;
@@ -748,7 +749,7 @@ OAHASHmark_nils(Client ctx, bat *res, co
        }
        if (maxval > max && cnt) {
                MT_lock_unset(&m->theaplock);
-               if (maxval >= BATcapacity(m) && BATextend(m, maxval + 1024) != 
GDK_SUCCEED) {
+               if (maxval > BATcapacity(m) && BATextend(m, maxval + 1024) != 
GDK_SUCCEED) {
                        MT_lock_set(&m->theaplock);
                        err = MAL_MALLOC_FAIL;
                }
@@ -759,7 +760,8 @@ OAHASHmark_nils(Client ctx, bat *res, co
                        max = BATcount(m);
                        if (max < maxval)
                                memset(mrk+max, bit_nil, maxval-max);
-                       BATsetcount(m, maxval);
+                       if (maxval > max)
+                               BATsetcount(m, maxval);
                }
        }
        if (!err && cnt) {
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to