Changeset: d6d296f6a9fb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d6d296f6a9fb
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: context
Log Message:

merged with default


diffs (82 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
@@ -160,7 +160,7 @@ delta_bind_bat( sql_delta *bat, int acce
                                bat_destroy(b);
                                return NULL;
                        }
-                       if (BATcount(nui)) {
+                       if (!isEbat(nui) && BATcount(nui)) {
                                o = BATselect(ui, NULL, &b->hseqbase, 
ATOMnilptr(ui->ttype), true, false, false);
                                if (o == NULL) {
                                        bat_destroy(ui);
@@ -2189,6 +2189,7 @@ gtr_update_delta( sql_trans *tr, sql_del
                bat_destroy(cur);
                return LOG_ERR;
        }
+       assert(!isEbat(cur));
        /* any inserts */
        if (BUNlast(ins) > 0) {
                (*changes)++;
@@ -2259,6 +2260,7 @@ gtr_update_dbat(sql_dbat *d, int *change
                BAT *cdb = temp_descriptor(dbid);
                if(cdb) {
                        (*changes)++;
+                       assert(!isEbat(cdb));
                        if (append_inserted(cdb, idb) == BUN_NONE)
                                ok = LOG_ERR;
                        bat_destroy(cdb);
@@ -2475,6 +2477,7 @@ tr_update_delta( sql_trans *tr, sql_delt
                        assert((BATcount(cur) + BATcount(ins)) == cbat->cnt);
                        //assert((BATcount(cur) + BATcount(ins)) == (obat->cnt 
+ (BUNlast(ins) - ins->batInserted)));
                        assert(!BATcount(ins) || !isEbat(ins));
+                       assert(!isEbat(cur));
                        if (BATappend(cur, ins, NULL, true) != GDK_SUCCEED) {
                                bat_destroy(cur);
                                bat_destroy(ins);
@@ -2510,6 +2513,7 @@ tr_update_delta( sql_trans *tr, sql_delt
                }
 
                /* any updates */
+               assert(!isEbat(cur));
                if (BUNlast(ui) > 0) {
                        if (void_replace_bat(cur, ui, uv, true) != GDK_SUCCEED) 
{
                                bat_destroy(ui);
@@ -2581,6 +2585,7 @@ tr_merge_delta( sql_trans *tr, sql_delta
                        ins = cur;
                        cur = newcur;
                } else {
+                       assert(!isEbat(cur));
                        if (BATappend(cur, ins, NULL, true) != GDK_SUCCEED) {
                                bat_destroy(cur);
                                bat_destroy(ins);
@@ -2601,6 +2606,7 @@ tr_merge_delta( sql_trans *tr, sql_delta
        if (obat->ucnt || cleared) {
                BAT *ui = temp_descriptor(obat->uibid);
                BAT *uv = temp_descriptor(obat->uvbid);
+
                if(!ui || !uv) {
                        bat_destroy(ui);
                        bat_destroy(uv);
@@ -2609,6 +2615,7 @@ tr_merge_delta( sql_trans *tr, sql_delta
                }
 
                /* any updates */
+               assert(!isEbat(cur));
                if (BUNlast(ui) > 0) {
                        if (void_replace_bat(cur, ui, uv, true) != GDK_SUCCEED) 
{
                                bat_destroy(ui);
@@ -2660,6 +2667,13 @@ tr_update_dbat(sql_trans *tr, sql_dbat *
        if (BUNlast(db) > db->batInserted || cleared) {
                BAT *odb = temp_descriptor(tdb->dbid);
                if(odb) {
+                       if (isEbat(odb)){
+                               temp_destroy(tdb->dbid);
+                               tdb->dbid = temp_copy(odb->batCacheid, false);
+                               bat_destroy(odb);
+                               if (tdb->dbid == BID_NIL || (odb = 
temp_descriptor(tdb->dbid)) == NULL)
+                                       return LOG_ERR;
+                       }
                        if (append_inserted(odb, db) == BUN_NONE)
                                ok = LOG_ERR;
                        else
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to