Changeset: a6511549459c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/a6511549459c Modified Files: sql/server/rel_select.c Branch: Aug2024 Log Message:
Better precision optimization and some early error checking diffs (19 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -4071,9 +4071,12 @@ rel_cast(sql_query *query, sql_rel **rel if (e->type == e_atom && tpe->type->eclass == EC_DEC) { sql_subtype *et = exp_subtype(e); - if (et->type->eclass == EC_CHAR || et->type->eclass == EC_NUM) - tpe = sql_bind_subtype(sql->sa, "decimal", et->digits, et->scale); - else if (et->type->eclass == EC_STRING) { + if (et->type->eclass == EC_NUM) { + unsigned int min_precision = atom_num_digits(e->l); + if (min_precision > tpe->digits) + return sql_error(sql, 02, SQLSTATE(42000) "Precision (%d) should be at least (%d)", tpe->digits, min_precision); + tpe = sql_bind_subtype(sql->sa, "decimal", min_precision, et->scale); + } else if (EC_VARCHAR(et->type->eclass)) { char *s = E_ATOM_STRING(e); unsigned int min_precision = 0, min_scale = 0; bool dot_seen = false; _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org