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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list