Update of /cvsroot/monetdb/sql/src/server
In directory sc8-pr-cvs16:/tmp/cvs-serv15948

Modified Files:
        sql_mvc.mx sql_schema.mx 
Log Message:
Implement the set default | NULL | NO NULL and DROP DEFAULT for the alter 
statement.



Index: sql_mvc.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_mvc.mx,v
retrieving revision 1.183
retrieving revision 1.184
diff -u -d -r1.183 -r1.184
--- sql_mvc.mx  6 May 2007 09:04:34 -0000       1.183
+++ sql_mvc.mx  9 May 2007 22:18:39 -0000       1.184
@@ -166,6 +166,7 @@
 extern sql_column *mvc_create_column_(mvc *c, sql_table *t, char *name, char 
*type, int digits);
 extern sql_column *mvc_null(mvc *c, sql_column *col, int flag);
 extern sql_column *mvc_default(mvc *c, sql_column *col, char *val);
+extern sql_column *mvc_drop_default(mvc *c, sql_column *col);
 
 extern sql_key *mvc_create_ukey(mvc *m, sql_table *t, char *kname, key_type 
kt);
 extern sql_fkey *mvc_create_fkey(mvc *m, sql_table *t, char *kname, key_type 
kt, sql_key *rk, int on_delete, int on_update);
@@ -1301,6 +1302,16 @@
        return sql_trans_alter_default(m->session->tr, col, val);
 }
 
+sql_column *
+mvc_drop_default(mvc *m, sql_column *col)
+{
+       if (mvc_debug)
+               fprintf(stderr, "mvc_drop_default %s\n", col->base.name);
+
+       m->type = Q_SCHEMA;
+       return sql_trans_alter_default(m->session->tr, col, NULL);
+}
+
 /* variable management */
 void 
 stack_push_var(mvc *sql, char *name, stmt *var, sql_subtype *type)

Index: sql_schema.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_schema.mx,v
retrieving revision 1.127
retrieving revision 1.128
diff -u -d -r1.127 -r1.128
--- sql_schema.mx       8 May 2007 11:19:43 -0000       1.127
+++ sql_schema.mx       9 May 2007 22:18:40 -0000       1.128
@@ -1460,6 +1460,48 @@
                        res = stmt_none();
        }
                break;
+       case SQL_DEFAULT:
+       {
+               char *r;
+               dlist *l = s->data.lval;
+               char *cname = l->h->data.sval;
+               symbol *sym = l->h->next->data.sym;
+               sql_column *c = mvc_bind_column(sql, t, cname);
+               exp_kind ek = {type_value, card_value, FALSE};
+               stmt *tmp = sql_value_exp(sql, NULL, sym, NULL, NULL, sql_sel, 
ek);
+
+               if (!tmp || (tmp = check_types(sql, &c->type, tmp, type_equal)) 
== NULL) 
+                       return NULL;
+               stmt_destroy(tmp);
+
+               r = symbol2string(sql, sym);
+               mvc_default(sql, c, r);
+               _DELETE(r);
+               res = stmt_none();
+               
+       }
+       break;
+       case SQL_NOT_NULL:
+       case SQL_NULL:
+       {
+               dnode *n = s->data.lval->h;
+               char *cname = n->data.sval;
+               sql_column *c = mvc_bind_column(sql, t, cname);
+               int null = (s->token == SQL_NOT_NULL) ? 0 : 1;
+
+               mvc_null(sql, c, null);
+               res = stmt_none();
+       }
+       break;
+       case SQL_DROP_DEFAULT:
+       {
+               char *cname = s->data.sval;
+               sql_column *c = mvc_bind_column(sql, t, cname);
+               mvc_drop_default(sql,c);
+
+               res = stmt_none();
+               break;
+       }
        case SQL_LIKE:
        {
                char *name = qname_table(s->data.lval);


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to