Changeset: 0d1e4e2b4854 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0d1e4e2b4854
Modified Files:
        gdk/gdk_utils.c
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/storage/bat/bat_storage.c
        sql/storage/sql_catalog.c
Branch: Jun2023
Log Message:

merged with sep2022


diffs (72 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -658,6 +658,7 @@ count_idx(sql_trans *tr, sql_idx *i, int
        return segs_end(d->segs, tr, i->t);
 }
 
+#define BATtdense2(b) (b->ttype == TYPE_void && b->tseqbase != oid_nil)
 static BAT *
 cs_bind_ubat( column_storage *cs, int access, int type, size_t cnt /* ie max 
position < cnt */)
 {
@@ -669,8 +670,8 @@ cs_bind_ubat( column_storage *cs, int ac
                if (access == RD_UPD_ID) {
                        if (!(b = temp_descriptor(cs->uibid)))
                                return NULL;
-                       if (!b->tsorted || ((BATtdense(b) && (b->tseqbase + 
BATcount(b)) >= cnt) ||
-                          (!BATtdense(b) && BATcount(b) && 
((oid*)b->theap->base)[BATcount(b)-1] >= cnt))) {
+                       if (!b->tsorted || ((BATtdense2(b) && (b->tseqbase + 
BATcount(b)) >= cnt) ||
+                          (!BATtdense2(b) && BATcount(b) && 
((oid*)b->theap->base)[BATcount(b)-1] >= cnt))) {
                                        oid nil = oid_nil;
                                        /* less then cnt */
                                        BAT *s = BATselect(b, NULL, &nil, &cnt, 
false, false, false);
diff --git a/sql/storage/sql_catalog.c b/sql/storage/sql_catalog.c
--- a/sql/storage/sql_catalog.c
+++ b/sql/storage/sql_catalog.c
@@ -48,6 +48,7 @@ trans_del(sql_trans *tr, sql_base *b)
                if (c->obj == b) {
                        if (c->log)
                                tr->logchanges--;
+                       _DELETE(c);
                        n = list_remove_node(tr->changes, NULL, n);
                }
        }
diff --git a/sql/test/BugTracker-2023/Tests/All 
b/sql/test/BugTracker-2023/Tests/All
--- a/sql/test/BugTracker-2023/Tests/All
+++ b/sql/test/BugTracker-2023/Tests/All
@@ -1,5 +1,6 @@
 ambiguous-identifiers-7372
 temp-table-foreign-key-crash-7378
+update-mask-id-crash-7379
 blob-crash-7380
 add-drop-column-crash-7381
 temp-on-savepoint-truncate-rollback-crash-7382
diff --git a/sql/test/BugTracker-2023/Tests/update-mask-id-crash-7379.test 
b/sql/test/BugTracker-2023/Tests/update-mask-id-crash-7379.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2023/Tests/update-mask-id-crash-7379.test
@@ -0,0 +1,24 @@
+statement ok
+CREATE TABLE t2 (c1 int, t1 int, c2 int)
+
+statement ok
+INSERT INTO t2 VALUES(127,255,1),(127,1,2),(-128,0,3),(-128,2,4),(-1,NULL,5)
+
+statement ok
+INSERT INTO t2 VALUES(200,126,1),(250,-127,2)
+
+statement ok
+INSERT INTO t2 VALUES 
(-128,0,1),(-1,1,1),(-2,2,2),(-3,3,3),(-4,4,4),(-5,5,5),(-6,6,6),(0,0,7),(1,1,8),(2,NULL,9),(3,NULL,10),(127,255,11)
+
+statement ok
+DELETE FROM t2 WHERE c1 IN (-2, 0)
+
+statement ok
+START TRANSACTION
+
+statement ok
+UPDATE t2 SET c2 = c2 + 100
+
+statement ok
+UPDATE t2 SET c2 = c2 + 100
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to