Changeset: ccacebde5b21 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ccacebde5b21
Modified Files:
sql/storage/bat/bat_storage.c
sql/storage/store.c
Branch: Nov2019
Log Message:
Allocate new schema/table/column names on the parent transaction allocator, so
it gets propagated to further transactions
diffs (104 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
@@ -42,7 +42,6 @@ timestamp_dbat( sql_dbat *d, int ts)
return d;
}
-
static BAT *
delta_bind_del(sql_dbat *bat, int access)
{
@@ -1539,7 +1538,6 @@ log_create_col(sql_trans *tr, sql_column
return log_create_delta( c->data, c->t->bootstrap?0:LOG_COL,
c->base.id);
}
-
static int
snapshot_create_col(sql_trans *tr, sql_column *c)
{
@@ -1656,7 +1654,6 @@ load_dbat(sql_dbat *bat, int bid)
}
}
-
static int
create_del(sql_trans *tr, sql_table *t)
{
@@ -2246,7 +2243,6 @@ gtr_update_dbat(sql_trans *tr, sql_dbat
return ok;
}
-
static int
gtr_update_table(sql_trans *tr, sql_table *t, int *tchanges)
{
@@ -2794,17 +2790,17 @@ update_table(sql_trans *tr, sql_table *f
oc->null = cc->null;
oc->unique = cc->unique;
if (cc->storage_type && (!oc->storage_type ||
strcmp(cc->storage_type, oc->storage_type) != 0))
- oc->storage_type = sa_strdup(tr->sa, cc->storage_type);
+ oc->storage_type = sa_strdup(tr->parent->sa,
cc->storage_type);
if (!cc->storage_type)
oc->storage_type = NULL;
if (cc->def && (!oc->def || strcmp(cc->def, oc->def) != 0))
- oc->def = sa_strdup(tr->sa, cc->def);
+ oc->def = sa_strdup(tr->parent->sa, cc->def);
if (!cc->def)
oc->def = NULL;
if (isRenamed(cc)) { /* apply possible renaming */
list_hash_delete(oc->t->columns.set, oc, NULL);
- oc->base.name = sa_strdup(tr->sa, cc->base.name);
+ oc->base.name = sa_strdup(tr->parent->sa,
cc->base.name);
if (!list_hash_add(oc->t->columns.set, oc, NULL))
ok = LOG_ERR;
setRenamedFlag(oc); /* propagate the change to the
upper transaction */
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3792,7 +3792,7 @@ rollforward_update_table(sql_trans *tr,
if (ok == LOG_OK && isRenamed(ft)) { /* apply possible
renaming */
list_hash_delete(tt->s->tables.set, tt, NULL);
- tt->base.name = sa_strdup(tr->sa,
ft->base.name);
+ tt->base.name = sa_strdup(tr->parent->sa,
ft->base.name);
if (!list_hash_add(tt->s->tables.set, tt, NULL))
ok = LOG_ERR;
setRenamedFlag(tt); /* propagate the change to
the upper transaction */
@@ -3882,7 +3882,7 @@ rollforward_update_schema(sql_trans *tr,
if (apply && ok == LOG_OK && isRenamed(fs)) { /* apply possible
renaming */
list_hash_delete(tr->schemas.set, ts, NULL);
- ts->base.name = sa_strdup(tr->sa, fs->base.name);
+ ts->base.name = sa_strdup(tr->parent->sa, fs->base.name);
if (!list_hash_add(tr->schemas.set, ts, NULL))
ok = LOG_ERR;
setRenamedFlag(ts); /* propagate the change to the upper
transaction */
@@ -4080,7 +4080,7 @@ reset_column(sql_trans *tr, sql_column *
/* apply possible renaming -> transaction rollbacks or when it
starts, inherit from the previous transaction */
if ((tr->status == 1 && isRenamed(fc)) || isRenamed(pfc)) {
list_hash_delete(fc->t->columns.set, fc, NULL);
- fc->base.name = sa_strdup(tr->sa, pfc->base.name);
+ fc->base.name = sa_strdup(tr->parent->sa,
pfc->base.name);
if (!list_hash_add(fc->t->columns.set, fc, NULL))
return LOG_ERR;
}
@@ -4146,7 +4146,7 @@ reset_table(sql_trans *tr, sql_table *ft
/* apply possible renaming -> transaction rollbacks or when it
starts, inherit from the previous transaction */
if ((tr->status == 1 && isRenamed(ft)) || isRenamed(pft)) {
list_hash_delete(ft->s->tables.set, ft, NULL);
- ft->base.name = sa_strdup(tr->sa, pft->base.name);
+ ft->base.name = sa_strdup(tr->parent->sa,
pft->base.name);
if (!list_hash_add(ft->s->tables.set, ft, NULL))
ok = LOG_ERR;
}
@@ -4205,7 +4205,7 @@ reset_schema(sql_trans *tr, sql_schema *
/* apply possible renaming -> transaction rollbacks or when it
starts, inherit from the previous transaction */
if ((tr->status == 1 && isRenamed(fs)) || isRenamed(pfs)) {
list_hash_delete(tr->schemas.set, fs, NULL);
- fs->base.name = sa_strdup(tr->sa, pfs->base.name);
+ fs->base.name = sa_strdup(tr->parent->sa,
pfs->base.name);
if (!list_hash_add(tr->schemas.set, fs, NULL))
ok = LOG_ERR;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list