Changeset: 773e781c6a1b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=773e781c6a1b
Modified Files:
        sql/storage/store.c
Branch: Jul2015
Log Message:

fixed bat leak (Bug 3802), in case of new columns don't overwrite the delta
structure but use the copy of the sub-transaction.


diffs (92 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1769,10 +1769,8 @@ key_dup_(sql_trans *tr, int flag, sql_ke
                        }
        }
        list_append(t->s->keys, nk);
-       if (!copy && flag == TR_NEW && tr->parent == gtrans) {
+       if (!copy && flag == TR_NEW && tr->parent == gtrans) 
                k->base.flag = TR_OLD;
-               nk->base.flag = TR_OLD;
-       }
        return nk;
 }
 
@@ -1843,10 +1841,8 @@ idx_dup(sql_trans *tr, int flag, sql_idx
                if (isTable(ni->t)) 
                        store_funcs.dup_idx(tr, i, ni);
 
-       if (isNew(i) && flag == TR_NEW && tr->parent == gtrans) {
+       if (isNew(i) && flag == TR_NEW && tr->parent == gtrans) 
                i->base.flag = TR_OLD;
-               ni->base.flag = TR_OLD;
-       }
 
        for (n = i->columns->h; n; n = n->next) {
                sql_kc *okc = n->data;
@@ -1933,10 +1929,8 @@ trigger_dup(sql_trans *tr, int flag, sql
                list_append(nt->columns, kc_dup(tr, flag, okc, t));
        }
        list_append(t->s->triggers, nt);
-       if (flag == TR_NEW && tr->parent == gtrans) {
+       if (flag == TR_NEW && tr->parent == gtrans) 
                i->base.flag = TR_OLD;
-               nt->base.flag = TR_OLD;
-       }
        return nt;
 }
 
@@ -1965,10 +1959,8 @@ column_dup(sql_trans *tr, int flag, sql_
            (oc->base.allocated && tr->parent != gtrans))
                if (isTable(c->t)) 
                        store_funcs.dup_col(tr, oc, c);
-       if (isNew(oc) && flag == TR_NEW && tr->parent == gtrans) {
+       if (isNew(oc) && flag == TR_NEW && tr->parent == gtrans) 
                oc->base.flag = TR_OLD;
-               c->base.flag = TR_OLD;
-       }
        return c;
 }
 
@@ -2187,10 +2179,8 @@ table_dup(sql_trans *tr, int flag, sql_t
                if (tr->parent == gtrans)
                        ot->triggers.nelm = NULL;
        }
-       if (isNew(ot) && flag == TR_NEW && tr->parent == gtrans) {
+       if (isNew(ot) && flag == TR_NEW && tr->parent == gtrans) 
                ot->base.flag = TR_OLD;
-               t->base.flag = TR_OLD;
-       }
        return t;
 }
 
@@ -2340,10 +2330,8 @@ schema_dup(sql_trans *tr, int flag, sql_
                if (tr->parent == gtrans)
                        os->seqs.nelm = NULL;
        }
-       if (flag == TR_NEW && tr->parent == gtrans) {
+       if (flag == TR_NEW && tr->parent == gtrans) 
                os->base.flag = TR_OLD;
-               s->base.flag = TR_OLD;
-       }
        return s;
 }
 
@@ -2496,6 +2484,7 @@ rollforward_changeset_updates(sql_trans 
                                                        ok = LOG_ERR;
                                                fb->flag = TR_OLD;
                                        }
+                                       tb->flag = TR_OLD;
                                } else if (!rollforward_creates(tr, fb, mode)) {
                                        ok = LOG_ERR;
                                }
@@ -2627,7 +2616,7 @@ rollforward_create_column(sql_trans *tr,
 
                if ((p && mode == R_SNAPSHOT && 
store_funcs.snapshot_create_col(tr, c) != LOG_OK) ||
                    (p && mode == R_LOG && store_funcs.log_create_col(tr, c) != 
LOG_OK) ||
-                   (mode == R_APPLY &&  store_funcs.create_col(tr, c) != 
LOG_OK))
+                   (mode == R_APPLY && store_funcs.create_col(tr, c) != 
LOG_OK))
                return NULL;
        }
        return c;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to