[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: default - Maintain hash in BUNdelete.
From:       Sjoerd_Mullender <commits+sjoerd=acm.org () monetdb ! org>
Date:       2021-03-30 11:44:53
Message-ID: hg.8f6966df804d.1617104693.-936374948670489120 () monetdb-vm0 ! spin-off ! cwi ! nl
[Download RAW message or body]

Changeset: 8f6966df804d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8f6966df804d
Modified Files:
	gdk/gdk_bat.c
Branch: default
Log Message:

Maintain hash in BUNdelete.


diffs (39 lines):

diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1260,6 +1260,7 @@ BUNdelete(BAT *b, oid o)
 	}
 	if (ATOMunfix(b->ttype, val) != GDK_SUCCEED)
 		return GDK_FAIL;
+	HASHdelete(b, p, val);
 	ATOMdel(b->ttype, b->tvheap, (var_t *) BUNtloc(bi, p));
 	if (p != BUNlast(b) - 1 &&
 	    (b->ttype != TYPE_void || BATtdense(b))) {
@@ -1269,11 +1270,17 @@ BUNdelete(BAT *b, oid o)
 		    BATmaterialize(b) != GDK_SUCCEED)
 			return GDK_FAIL;
 		if (ATOMstorage(b->ttype) == TYPE_msk) {
-			mskSetVal(b, p, mskGetVal(b, BUNlast(b) - 1));
+			msk mval = mskGetVal(b, BUNlast(b) - 1);
+			HASHdelete(b, BUNlast(b) - 1, &mval);
+			mskSetVal(b, p, mval);
 			/* don't leave garbage */
 			mskClr(b, BUNlast(b) - 1);
+			HASHinsert(b, p, &mval);
 		} else {
-			memcpy(Tloc(b, p), Tloc(b, BUNlast(b) - 1), Tsize(b));
+			val = Tloc(b, BUNlast(b) - 1);
+			HASHdelete(b, BUNlast(b) - 1, val);
+			memcpy(Tloc(b, p), val, Tsize(b));
+			HASHinsert(b, p, val);
 		}
 		/* no longer sorted */
 		b->tsorted = b->trevsorted = false;
@@ -1296,7 +1303,6 @@ BUNdelete(BAT *b, oid o)
 	}
 	IMPSdestroy(b);
 	OIDXdestroy(b);
-	HASHdestroy(b);
 	BATrmprop(b, GDK_NUNIQUE);
 	BATrmprop(b, GDK_UNIQUE_ESTIMATE);
 #if 0		/* enable if we have more properties than just min/max */
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic