Changeset: e72230df10a7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e72230df10a7
Modified Files:
sql/server/rel_schema.c
sql/server/rel_semantic.c
sql/server/sql_mvc.c
sql/server/sql_parser.y
sql/storage/store.c
Branch: arrays
Log Message:
array columns are added only once in columns and drop array is possible now
diffs (95 lines):
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -815,7 +815,6 @@ sql_rel* rel_create_array(mvc *sql, sql_
// int create = (!instantiate && !deps);
int tt = tt_array;
-fprintf(stderr, "In rel_create_array\n");
// (void)create;
if (sname && !(s = mvc_bind_schema(sql, sname)))
return sql_error(sql, 02, "3F000!CREATE ARRAY: no such schema
'%s'", sname);
@@ -1201,7 +1200,6 @@ rel_alter_table(mvc *sql, dlist *qname,
char *tname = qname_table(qname);
sql_schema *s = NULL;
sql_table *t = NULL;
-
if (sname && !(s=mvc_bind_schema(sql, sname))) {
(void) sql_error(sql, 02, "3F000!ALTER TABLE: no such schema
'%s'", sname);
return NULL;
@@ -1741,9 +1739,8 @@ rel_schemas(mvc *sql, symbol *s)
{
sql_rel *ret = NULL;
- if (s->token != SQL_CREATE_TABLE && s->token != SQL_CREATE_VIEW &&
STORE_READONLY)
+ if (s->token != SQL_CREATE_TABLE && s->token != SQL_CREATE_VIEW &&
s->token != SQL_CREATE_ARRAY && STORE_READONLY)
return sql_error(sql, 06, "25006!schema statements cannot be
executed on a readonly database.");
-
switch (s->token) {
case SQL_CREATE_SCHEMA:
{
@@ -1797,6 +1794,7 @@ rel_schemas(mvc *sql, symbol *s)
ret = rel_create_view(sql, NULL, l->h->data.lval,
l->h->next->data.lval, l->h->next->next->data.sym,
l->h->next->next->next->data.i_val, l->h->next->next->next->next->data.i_val);
} break;
case SQL_DROP_TABLE:
+ case SQL_DROP_ARRAY: //at the moment there is no difference
{
dlist *l = s->data.lval;
char *sname = qname_schema(l->h->data.lval);
diff --git a/sql/server/rel_semantic.c b/sql/server/rel_semantic.c
--- a/sql/server/rel_semantic.c
+++ b/sql/server/rel_semantic.c
@@ -177,6 +177,7 @@ rel_semantic(mvc *sql, symbol *s)
case SQL_CREATE_VIEW:
case SQL_DROP_TABLE:
case SQL_DROP_VIEW:
+ /*SciQL*/case SQL_DROP_ARRAY:
case SQL_ALTER_TABLE:
case SQL_GRANT:
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
@@ -1046,8 +1046,8 @@ mvc_create_column(mvc *m, sql_table *t,
{
if (mvc_debug)
fprintf(stderr, "#mvc_create_column %s %s %s\n", t->base.name,
name, tpe->type->sqlname);
- if (t->persistence == SQL_DECLARED_TABLE && (!t->s ||
strcmp(t->s->base.name, dt_schema)))
- /* declared tables should not end up in the catalog */
+ if ((isDeclaredTable(t) || isDeclaredArray(t)) && (!t->s ||
strcmp(t->s->base.name, dt_schema)))
+ /* declared tables or arrays should not end up in the catalog */
return create_sql_column(m->sa, t, name, tpe);
else
return sql_trans_create_column(m->session->tr, t, name, tpe);
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -2480,6 +2480,12 @@ drop_statement:
| drop USER ident { $$ = _symbol_create( SQL_DROP_USER, $3 ); }
| drop INDEX qname { $$ = _symbol_create_list( SQL_DROP_INDEX, $3 ); }
| drop TRIGGER qname { $$ = _symbol_create_list( SQL_DROP_TRIGGER, $3 ); }
+ | drop ARRAY qname drop_action
+ { dlist *l = L();
+ append_list(l, $3 );
+ append_int(l, $4 );
+ $$ = _symbol_create_list( SQL_DROP_ARRAY, l ); }
+
;
opt_typelist:
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4239,10 +4239,10 @@ sql_trans_create_column(sql_trans *tr, s
return NULL;
col = create_sql_column(tr->sa, t, name, tpe );
- if (isTable(col->t))
+ if (isTable(col->t) || isArray(col->t))
if (store_funcs.create_col(tr, col) == LOG_ERR)
return NULL;
- if (!isDeclaredTable(t))
+ if (!(isDeclaredTable(t) || isDeclaredArray(t)))
table_funcs.table_insert(tr, syscolumn, &col->base.id,
col->base.name, col->type.type->sqlname, &col->type.digits, &col->type.scale,
&t->base.id, (col->def) ? col->def : ATOMnilptr(TYPE_str), &col->null,
&col->colnr, (col->storage_type) ? col->storage_type : ATOMnilptr(TYPE_str));
col->base.wtime = t->base.wtime = t->s->base.wtime = tr->wtime =
tr->wstime;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list