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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list