Changeset: a16bc49e2568 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a16bc49e2568
Modified Files:
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_gencode.c
        sql/server/rel_schema.c
        sql/server/sql_parser.y
Branch: Jul2017
Log Message:

Merge with Dec2016 branch.


diffs (95 lines):

diff --git a/sql/backends/monet5/sql_execute.c 
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -869,13 +869,9 @@ RAstatement2(Client cntxt, MalBlkPtr mb,
        }
        refs = sa_list(m->sa);
        rel = rel_read(m, *expr, &pos, refs);
-       if (!rel)
+       if (!rel || monet5_create_relational_function(m, *mod, *nme, rel, NULL, 
ops, 0) < 0)
                throw(SQL, "sql.register", "Cannot register %s", buf);
-       if (rel) {
-               monet5_create_relational_function(m, *mod, *nme, rel, NULL, 
ops, 0);
-               rel_destroy(rel);
-       }
+       rel_destroy(rel);
        sqlcleanup(m, 0);
        return msg;
 }
-
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -364,6 +364,8 @@ static int
                        sql_subtype *t = tail_type(op);
                        const char *nme = 
(op->op3)?op->op3->op4.aval->data.val.sval:op->cname;
 
+                       if ((nr + 100) > len)
+                               buf = GDKrealloc(buf, len*=2);
                        nr += snprintf(buf+nr, len-nr, "%s %s(%u,%u)%c", nme, 
t->type->sqlname, t->digits, t->scale, n->next?',':' ');
                }
                s = buf;
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
@@ -409,17 +409,16 @@ column_option(
                        if (e && is_atom(e->type)) {
                                atom *a = exp_value(sql, e, sql->args, 
sql->argc);
 
-                               if (atom_null(a)) {
-                                       mvc_default(sql, cs, NULL);
-                                       res = SQL_OK;
-                                       break;
+                               if(!atom_cast(sql->sa, a, &cs->type)) {
+                                       (void) sql_error(sql, 02, "42000!could 
not cast the default value to the column type\n");
+                                       return SQL_ERR;
                                }
                        }
                        /* reset error */
                        sql->session->status = 0;
                        sql->errstr[0] = '\0';
                }
-               r = symbol2string(sql, s->data.sym, &err);
+               r = symbol2string(sql, s->data.sym, &err);
                if (!r) {
                        (void) sql_error(sql, 02, "42000!incorrect default 
value '%s'\n", err?err:"");
                        if (err) _DELETE(err);
@@ -738,14 +737,25 @@ table_element(mvc *sql, symbol *s, sql_s
                char *cname = l->h->data.sval;
                symbol *sym = l->h->next->data.sym;
                sql_column *c = mvc_bind_column(sql, t, cname);
+               sql_exp *e = NULL;
 
                if (!c) {
                        sql_error(sql, 02, "42S22!ALTER TABLE: no such column 
'%s'\n", cname);
                        return SQL_ERR;
                }
+               e = rel_logical_value_exp(sql, NULL, sym, sql_sel);
+
+               if (e && is_atom(e->type)) {
+                       atom *a = exp_value(sql, e, sql->args, sql->argc);
+
+                       if(!atom_cast(sql->sa, a, &c->type)) {
+                               (void) sql_error(sql, 02, "42S22!ALTER TABLE: 
could not cast the default value to the column type\n");
+                               return SQL_ERR;
+                       }
+               }
                r = symbol2string(sql, sym, &err);
                if (!r) {
-                       (void) sql_error(sql, 02, "42000!incorrect default 
value '%s'\n", err?err:"");
+                       (void) sql_error(sql, 02, "42S22!ALTER TABLE: incorrect 
default value '%s'\n", err?err:"");
                        if (err) _DELETE(err);
                        return SQL_ERR;
                }
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
@@ -1550,7 +1550,7 @@ default:
  ;
 
 default_value:
-    simple_scalar_exp  { $$ = $1; }
+    atom       { $$ = $1; }
  ;
 
 column_constraint:
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to