Changeset: bc3cf1f6de8b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bc3cf1f6de8b
Modified Files:
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_utils.c
sql/storage/bat/bat_utils.h
Branch: Oct2012
Log Message:
set ibase properly when flushing logs (should solve inconsistent db problems)
cleanup/removed some dead code
diffs (132 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
@@ -247,32 +247,20 @@ delta_append_bat( sql_delta *bat, BAT *i
bat_destroy(bat->cached);
bat->cached = NULL;
}
- bat->cnt += BATcount(i);
- /* We simply use the to be inserted bat directly.
- * Disabled this optimization: sometimes the bat is used later in the
- * mal plan.
- * This should be solved by changing the input into a view (somehow).
- * Alternatively, COPY INTO ... LOCKED can/should be used.
- if (BATcount(b) == 0 && !isVIEW(i) && BBP_lrefs(i->batCacheid) <= 1 &&
i->htype == TYPE_void && i->ttype != TYPE_void && bat->ibase == i->H->seq){
- temp_destroy(bat->ibid);
- bat->ibid = temp_create(i);
- BATseqbase(i, bat->ibase);
- } else
- */
if (!isEbat(b)){
/* try to use mmap() */
if (BATcount(b)+BATcount(i) > (BUN) REMAP_PAGE_MAXSIZE) {
BATmmap(b, STORE_MMAP, STORE_MMAP, STORE_MMAP,
STORE_MMAP, 1);
}
assert(b->T->heap.storage != STORE_PRIV);
- BATappend(b, i, TRUE);
} else {
temp_destroy(bat->ibid);
bat->ibid = ebat2real(b->batCacheid, bat->ibase);
bat_destroy(b);
b = temp_descriptor(bat->ibid);
- BATappend(b, i, TRUE);
}
+ BATappend(b, i, TRUE);
+ bat->cnt += BATcount(i);
bat_destroy(b);
}
@@ -327,21 +315,17 @@ delta_delete_bat( sql_dbat *bat, BAT *i
{
BAT *b = temp_descriptor(bat->dbid);
+ if (isEbat(b)) {
+ temp_destroy(bat->dbid);
+ bat->dbid = temp_copy(b->batCacheid, FALSE);
+ bat_destroy(b);
+ b = temp_descriptor(bat->dbid);
+ }
+ assert(b->T->heap.storage != STORE_PRIV);
+ BATappend(b, i, TRUE);
+ bat_destroy(b);
+
bat->cnt += BATcount(i);
- if (BATcount(b) == 0 && !isVIEW(i) && i->htype == TYPE_void && i->ttype
!= TYPE_void){
- temp_destroy(bat->dbid);
- bat->dbid = temp_create(i);
- } else {
- if (isEbat(b)) {
- temp_destroy(bat->dbid);
- bat->dbid = temp_copy(b->batCacheid, FALSE);
- bat_destroy(b);
- b = temp_descriptor(bat->dbid);
- }
- assert(b->T->heap.storage != STORE_PRIV);
- BATappend(b, i, TRUE);
- }
- bat_destroy(b);
}
void
@@ -349,7 +333,6 @@ delta_delete_val( sql_dbat *bat, oid rid
{
BAT *b = temp_descriptor(bat->dbid);
- bat->cnt ++;
if (isEbat(b)) {
temp_destroy(bat->dbid);
bat->dbid = temp_copy(b->batCacheid, FALSE);
@@ -358,6 +341,8 @@ delta_delete_val( sql_dbat *bat, oid rid
}
BUNappend(b, (ptr)&rid, TRUE);
bat_destroy(b);
+
+ bat->cnt ++;
}
static void
@@ -1159,6 +1144,7 @@ gtr_update_delta( sql_trans *tr, sql_del
}
assert(cur->T->heap.storage != STORE_PRIV);
BATappend(cur,ins,TRUE);
+ cbat->cnt = cbat->ibase = BATcount(cur);
BATcleanProps(cur);
temp_destroy(cbat->ibid);
cbat->ibid = e_bat(cur->ttype);
diff --git a/sql/storage/bat/bat_utils.c b/sql/storage/bat/bat_utils.c
--- a/sql/storage/bat/bat_utils.c
+++ b/sql/storage/bat/bat_utils.c
@@ -89,21 +89,10 @@ temp_copy(log_bid b, int temp)
return r;
}
-void
-update_table_bat(BAT *b, BAT *ub)
-{
- if (ub && BATcount(ub)) {
- void_replace_bat(b, ub, TRUE);
- BATclear(ub, TRUE);
- BATcommit(ub);
- }
-}
-
BUN
append_inserted(BAT *b, BAT *i )
{
- BUN nr = 0;
- BUN r;
+ BUN nr = 0, r;
BATiter ii = bat_iterator(i);
for (r = i->batInserted; r < BUNlast(i); r++) {
diff --git a/sql/storage/bat/bat_utils.h b/sql/storage/bat/bat_utils.h
--- a/sql/storage/bat/bat_utils.h
+++ b/sql/storage/bat/bat_utils.h
@@ -36,7 +36,6 @@ extern log_bid temp_copy(log_bid b, int
extern void bat_destroy(BAT *b);
extern BAT *bat_new(int ht, int tt, BUN size);
-extern void update_table_bat(BAT *b, BAT *ub);
extern BUN append_inserted(BAT *b, BAT *i );
extern BUN copy_inserted(BAT *b, BAT *i );
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list