Changeset: feff66a5a094 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=feff66a5a094
Modified Files:
        sql/include/sql_catalog.h
        sql/server/rel_rel.c
        sql/storage/store.c
Branch: nospare
Log Message:

initial idx dropping + some more cleanup


diffs (55 lines):

diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -724,6 +724,8 @@ typedef struct sql_session {
        backend_stack stk;
 } sql_session;
 
+#define sql_base_loop(l, n) for (n=l->h; n; n=n->next) if 
(!((sql_base*)n->data)->deleted)
+
 //extern void schema_destroy(sql_schema *s);
 //extern void table_destroy(sql_table *t);
 extern void column_destroy(sql_column *c);
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -802,7 +802,7 @@ rel_basetable(mvc *sql, sql_table *t, co
 
        if (isRemote(t))
                tname = mapiuri_table(t->query, sql->sa, tname);
-       for (cn = t->columns.set->h; cn; cn = cn->next) {
+       sql_base_loop(t->columns.set, cn) {
                sql_column *c = cn->data;
                sql_exp *e = exp_alias(sa, atname, c->base.name, tname, 
c->base.name, &c->type, CARD_MULTI, c->null, 0);
 
@@ -823,7 +823,7 @@ rel_basetable(mvc *sql, sql_table *t, co
        append(rel->exps, exp_alias(sa, atname, TID, tname, TID, 
sql_bind_localtype("oid"), CARD_MULTI, 0, 1));
 
        if (t->idxs.set) {
-               for (cn = t->idxs.set->h; cn; cn = cn->next) {
+               sql_base_loop(t->idxs.set, cn) {
                        sql_exp *e;
                        sql_idx *i = cn->data;
                        sql_subtype *t = sql_bind_localtype("lng"); /* hash 
"lng" */
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -5835,9 +5835,17 @@ sql_trans_drop_idx(sql_trans *tr, sql_sc
        if (!isTempTable(i->t))
                sys_drop_idx(tr, i, drop_action);
 
+       sql_idx *di = SA_ZNEW(tr->sa, sql_idx);
+       *di = *i;
+       di->base.ts = tr->tid;
+       di->base.deleted = 1;
+       di->base.older = &i->base;
+       i->base.newer = &di->base;
+       trans_add(tr, &di->base, di->data, &tc_gc_idx, NULL);
        n = cs_find_name(&i->t->idxs, i->base.name);
        if (n)
-               cs_del(&i->t->idxs, n, i->base.flags);
+               list_update_data(i->t->idxs.set, n, di);
+               //cs_del(&i->t->idxs, n, i->base.flags);
 
        if (drop_action == DROP_CASCADE_START && tr->dropped) {
                list_destroy(tr->dropped);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to