Changeset: 387d76d5c476 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/387d76d5c476 Modified Files: sql/include/sql_catalog.h sql/storage/store.c Branch: check Log Message:
add "check" column to _columns tables diffs (126 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 @@ -618,6 +618,7 @@ 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; + char *check; /* check condition*/ size_t dcount; void *min; void *max; diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -545,7 +545,7 @@ load_column(sql_trans *tr, sql_table *t, sql_schema *syss = find_sql_schema(tr, "sys"); sql_table *columns = find_sql_table(tr, syss, "_columns"); sqlstore *store = tr->store; - str v, def, tpe, st; + str v, def, tpe, st, ch; int sz, d; sqlid cid = *(sqlid*)store->table_api.table_fetch_value(rt_cols, find_sql_column(columns, "id")); @@ -576,6 +576,10 @@ load_column(sql_trans *tr, sql_table *t, st = (char*)store->table_api.table_fetch_value(rt_cols, find_sql_column(columns, "storage")); if (!strNil(st)) c->storage_type =_STRDUP(st); + c->check = NULL; + ch = (char*)store->table_api.table_fetch_value(rt_cols, find_sql_column(columns, "check")); + if (!strNil(ch)) + c->check =_STRDUP(ch); ATOMIC_PTR_INIT(&c->data, NULL); c->t = t; if (isTable(c->t)) @@ -1489,7 +1493,7 @@ insert_schemas(sql_trans *tr) sql_column *c = o->data; if ((res = store->table_api.table_insert(tr, syscolumn, &c->base.id, &c->base.name, &c->type.type->base.name, &c->type.digits, &c->type.scale, - &t->base.id, (c->def) ? &c->def : &strnil, &c->null, &c->colnr, (c->storage_type)? &c->storage_type : &strnil))) + &t->base.id, (c->def) ? &c->def : &strnil, &c->null, &c->colnr, (c->storage_type)? &c->storage_type : &strnil, (c->check)? &c->check : &strnil))) return res; } } @@ -1593,6 +1597,7 @@ bootstrap_create_column(sql_trans *tr, s col->t = t; col->unique = 0; col->storage_type = NULL; + col->check = NULL; if (ol_add(t->columns, &col->base)) return NULL; @@ -1680,6 +1685,11 @@ dup_sql_column(sql_allocator *sa, sql_ta col->storage_type = SA_STRDUP(sa, c->storage_type); if (ol_add(t->columns, &col->base)) return NULL; + col->check = NULL; + if (c->check) + col->check = SA_STRDUP(sa, c->check); + if (ol_add(t->columns, &col->base)) + return NULL; return col; } @@ -2017,6 +2027,7 @@ store_load(sqlstore *store, sql_allocato bootstrap_create_column(tr, t, "null", 2084, "boolean", 1) == NULL || bootstrap_create_column(tr, t, "number", 2085, "int", 31) == NULL || bootstrap_create_column(tr, t, "storage", 2086, "varchar", 2048) == NULL || + bootstrap_create_column(tr, t, "check", 2165, "varchar", 2048) == NULL || (t = bootstrap_create_table(tr, s, "keys", 2087)) == NULL || bootstrap_create_column(tr, t, "id", 2088, "int", 31) == NULL || @@ -2078,6 +2089,7 @@ store_load(sqlstore *store, sql_allocato bootstrap_create_column(tr, t, "null", 2132, "boolean", 1) == NULL || bootstrap_create_column(tr, t, "number", 2133, "int", 31) == NULL || bootstrap_create_column(tr, t, "storage", 2134, "varchar", 2048) == NULL || + bootstrap_create_column(tr, t, "check", 2166, "varchar", 2048) == NULL || (t = bootstrap_create_table(tr, s, "keys", 2135)) == NULL || bootstrap_create_column(tr, t, "id", 2136, "int", 31) == NULL || @@ -2976,6 +2988,9 @@ column_dup(sql_trans *tr, sql_column *oc c->storage_type = NULL; if (oc->storage_type) c->storage_type =_STRDUP(oc->storage_type); + c->check = NULL; + if (oc->check) + c->check =_STRDUP(oc->check); ATOMIC_PTR_INIT(&c->data, NULL); if (isTable(c->t)) { @@ -3642,6 +3657,9 @@ sql_trans_copy_column( sql_trans *tr, sq col->storage_type = NULL; if (c->storage_type) col->storage_type =_STRDUP(c->storage_type); + col->check = NULL; + if (c->check) + col->check =_STRDUP(c->check); if ((res = ol_add(t->columns, &col->base))) return res; @@ -3666,7 +3684,8 @@ sql_trans_copy_column( sql_trans *tr, sq if ((res = store->table_api.table_insert(tr, syscolumn, &col->base.id, &col->base.name, &col->type.type->base.name, &digits, &col->type.scale, &t->base.id, (col->def) ? &col->def : &strnil, &col->null, &col->colnr, - (col->storage_type) ? &col->storage_type : &strnil))) { + (col->storage_type) ? &col->storage_type : &strnil, + (col->check) ? &col->check : &strnil))) { ATOMIC_PTR_DESTROY(&col->data); return res; } @@ -5993,6 +6012,7 @@ create_sql_column_with_id(sql_allocator col->t = t; col->unique = 0; col->storage_type = NULL; + col->check = NULL; if (ol_add(t->columns, &col->base)) return NULL; @@ -6109,7 +6129,7 @@ sql_trans_create_column(sql_column **rco char *strnil = (char*)ATOMnilptr(TYPE_str); int digits = type_digits(&col->type); if ((res = store->table_api.table_insert(tr, syscolumn, &col->base.id, &col->base.name, &col->type.type->base.name, &digits, &col->type.scale, - &t->base.id, (col->def) ? &col->def : &strnil, &col->null, &col->colnr, (col->storage_type) ? &col->storage_type : &strnil))) { + &t->base.id, (col->def) ? &col->def : &strnil, &col->null, &col->colnr, (col->storage_type) ? &col->storage_type : &strnil, (col->check) ? &col->check : &strnil))) { ATOMIC_PTR_DESTROY(&col->data); return res; } _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org