Changeset: c32d87976035 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c32d87976035
Modified Files:
sql/storage/sql_catalog.c
sql/storage/store.c
Branch: tempscs2os
Log Message:
find_tmp_table should return the global temp first
diffs (89 lines):
diff --git a/sql/storage/sql_catalog.c b/sql/storage/sql_catalog.c
--- a/sql/storage/sql_catalog.c
+++ b/sql/storage/sql_catalog.c
@@ -226,23 +226,8 @@ sql_table *
find_sql_table(sql_trans *tr, sql_schema *s, const char *tname)
{
sql_table *t = (sql_table*)os_find_name(s->tables, tr, tname);
-
- if (!t && tr->tmp == s) {
+ if (!t && tr->tmp == s)
t = (sql_table*) os_find_name(tr->_localtmps, tr, tname);
- return t;
- }
-
- if (t && isTempTable(t) && tr->tmp == s) {
- assert(isGlobal(t));
-
- sql_table* lt = (sql_table*) os_find_name(tr->_localtmps, tr,
tname);
- if (lt)
- return lt;
-
- t = globaltmp_instantiate(tr, t);
- return t;
- }
-
return t;
}
@@ -252,18 +237,6 @@ find_sql_table_id(sql_trans *tr, sql_sch
sql_table *t = (sql_table*)os_find_id(s->tables, tr, id);
if (!t && tr->tmp == s) {
t = (sql_table*) os_find_id(tr->_localtmps, tr, id);
- return t;
- }
-
- if (t && isTempTable(t) && tr->tmp == s) {
- assert(isGlobal(t));
-
- sql_table* lt = (sql_table*) os_find_id(tr->_localtmps, tr, id);
- if (lt)
- return lt;
-
- t = globaltmp_instantiate(tr, t);
- return t;
}
return t;
}
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3273,7 +3273,11 @@ sql_trans_copy_key( sql_trans *tr, sql_t
int neg = -1, action = -1, nr, res = LOG_OK;
node *n;
sql_key *nk;
-
+ sql_table *dup = NULL;
+
+ if ((res = new_table(tr, t, &dup)))
+ return res;
+ t = dup;
if ((res = key_dup(tr, k, t, &nk)))
return res;
sql_fkey *fk = (sql_fkey*)nk;
@@ -3347,7 +3351,11 @@ sql_trans_copy_idx( sql_trans *tr, sql_t
sql_table *sysic = find_sql_table(tr, syss, "objects");
node *n;
int nr, res = LOG_OK, ncols = list_length(i->columns);
-
+ sql_table *dup = NULL;
+
+ if ((res = new_table(tr, t, &dup)))
+ return res;
+ t = dup;
sql_idx *ni = SA_ZNEW(tr->sa, sql_idx);
base_init(tr->sa, &ni->base, i->base.id?i->base.id:next_oid(tr->store),
true, i->base.name);
ni->columns = list_new(tr->sa, (fdestroy) &kc_destroy);
@@ -3469,7 +3477,12 @@ sql_trans_copy_column( sql_trans *tr, sq
sqlstore *store = tr->store;
sql_schema *syss = find_sql_schema(tr, isGlobal(t)?"sys":"tmp");
sql_table *syscolumn = find_sql_table(tr, syss, "_columns");
+ sql_table *dup = NULL;
int res = LOG_OK;
+
+ if ((res = new_table(tr, t, &dup)))
+ return res;
+ t = dup;
sql_column *col = SA_ZNEW(tr->sa, sql_column);
base_init(tr->sa, &col->base,
c->base.id?c->base.id:next_oid(tr->store), true, c->base.name);
dup_sql_type(tr, t->s, &(c->type), &(col->type));
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]