Hi, Sanja,

The patch is ok, but the test case is rather weird.
What does it do? How long does it run?

On Jul 17, Oleksandr Byelkin wrote:
> revision-id: 845fbe9ce01 (mariadb-10.4.30-30-g845fbe9ce01)
> parent(s): 02cd3675c4d
> author: Oleksandr Byelkin
> committer: Oleksandr Byelkin
> timestamp: 2023-07-17 10:22:54 +0200
> message:
> 
> MDEV-30820 slow log Rows_examined out of range
> 
> Fix row counters to be able to get any possible value.
> 
> diff --git a/mysql-test/main/log_slow.test b/mysql-test/main/log_slow.test
> --- a/mysql-test/main/log_slow.test
> +++ b/mysql-test/main/log_slow.test
> @@ -119,3 +119,98 @@ drop table t;
>  --echo #
>  --echo # End of 10.3 tests
>  --echo #
> +
> +
> +--echo #
> +--echo # MDEV-30820: slow log Rows_examined out of range
> +--echo #
> +
> +set @log_output.save= @@global.log_output, @slow_log.save= 
> @@global.slow_query_log;
> +set global log_output= 'TABLE', slow_query_log= ON;
> +set long_query_time= 0.000001;
> +create database db;
> +use db;
> +
> +--delimiter //
> +CREATE OR REPLACE FUNCTION `get_id`(`INPUT_STRING` VARCHAR(50), 
> `DECRYPT_KEY` CHAR(20)) RETURNS int(11)
> +BEGIN
> +    DECLARE
> +        REQUEST_ID INT ;
> +    SET
> +        REQUEST_ID =
> +                IF(
> +            (
> +                LOCATE('#$#$#$ LHP_ID_', INPUT_STRING)
> +            ) > 0 AND
> +            (
> +                INPUT_STRING REGEXP DECRYPT_KEY
> +            )>0,
> +            (
> +                SPLIT_STRING(
> +                    SUBSTRING_INDEX(
> +                        SUBSTRING_INDEX(INPUT_STRING, '#$#$#$ LHP_ID_', -1),
> +                        '#$#$#$',
> +                        1
> +                    ),
> +                    '-',
> +                    2
> +                )
> +        ),
> +        NULL
> +        ) ;
> +                SET
> +                REQUEST_ID=IF(
> +                ISNULL(REQUEST_ID)OR(REQUEST_ID='')OR(REQUEST_ID=0),
> +                NULL,
> +                REQUEST_ID
> +
> +                );
> +                RETURN(REQUEST_ID) ;
> +END
> +//
> +
> +CREATE OR REPLACE FUNCTION `SPLIT_STRING`(`str` VARCHAR(255), `delim` 
> VARCHAR(12), `pos` INT) RETURNS varchar(255) CHARSET utf8mb4
> +RETURN REPLACE(
> +        SUBSTRING(
> +                SUBSTRING_INDEX(str , delim , pos) ,
> +                CHAR_LENGTH(
> +                        SUBSTRING_INDEX(str , delim , pos - 1)
> +                ) + 1
> +        ) ,
> +        delim ,
> +        ''
> +)
> +//
> +
> +CREATE TABLE `tab1` (
> +`ID` int(11) NOT NULL AUTO_INCREMENT,
> +`NAME_F` varchar(50) DEFAULT NULL,
> +  PRIMARY KEY (`ID`)
> +) DEFAULT CHARSET=utf8mb4 //
> +
> + CREATE TABLE `tab2` (
> +  `ID` int(11) NOT NULL AUTO_INCREMENT,
> +  `TAB1_ID` int(11) DEFAULT NULL,
> +  PRIMARY KEY (`id`)
> +) DEFAULT CHARSET=utf8mb4 //
> +
> +for i in 1..100 do insert into tab1 values (null,'qwerty'); end for ; //
> +for i in 1..1000 do insert into tab2 values (null,round(rand()*10000)); end 
> for ; //
> +
> +--delimiter ;
> +
> +SELECT
> +    get_id(CAST(aes_decrypt(tab1.NAME_F,'V41iNM0n4') AS char),'KM_ID_PL') as 
> get_string,
> +    (CASE WHEN (SELECT ID FROM tab2 where tab2.TAB1_ID = tab1.ID LIMIT 1) IS 
> NULL THEN 0 ELSE 1 END) AS IS_ATT
> +FROM
> +    tab1
> +ORDER BY 2 DESC
> +LIMIT 2;
> +
> +set global log_output= @log_output.save, slow_query_log= @slow_log.save;
> +drop database db;
> +
> +--echo #
> +--echo # End of 10.4 tests
> +--echo #

Regards,
Sergei
VP of MariaDB Server Engineering
and secur...@mariadb.org
_______________________________________________
developers mailing list -- developers@lists.mariadb.org
To unsubscribe send an email to developers-le...@lists.mariadb.org

Reply via email to