Changeset: cdb316c98ed9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cdb316c98ed9
Added Files:
sql/test/BugTracker-2023/Tests/update-mask-id-crash-7379.test
Modified Files:
sql/storage/bat/bat_storage.c
sql/test/BugTracker-2023/Tests/All
Branch: Sep2022
Log Message:
add test and fix for bug 7379
needed to include masked candidates for update ids
diffs (61 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
@@ -800,6 +800,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 */)
{
@@ -811,8 +812,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/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]