Changeset: 8d67276b9328 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8d67276b9328
Modified Files:
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_user.c
        sql/common/sql_changeset.c
        sql/common/sql_list.c
        sql/include/sql_catalog.h
        sql/include/sql_list.h
        sql/server/rel_dump.c
        sql/server/rel_optimizer.c
        sql/server/rel_planner.c
        sql/server/rel_propagate.c
        sql/server/rel_psm.c
        sql/server/rel_select.c
        sql/server/rel_unnest.c
        sql/server/sql_partition.c
        sql/server/sql_var.c
        sql/storage/store.c
Branch: nospare
Log Message:

initial object cleanup


diffs (truncated from 891 to 300 lines):

diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -260,6 +260,11 @@ alter_table_add_range_partition(mvc *sql
                                const void *nil = ATOMnilptr(tp1);
                                sql_table *errt = mvc_bind_table(sql, mt->s, 
err->base.name);
 
+                               if (!errt) {
+                                       msg = 
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(42000)
+                                                                         
"ALTER TABLE: cannot find partition table %s.%s", err->t->s->base.name, 
err->base.name);
+                                       goto finish;
+                               }
                                if (!ATOMcmp(tp1, nil, 
err->part.range.minvalue)) {
                                        if (!(conflict_err_min = 
GDKstrdup("absolute min value")))
                                                msg = 
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -78,7 +78,7 @@ parse_schema_path_str(mvc *m, str schema
 
        if (build) {
                while (l->t) /* if building, empty schema_path list */
-                       (void) list_remove_node(l, l->t);
+                       (void) list_remove_node(l, NULL, l->t);
                m->schema_path_has_sys = 0;
                m->schema_path_has_tmp = 0;
        }
diff --git a/sql/common/sql_changeset.c b/sql/common/sql_changeset.c
--- a/sql/common/sql_changeset.c
+++ b/sql/common/sql_changeset.c
@@ -19,14 +19,14 @@ cs_new(changeset * cs, sql_allocator *sa
 }
 
 void
-cs_destroy(changeset * cs)
+cs_destroy(changeset * cs, void *data)
 {
        if (cs->set) {
-               list_destroy(cs->set);
+               list_destroy2(cs->set, data);
                cs->set = NULL;
        }
        if (cs->dset) {
-               list_destroy(cs->dset);
+               list_destroy2(cs->dset, data);
                cs->dset = NULL;
        }
 }
@@ -67,12 +67,12 @@ cs_add_before(changeset * cs, node *n, v
 }
 
 void
-cs_del(changeset * cs, node *elm, int flags)
+cs_del(changeset * cs, void *gdata, node *elm, int flags)
 {
        if (newFlagSet(flags)) {        /* remove just added */
                if (cs->nelm == elm)
                        cs->nelm = elm->next;
-               list_remove_node(cs->set, elm);
+               list_remove_node(cs->set, gdata, elm);
        } else {
                if (!cs->dset)
                        cs->dset = list_new(cs->sa, cs->destroy);
@@ -107,13 +107,3 @@ cs_last_node(changeset * cs)
 {
        return cs->set->t;
 }
-
-void
-cs_remove_node(changeset * cs, node *n)
-{
-       node *nxt = n->next;
-
-       list_remove_node(cs->set, n);
-       if (cs->nelm == n)
-               cs->nelm = nxt;
-}
diff --git a/sql/common/sql_list.c b/sql/common/sql_list.c
--- a/sql/common/sql_list.c
+++ b/sql/common/sql_list.c
@@ -84,10 +84,10 @@ list_empty(list *l)
 }
 
 static void
-node_destroy(list *l, node *n)
+node_destroy(list *l, void *data, node *n)
 {
        if (n->data && l->destroy) {
-               l->destroy(n->data);
+               l->destroy(data, n->data);
                n->data = NULL;
        }
        if (!l->sa)
@@ -95,7 +95,7 @@ node_destroy(list *l, node *n)
 }
 
 void
-list_destroy(list *l)
+list_destroy2(list *l, void *data)
 {
        if (l) {
                node *n = l->h;
@@ -107,7 +107,7 @@ list_destroy(list *l)
                                node *t = n;
 
                                n = t->next;
-                               node_destroy(l, t);
+                               node_destroy(l, data, t);
                        }
                }
 
@@ -119,6 +119,12 @@ list_destroy(list *l)
        }
 }
 
+void
+list_destroy(list *l)
+{
+       list_destroy2(l, NULL);
+}
+
 int
 list_length(list *l)
 {
@@ -346,16 +352,16 @@ list_remove_node_(list *l, node *n)
 }
 
 node *
-list_remove_node(list *l, node *n)
+list_remove_node(list *l, void *gdata, node *n)
 {
        node *p = list_remove_node_(l, n);
 
-       node_destroy(l, n);
+       node_destroy(l, gdata, n);
        return p;
 }
 
 void
-list_remove_data(list *s, void *data)
+list_remove_data(list *s, void *gdata, void *data)
 {
        node *n;
 
@@ -369,19 +375,19 @@ list_remove_data(list *s, void *data)
                                hash_delete(s->ht, n->data);
                        MT_lock_unset(&s->ht_lock);
                        n->data = NULL;
-                       list_remove_node(s, n);
+                       list_remove_node(s, gdata, n);
                        break;
                }
        }
 }
 
 void
-list_remove_list(list *l, list *data)
+list_remove_list(list *l, void *gdata, list *data)
 {
        node *n;
 
        for (n=data->h; n; n = n->next)
-               list_remove_data(l, n->data);
+               list_remove_data(l, gdata, n->data);
 }
 
 void
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
@@ -256,11 +256,11 @@ extern bool os_obj_intransaction(struct 
 
 extern void cs_new(changeset * cs, sql_allocator *sa, fdestroy destroy);
 extern changeset* cs_dup(changeset * cs);
-extern void cs_destroy(changeset * cs);
+extern void cs_destroy(changeset * cs, void *data);
 extern void cs_add(changeset * cs, void *elm, int flag);
 extern void *cs_add_with_validate(changeset * cs, void *elm, int flag, 
fvalidate cmp);
 extern void cs_add_before(changeset * cs, node *n, void *elm);
-extern void cs_del(changeset * cs, node *elm, int flag);
+extern void cs_del(changeset * cs, void *gdata, node *elm, int flag);
 extern void cs_move(changeset *from, changeset *to, void *data);
 extern void *cs_transverse_with_validate(changeset * cs, void *elm, fvalidate 
cmp);
 extern int cs_size(changeset * cs);
@@ -268,7 +268,6 @@ extern node *cs_find_name(changeset * cs
 extern node *cs_find_id(changeset * cs, sqlid id);
 extern node *cs_first_node(changeset * cs);
 extern node *cs_last_node(changeset * cs);
-extern void cs_remove_node(changeset * cs, node *n);
 
 typedef void *backend_code;
 typedef size_t backend_stack;
@@ -750,12 +749,6 @@ typedef struct sql_session {
 
 #define sql_base_loop(l, n) for (n=l->h; n; n=n->next)
 
-//extern void schema_destroy(sql_schema *s);
-//extern void table_destroy(sql_table *t);
-extern void column_destroy(sql_column *c);
-extern void key_destroy(sql_key *k);
-extern void idx_destroy(sql_idx * i);
-
 extern int base_key(sql_base *b);
 extern node *list_find_name(list *l, const char *name);
 extern node *list_find_id(list *l, sqlid id);
diff --git a/sql/include/sql_list.h b/sql/include/sql_list.h
--- a/sql/include/sql_list.h
+++ b/sql/include/sql_list.h
@@ -17,7 +17,7 @@ typedef struct node {
        void *data;
 } node;
 
-typedef void (*fdestroy) (void *);
+typedef void (*fdestroy) (void *gdata, void *ndata); /* gdata is passed to the 
list_destroy2 function */
 
 typedef struct list {
        sql_allocator *sa;
@@ -40,6 +40,7 @@ extern list *list_new(sql_allocator *sa,
 extern list *sa_list_append( sql_allocator *sa, list *l, void *data);
 
 extern void list_destroy(list *l);
+extern void list_destroy2(list *l, void *data);
 sql_export int list_length(list *l);
 extern int list_empty(list *l);
 
@@ -47,9 +48,9 @@ sql_export list *list_append(list *l, vo
 extern list *list_append_before(list *l, node *n, void *data);
 extern list *list_prepend(list *l, void *data);
 
-extern node *list_remove_node(list *l, node *n);
-extern void list_remove_data(list *l, void *data);
-extern void list_remove_list(list *l, list *data);
+extern node *list_remove_node(list *l, void *gdata, node *n);
+extern void list_remove_data(list *l, void *gdata, void *data);
+extern void list_remove_list(list *l, void *gdata, list *data);
 extern void list_move_data(list *l, list *d, void *data);
 
 
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1109,15 +1109,15 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                        if (!f && nops > 1) { /* window functions without 
frames get 2 extra arguments */
                                sql->session->status = 0; /* if the function 
was not found clean the error */
                                sql->errstr[0] = '\0';
-                               list_remove_node(ops, ops->t);
-                               list_remove_node(ops, ops->t);
+                               list_remove_node(ops, NULL, ops->t);
+                               list_remove_node(ops, NULL, ops->t);
                                f = sql_bind_func_(sql, tname, cname, ops, 
F_ANALYTIC);
                        }
                        if (!f && nops > 4) { /* window functions with frames 
get 5 extra arguments */
                                sql->session->status = 0; /* if the function 
was not found clean the error */
                                sql->errstr[0] = '\0';
                                for (int i = 0 ; i < 3 ; i++)
-                                       list_remove_node(ops, ops->t);
+                                       list_remove_node(ops, NULL, ops->t);
                                f = sql_bind_func_(sql, tname, cname, ops, 
F_ANALYTIC);
                        }
 
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -832,14 +832,14 @@ find_fk( mvc *sql, list *rels, list *exp
 
                                        /* Remove all join expressions */
                                        for (n = eje->h; n; n = n->next)
-                                               list_remove_data(exps, n->data);
+                                               list_remove_data(exps, NULL, 
n->data);
                                        append(exps, je);
                                        djn->data = je;
                                } else if (swapped) { /* else keep je for 
single column expressions */
                                        je = exp_compare(sql->sa, je->r, je->l, 
cmp_equal);
                                        /* Remove all join expressions */
                                        for (n = eje->h; n; n = n->next)
-                                               list_remove_data(exps, n->data);
+                                               list_remove_data(exps, NULL, 
n->data);
                                        append(exps, je);
                                        djn->data = je;
                                }
@@ -869,7 +869,7 @@ order_joins(visitor *v, list *rels, list
        if (list_length(rels) > 2 && mvc_debug_on(v->sql, 256)) {
                for(djn = sdje->h; djn; djn = djn->next ) {
                        sql_exp *e = djn->data;
-                       list_remove_data(exps, e);
+                       list_remove_data(exps, NULL, e);
                }
                top =  rel_planner(v->sql, rels, sdje, exps);
                return top;
@@ -893,13 +893,13 @@ order_joins(visitor *v, list *rels, list
                }
 
                if (l && r && l != r) {
-                       list_remove_data(sdje, cje);
-                       list_remove_data(exps, cje);
+                       list_remove_data(sdje, NULL, cje);
+                       list_remove_data(exps, NULL, cje);
                }
        }
        if (l && r && l != r) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to