Hi!

On Tue, Jul 18, 2023 at 11:23 AM Sergei Golubchik <s...@mariadb.org> wrote:

> Hi, Oleksandr,
>
> But is it all necessary to show the bug? may be a test case could be
> much simpler?
>
>
I just rely on Elena, but if you think it is worth it I can spend more time
studying the test case...


> On Jul 17, Oleksandr Byelkin wrote:
> > Hi!
> >
> > Sergei Golubchik <s...@mariadb.org> schrieb am Mo., 17. Juli 2023,
> 13:11:
> >
> > > Hi, Sanja,
> > >
> > > The patch is ok, but the test case is rather weird.
> > > What does it do?
> >
> > Magic (I  don't digged deep, because it is very fast).
> >
> > > How long does it run?
> > >
> > As I told very fast, less then a second.
> >
> > > 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