Changeset: a2d9f9e5a5af for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a2d9f9e5a5af
Modified Files:
sql/storage/bat/bat_storage.c
sql/storage/store.c
sql/test/leaks/Tests/check0.stable.out
sql/test/leaks/Tests/temp2.stable.out
sql/test/leaks/Tests/temp3.stable.out
Branch: Oct2014
Log Message:
once tables get persistent they should no longer be flaged as 'new'. Solves
problems with deletes. Thanks too Richard Hughes for finding the problem.
See also bug 3577.
diffs (125 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
@@ -1658,7 +1658,8 @@ tr_update_delta( sql_trans *tr, sql_delt
} else {
assert(cur->T->heap.storage != STORE_PRIV);
assert((BATcount(cur) + BATcount(ins)) == cbat->cnt);
- assert((BATcount(cur) + BATcount(ins)) == (obat->cnt +
(BUNlast(ins) - ins->batInserted)));
+ //assert((BATcount(cur) + BATcount(ins)) == (obat->cnt
+ (BUNlast(ins) - ins->batInserted)));
+ assert(!BATcount(ins) || !isEbat(ins));
BATappend(cur,ins,TRUE);
BATcleanProps(cur);
temp_destroy(cbat->bid);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1750,8 +1750,10 @@ 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;
}
@@ -1823,8 +1825,11 @@ idx_dup(sql_trans *tr, int flag, sql_idx
(i->base.allocated && flag == TR_OLD && tr->parent != gtrans))
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;
@@ -1911,8 +1916,10 @@ 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;
}
@@ -1941,8 +1948,10 @@ column_dup(sql_trans *tr, int flag, sql_
(oc->base.allocated && flag == TR_OLD && 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;
}
@@ -2089,8 +2098,10 @@ table_dup(sql_trans *tr, int flag, sql_t
}
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;
}
@@ -2234,8 +2245,10 @@ schema_dup(sql_trans *tr, int flag, sql_
}
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;
}
diff --git a/sql/test/leaks/Tests/check0.stable.out
b/sql/test/leaks/Tests/check0.stable.out
--- a/sql/test/leaks/Tests/check0.stable.out
+++ b/sql/test/leaks/Tests/check0.stable.out
@@ -79,7 +79,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 394 ]
+[ "transient", 322 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L1, .L2 # table_name
% L1, L2 # name
diff --git a/sql/test/leaks/Tests/temp2.stable.out
b/sql/test/leaks/Tests/temp2.stable.out
--- a/sql/test/leaks/Tests/temp2.stable.out
+++ b/sql/test/leaks/Tests/temp2.stable.out
@@ -33,7 +33,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 173 ]
+[ "transient", 176 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L1, .L2 # table_name
% L1, L2 # name
diff --git a/sql/test/leaks/Tests/temp3.stable.out
b/sql/test/leaks/Tests/temp3.stable.out
--- a/sql/test/leaks/Tests/temp3.stable.out
+++ b/sql/test/leaks/Tests/temp3.stable.out
@@ -32,7 +32,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 178 ]
+[ "transient", 176 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L1, .L2 # table_name
% L1, L2 # name
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list