Changeset: b7dec74af2c6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b7dec74af2c6 Modified Files: sql/storage/bat/bat_storage.c sql/storage/bat/bat_storage.h Branch: nospare Log Message:
handle alter's better in concurrent cases. diffs (43 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 @@ -1569,6 +1569,7 @@ create_col(sql_trans *tr, sql_column *c) if(bat->uvbid == BID_NIL) ok = LOG_ERR; } + bat->alter = 1; } else { BAT *b = bat_new(type, c->t->sz, PERSISTENT); if (!b) { @@ -1619,7 +1620,9 @@ commit_create_col_( sql_trans *tr, sql_c delta->ts = commit_ts; assert(delta->next == NULL); - ok = tr_merge_delta(tr, delta); + if (!delta->alter) + ok = tr_merge_delta(tr, delta); + delta->alter = 0; c->base.flags = 0; } return ok; @@ -1684,6 +1687,7 @@ create_idx(sql_trans *tr, sql_idx *ni) bat->ibase = d->ibase; bat->cnt = d->cnt; bat->ucnt = 0; + bat->alter = 1; if (d->uibid) { bat->uibid = e_bat(TYPE_oid); diff --git a/sql/storage/bat/bat_storage.h b/sql/storage/bat/bat_storage.h --- a/sql/storage/bat/bat_storage.h +++ b/sql/storage/bat/bat_storage.h @@ -20,7 +20,8 @@ typedef struct sql_delta { int ibid; /* bat with inserts */ int uibid; /* bat with positions of updates */ int uvbid; /* bat with values of updates */ - int cleared; + bool cleared; + bool alter; /* set when the delta is created for an alter statement */ size_t cnt; /* number of tuples (excluding the deletes) */ size_t ucnt; /* number of updates */ BAT *cached; /* cached copy, used for schema bats only */ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list