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

Reply via email to