Changeset: 0fc16ac3c540 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/0fc16ac3c540 Modified Files: sql/storage/bat/bat_storage.c Branch: Jan2022 Log Message:
cleanup and test for malloc failures
diffs (84 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
@@ -1082,6 +1082,16 @@ segments_is_deleted(segment *s, sql_tran
return 0;
}
+static sql_delta *
+tr_dup_delta(sql_trans *tr, sql_delta *bat)
+{
+ sql_delta *n = ZNEW(sql_delta);
+ *n = *bat;
+ n->next = NULL;
+ n->cs.ts = tr->tid;
+ return n;
+}
+
static BAT *
dict_append_bat(sql_trans *tr, sql_delta **batp, BAT *i)
{
@@ -1131,11 +1141,11 @@ dict_append_bat(sql_trans *tr, sql_delta
return NULL;
}
if (cs->ts != tr->tid) {
- *batp = ZNEW(sql_delta);
- **batp = *bat;
- (*batp)->next = NULL;
+ if ((*batp = tr_dup_delta(tr, bat)) ==
NULL) {
+ bat_destroy(n);
+ return NULL;
+ }
cs = &(*batp)->cs;
- cs->ts = tr->tid;
new = 1;
}
if (cs->bid && !new)
@@ -1167,11 +1177,11 @@ dict_append_bat(sql_trans *tr, sql_delta
return NULL;
}
if (cs->ts != tr->tid) {
- *batp = ZNEW(sql_delta);
- **batp = *bat;
- (*batp)->next = NULL;
+ if ((*batp = tr_dup_delta(tr, bat)) ==
NULL) {
+ bat_destroy(n);
+ return NULL;
+ }
cs = &(*batp)->cs;
- cs->ts = tr->tid;
new = 1;
temp_dup(cs->ebid);
if (cs->uibid) {
@@ -1614,11 +1624,11 @@ dict_append_val(sql_trans *tr, sql_delta
return NULL;
}
if (cs->ts != tr->tid) {
- *batp = ZNEW(sql_delta);
- **batp = *bat;
- (*batp)->next = NULL;
+ if ((*batp = tr_dup_delta(tr, bat)) ==
NULL) {
+ bat_destroy(n);
+ return NULL;
+ }
cs = &(*batp)->cs;
- cs->ts = tr->tid;
new = 1;
cs->uibid = cs->uvbid = 0;
}
@@ -1646,11 +1656,11 @@ dict_append_val(sql_trans *tr, sql_delta
return NULL;
}
if (cs->ts != tr->tid) {
- *batp = ZNEW(sql_delta);
- **batp = *bat;
- (*batp)->next = NULL;
+ if ((*batp = tr_dup_delta(tr, bat)) ==
NULL) {
+ bat_destroy(n);
+ return NULL;
+ }
cs = &(*batp)->cs;
- cs->ts = tr->tid;
new = 1;
temp_dup(cs->ebid);
if (cs->uibid) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
