Changeset: 0b93280574d6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0b93280574d6
Modified Files:
sql/storage/store.c
Branch: antipush
Log Message:
Only update 'unique' field when the index is backed by a key constraint
diffs (39 lines):
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3249,7 +3249,7 @@ sql_trans_copy_idx( sql_trans *tr, sql_t
sql_kc *okc = n->data, *ic;
list_append(ni->columns, ic = kc_dup(tr, okc, t));
- if (i->type == hash_idx)
+ if (i->key && hash_index(i->type))
ic->c->unique = (ncols == 1) ? 2 : MAX(ic->c->unique,
1);
if ((res = store->table_api.table_insert(tr, sysic,
&ni->base.id, &ic->c->base.name, &nr, ATOMnilptr(TYPE_int)))) {
idx_destroy(store, ni);
@@ -4022,7 +4022,7 @@ sys_drop_idx(sql_trans *tr, sql_idx * i,
for (n = i->columns->h; n; n = n->next) {
sql_kc *ic = n->data;
- if (hash_index(i->type)) { /* update new column's unique value
*/
+ if (i->key && hash_index(i->type)) { /* update new column's
unique value */
int unique = 0;
sqlid cid = ic->c->base.id;
struct os_iter oi;
@@ -4031,7 +4031,7 @@ sys_drop_idx(sql_trans *tr, sql_idx * i,
for (sql_base *b = oi_next(&oi); b; b = oi_next(&oi)) {
sql_idx *ti = (sql_idx*)b;
- if (ti->base.id != i->base.id &&
hash_index(ti->type)) {
+ if (ti->base.id != i->base.id && ti->key &&
hash_index(ti->type)) {
bool found = false;
for (node *m = ti->columns->h; m &&
!found; m = m->next) {
sql_kc *tic = m->data;
@@ -5586,7 +5586,7 @@ create_sql_ic(sqlstore *store, sql_alloc
sql_idx *
create_sql_idx_done(sql_idx *i)
{
- if (i && hash_index(i->type)) {
+ if (i && i->key && hash_index(i->type)) {
int ncols = list_length(i->columns);
for (node *n = i->columns->h ; n ; n = n->next) {
sql_kc *kc = n->data;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list