maria:bb-11.0-MDEV-30059

Last commit made on 2022-11-21
Get this branch:
git clone -b bb-11.0-MDEV-30059 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-11.0-MDEV-30059
Repository:
lp:maria

Recent commits

f5a87d5... by Sergey Petrunia

MDEV-30059: Optimizer Trace: plan_prefix should be a comma-separated-list

7c140fb... by Sergey Petrunia

Fix compile on ubuntu-2004-msan

6c76fcf... by Sergey Petrunia

Fix compile on Windows (2)

8635c3e... by Sergey Petrunia

Update test results for embedded

df2f543... by Sergey Petrunia

Fix compilation on Windows

b6c754e... by Monty <email address hidden>

Change default of histogram_type to JSON_HB

c56d2db... by Monty <email address hidden>

Version change to 11.0

8042466... by Monty <email address hidden>

Fixed bug in Aria with aria_log files that are exactly 8K

In the case one has an old Aria log file that ands with a Aria checkpoint
and the server restarts after next recovery, just after created a
new Aria log file (of 8K), the Aria recovery code would abort.
If one would try to delete all Aria log files after this (but not the
aria_control_file), the server would crash during recovery.

The problem was that translog_get_last_page_addr() would regard a log file
of exactly 8K as illegal and the rest of the code could not handle this
case.

Another issue was that if there was a crash directly after the log file
head was written to the next page, the code in translog_get_next_chunk()
would crash.

This patch fixes most of the issues, but not all. For Sanja to look at!

Things fixed:
- Added code to ignore 8K log files.
- Removed ASSERT in translog_get_next_chunk() that checks if page only
  contains the log page header.

8e2b579... by Monty <email address hidden>

Small improvements to aria recovery

I spent 4 hours on work and 12 hours of testing to try to find
the reason for aria crashing in recovery when starting a new test,
in which case the 'data directory' should be a copy of "install.db",
but aria_log.00000001 content was not correct.

The following changes are mostly done to make it a bit easier to find out
more in case of future similar crashes:

- Mark last_checkpoint_lsn volatile (safety).
- Write checkpoint message to aria_recovery.trace
- When compling with DBUG, use checksum's for Aria log pages.
- Added a message to mtr --verbose when copying the data directory.
- Removed extra linefeed in Aria recovery message (cleanup)

007caf8... by Monty <email address hidden>

Added rowid_filter support to Aria

This includes:
- cleanup and optimization of filtering and pushdown engine code.
- Adjusted costs for rowid filters (based on extensive testing
  and profiling).

This made a small two changes to the handler_rowid_filter_is_active()
API:
- One should not call it with a zero pointer!
- One does not need to call handler_rowid_filter_is_active() for every
  row anymore. It is enough to check if filter is active by calling it
  call it during index_init() or when handler::rowid_filter_changed()
  is called

The changes was to avoid unnecessary function calls and checks if
pushdown conditions and rowid_filter is not used.

Updated costs for rowid_filter_lookup() to be closer to reality.
The old cost was based only on rowid_compare_cost. This is now
changed to take into account the overhead in checking the rowid.

Changed the Range_rowid_filter class to use DYNAMIC_ARRAY directly
instead of Dynamic_array<>. This was done to be able to use the new
append_dynamic() functions which gives a notable speed improvment
compared to the old code. Removing the abstraction also makes
the code easier to understand.

The cost of filtering is now slightly lower than before, which
is reflected in some test cases that is now using rowid filters.