Changeset: 829ab5edcb85 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/829ab5edcb85
Modified Files:
sql/backends/monet5/sql.c
sql/storage/bat/bat_storage.c
Branch: strheapvacuum
Log Message:
get correct sql_delta
diffs (43 lines):
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5013,7 +5013,10 @@ SQLstr_column_vacuum(Client cntxt, MalBl
throw(SQL, "sql.column_vacuum", SQLSTATE(42S22)
"COLcopy failed %s.%s.%s", sname, tname, cname);
if ((res = (int) store->storage_api.swap_bats(tr, c, bn)) !=
LOG_OK) {
BBPreclaim(bn);
- throw(SQL, "sql.column_vacuum", SQLSTATE(42S22)
"swap_bats call failed %s.%s.%s", sname, tname, cname);
+ if (res == LOG_CONFLICT)
+ throw(SQL, "sql.column_vacuum", SQLSTATE(42S22)
"TRANSACTION CONFLICT in storage_api.swap_bats %s.%s.%s", sname, tname, cname);
+ if (res == LOG_ERR)
+ throw(SQL, "sql.column_vacuum", SQLSTATE(42S22)
"LOG ERROR in storage_api.swap_bats %s.%s.%s", sname, tname, cname);
}
}
BBPunfix(b->batCacheid);
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
@@ -4000,8 +4000,14 @@ bind_cands(sql_trans *tr, sql_table *t,
static int
swap_bats(sql_trans *tr, sql_column *col, BAT *bn)
{
+ sql_delta *d = NULL;
+ bool update_conflict = false;
+ int in_transaction = segments_in_transaction(tr, col->t);
+ if (in_transaction) return LOG_CONFLICT;
+
+ if ((d = bind_col_data(tr, col, &update_conflict)) == NULL)
+ return update_conflict ? LOG_CONFLICT : LOG_ERR;
sqlid id = col->base.id;
- sql_delta *d = ATOMIC_PTR_GET(&col->data);
bat bid = d->cs.bid;
lock_column(tr->store, id);
d->cs.bid = temp_create(bn);
@@ -4011,8 +4017,6 @@ swap_bats(sql_trans *tr, sql_column *col
d->cs.cleared = 0;
d->cs.ts = tr->tid;
d->cs.refcnt = 1;
- // maybe unfix in caller
- // bat_destroy(bn);
temp_destroy(bid);
unlock_column(tr->store, id);
return LOG_OK;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list