Changeset: 59ae94d8e7b4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/59ae94d8e7b4
Modified Files:
        sql/include/sql_catalog.h
        sql/server/sql_mvc.c
        sql/storage/sql_storage.h
        sql/storage/store.c
Branch: analyze-fix
Log Message:

Don't propagate sql statistics on column dup (access changes should require to 
re-read the statistics). Also started to clean unused column fields


diffs (151 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
@@ -617,12 +617,9 @@ typedef struct sql_column {
        char unique;            /* 0 NOT UNIQUE, 1 SUB_UNIQUE, 2 UNIQUE */
        int drop_action;        /* only used for alter statements */
        char *storage_type;
-       int sorted;             /* for DECLARED (dupped tables) we keep order 
info */
        size_t dcount;
        void *min;
-       size_t minlen;
        void *max;
-       size_t maxlen;
 
        struct sql_table *t;
        ATOMIC_PTR_TYPE data;
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -1098,7 +1098,7 @@ mvc_create_key_done(mvc *m, sql_key *k)
        int res = LOG_OK;
 
        if (k->t->persistence == SQL_DECLARED_TABLE)
-               key_create_done(m->store, m->sa, k);
+               key_create_done(m->session->tr, m->sa, k);
        else
                res = sql_trans_key_done(m->session->tr, k);
        return res;
@@ -1186,7 +1186,7 @@ mvc_create_idx_done(mvc *m, sql_idx *i)
        int res = LOG_OK;
 
        (void) m;
-       (void) create_sql_idx_done(i);
+       (void) create_sql_idx_done(m->session->tr, i);
        return res;
 }
 
diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h
--- a/sql/storage/sql_storage.h
+++ b/sql/storage/sql_storage.h
@@ -442,11 +442,11 @@ extern sql_column *create_sql_column(str
 extern sql_key *create_sql_ukey(struct sqlstore *store, sql_allocator *sa, 
sql_table *t, const char *nme, key_type kt);
 extern sql_fkey *create_sql_fkey(struct sqlstore *store, sql_allocator *sa, 
sql_table *t, const char *nme, key_type kt, sql_key *rkey, int on_delete, int 
on_update );
 extern sql_key *create_sql_kc(struct sqlstore *store, sql_allocator *sa, 
sql_key *k, sql_column *c);
-extern sql_key * key_create_done(struct sqlstore *store, sql_allocator *sa, 
sql_key *k);
+extern sql_key * key_create_done(sql_trans *tr, sql_allocator *sa, sql_key *k);
 
 extern sql_idx *create_sql_idx(struct sqlstore *store, sql_allocator *sa, 
sql_table *t, const char *nme, idx_type it);
 extern sql_idx *create_sql_ic(struct sqlstore *store, sql_allocator *sa, 
sql_idx *i, sql_column *c);
-extern sql_idx *create_sql_idx_done(sql_idx *i);
+extern sql_idx *create_sql_idx_done(sql_trans *tr, sql_idx *i);
 extern sql_func *create_sql_func(struct sqlstore *store, sql_allocator *sa, 
const char *func, list *args, list *res, sql_ftype type, sql_flang lang, const 
char *mod,
                                                                 const char 
*impl, const char *query, bit varres, bit vararg, bit system, bit side_effect);
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -560,8 +560,6 @@ load_column(sql_trans *tr, sql_table *t,
        c->t = t;
        if (isTable(c->t))
                store->storage_api.create_col(tr, c);
-       c->sorted = sql_trans_is_sorted(tr, c);
-       c->dcount = 0;
        TRC_DEBUG(SQL_STORE, "Load column: %s\n", c->base.name);
        return c;
 }
@@ -808,7 +806,7 @@ load_table(sql_trans *tr, sql_schema *s,
        /* after loading keys and idxs, update properties derived from indexes 
that require keys */
        if (ol_length(t->idxs))
                for (node *n = ol_first_node(t->idxs); n; n = n->next)
-                       create_sql_idx_done(n->data);
+                       create_sql_idx_done(tr, n->data);
 
        for ( ; rt_triggers->cur_row < rt_triggers->nr_rows; 
rt_triggers->cur_row++) {
                ntid = *(sqlid*)store->table_api.table_fetch_value(rt_triggers, 
find_sql_column(triggers, "table_id"));
@@ -1584,8 +1582,6 @@ dup_sql_column(sql_allocator *sa, sql_ta
        col->storage_type = NULL;
        if (c->storage_type)
                col->storage_type = SA_STRDUP(sa, c->storage_type);
-       col->sorted = c->sorted;
-       col->dcount = c->dcount;
        if (ol_add(t->columns, &col->base))
                return NULL;
        return col;
@@ -5705,16 +5701,11 @@ create_sql_ic(sqlstore *store, sql_alloc
        list_append(i->columns, ic);
 
        (void)store;
-       /* should we switch to oph_idx ? */
-       if (i->type == hash_idx && list_length(i->columns) == 1 && 
ic->c->sorted) {
-               /*i->type = oph_idx;*/
-               i->type = no_idx;
-       }
        return i;
 }
 
 sql_idx *
-create_sql_idx_done(sql_idx *i)
+create_sql_idx_done(sql_trans *tr, sql_idx *i)
 {
        if (i && i->key && hash_index(i->type)) {
                int ncols = list_length(i->columns);
@@ -5724,6 +5715,9 @@ create_sql_idx_done(sql_idx *i)
                        kc->c->unique = (ncols == 1) ? 2 : MAX(kc->c->unique, 
1);
                }
        }
+       /* should we switch to oph_idx ? */
+       if (i->type == hash_idx && list_length(i->columns) == 1 && 
sql_trans_is_sorted(tr, ((sql_kc*)i->columns->h->data)->c))
+               i->type = no_idx;
        return i;
 }
 
@@ -6198,8 +6192,6 @@ sql_trans_ranges( sql_trans *tr, sql_col
                                _DELETE(col->max);
                                *min = col->min = smin;
                                *max = col->max = smax;
-                               col->minlen = minlen;
-                               col->maxlen = maxlen;
                        }
                }
        }
@@ -6396,9 +6388,10 @@ table_has_idx( sql_table *t, list *keyco
 }
 
 sql_key *
-key_create_done(sqlstore *store, sql_allocator *sa, sql_key *k)
+key_create_done(sql_trans *tr, sql_allocator *sa, sql_key *k)
 {
        sql_idx *i;
+       sqlstore *store = tr->store;
 
        if (k->type != fkey) {
                if ((i = table_has_idx(k->t, k->columns)) != NULL) {
@@ -6420,7 +6413,7 @@ key_create_done(sqlstore *store, sql_all
                        create_sql_ic(store, sa, k->idx, kc->c);
                }
        }
-       k->idx = create_sql_idx_done(k->idx);
+       k->idx = create_sql_idx_done(tr, k->idx);
        return k;
 }
 
@@ -6453,7 +6446,7 @@ sql_trans_key_done(sql_trans *tr, sql_ke
                                return res;
                }
        }
-       k->idx = create_sql_idx_done(k->idx);
+       k->idx = create_sql_idx_done(tr, k->idx);
        return res;
 }
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to