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