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

Reply via email to