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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to