Changeset: 2a2886a777a0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2a2886a777a0
Modified Files:
        sql/src/backends/monet5/sql.mx
Branch: Feb2010
Log Message:

fix alter table


diffs (43 lines):

diff -r 98a6cd18e68b -r 2a2886a777a0 sql/src/backends/monet5/sql.mx
--- a/sql/src/backends/monet5/sql.mx    Tue May 18 13:57:12 2010 +0200
+++ b/sql/src/backends/monet5/sql.mx    Wed May 19 21:43:06 2010 +0200
@@ -1680,6 +1680,26 @@
 }
 
 static str
+drop_key( mvc *sql, char *sname, char *kname, int drop_action )
+{
+       sql_key *key;
+       sql_schema *ss = NULL;
+
+       if (sname != NULL && (ss = mvc_bind_schema(sql, sname)) == NULL)
+               return sql_message("DROP VIEW: no such schema '%s'", sname);
+
+       if (ss == NULL)
+               ss = cur_schema(sql);
+
+       if ((key = mvc_bind_key(sql, ss, kname )) == NULL) 
+               return sql_message("ALTER TABLE: no such constraint '%s'", 
kname);
+       if (!drop_action && mvc_check_dependency(sql, key->base.id, 
KEY_DEPENDENCY, NULL)) 
+               return sql_message("ALTER TABLE: cannot drop constraint '%s': 
there are database objects which depend on it", key->base.name);
+       mvc_drop_key(sql, ss, key, drop_action);
+       return MAL_SUCCEED;
+}
+
+static str
 create_seq( mvc *sql, char *sname, sql_sequence *seq)
 {
        sql_schema *s = NULL;
@@ -1837,6 +1857,12 @@
                sql_table *t = *(sql_table**) getArgReference(stk, pci, 3);
                msg = alter_table(sql, sname, t);
        }       break;
+       case DDL_DROP_CONSTRAINT: {
+               int action = *(int*) getArgReference(stk, pci, 4);
+               str name = *(str*) getArgReference(stk, pci, 3);
+
+               msg = drop_key( sql, sname, name, action);
+       }       break;
        default:
                throw(SQL, "sql.catalog", "catalog unknown type");
        }
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to