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

Reply via email to