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