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

small cleanup


diffs (127 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
@@ -221,6 +221,39 @@ typedef struct changeset {
        node *nelm;
 } changeset;
 
+typedef void *sql_store;
+
+#if 0
+extern void (destroy_fptr*)(sql_store *store, sql_base *b);
+
+/* unordered object set */
+typedef struct objectset {
+       int refcnt;
+       sql_allocator *sa;
+       destroy_fptr destroy;
+       struct list *objs;
+       struct sql_hash *map;
+} objectset;
+
+extern int /*ok, error (name existed) and conflict (added before) */ 
os_add(objectset *os, sql_trans *tr, const char *name, sql_base *b);
+extern int os_del(objectset *os, sql_trans *tr, const char *name, sql_base *b);
+extern int os_size(objectset *os, sql_trans *tr);
+extern int os_empty(objectset *os, sql_trans *tr);
+extern sql_base *os_find_name(objectset *os, sql_trans *tr, const char *name);
+extern sql_base *os_find_id(objectset *os, sql_trans *tr, sqlid id);
+/* iterating (for example for location functinos) */
+extern node *os_first(objectset *os, sql_trans *tr, const char *name);
+extern node *os_next(objectset *os, sql_trans *tr, node *cur, const char 
*name);
+
+/* ordered object list */
+typedef struct objectlist {
+       sql_allocator *sa;
+       destroy_fptr destroy;
+       struct list *objs;
+       struct sql_hash *map;
+} objectlist;
+#endif
+
 extern void cs_new(changeset * cs, sql_allocator *sa, fdestroy destroy);
 extern void cs_destroy(changeset * cs);
 extern void cs_add(changeset * cs, void *elm, int flag);
@@ -239,8 +272,6 @@ extern void cs_remove_node(changeset * c
 typedef void *backend_code;
 typedef size_t backend_stack;
 
-typedef void *sql_store;
-
 typedef struct sql_schema {
        sql_base base;
        sqlid auth_id;
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
@@ -328,7 +328,7 @@ find_sql_schema(sql_trans *tr, const cha
 {
        if (tr->tmp && strcmp(sname, "tmp")==0)
                return tr->tmp;
-       return _cs_find_name(&tr->cat->schemas, sname);
+       return tr_find_name(tr, &tr->cat->schemas, sname);
 }
 
 sql_schema *
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4453,6 +4453,22 @@ sql_trans_create_schema(sql_trans *tr, c
        return s;
 }
 
+static sql_schema*
+new_schema( sql_trans *tr, sql_schema *s, node *n)
+{
+       if (n && s->base.ts == tr->tid)
+               return s;
+       sql_schema *ds = SA_ZNEW(tr->sa, sql_schema);
+       *ds = *s;
+       ds->base.ts = tr->tid;
+       ds->base.older = &s->base;
+       s->base.newer = &ds->base;
+       trans_add(tr, &ds->base, NULL, &tc_gc_schema, &tc_commit_schema);
+       if (n) //n->data = ds;
+               list_update_data(tr->cat->schemas.set, n, ds);
+       return ds;
+}
+
 sql_schema*
 sql_trans_rename_schema(sql_trans *tr, sqlid id, const char *new_name)
 {
@@ -4464,10 +4480,19 @@ sql_trans_rename_schema(sql_trans *tr, s
 
        assert(!strNil(new_name));
 
+       /* delete schema, add schema */
+       sql_schema *ds = new_schema(tr, s, n);
+       ds->base.deleted = 1;
+       sql_schema *ns = new_schema(tr, s, NULL);
+       ns->base.name = sa_strdup(tr->sa, new_name);
+       cs_add(&tr->cat->schemas, ns, 0);
+
+#if 0
        list_hash_delete(tr->cat->schemas.set, s, NULL); /* has to re-hash the 
entry in the changeset */
        s->base.name = sa_strdup(tr->sa, new_name);
        if (!list_hash_add(tr->cat->schemas.set, s, NULL))
                return NULL;
+#endif
 
        rid = store->table_api.column_find_row(tr, find_sql_column(sysschema, 
"id"), &s->base.id, NULL);
        assert(!is_oid_nil(rid));
@@ -4511,14 +4536,8 @@ sql_trans_drop_schema(sql_trans *tr, sql
        sql_trans_drop_any_comment(tr, s->base.id);
        sql_trans_drop_obj_priv(tr, s->base.id);
 
-       sql_schema *ds = SA_ZNEW(tr->sa, sql_schema);
-       *ds = *s;
-       ds->base.ts = tr->tid;
-       ds->base.deleted = 1;
-       ds->base.older = &s->base;
-       s->base.newer = &ds->base;
-       trans_add(tr, &ds->base, NULL, &tc_gc_schema, &tc_commit_schema);
-       list_update_data(tr->cat->schemas.set, n, ds);
+       s = new_schema(tr, s, n);
+       s->base.deleted = 1;
        //cs_del(&tr->cat->schemas, n, s->base.flags);
 
        if (drop_action == DROP_CASCADE_START && tr->dropped) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to