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