Changeset: 893864d78d78 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/893864d78d78
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: Jul2021
Log Message:

Check for failures


diffs (96 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
@@ -3149,8 +3149,10 @@ merge_cs( column_storage *cs)
 static int
 merge_delta( sql_delta *obat)
 {
-       if (obat && obat->next && !obat->cs.merged)
-               merge_delta(obat->next);
+       int ok = LOG_OK;
+
+       if (obat && obat->next && !obat->cs.merged && (ok = 
merge_delta(obat->next)) != LOG_OK)
+               return ok;
        return merge_cs(&obat->cs);
 }
 
@@ -3301,7 +3303,7 @@ commit_update_col( sql_trans *tr, sql_ch
                        delta = delta->next;
                if (ok == LOG_OK && delta && !delta->cs.merged && delta->cs.ts 
<= oldest) {
                        lock_column(tr->store, c->base.id); /* lock for 
concurrent updates (appends) */
-                       merge_delta(delta);
+                       ok = merge_delta(delta);
                        unlock_column(tr->store, c->base.id);
                }
        } else if (ok == LOG_OK && tr->parent) /* move delta into older and 
cleanup current save points */
@@ -3379,7 +3381,7 @@ commit_update_idx( sql_trans *tr, sql_ch
                        delta = delta->next;
                if (ok == LOG_OK && delta && !delta->cs.merged && delta->cs.ts 
<= oldest) {
                        lock_column(tr->store, i->base.id); /* lock for 
concurrent updates (appends) */
-                       merge_delta(delta);
+                       ok = merge_delta(delta);
                        unlock_column(tr->store, i->base.id);
                }
        } else if (ok == LOG_OK && tr->parent) /* cleanup older save points */
@@ -3519,24 +3521,26 @@ gc_col( sqlstore *store, sql_change *cha
                return 0;
        sql_delta *d = (sql_delta*)change->data;
        if (d->next) {
+               int ok = LOG_OK;
+
                assert(!cleanup);
                if (d->cs.ts > oldest)
-                       return LOG_OK; /* cannot cleanup yet */
+                       return ok; /* cannot cleanup yet */
 
                sql_delta *n = d->next;
                if (n->cs.ucnt && !n->cs.merged) {
                        lock_column(store, c->base.id); /* lock for concurrent 
updates (appends) */
-                       merge_delta(n);
+                       ok = merge_delta(n);
                        unlock_column(store, c->base.id);
                } else if (d && d->cs.ucnt && !d->cs.merged) {
                        lock_column(store, c->base.id); /* lock for concurrent 
updates (appends) */
-                       merge_delta(d);
+                       ok = merge_delta(d);
                        unlock_column(store, c->base.id);
                }
                d->next = NULL;
                change->cleanup = &gc_delta;
                change->data = n;
-               return 0;
+               return ok;
        }
        if (cleanup)
                column_destroy(store, c);
@@ -3571,24 +3575,26 @@ gc_idx( sqlstore *store, sql_change *cha
                return 0;
        sql_delta *d = (sql_delta*)change->data;
        if (d->next) {
+               int ok = LOG_OK;
+
                assert(!cleanup);
                if (d->cs.ts > oldest)
-                       return LOG_OK; /* cannot cleanup yet */
+                       return ok; /* cannot cleanup yet */
 
                sql_delta *n = d->next;
                if (n->cs.ucnt && !n->cs.merged) {
                        lock_column(store, i->base.id); /* lock for concurrent 
updates (appends) */
-                       merge_delta(n);
+                       ok = merge_delta(n);
                        unlock_column(store, i->base.id);
                } else if (d && d->cs.ucnt && !d->cs.merged) {
                        lock_column(store, i->base.id); /* lock for concurrent 
updates (appends) */
-                       merge_delta(d);
+                       ok = merge_delta(d);
                        unlock_column(store, i->base.id);
                }
                d->next = NULL;
                change->cleanup = &gc_delta;
                change->data = n;
-               return 0;
+               return ok;
        }
        if (cleanup)
                idx_destroy(store, i);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to