MonetDB: nospare - small cleanup

2021-01-07 Thread Niels Nes
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(>cat->schemas, sname);
+   return tr_find_name(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 = >base;
+   s->base.newer = >base;
+   trans_add(tr, >base, NULL, _gc_schema, _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(>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"), >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 = >base;
-   s->base.newer = >base;
-   trans_add(tr, >base, NULL, _gc_schema, _commit_schema);
-   list_update_data(tr->cat->schemas.set, n, ds);
+   s = new_schema(tr, s, n);
+   s->base.deleted = 1;
//cs_del(>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


MonetDB: nospare - small cleanup (ie delay setting ts)

2021-01-04 Thread Niels Nes
Changeset: 63a757e22c91 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=63a757e22c91
Modified Files:
sql/storage/bat/bat_storage.c
sql/storage/store.c
Branch: nospare
Log Message:

small cleanup (ie delay setting ts)


diffs (40 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -1897,7 +1897,7 @@ log_destroy_del(sql_trans *tr, sql_chang
sql_table *t = (sql_table*)change->obj;
assert(!isTempTable(t));
sql_dbat *dbat = t->data;
-   assert(dbat->ts == tr->tid || (t->base.ts == commit_ts && commit_ts == 
oldest));
+   assert(dbat->ts == tr->tid || t->base.ts == tr->tid || (t->base.ts == 
commit_ts && commit_ts == oldest));
dbat->ts = commit_ts;
ok = log_destroy_dbat(tr, t->data, t->bootstrap?0:LOG_TAB, t->base.id);
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -256,11 +256,11 @@ tc_log_table(sql_trans *tr, sql_change *
sql_table *t = (sql_table*)change->obj;
sqlstore *store = tr->store;
 
+   change->obj->ts = commit_ts;
if (isTable(t) && !isTempTable(t)) {
if (t->base.deleted) {
ok = store->storage_api.log_destroy_del(tr, change, 
commit_ts, oldest);
} else { /* new table ? */
-   change->obj->ts = commit_ts;
ok = store->storage_api.log_create_del(tr, change, 
commit_ts, oldest);
if (ok == LOG_OK)
return tc_commit_table_(tr, t, commit_ts, 
oldest);
@@ -3434,9 +3434,10 @@ sql_trans_commit(sql_trans *tr)
for(node *n=tr->changes->h; n && ok == LOG_OK; n = n->next) {
sql_change *c = n->data;
 
-   c->obj->ts = commit_ts;
if (c->log && ok == LOG_OK)
ok = c->log(tr, c, commit_ts, oldest);
+   else
+   c->obj->ts = commit_ts;
}
if (ok == LOG_OK && store->prev_oid != store->obj_id)
ok = store->logger_api.log_sequence(store, OBJ_SID, 
store->obj_id);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list