maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #13197
Re: a507f126b03: MDEV-29159 Patch for MDEV-28918 introduces more inconsistency than it solves, breaks usability
Hi, Alexander,
a thought about the error message text and a couple of questions
about changes in results, please, see below:
On Aug 05, Alexander Barkov wrote:
> revision-id: a507f126b03 (mariadb-10.7.4-39-ga507f126b03)
> parent(s): 97d16c7544c
> author: Alexander Barkov
> committer: Alexander Barkov
> timestamp: 2022-08-05 09:42:46 +0400
> message:
>
> MDEV-29159 Patch for MDEV-28918 introduces more inconsistency than it solves, breaks usability
>
> 1. Store assignment failures on incompatible data types now cause errors if:
> - STRICT_ALL_TABLES or STRICT_TRANS_TABLES sql_mode is used, and
> - IGNORE is not used
>
> Otherwise, only a warning is raised and the statement continues.
>
> 2. Changing the error/warning test as follows:
>
> -ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
> +ERROR HY000: Unknown CAST(int AS inet6) in assignment of 'target'
Better not to write 'CAST(int AS inet6)' if there's no explicit CAST()
function, I think it might be confusing. I'd say
Cannot cast int as inet6 in assignment of 'target'
> so in case of a big table it's easier to see which column has the problem.
> The new error text is aslo applied to SP variables.
s/aslo/also/
> diff --git a/mysql-test/main/sp-vars.result b/mysql-test/main/sp-vars.result
> index 127a0993e2b..feef67ccb1d 100644
> --- a/mysql-test/main/sp-vars.result
> +++ b/mysql-test/main/sp-vars.result
> @@ -1026,11 +1026,11 @@ BEGIN
> SELECT arg;
> END|
> CALL p1((1, 2));
> -ERROR HY000: Illegal parameter data types tinyint and row for operation 'SET'
> +ERROR 21000: Operand should contain 1 column(s)
Why not "Unknown CAST" like elsewhere?
> diff --git a/mysql-test/main/type_geometry_mix_int.result b/mysql-test/main/type_geometry_mix_int.result
> index e5d00c63727..0d0a21a8d29 100644
> --- a/mysql-test/main/type_geometry_mix_int.result
> +++ b/mysql-test/main/type_geometry_mix_int.result
> @@ -6,6 +6,7 @@
> #
> CREATE TABLE t1 (target GEOMETRY DEFAULT POINT(1,1), source INT DEFAULT 0);
> # Start of type_store_assignment_incompatible.inc
> +SET @sql_mode_save= (SELECT @@sql_mode);
strange, why not `SET @sql_mode_save= @@sql_mode` ?
> SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
> WHERE COLUMN_NAME='source'
> AND TABLE_NAME='t1'
> @@ -47,6 +52,7 @@ INSERT INTO t3 VALUES
> (2,
> (SELECT source FROM t2 ORDER BY id LIMIT 1),
> (SELECT source FROM t2 ORDER BY id LIMIT 1));
> +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
What's that? It wasn't an error, and now it is?
> SELECT * FROM v3;
> id target source
> 1 POINT(1 1) 0
Regards,
Sergei
VP of MariaDB Server Engineering
and security@xxxxxxxxxxx
Follow ups