Changeset: 19801b4a1170 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=19801b4a1170
Modified Files:
        gdk/gdk_logger.c
        gdk/gdk_logger.h
        gdk/gdk_logger_internals.h
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_optimizer.c
        sql/backends/monet5/sql_orderidx.c
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statistics.c
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/sql_user.c
        sql/backends/monet5/vaults/fits/fits.c
        sql/backends/monet5/vaults/netcdf/netcdf.c
        sql/backends/monet5/vaults/shp/shp.c
        sql/backends/monet5/wlr.c
        sql/common/sql_types.c
        sql/include/sql_catalog.h
        sql/server/rel_optimizer.c
        sql/server/rel_partition.c
        sql/server/rel_planner.c
        sql/server/rel_psm.c
        sql/server/rel_schema.c
        sql/server/rel_sequence.c
        sql/server/rel_updates.c
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/server/sql_privileges.c
        sql/storage/bat/bat_logger.c
        sql/storage/bat/bat_logger.h
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_table.c
        sql/storage/sql_storage.h
        sql/storage/store.c
        sql/storage/store_dependency.c
        sql/storage/store_sequence.c
        sql/storage/store_sequence.h
        tools/monetdbe/monetdbe.c
Branch: nospare
Log Message:

large step towards no-globals


diffs (truncated from 8701 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1433,7 +1433,7 @@ check_version(logger *lg, FILE *fp)
        }
        if (version != lg->version) {
                if (lg->prefuncp == NULL ||
-                   (*lg->prefuncp)(version, lg->version) != GDK_SUCCEED) {
+                   (*lg->prefuncp)(lg->funcdata, version, lg->version) != 
GDK_SUCCEED) {
                        GDKerror("Incompatible database version %06d, "
                                 "this server supports version %06d.\n%s",
                                 version, lg->version,
@@ -2293,7 +2293,7 @@ logger_load(int debug, const char *fn, c
                        lg->convert_date = false;
                }
 #endif
-               if (lg->postfuncp && (*lg->postfuncp)(lg) != GDK_SUCCEED)
+               if (lg->postfuncp && (*lg->postfuncp)(lg->funcdata, lg) != 
GDK_SUCCEED)
                        goto error;
 
                /* done reading the log, revert to "normal" behavior */
@@ -2328,7 +2328,7 @@ logger_load(int debug, const char *fn, c
 /* Initialize a new logger
  * It will load any data in the logdir and persist it in the BATs*/
 static logger *
-logger_new(int debug, const char *fn, const char *logdir, int version, 
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp)
+logger_new(int debug, const char *fn, const char *logdir, int version, 
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp, void *funcdata)
 {
        int len;
        logger *lg;
@@ -2383,6 +2383,7 @@ logger_new(int debug, const char *fn, co
 
        lg->prefuncp = prefuncp;
        lg->postfuncp = postfuncp;
+       lg->funcdata = funcdata;
        lg->log = NULL;
        lg->end = 0;
        lg->catalog_bid = NULL;
@@ -2411,10 +2412,10 @@ logger_restart(logger *lg)
 
 /* Create a new logger */
 logger *
-logger_create(int debug, const char *fn, const char *logdir, int version, 
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp)
+logger_create(int debug, const char *fn, const char *logdir, int version, 
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp, void *funcdata)
 {
        logger *lg;
-       lg = logger_new(debug, fn, logdir, version, prefuncp, postfuncp);
+       lg = logger_new(debug, fn, logdir, version, prefuncp, postfuncp, 
funcdata);
        if (lg == NULL)
                return NULL;
        if (lg->debug & 1) {
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -11,8 +11,8 @@
 
 #define LOGFILE "log"
 
-typedef gdk_return (*preversionfix_fptr)(int oldversion, int newversion);
-typedef gdk_return (*postversionfix_fptr)(void *lg);
+typedef gdk_return (*preversionfix_fptr)(void *data, int oldversion, int 
newversion);
+typedef gdk_return (*postversionfix_fptr)(void *data, void *lg);
 
 typedef struct logger logger;
 
@@ -38,7 +38,7 @@ typedef int log_bid;
 #define LOG_COL 2
 #define LOG_IDX 3
 
-gdk_export logger *logger_create(int debug, const char *fn, const char 
*logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr 
postfuncp);
+gdk_export logger *logger_create(int debug, const char *fn, const char 
*logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr 
postfuncp, void *prefuncdata);
 gdk_export void logger_destroy(logger *lg);
 gdk_export gdk_return logger_flush(logger *lg, lng save_id);
 gdk_export gdk_return logger_cleanup(logger *lg);
diff --git a/gdk/gdk_logger_internals.h b/gdk/gdk_logger_internals.h
--- a/gdk/gdk_logger_internals.h
+++ b/gdk/gdk_logger_internals.h
@@ -26,6 +26,7 @@ struct logger {
        char *local_dir; /* the directory in which the log is written */
        preversionfix_fptr prefuncp;
        postversionfix_fptr postfuncp;
+       void *funcdata;
        stream *log;
        lng end;                /* end of pre-allocated blocks for faster 
f(data)sync */
        /* Store log_bids (int) to circumvent trouble with reference counting */
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -5263,6 +5263,7 @@ check_for_foreign_key_references(mvc *sq
        if (*error)
                return;
 
+       sqlstore *store = sql->session->tr->store;
        if (t->keys.set) { /* Check for foreign key references */
                for (n = t->keys.set->h; n; n = n->next) {
                        sql_key *k = n->data;
@@ -5279,8 +5280,8 @@ check_for_foreign_key_references(mvc *sq
                                                if (k->t != t && !cascade) {
                                                        node *n = 
t->columns.set->h;
                                                        sql_column *c = n->data;
-                                                       size_t n_rows = 
store_funcs.count_col(sql->session->tr, c, 1);
-                                                       size_t n_deletes = 
store_funcs.count_del(sql->session->tr, c->t);
+                                                       size_t n_rows = 
store->storage_api.count_col(sql->session->tr, c, 1);
+                                                       size_t n_deletes = 
store->storage_api.count_del(sql->session->tr, c->t);
                                                        assert (n_rows >= 
n_deletes);
                                                        if (n_rows - n_deletes 
> 0) {
                                                                sql_error(sql, 
02, SQLSTATE(23000) "TRUNCATE: FOREIGN KEY %s.%s depends on %s", 
k->t->base.name, k->base.name, t->base.name);
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -147,10 +147,10 @@ sqlcleanup(backend *be, int err)
                        sql_trans_commit(be->mvc->session->tr);
                        /* write changes to disk */
                        sql_trans_end(be->mvc->session, 1);
-                       store_apply_deltas(true);
+                       store_apply_deltas(be->mvc->session->tr->store, true);
                        sql_trans_begin(be->mvc->session);
                }
-               store_unlock();
+               store_unlock(be->mvc->session->tr->store);
                be->mvc->emod = 0;
        }
        /* some statements dynamically disable caching */
@@ -314,7 +314,7 @@ create_table_or_view(mvc *sql, char* sna
        int check = 0;
        const char *action = (temp == SQL_DECLARED_TABLE) ? "DECLARE" : 
"CREATE";
 
-       if (STORE_READONLY)
+       if (store_readonly(sql->session->tr->store))
                return sql_error(sql, 06, SQLSTATE(25006) "schema statements 
cannot be executed on a readonly database.");
 
        if (!s)
@@ -562,7 +562,8 @@ mvc_bind(mvc *m, const char *sname, cons
        if (c == NULL)
                return NULL;
 
-       b = store_funcs.bind_col(tr, c, access);
+       sqlstore *store = tr->store;
+       b = store->storage_api.bind_col(tr, c, access);
        return b;
 }
 
@@ -790,7 +791,7 @@ mvc_next_value(Client cntxt, MalBlkPtr m
        if (!(seq = find_sql_sequence(s, seqname)))
                throw(SQL, "sql.next_value", SQLSTATE(HY050) "Cannot find the 
sequence %s.%s", sname, seqname);
 
-       if (seq_next_value(seq, res)) {
+       if (seq_next_value(be->mvc->session->tr->store, seq, res)) {
                be->last_id = *res;
                sqlvar_set_number(find_global_var(be->mvc, 
mvc_bind_schema(be->mvc, "sys"), "last_id"), be->last_id);
                return MAL_SUCCEED;
@@ -819,7 +820,7 @@ mvc_get_value(Client cntxt, MalBlkPtr mb
        if (!(seq = find_sql_sequence(s, seqname)))
                throw(SQL, "sql.get_value", SQLSTATE(HY050) "Cannot find the 
sequence %s.%s", sname, seqname);
 
-       if (seq_get_value(seq, res))
+       if (seq_get_value(m->session->tr->store, seq, res))
                return MAL_SUCCEED;
        throw(SQL, "sql.get_value", SQLSTATE(HY050) "Cannot get sequence value 
%s.%s", sname, seqname);
 }
@@ -851,6 +852,7 @@ mvc_bat_next_get_value(Client cntxt, Mal
                return msg;
        if ((msg = checkSQLContext(cntxt)) != NULL)
                return msg;
+       sqlstore *store = m->session->tr->store;
 
        if (schid && !(b = BATdescriptor(schid))) {
                msg = createException(SQL, call, SQLSTATE(HY005) "Cannot access 
column descriptor");
@@ -891,7 +893,7 @@ mvc_bat_next_get_value(Client cntxt, Mal
 
                if (!s || strcmp(s->base.name, nsname) != 0 || !seq || 
strcmp(seq->base.name, nseqname) != 0) {
                        if (sb) {
-                               seqbulk_destroy(sb);
+                               seqbulk_destroy(store, sb);
                                sb = NULL;
                        }
                        seq = NULL;
@@ -903,7 +905,7 @@ mvc_bat_next_get_value(Client cntxt, Mal
                                msg = createException(SQL, call, 
SQLSTATE(42000) "Access denied for %s to schema '%s'", get_string_global_var(m, 
"current_user"), s->base.name);
                                goto bailout;
                        }
-                       if (!(seq = find_sql_sequence(s, nseqname)) || !(sb = 
seqbulk_create(seq, BATcount(it)))) {
+                       if (!(seq = find_sql_sequence(s, nseqname)) || !(sb = 
seqbulk_create(store, seq, BATcount(it)))) {
                                msg = createException(SQL, call, 
SQLSTATE(HY050) "Cannot find the sequence %s.%s", nsname, nseqname);
                                goto bailout;
                        }
@@ -920,7 +922,7 @@ mvc_bat_next_get_value(Client cntxt, Mal
 
 bailout:
        if (sb)
-               seqbulk_destroy(sb);
+               seqbulk_destroy(store, sb);
        if (b)
                BBPunfix(b->batCacheid);
        if (c)
@@ -1030,6 +1032,7 @@ mvc_bat_restart_seq(Client cntxt, MalBlk
        if ((msg = checkSQLContext(cntxt)) != NULL)
                return msg;
 
+       sqlstore *store = m->session->tr->store;
        if (schid && !(b = BATdescriptor(schid))) {
                msg = createException(SQL, "sql.restart", SQLSTATE(HY005) 
"Cannot access column descriptor");
                goto bailout;
@@ -1079,7 +1082,7 @@ mvc_bat_restart_seq(Client cntxt, MalBlk
 
                if (!s || strcmp(s->base.name, nsname) != 0 || !seq || 
strcmp(seq->base.name, nseqname) != 0) {
                        if (sb) {
-                               seqbulk_destroy(sb);
+                               seqbulk_destroy(store, sb);
                                sb = NULL;
                        }
                        seq = NULL;
@@ -1091,7 +1094,7 @@ mvc_bat_restart_seq(Client cntxt, MalBlk
                                msg = createException(SQL, "sql.restart", 
SQLSTATE(42000) "Access denied for %s to schema '%s'", get_string_global_var(m, 
"current_user"), s->base.name);
                                goto bailout;
                        }
-                       if (!(seq = find_sql_sequence(s, nseqname)) || !(sb = 
seqbulk_create(seq, BATcount(it)))) {
+                       if (!(seq = find_sql_sequence(s, nseqname)) || !(sb = 
seqbulk_create(store, seq, BATcount(it)))) {
                                msg = createException(SQL, "sql.restart", 
SQLSTATE(HY050) "Cannot find the sequence %s.%s", nsname, nseqname);
                                goto bailout;
                        }
@@ -1120,7 +1123,7 @@ mvc_bat_restart_seq(Client cntxt, MalBlk
 
 bailout:
        if (sb)
-               seqbulk_destroy(sb);
+               seqbulk_destroy(store, sb);
        if (b)
                BBPunfix(b->batCacheid);
        if (c)
@@ -1149,7 +1152,8 @@ mvc_bind_dbat(mvc *m, const char *sname,
        if (t == NULL)
                return NULL;
 
-       b = store_funcs.bind_del(tr, t, access);
+       sqlstore *store = tr->store;
+       b = store->storage_api.bind_del(tr, t, access);
        return b;
 }
 
@@ -1169,7 +1173,8 @@ mvc_bind_idxbat(mvc *m, const char *snam
                return NULL;
 
        (void) tname;
-       b = store_funcs.bind_idx(tr, i, access);
+       sqlstore *store = tr->store;
+       b = store->storage_api.bind_idx(tr, i, access);
        return b;
 }
 
@@ -1317,10 +1322,11 @@ static str
 mvc_insert_delta_values(mvc *m, BAT *col1, BAT *col2, BAT *col3, BAT *col4, 
BAT *col5, BAT *col6, BAT *col7, sql_column *c, bit cleared, lng deletes)
 {
        int level = 0;
-
-       lng inserted = (lng) store_funcs.count_col(m->session->tr, c, 0);
-       lng all = (lng) store_funcs.count_col(m->session->tr, c, 1);
-       lng updates = (lng) store_funcs.count_col_upd(m->session->tr, c);
+       sqlstore *store = m->session->tr->store;
+
+       lng inserted = (lng) store->storage_api.count_col(m->session->tr, c, 0);
+       lng all = (lng) store->storage_api.count_col(m->session->tr, c, 1);
+       lng updates = (lng) store->storage_api.count_col_upd(m->session->tr, c);
        lng readonly = all - inserted;
 
        assert(all >= inserted);
@@ -1383,7 +1389,8 @@ mvc_delta_values(Client cntxt, MalBlkPtr
        lng deletes;
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
-               goto cleanup;
+               return msg;
+       sqlstore *store = m->session->tr->store;
        if ((msg = checkSQLContext(cntxt)) != NULL)
                goto cleanup;
 
@@ -1442,7 +1449,7 @@ mvc_delta_values(Client cntxt, MalBlkPtr
        if (nrows) {
                if (tname) {
                        cleared = (t->cleared != 0);
-                       deletes = (lng) store_funcs.count_del(m->session->tr, 
t);
+                       deletes = (lng) 
store->storage_api.count_del(m->session->tr, t);
                        if (cname) {
                                if ((msg=mvc_insert_delta_values(m, col1, col2, 
col3, col4, col5, col6, col7, c, cleared, deletes)) != NULL)
                                        goto cleanup;
@@ -1458,7 +1465,7 @@ mvc_delta_values(Client cntxt, MalBlkPtr
                                t = (sql_table *) n->data;
                                if (isTable(t)) {
                                        cleared = (t->cleared != 0);
-                                       deletes = (lng) 
store_funcs.count_del(m->session->tr, t);
+                                       deletes = (lng) 
store->storage_api.count_del(m->session->tr, t);
 
                                        for (node *nn = t->columns.set->h; nn ; 
nn = nn->next) {
                                                c = (sql_column*) nn->data;
@@ -1613,7 +1620,8 @@ mvc_bind_idxbat_wrap(Client cntxt, MalBl
 str
 mvc_append_column(sql_trans *t, sql_column *c, BAT *ins)
 {
-       int res = store_funcs.append_col(t, c, ins, TYPE_bat);
+       sqlstore *store = t->store;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to