Changeset: 11aee40252d3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/11aee40252d3
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: Aug2024
Log Message:

Partial backou of ed08ba0b1ffa: don't reuse bat for empty temp tables.
This fixes #7569.


diffs (63 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
@@ -2107,7 +2107,7 @@ update_idx(sql_trans *tr, sql_idx * i, v
 }
 
 static int
-delta_append_bat(sql_trans *tr, sql_delta **batp, sqlid id, BUN offset, BAT 
*offsets, BAT *i, char *storage_type, bool istemp)
+delta_append_bat(sql_trans *tr, sql_delta **batp, sqlid id, BUN offset, BAT 
*offsets, BAT *i, char *storage_type)
 {
        BAT *b, *oi = i;
        int err = 0;
@@ -2150,13 +2150,7 @@ delta_append_bat(sql_trans *tr, sql_delt
                        bat_destroy(oi);
                return LOG_ERR;
        }
-       if (istemp && !offsets && offset == 0 && BATcount(b) == 0 && 
bat->cs.ucnt == 0) {
-               bat_set_access(i, BAT_READ);
-               if (bat->cs.bid)
-                       temp_destroy(bat->cs.bid);
-               i = transfer_to_systrans(i);
-               bat->cs.bid = temp_create(i);
-       } else if (!offsets && offset == b->hseqbase+BATcount(b)) {
+       if (!offsets && offset == b->hseqbase+BATcount(b)) {
                if (BATappend(b, oi, NULL, true) != GDK_SUCCEED)
                        err = 1;
        } else if (!offsets) {
@@ -2306,7 +2300,7 @@ dup_storage( sql_trans *tr, storage *oba
 }
 
 static int
-append_col_execute(sql_trans *tr, sql_delta **delta, sqlid id, BUN offset, BAT 
*offsets, void *incoming_data, BUN cnt, bool isbat, int tt, char *storage_type, 
bool isnew)
+append_col_execute(sql_trans *tr, sql_delta **delta, sqlid id, BUN offset, BAT 
*offsets, void *incoming_data, BUN cnt, bool isbat, int tt, char *storage_type)
 {
        int ok = LOG_OK;
 
@@ -2316,7 +2310,7 @@ append_col_execute(sql_trans *tr, sql_de
                BAT *bat = incoming_data;
 
                if (BATcount(bat))
-                       ok = delta_append_bat(tr, delta, id, offset, offsets, 
bat, storage_type, isnew);
+                       ok = delta_append_bat(tr, delta, id, offset, offsets, 
bat, storage_type);
        } else {
                ok = delta_append_val(tr, delta, id, offset, offsets, 
incoming_data, cnt, storage_type, tt);
        }
@@ -2341,7 +2335,7 @@ append_col(sql_trans *tr, sql_column *c,
        assert(delta->cs.st == ST_DEFAULT || delta->cs.st == ST_DICT || 
delta->cs.st == ST_FOR);
 
        odelta = delta;
-       if ((res = append_col_execute(tr, &delta, c->base.id, offset, offsets, 
data, cnt, isbat, tpe, c->storage_type, isTempTable(c->t))) != LOG_OK)
+       if ((res = append_col_execute(tr, &delta, c->base.id, offset, offsets, 
data, cnt, isbat, tpe, c->storage_type)) != LOG_OK)
                return res;
        if (odelta != delta) {
                delta->next = odelta;
@@ -2373,7 +2367,7 @@ append_idx(sql_trans *tr, sql_idx *i, BU
 
        assert(delta->cs.st == ST_DEFAULT);
 
-       res = append_col_execute(tr, &delta, i->base.id, offset, offsets, data, 
cnt, isbat, tpe, NULL, isTempTable(i->t));
+       res = append_col_execute(tr, &delta, i->base.id, offset, offsets, data, 
cnt, isbat, tpe, NULL);
        return res;
 }
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to