Changeset: 9e0e40d081f8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9e0e40d081f8
Modified Files:
sql/storage/bat/bat_storage.c
sql/test/dict/Tests/dict01.test
Branch: Jan2022
Log Message:
Destroy right bat. Also fixed my introduced leak
diffs (65 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
@@ -1200,11 +1200,11 @@ cs_update_bat( sql_trans *tr, column_sto
if (cs->st == ST_DICT) {
/* possibly a new array is returned */
- updates = dict_append_bat(cs, updates);
+ BAT *noupdates = dict_append_bat(cs, updates);
if (oupdates != updates)
bat_destroy(oupdates);
- oupdates = updates;
- if (!updates) {
+ oupdates = noupdates;
+ if (!oupdates) {
if (otids != tids)
bat_destroy(otids);
return LOG_ERR;
@@ -1841,14 +1841,14 @@ delta_append_bat(sql_trans *tr, sql_delt
lock_column(tr->store, id);
if (bat->cs.st == ST_DICT) {
- BAT *ni = dict_append_bat(&bat->cs, i);
- if (oi != i) /* oi and i will be replaced, so destroy possible
unmask reference */
+ BAT *ni = dict_append_bat(&bat->cs, oi);
+ if (oi != i) /* oi will be replaced, so destroy possible unmask
reference */
bat_destroy(oi);
- if (!ni) {
+ oi = ni;
+ if (!oi) {
unlock_column(tr->store, id);
return LOG_ERR;
}
- oi = i = ni;
}
b = temp_descriptor(bat->cs.bid);
diff --git a/sql/test/dict/Tests/dict01.test b/sql/test/dict/Tests/dict01.test
--- a/sql/test/dict/Tests/dict01.test
+++ b/sql/test/dict/Tests/dict01.test
@@ -131,6 +131,24 @@ statement ok
DROP TABLE "t2"
statement ok
+CREATE TABLE t2(c0 JSON, c1 BIGINT, c2 CHAR(71))
+
+statement ok
+CALL "sys"."dict_compress"('sys','t2','c1')
+
+statement ok rowcount 2
+INSERT INTO t2(c2, c0) VALUES('', JSON '["aa","tyu"]'), ('a', JSON '0.4')
+
+statement ok rowcount 2
+INSERT INTO t2(c0) VALUES(JSON '[false,false]'), (JSON 'null')
+
+statement ok rowcount 4
+UPDATE t2 SET c1 = 1
+
+statement ok
+DROP TABLE "t2"
+
+statement ok
START TRANSACTION
statement ok
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list