Changeset: f7c41636b127 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/f7c41636b127 Modified Files: sql/storage/bat/bat_storage.c Branch: Dec2023 Log Message:
Add error checking.
diffs (130 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
@@ -1171,6 +1171,8 @@ dict_append_bat(sql_trans *tr, sql_delta
if (cs->bid && !new)
temp_destroy(cs->bid);
n = transfer_to_systrans(n);
+ if (n == NULL)
+ return NULL;
bat_set_access(n, BAT_READ);
cs->bid = temp_create(n);
bat_destroy(n);
@@ -1214,6 +1216,8 @@ dict_append_bat(sql_trans *tr, sql_delta
if (cs->bid && !new)
temp_destroy(cs->bid);
n = transfer_to_systrans(n);
+ if (n == NULL)
+ return NULL;
bat_set_access(n, BAT_READ);
cs->bid = temp_create(n);
bat_destroy(n);
@@ -1267,6 +1271,8 @@ for_append_bat(column_storage *cs, BAT *
if (cs->bid)
temp_destroy(cs->bid);
n = transfer_to_systrans(n);
+ if (n == NULL)
+ return NULL;
bat_set_access(n, BAT_READ);
cs->bid = temp_create(n);
cs->ucnt = 0;
@@ -1523,9 +1529,15 @@ cs_update_bat( sql_trans *tr, sql_delta
temp_destroy(cs->uvbid);
ui = transfer_to_systrans(ui);
uv = transfer_to_systrans(uv);
- cs->uibid = temp_create(ui);
- cs->uvbid = temp_create(uv);
- cs->ucnt = BATcount(ui);
+ if (ui == NULL || uv == NULL) {
+ BBPreclaim(ui);
+ BBPreclaim(uv);
+ res = LOG_ERR;
+ } else {
+ cs->uibid = temp_create(ui);
+ cs->uvbid = temp_create(uv);
+ cs->ucnt = BATcount(ui);
+ }
}
} else {
BAT *nui = NULL, *nuv = NULL;
@@ -1617,9 +1629,13 @@ cs_update_bat( sql_trans *tr, sql_delta
temp_destroy(cs->uvbid);
nui =
transfer_to_systrans(nui);
nuv =
transfer_to_systrans(nuv);
- cs->uibid =
temp_create(nui);
- cs->uvbid =
temp_create(nuv);
- cs->ucnt =
BATcount(nui);
+ if (nui == NULL || nuv
== NULL) {
+ res = LOG_ERR;
+ } else {
+ cs->uibid =
temp_create(nui);
+ cs->uvbid =
temp_create(nuv);
+ cs->ucnt =
BATcount(nui);
+ }
}
}
bat_destroy(nui);
@@ -1700,6 +1716,7 @@ dict_append_val(sql_trans *tr, sql_delta
if (cs->ts != tr->tid) {
if ((*batp = tr_dup_delta(tr, bat)) ==
NULL) {
bat_destroy(n);
+ bat_destroy(u);
return NULL;
}
cs = &(*batp)->cs;
@@ -1709,6 +1726,10 @@ dict_append_val(sql_trans *tr, sql_delta
if (cs->bid && !new)
temp_destroy(cs->bid);
n = transfer_to_systrans(n);
+ if (n == NULL) {
+ bat_destroy(u);
+ return NULL;
+ }
bat_set_access(n, BAT_READ);
cs->bid = temp_create(n);
bat_destroy(n);
@@ -1733,6 +1754,7 @@ dict_append_val(sql_trans *tr, sql_delta
}
if (cs->ts != tr->tid) {
if ((*batp = tr_dup_delta(tr, bat)) ==
NULL) {
+ bat_destroy(u);
bat_destroy(n);
return NULL;
}
@@ -1747,6 +1769,10 @@ dict_append_val(sql_trans *tr, sql_delta
if (cs->bid)
temp_destroy(cs->bid);
n = transfer_to_systrans(n);
+ if (n == NULL) {
+ bat_destroy(u);
+ return NULL;
+ }
bat_set_access(n, BAT_READ);
cs->bid = temp_create(n);
bat_destroy(n);
@@ -1784,6 +1810,8 @@ for_append_val(column_storage *cs, void
if (cs->bid)
temp_destroy(cs->bid);
n = transfer_to_systrans(n);
+ if (n == NULL)
+ return NULL;
bat_set_access(n, BAT_READ);
cs->bid = temp_create(n);
cs->st = ST_DEFAULT;
@@ -4943,12 +4971,16 @@ col_compress(sql_trans *tr, sql_column *
if (d->cs.bid)
temp_destroy(d->cs.bid);
o = transfer_to_systrans(o);
+ if (o == NULL)
+ return LOG_ERR;
bat_set_access(o, BAT_READ);
d->cs.bid = temp_create(o);
if (u) {
if (d->cs.ebid)
temp_destroy(d->cs.ebid);
u = transfer_to_systrans(u);
+ if (u == NULL)
+ return LOG_ERR;
d->cs.ebid = temp_create(u);
}
return LOG_OK;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]
