Skip to content

Commit 02a38fd

Browse files
committed
MDEV-8624: MariaDB hangs on query with many logical condition
Made no_rows_in_result()/restore_to_before_no_rows_in_result() not looking annecessary deep with walk() method.
1 parent f804b74 commit 02a38fd

File tree

3 files changed

+405
-8
lines changed

3 files changed

+405
-8
lines changed

mysql-test/r/func_misc.result

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,5 +374,203 @@ NULL
374374
Warnings:
375375
Warning 1411 Incorrect timeout value: '-1' for function get_lock
376376
#
377+
# MDEV-8624 MariaDB hangs on query with many logical condition
378+
#
379+
CREATE TABLE `t1` (
380+
`id` int(11) NOT NULL AUTO_INCREMENT,
381+
`submitdate` datetime DEFAULT NULL,
382+
`lastpage` int(11) DEFAULT NULL,
383+
`startlanguage` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
384+
`token` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL,
385+
`datestamp` datetime NOT NULL,
386+
`startdate` datetime NOT NULL,
387+
`ipaddr` text COLLATE utf8_unicode_ci,
388+
`refurl` text COLLATE utf8_unicode_ci,
389+
`57813X540X1723` text COLLATE utf8_unicode_ci,
390+
`57813X540X1724` text COLLATE utf8_unicode_ci,
391+
`57813X540X1725` text COLLATE utf8_unicode_ci,
392+
`57813X540X1726` double DEFAULT NULL,
393+
`57813X540X1909` double DEFAULT NULL,
394+
`57813X541X17271` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
395+
`57813X541X17272` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
396+
`57813X541X17273` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
397+
`57813X541X17274` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
398+
`57813X541X17275` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
399+
`57813X541X17276` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
400+
`57813X541X17281` text COLLATE utf8_unicode_ci,
401+
`57813X541X17282` text COLLATE utf8_unicode_ci,
402+
`57813X541X17283` text COLLATE utf8_unicode_ci,
403+
`57813X541X17284` text COLLATE utf8_unicode_ci,
404+
`57813X541X17285` text COLLATE utf8_unicode_ci,
405+
`57813X541X17286` text COLLATE utf8_unicode_ci,
406+
`57813X542X18131` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
407+
`57813X542X18132` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
408+
`57813X542X18133` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
409+
`57813X542X18134` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
410+
`57813X542X18135` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
411+
`57813X542X18136` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
412+
`57813X542X18137` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
413+
`57813X542X18138` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
414+
`57813X542X18139` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
415+
`57813X542X18141` text COLLATE utf8_unicode_ci,
416+
`57813X542X18142` text COLLATE utf8_unicode_ci,
417+
`57813X542X18143` text COLLATE utf8_unicode_ci,
418+
`57813X542X18144` text COLLATE utf8_unicode_ci,
419+
`57813X542X18145` text COLLATE utf8_unicode_ci,
420+
`57813X542X18146` text COLLATE utf8_unicode_ci,
421+
`57813X542X18147` text COLLATE utf8_unicode_ci,
422+
`57813X542X18148` text COLLATE utf8_unicode_ci,
423+
`57813X542X18149` text COLLATE utf8_unicode_ci,
424+
`57813X543X18451` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
425+
`57813X543X18452` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
426+
`57813X543X18453` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
427+
`57813X543X18454` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
428+
`57813X543X18455` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
429+
`57813X543X18456` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
430+
`57813X543X18461` text COLLATE utf8_unicode_ci,
431+
`57813X543X18462` text COLLATE utf8_unicode_ci,
432+
`57813X543X18463` text COLLATE utf8_unicode_ci,
433+
`57813X543X18464` text COLLATE utf8_unicode_ci,
434+
`57813X543X18465` text COLLATE utf8_unicode_ci,
435+
`57813X543X18466` text COLLATE utf8_unicode_ci,
436+
`57813X544X18711` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
437+
`57813X544X18712` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
438+
`57813X544X18713` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
439+
`57813X544X18714` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
440+
`57813X544X18715` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
441+
`57813X544X18716` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
442+
`57813X544X18717` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
443+
`57813X544X18718` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
444+
`57813X544X18721` text COLLATE utf8_unicode_ci,
445+
`57813X544X18722` text COLLATE utf8_unicode_ci,
446+
`57813X544X18723` text COLLATE utf8_unicode_ci,
447+
`57813X544X18724` text COLLATE utf8_unicode_ci,
448+
`57813X544X18725` text COLLATE utf8_unicode_ci,
449+
`57813X544X18726` text COLLATE utf8_unicode_ci,
450+
`57813X544X18727` text COLLATE utf8_unicode_ci,
451+
`57813X544X18728` text COLLATE utf8_unicode_ci,
452+
`57813X546X1902` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
453+
`57813X546X1903` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
454+
`57813X546X1904` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
455+
`57813X545X1901` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL,
456+
PRIMARY KEY (`id`),
457+
KEY `lime_survey_57813_idx` (`token`),
458+
KEY `57813X540X1723` (`57813X540X1723`(100)),
459+
KEY `57813X540X1724` (`57813X540X1724`(100)),
460+
KEY `57813X540X1726` (`57813X540X1726`),
461+
KEY `57813X540X1725` (`57813X540X1725`(100)),
462+
KEY `57813X546X1902` (`57813X546X1902`),
463+
KEY `57813X546X1903` (`57813X546X1903`),
464+
KEY `57813X546X1904` (`57813X546X1904`)
465+
);
466+
SELECT
467+
COUNT(*) as `N`,
468+
ROUND(
469+
(
470+
SUM(
471+
(
472+
(
473+
IF( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99', 57813X541X17271, 0 ) +
474+
IF( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99', 57813X541X17272, 0 ) +
475+
IF( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99', 57813X541X17273, 0 ) +
476+
IF( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99', 57813X541X17274, 0 ) +
477+
IF( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99', 57813X541X17275, 0 ) +
478+
IF( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99', 57813X541X17276, 0 ) +
479+
IF( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99', 57813X542X18131, 0 ) +
480+
IF( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99', 57813X542X18132, 0 ) +
481+
IF( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99', 57813X542X18133, 0 ) +
482+
IF( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99', 57813X542X18134, 0 ) +
483+
IF( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99', 57813X542X18135, 0 ) +
484+
IF( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99', 57813X542X18136, 0 ) +
485+
IF( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99', 57813X542X18137, 0 ) +
486+
IF( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99', 57813X542X18138, 0 ) +
487+
IF( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99', 57813X542X18139, 0 ) +
488+
IF( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99', 57813X543X18451, 0 ) +
489+
IF( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99', 57813X543X18452, 0 ) +
490+
IF( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99', 57813X543X18453, 0 ) +
491+
IF( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99', 57813X543X18454, 0 ) +
492+
IF( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99', 57813X543X18455, 0 ) +
493+
IF( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99', 57813X543X18456, 0 ) +
494+
IF( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99', 57813X544X18711, 0 ) +
495+
IF( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99', 57813X544X18712, 0 ) +
496+
IF( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99', 57813X544X18713, 0 ) +
497+
IF( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99', 57813X544X18714, 0 ) +
498+
IF( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99', 57813X544X18715, 0 ) +
499+
IF( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99', 57813X544X18716, 0 ) +
500+
IF( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99', 57813X544X18717, 0 ) +
501+
IF( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99', 57813X544X18718, 0 )
502+
)
503+
/
504+
(
505+
IF( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99', 1, 0 ) +
506+
IF( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99', 1, 0 ) +
507+
IF( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99', 1, 0 ) +
508+
IF( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99', 1, 0 ) +
509+
IF( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99', 1, 0 ) +
510+
IF( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99', 1, 0 ) +
511+
IF( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99', 1, 0 ) +
512+
IF( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99', 1, 0 ) +
513+
IF( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99', 1, 0 ) +
514+
IF( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99', 1, 0 ) +
515+
IF( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99', 1, 0 ) +
516+
IF( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99', 1, 0 ) +
517+
IF( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99', 1, 0 ) +
518+
IF( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99', 1, 0 ) +
519+
IF( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99', 1, 0 ) +
520+
IF( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99', 1, 0 ) +
521+
IF( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99', 1, 0 ) +
522+
IF( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99', 1, 0 ) +
523+
IF( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99', 1, 0 ) +
524+
IF( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99', 1, 0 ) +
525+
IF( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99', 1, 0 ) +
526+
IF( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99', 1, 0 ) +
527+
IF( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99', 1, 0 ) +
528+
IF( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99', 1, 0 ) +
529+
IF( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99', 1, 0 ) +
530+
IF( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99', 1, 0 ) +
531+
IF( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99', 1, 0 ) +
532+
IF( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99', 1, 0 ) +
533+
IF( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99', 1, 0 )
534+
)
535+
)
536+
)
537+
/ COUNT(*) ), 4) as `AVG`
538+
FROM `t1`
539+
WHERE `submitdate` IS NOT NULL
540+
AND (
541+
( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99' ) OR
542+
( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99' ) OR
543+
( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99' ) OR
544+
( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99' ) OR
545+
( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99' ) OR
546+
( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99' ) OR
547+
( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99' ) OR
548+
( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99' ) OR
549+
( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99' ) OR
550+
( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99' ) OR
551+
( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99' ) OR
552+
( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99' ) OR
553+
( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99' ) OR
554+
( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99' ) OR
555+
( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99' ) OR
556+
( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99' ) OR
557+
( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99' ) OR
558+
( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99' ) OR
559+
( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99' ) OR
560+
( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99' ) OR
561+
( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99' ) OR
562+
( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99' ) OR
563+
( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99' ) OR
564+
( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99' ) OR
565+
( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99' ) OR
566+
( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99' ) OR
567+
( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99' ) OR
568+
( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99' ) OR
569+
( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99' ) )
570+
AND 57813X540X1723 = 'Test';
571+
N AVG
572+
0 NULL
573+
drop table t1;
574+
#
377575
# End of 5.5 tests
378576
#

0 commit comments

Comments
 (0)