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 -- [email protected]
To unsubscribe send an email to [email protected]