Changeset: b82c6b8dc153 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b82c6b8dc153
Modified Files:
sql/storage/bat/bat_storage.c
Branch: Feb2013
Log Message:
reduce use of append_inserted
diffs (38 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
@@ -1400,19 +1400,29 @@ tr_update_delta( sql_trans *tr, sql_delt
/* any inserts */
if (BUNlast(ins) > BUNfirst(ins) || cleared) {
if (BUNlast(ins) > ins->batInserted && (store_nr_active > 1)) {
+ int done = 0;
BAT *ci = temp_descriptor(obat->ibid);
BUN nr;
- if (isEbat(ci)) {
+ if (isEbat(ci) || !BATcount(ci)) {
+
temp_destroy(obat->ibid);
- obat->ibid = temp_copy(ci->batCacheid, FALSE);
+ if (!ins->batInserted) {
+ obat->ibid = temp_create(ins);
+ done = 1;
+ nr = BATcount(ins);
+ } else {
+ obat->ibid = temp_copy(ci->batCacheid,
FALSE);
+ }
bat_destroy(ci);
ci = temp_descriptor(obat->ibid);
BATseqbase(ci, cbat->ibase);
}
- assert(BATcount(cur) == cbat->ibase);
- assert(obat->ibase == cbat->ibase);
- nr = append_inserted(ci, ins);
+ if (!done) {
+ assert(BATcount(cur) == cbat->ibase);
+ assert(obat->ibase == cbat->ibase);
+ nr = append_inserted(ci, ins);
+ }
obat->cnt += nr;
assert(obat->cnt == cbat->cnt);
assert(BATcount(ci) == BATcount(ins));
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list