maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #13096
Re: 61b72ed3dde: MDEV-27712 Reduce the size of Lex_length_and_dec_st from 16 to 8
Hi, Alexander,
a question about error codes:
On Mar 11, Alexander Barkov wrote:
> commit 61b72ed3dde
> Author: Alexander Barkov <bar@xxxxxxxxxxx>
> Date: Wed Feb 9 17:59:38 2022 +0400
>
> diff --git a/mysql-test/main/type_blob.test b/mysql-test/main/type_blob.test
> index c61ed124139..a5410244ed1 100644
> --- a/mysql-test/main/type_blob.test
> +++ b/mysql-test/main/type_blob.test
> @@ -517,7 +517,7 @@ CREATE TABLE b15776 (a char(2147483648));
> --error ER_TOO_BIG_FIELDLENGTH
> CREATE TABLE b15776 (a char(4294967295));
> # Even BLOB won't hold
> ---error ER_TOO_BIG_FIELDLENGTH
> +--error ER_NOT_SUPPORTED_YET
Why did you change the error?
> CREATE TABLE b15776 (a char(4294967296));
>
>
> diff --git a/mysql-test/main/type_float.result b/mysql-test/main/type_float.result
> index 5137a8229b6..9e216711ddd 100644
> --- a/mysql-test/main/type_float.result
> +++ b/mysql-test/main/type_float.result
> @@ -1162,3 +1162,36 @@ fdec 123.456.789,12345678900000000000000000000000000000
> #
> # End of 10.4 tests
> #
> +#
> +# Start of 10.9 tests
> +#
> +#
> +# MDEV-27712 Reduce the size of Lex_length_and_dec_st from 16 to 8
> +#
> +CREATE TABLE t1 (a DOUBLE(1000,1000));
> +ERROR 42000: This version of MariaDB doesn't yet support 'scale>255'
> +CREATE TABLE t1 (a DOUBLE(1000,0));
> +ERROR 42000: Display width out of range for 'a' (max = 255)
> +CREATE TABLE t1 (a DOUBLE(0,1000));
> +ERROR 42000: This version of MariaDB doesn't yet support 'scale>255'
> +CREATE TABLE t1 (a DOUBLE(2147483647,2147483647));
> +ERROR 42000: This version of MariaDB doesn't yet support 'scale>255'
> +CREATE TABLE t1 (a DOUBLE(2147483647,0));
> +ERROR 42000: Display width out of range for 'a' (max = 255)
> +CREATE TABLE t1 (a DOUBLE(0,2147483647));
> +ERROR 42000: This version of MariaDB doesn't yet support 'scale>255'
> +CREATE TABLE t1 (a DOUBLE(2147483648,2147483648));
> +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '2147483648,2147483648))' at line 1
This isn't technically a *syntax* error
Can you use a different error here?
> +CREATE TABLE t1 (a DOUBLE(2147483648,0));
> +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '2147483648,0))' at line 1
> +CREATE TABLE t1 (a DOUBLE(0,2147483648));
> +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '2147483648))' at line 1
> +CREATE TABLE t1 (a DOUBLE(999999999999999999999999999999,999999999999999999999999999999));
> +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '999999999999999999999999999999,999999999999999999999999999999))' at line 1
> +CREATE TABLE t1 (a DOUBLE(999999999999999999999999999999,0));
> +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '999999999999999999999999999999,0))' at line 1
> +CREATE TABLE t1 (a DOUBLE(0,999999999999999999999999999999));
> +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '999999999999999999999999999999))' at line 1
> +#
> +# End of 10.9 tests
> +#
> diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
> index 5bb03544762..fdc54f7df27 100644
> --- a/sql/sql_yacc.yy
> +++ b/sql/sql_yacc.yy
> @@ -5975,11 +5977,10 @@ field_type_numeric:
> | FLOAT_SYM float_options last_field_options
> {
> $$.set(&type_handler_float, $2);
> - if ($2.length() && !$2.dec())
> + if ($2.has_explicit_length() && !$2.has_explicit_dec())
> {
> - int err;
> - ulonglong tmp_length= my_strtoll10($2.length(), NULL, &err);
> - if (unlikely(err || tmp_length > PRECISION_FOR_DOUBLE))
> + ulonglong tmp_length= $2.length();
you don't really need tmp_length here anymore
> + if (unlikely(tmp_length > PRECISION_FOR_DOUBLE))
> my_yyabort_error((ER_WRONG_FIELD_SPEC, MYF(0),
> Lex->last_field->field_name.str));
> if (tmp_length > PRECISION_FOR_FLOAT)
Regards,
Sergei
VP of MariaDB Server Engineering
and security@xxxxxxxxxxx