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