mariadb/storage/mroonga/lib
Monty b5d65fc105 Optimize performance of my_bitmap
MDEV-33502 Slowdown when running nested statement with many partitions

This change was triggered to help some MariaDB users with close to
10000 bits in their bitmaps.

- Change underlaying storage to be 64 bit instead of 32bit.
  - This reduses number of loops to scan bitmaps.
  - This can cause some bitmaps to be 4 byte large.
- Ensure that all not used top-bits are always 0 (simplifes code as
  the last 64 bit storage is not a special case anymore).
- Use my_find_first_bit() to find the first set bit which is much faster
  than scanning trough things byte by byte and then bit by bit.

Other things:
- Added a bool to remember if my_bitmap_init() did allocate the bitmap
  array. my_bitmap_free() will only free arrays it did allocate.
  This allowed me to remove setting 'bitmap=0' before calling
  my_bitmap_free() for cases where the bitmap's where allocated externally.
- my_bitmap_init() sets bitmap to 0 in case of failure.
- Added 'universal' asserts to most bitmap functions.
- Change all remaining calls to bitmap_init() to my_bitmap_init().
  - To finish the change from 2014.
- Changed all usage of uint32 in my_bitmap.h to my_bitmap_map.
- Updated bitmap_copy() to handle bitmaps of different size.
- Removed const from bitmap_exists_intersection() as this caused casts
  on all usage.
- Removed not used function bitmap_set_above().
- Renamed create_last_word_mask() to create_last_bit_mask() (to match
  name changes in my_bitmap.cc)
- Extended bitmap-t with test for more bitmap functions.
2024-02-27 14:51:33 +02:00
..
libmrn_need_mysql_sources.am
libmrn_no_mysql_sources.am
libmysqlservices_compat_sources.am
Makefile.am
mrn_auto_increment_value_lock.cpp
mrn_auto_increment_value_lock.hpp
mrn_column_name.cpp
mrn_column_name.hpp
mrn_condition_converter.cpp
mrn_condition_converter.hpp
mrn_context_pool.cpp
mrn_context_pool.hpp
mrn_count_skip_checker.cpp Apply clang-tidy to remove empty constructors / destructors 2023-02-09 16:09:08 +02:00
mrn_count_skip_checker.hpp
mrn_current_thread.hpp
mrn_database.cpp
mrn_database.hpp
mrn_database_manager.cpp
mrn_database_manager.hpp
mrn_database_repairer.cpp Apply clang-tidy to remove empty constructors / destructors 2023-02-09 16:09:08 +02:00
mrn_database_repairer.hpp
mrn_debug_column_access.cpp
mrn_debug_column_access.hpp
mrn_encoding.cpp Change CHARSET_INFO character set and collaction names to LEX_CSTRING 2021-05-19 22:54:07 +02:00
mrn_encoding.hpp
mrn_external_lock.cpp
mrn_external_lock.hpp
mrn_field_normalizer.cpp Merge 10.5 into 10.6 2023-02-10 13:03:01 +02:00
mrn_field_normalizer.hpp
mrn_grn.hpp
mrn_index_column_name.cpp
mrn_index_column_name.hpp
mrn_index_table_name.cpp
mrn_index_table_name.hpp
mrn_lock.cpp
mrn_lock.hpp
mrn_match_escalation_threshold_scope.cpp
mrn_match_escalation_threshold_scope.hpp
mrn_multiple_column_key_codec.cpp Apply clang-tidy to remove empty constructors / destructors 2023-02-09 16:09:08 +02:00
mrn_multiple_column_key_codec.hpp
mrn_mysqlservices.cpp
mrn_operation.cpp
mrn_operation.hpp
mrn_operations.cpp
mrn_operations.hpp
mrn_parameters_parser.cpp
mrn_parameters_parser.hpp
mrn_path_mapper.cpp
mrn_path_mapper.hpp
mrn_query_parser.cpp Apply clang-tidy to remove empty constructors / destructors 2023-02-09 16:09:08 +02:00
mrn_query_parser.hpp
mrn_smart_bitmap.cpp Optimize performance of my_bitmap 2024-02-27 14:51:33 +02:00
mrn_smart_bitmap.hpp
mrn_smart_grn_obj.cpp
mrn_smart_grn_obj.hpp
mrn_table_fields_offset_mover.cpp
mrn_table_fields_offset_mover.hpp
mrn_time_converter.cpp Apply clang-tidy to remove empty constructors / destructors 2023-02-09 16:09:08 +02:00
mrn_time_converter.hpp
mrn_value_decoder.cpp
mrn_value_decoder.hpp
mrn_windows.hpp