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]

Reply via email to