Changeset: 4983b0100804 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4983b0100804
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: Jan2022
Log Message:

If there are no rows to append, don't add transaction change


diffs (50 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
@@ -2168,11 +2168,17 @@ append_col_execute(sql_trans *tr, sql_de
 }
 
 static int
-append_col(sql_trans *tr, sql_column *c, BUN offset, BAT *offsets, void *i, 
BUN cnt, int tpe)
+append_col(sql_trans *tr, sql_column *c, BUN offset, BAT *offsets, void *data, 
BUN cnt, int tpe)
 {
        int res = LOG_OK;
        sql_delta *delta, *odelta = ATOMIC_PTR_GET(&c->data);
 
+       if (tpe == TYPE_bat) {
+               BAT *t = data;
+               if (!BATcount(t))
+                       return LOG_OK;
+       }
+
        if ((delta = bind_col_data(tr, c, NULL)) == NULL)
                return LOG_ERR;
 
@@ -2183,7 +2189,7 @@ append_col(sql_trans *tr, sql_column *c,
                trans_add(tr, &c->base, delta, &tc_gc_col, &commit_update_col, 
isTempTable(c->t)?NULL:&log_update_col);
 
        odelta = delta;
-       if ((res = append_col_execute(tr, &delta, c->base.id, offset, offsets, 
i, cnt, tpe, c->storage_type)) != LOG_OK)
+       if ((res = append_col_execute(tr, &delta, c->base.id, offset, offsets, 
data, cnt, tpe, c->storage_type)) != LOG_OK)
                return res;
        if (odelta != delta) {
                delta->next = odelta;
@@ -2199,11 +2205,17 @@ append_col(sql_trans *tr, sql_column *c,
 }
 
 static int
-append_idx(sql_trans *tr, sql_idx * i, BUN offset, BAT *offsets, void *data, 
BUN cnt, int tpe)
+append_idx(sql_trans *tr, sql_idx *i, BUN offset, BAT *offsets, void *data, 
BUN cnt, int tpe)
 {
        int res = LOG_OK;
        sql_delta *delta, *odelta = ATOMIC_PTR_GET(&i->data);
 
+       if (tpe == TYPE_bat) {
+               BAT *t = data;
+               if (!BATcount(t))
+                       return LOG_OK;
+       }
+
        if ((delta = bind_idx_data(tr, i, NULL)) == NULL)
                return LOG_ERR;
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to