Details
- 
    
Bug
 - 
    Status: Closed (View Workflow)
 - 
    
Major
 - 
    Resolution: Duplicate
 - 
    10.4.11
 - 
    None
 
Description
Following query get a different result in 10.4.11 from 10.4.10:
					SELECT DISTINCT  | 
		
					egw_pm_projects.*,
			 | 
		
					egw_pm_projects.pm_id AS pm_id,  | 
		
					BIT_OR(role_acl) AS role_acl  | 
		
					FROM
			 | 
		
					egw_pm_projects
			 | 
		
					LEFT JOIN egw_pm_members ON(  | 
		
					egw_pm_projects.pm_id = egw_pm_members.pm_id AND egw_pm_members.member_uid IN(5, -2, -189, -1, -11)  | 
		
					)
			 | 
		
					LEFT JOIN egw_pm_roles ON egw_pm_members.role_id = egw_pm_roles.role_id  | 
		
					WHERE
			 | 
		
					egw_pm_projects.pm_id IN(  | 
		
					SELECT
			 | 
		
					*
			 | 
		
					FROM
			 | 
		
					(
			 | 
		
					SELECT DISTINCT  | 
		
					egw_pm_projects.pm_id
			 | 
		
					FROM
			 | 
		
					egw_pm_projects
			 | 
		
					LEFT JOIN egw_pm_members ON(  | 
		
					egw_pm_projects.pm_id = egw_pm_members.pm_id AND egw_pm_members.member_uid IN(5, -2, -189, -1, -11)  | 
		
					)
			 | 
		
					LEFT JOIN egw_pm_roles ON egw_pm_members.role_id = egw_pm_roles.role_id  | 
		
					LEFT JOIN egw_pm_extra ON egw_pm_projects.pm_id = egw_pm_extra.pm_id  | 
		
					WHERE
			 | 
		
					pm_status = 'active' AND(  | 
		
					pm_access = 'anonym' OR pm_access = 'public' AND pm_creator IN(-2,5,6,12,14,18,27,32,70,73,76,101,164,-1,7,13,16,44,62,64,68,69,81,89,116,122,146,169,183,203,381) OR pm_access = 'private' AND pm_creator IN(5) OR role_acl != 0  | 
		
					) AND(  | 
		
					(
			 | 
		
					(
			 | 
		
					(
			 | 
		
					CONCAT(
			 | 
		
					CAST(  | 
		
					COALESCE(egw_pm_projects.pm_number, '') AS CHAR  | 
		
					),
			 | 
		
					CAST(  | 
		
					COALESCE(egw_pm_projects.pm_title, '') AS CHAR  | 
		
					),
			 | 
		
					CAST(  | 
		
					COALESCE(  | 
		
					egw_pm_projects.pm_description,
			 | 
		
					''
			 | 
		
					) AS CHAR  | 
		
					),
			 | 
		
					CAST(  | 
		
					COALESCE(egw_pm_projects.pm_access, '') AS CHAR  | 
		
					),
			 | 
		
					CAST(  | 
		
					COALESCE(egw_pm_projects.pm_status, '') AS CHAR  | 
		
					),
			 | 
		
					CAST(  | 
		
					COALESCE(  | 
		
					egw_pm_projects.pm_accounting_type,
			 | 
		
					''
			 | 
		
					) AS CHAR  | 
		
					)
			 | 
		
					) LIKE '%test%' OR egw_pm_projects.pm_id IN(  | 
		
					SELECT
			 | 
		
					pm_id
			 | 
		
					FROM
			 | 
		
					egw_pm_extra
			 | 
		
					WHERE
			 | 
		
					pm_extra_value LIKE '%test%' AND pm_extra_name IN(  | 
		
					'comments',  | 
		
					'project_intern',  | 
		
					'staatsanwalt',  | 
		
					'tracker',  | 
		
					'todo',  | 
		
					'salesoffer',  | 
		
					'select-account',  | 
		
					'Abrechnungsinfo'
			 | 
		
					)
			 | 
		
					)
			 | 
		
					)
			 | 
		
					)
			 | 
		
					)
			 | 
		
					)
			 | 
		
					GROUP BY  | 
		
					egw_pm_projects.pm_id
			 | 
		
					ORDER BY  | 
		
					pm_created
			 | 
		
					DESC
			 | 
		
					LIMIT 0,
			 | 
		
					1000
			 | 
		
					) AS something  | 
		
					)
			 | 
		
					GROUP BY  | 
		
					egw_pm_projects.pm_id
			 | 
		
					ORDER BY  | 
		
					pm_created
			 | 
		
					DESC  | 
		
When disabling split_materialized optimizer switch the query works correctly.
Before disabling the switch the explain showed :
10.4.10(good)
					+------+--------------+-----------------+--------+---------------+---------+---------+----------------------------------------+------+-------------------------------------------------+
			 | 
		
					| id   | select_type  | table           | type   | possible_keys | key     | key_len | ref                                    | rows | Extra                                           |
			 | 
		
					+------+--------------+-----------------+--------+---------------+---------+---------+----------------------------------------+------+-------------------------------------------------+
			 | 
		
					|    1 | PRIMARY      | <subquery2>     | ALL    | distinct_key  | NULL    | NULL    | NULL                                   | 235  | Using temporary; Using filesort                 |
			 | 
		
					|    1 | PRIMARY      | egw_pm_projects | eq_ref | PRIMARY       | PRIMARY | 4       | something.pm_id                        | 1    |                                                 |
			 | 
		
					|    1 | PRIMARY      | egw_pm_members  | ref    | PRIMARY       | PRIMARY | 4       | something.pm_id                        | 1    | Using where                                     |
			 | 
		
					|    1 | PRIMARY      | egw_pm_roles    | ALL    | PRIMARY       | NULL    | NULL    | NULL                                   | 6    | Using where; Using join buffer (flat, BNL join) |
			 | 
		
					|    2 | MATERIALIZED | <derived3>      | ALL    | NULL          | NULL    | NULL    | NULL                                   | 235  |                                                 |
			 | 
		
					|    3 | DERIVED      | egw_pm_projects | ALL    | PRIMARY       | NULL    | NULL    | NULL                                   | 235  | Using where; Using temporary; Using filesort    |
			 | 
		
					|    3 | DERIVED      | egw_pm_members  | ref    | PRIMARY       | PRIMARY | 4       | egw_pm_projects.egw_pm_projects.pm_id  | 1    | Using where                                     |
			 | 
		
					|    3 | DERIVED      | egw_pm_roles    | eq_ref | PRIMARY       | PRIMARY | 4       | egw_pm_projects.egw_pm_members.role_id | 1    | Using where                                     |
			 | 
		
					|    3 | DERIVED      | egw_pm_extra    | ref    | PRIMARY       | PRIMARY | 4       | egw_pm_projects.egw_pm_projects.pm_id  | 1    | Using index                                     |
			 | 
		
					|    4 | MATERIALIZED | egw_pm_extra    | ALL    | PRIMARY       | NULL    | NULL    | NULL                                   | 14   | Using where                                     |
			 | 
		
					+------+--------------+-----------------+--------+---------------+---------+---------+----------------------------------------+------+-------------------------------------------------+
			 | 
		
10.4.11 (bad)
					+------+--------------------+-----------------+----------------+---------------+--------------+---------+----------------------------------------+------+---------------------------------+
			 | 
		
					| id   | select_type        | table           | type           | possible_keys | key          | key_len | ref                                    | rows | Extra                           |
			 | 
		
					+------+--------------------+-----------------+----------------+---------------+--------------+---------+----------------------------------------+------+---------------------------------+
			 | 
		
					|    1 | PRIMARY            | egw_pm_projects | index          | PRIMARY       | PRIMARY      | 4       | NULL                                   | 235  | Using temporary; Using filesort |
			 | 
		
					|    1 | PRIMARY            | <subquery2>     | eq_ref         | distinct_key  | distinct_key | 4       | func                                   | 1    |                                 |
			 | 
		
					|    1 | PRIMARY            | egw_pm_members  | ref            | PRIMARY       | PRIMARY      | 4       | egw_pm_projects.egw_pm_projects.pm_id  | 1    | Using where                     |
			 | 
		
					|    1 | PRIMARY            | egw_pm_roles    | eq_ref         | PRIMARY       | PRIMARY      | 4       | egw_pm_projects.egw_pm_members.role_id | 1    | Using where                     |
			 | 
		
					|    2 | MATERIALIZED       | <derived3>      | ALL            | NULL          | NULL         | NULL    | NULL                                   | 235  |                                 |
			 | 
		
					|    3 | LATERAL DERIVED    | egw_pm_projects | eq_ref         | PRIMARY       | PRIMARY      | 4       | egw_pm_projects.egw_pm_projects.pm_id  | 1    | Using where                     |
			 | 
		
					|    3 | LATERAL DERIVED    | egw_pm_members  | ref            | PRIMARY       | PRIMARY      | 4       | egw_pm_projects.egw_pm_projects.pm_id  | 1    | Using where                     |
			 | 
		
					|    3 | LATERAL DERIVED    | egw_pm_roles    | eq_ref         | PRIMARY       | PRIMARY      | 4       | egw_pm_projects.egw_pm_members.role_id | 1    | Using where                     |
			 | 
		
					|    3 | LATERAL DERIVED    | egw_pm_extra    | ref            | PRIMARY       | PRIMARY      | 4       | egw_pm_projects.egw_pm_projects.pm_id  | 1    | Using index                     |
			 | 
		
					|    4 | DEPENDENT SUBQUERY | egw_pm_extra    | index_subquery | PRIMARY       | PRIMARY      | 4       | func                                   | 1    | Using where                     |
			 | 
		
					+------+--------------------+-----------------+----------------+---------------+--------------+---------+----------------------------------------+------+---------------------------------+
			 | 
		
Attachments
Issue Links
- duplicates
 - 
                    
MDEV-21614 Wrong query results with optimizer_switch="split_materialized=on"
-         
 - Closed
 
 -         
 
- relates to
 - 
                    
MDEV-25128 Wrong result from join with materialized semi-join and splittable derived
-         
 - Closed
 
 -