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