Changeset: 39ea362344e7 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=39ea362344e7 Modified Files: sql/server/sql_atom.c sql/server/sql_parser.y Branch: Jul2015 Log Message:
generate error on nil values (given as literal values) diffs (57 lines): diff --git a/sql/server/sql_atom.c b/sql/server/sql_atom.c --- a/sql/server/sql_atom.c +++ b/sql/server/sql_atom.c @@ -1158,11 +1158,13 @@ atom_neg( atom *a ) break; case TYPE_dbl: a->data.val.dval = -a->data.val.dval; + if (a->data.val.dval == dbl_nil) + return -1; break; default: return -1; } - if (a->d != dbl_nil) + if (a->d != dbl_nil && a->tpe.type->localtype != TYPE_dbl) a->d = -a->d; return 0; } 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 @@ -3563,8 +3563,16 @@ simple_scalar_exp: assert($2->token != SQL_COLUMN || $2->data.lval->h->type != type_lng); if ($2->token == SQL_COLUMN && $2->data.lval->h->type == type_int) { atom *a = sql_bind_arg(m, $2->data.lval->h->data.i_val); - if (!atom_neg(a)) + if (!atom_neg(a)) { $$ = $2; + } else { + char *msg = sql_message("\b22003!value too large or not a number"); + + yyerror(m, msg); + _DELETE(msg); + $$ = NULL; + YYABORT; + } } if (!$$) { dlist *l = L(); @@ -4313,7 +4321,7 @@ literal: errno = 0; val = strtod($1,&p); - if (p == $1 || (errno == ERANGE && (val < -1 || val > 1))) { + if (p == $1 || val == dbl_nil || (errno == ERANGE && (val < -1 || val > 1))) { char *msg = sql_message("\b22003!double value too large or not a number (%s)", $1); yyerror(m, msg); @@ -4332,7 +4340,7 @@ literal: errno = 0; val = strtod($1,&p); - if (p == $1 || (errno == ERANGE && (val < -1 || val > 1))) { + if (p == $1 || val == dbl_nil || (errno == ERANGE && (val < -1 || val > 1))) { char *msg = sql_message("\b22003!double value too large or not a number (%s)", $1); yyerror(m, msg); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list