[MDEV-8228] Move Item_func_like out of Item_bool_func2 Created: 2015-05-26  Updated: 2016-01-11  Resolved: 2015-06-18

Status: Closed
Project: MariaDB Server
Component/s: OTHER
Fix Version/s: 10.0.6

Type: Task Priority: Major
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Fixed Votes: 0
Labels: refactoring, unused-code


 Description   

Item_func_like is erroneously inherited from Item_bool_func2.
Unlike the other Item_bool_func2, Item_func_like:

  • does not need Arg_comparator
  • does not need abort_on_null, as we don't support LIKE for rows: (x1,y1,z1) LIKE (x2,y2,z2)

Wrong inheritance needs excessive casts and functype() calls and potentially more buggy.

See MDEV-8222 as an example of a bug introduced because of this wrong inheritance.

Derive Item_func_like directly from Item_bool_func.

Another option would be to move Arg_comparator from Item_bool_func2 to Item_bool_rowready_func2.



 Comments   
Comment by Alexander Barkov [ 2015-06-18 ]

It turned out that the goal of this task was reached by a few of earlier 10.1 patches, using the second alternative.

  • Arg_comparator was moved from Item_bool_func2 to Item_bool_rowready_func2
  • abort_on_null was moved from Item_bool_func2 to Item_func_eq

Now Item_func_like does not have unused members. No other coding is needed.

Generated at Thu Feb 08 07:25:35 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.