Changeset: 581be5e45b8a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=581be5e45b8a
Modified Files:
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_storage.h
        sql/storage/bat/bat_table.c
        sql/storage/store.c
Branch: nospare
Log Message:

make sure we use the correct version also for the system (internal) tables


diffs (104 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
@@ -126,7 +126,7 @@ get_dbat(sql_dbat *d, ulng tid, int is_t
        return d;
 }
 
-static sql_delta *
+sql_delta *
 timestamp_delta( sql_trans *tr, sql_delta *d, int type, int is_temp)
 {
        if (is_temp)
@@ -343,7 +343,7 @@ bind_idx(sql_trans *tr, sql_idx * i, int
                return bind_uidx(tr, i, access);
        int type = oid_index(i->type)?TYPE_oid:TYPE_lng;
        sql_delta *d = timestamp_delta(tr, i->data, type, isTempTable(i->t));
-       return delta_bind_bat( d, access, isTempTable(i->t) || isNew(i->t));
+       return delta_bind_bat( d, access, isNew(i->t));
 }
 
 static int
diff --git a/sql/storage/bat/bat_storage.h b/sql/storage/bat/bat_storage.h
--- a/sql/storage/bat/bat_storage.h
+++ b/sql/storage/bat/bat_storage.h
@@ -41,6 +41,7 @@ typedef struct sql_dbat {
 
 /* initialize bat storage call back functions interface */
 extern void bat_storage_init( store_functions *sf );
+extern sql_delta * timestamp_delta( sql_trans *tr, sql_delta *d, int type, int 
is_temp);
 
 #endif /*BATSTORAGE_H */
 
diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c
--- a/sql/storage/bat/bat_table.c
+++ b/sql/storage/bat/bat_table.c
@@ -54,7 +54,7 @@ delta_cands(sql_trans *tr, sql_table *t)
 }
 
 static BAT *
-delta_full_bat_( sql_trans *tr, sql_column *c, sql_delta *bat, int temp)
+delta_full_bat_( sql_trans *tr, sql_column *c, sql_delta *bat, int is_new)
 {
        /* return full normalized column bat
         *      b := b.copy()
@@ -68,7 +68,7 @@ delta_full_bat_( sql_trans *tr, sql_colu
        if (!i)
                return NULL;
        r = i;
-       if (temp)
+       if (is_new)
                return r;
        b = temp_descriptor(bat->bid);
        if (!b) {
@@ -122,19 +122,19 @@ delta_full_bat_( sql_trans *tr, sql_colu
 }
 
 static BAT *
-delta_full_bat( sql_trans *tr, sql_column *c, sql_delta *bat, int temp)
+delta_full_bat( sql_trans *tr, sql_column *c, sql_delta *bat, int is_new)
 {
        sqlstore *store = tr->store;
        if (!store->initialized && bat->cached)
                return bat->cached;
-       return delta_full_bat_( tr, c, bat, temp);
+       return delta_full_bat_( tr, c, bat, is_new);
 }
 
 static BAT *
 full_column(sql_trans *tr, sql_column *c)
 {
        assert(c->data);
-       return delta_full_bat(tr, c, c->data, isTempTable(c->t));
+       return delta_full_bat(tr, c, timestamp_delta(tr, c->data, 
c->type.type->localtype, isTempTable(c->t)), isNew(c->t));
 }
 
 static void
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4487,14 +4487,21 @@ sql_trans_rename_table(sql_trans *tr, sq
 {
        sqlstore *store = tr->store;
        sql_table *systable = find_sql_table(tr, find_sql_schema(tr, 
isTempSchema(s) ? "tmp":"sys"), "_tables");
-       sql_base *b = os_find_id(s->tables, tr, id);
-       sql_table *t = (sql_table*)b;
+       sql_table *t = find_sql_table_id(tr, s, id);
        oid rid;
 
        assert(!strNil(new_name));
 
-       os_del(s->tables, tr, t->base.name, &t->base);
+       if (isGlobal(t))
+               os_del(s->tables, tr, t->base.name, &t->base);
+       else {
+               node *n = cs_find_id(&tr->localtmps, t->base.id);
+               if (n)
+                       cs_del(&tr->localtmps, tr->store, n, t->base.flags);
+       }
        t = table_dup(tr, t, t->s, new_name);
+       if (!isGlobal(t))
+               cs_add(&tr->localtmps, t, TR_NEW);
 
        rid = store->table_api.column_find_row(tr, find_sql_column(systable, 
"id"), &t->base.id, NULL);
        assert(!is_oid_nil(rid));
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to