maria:bb-10.4-midenok

Last commit made on 2024-02-29
Get this branch:
git clone -b bb-10.4-midenok https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.4-midenok
Repository:
lp:maria

Recent commits

341434b... by midenok

incremental_encrypted fix

d6a24aa... by Bob Dempsey <email address hidden>

STRY52685064: make sure plugin_dir has a value (#53)

88244e0... by midenok

grep.inc fixes

Wrong comment and unclear error message leads to usage troubles.

179fbeb... by midenok

MDEV-29155 CREATE OR REPLACE with self-referencing CHECK hangs
    forever, cannot be killed

Virtual_column_info::fix_and_check_expr() first does fix_expr() which
finds all fields in query tables and then check_vcol_func_processor()
which prohibits SELECT expression. So before we get the error
prohibiting SELECT in vcol expression we must satisfy fix_expr() with
all the opened tables. The patch achieves this by iterating
query_tables from parsed vcol expression and by assigning opened
tables from the main parser context (as they are already preopened if
the parser sees some SELECT expressions).

But the problem is, we cannot use these TABLE objects fully for vcol
expression, at least the comment about MERGE tables states so:

  /* MERGE tables need to access parent and child TABLE_LISTs. */
  DBUG_ASSERT(tables->table->pos_in_table_list == tables);

Therefore after we have done vcol check we should revert back
TABLE_LISTs to the original TABLE-less state.

As CREATE OR REPLACE first drops the original table (at least prior to
MDEV-25292) we can use the above hack from the currently opening
table. And that is possible only after bitmaps initialized, so we move
their execution to a little earlier stage, before vcol parsing. But
partitioning depends on uninitialized bitmaps, so we temporarily
revert some to make partitioning initialization happy.

Note that plain CREATE TABLE just fails this case in parser with
NO_SUCH_TABLE, CREATE OR REPLACE doesn't fail in parser as the old
table still exists.

Now to the hang, mysql_rm_table_no_locks() does TDC_RT_REMOVE_ALL
which waits while share is closed. The table normally is open only as
OPEN_STUB, this is what parser does for CREATE TABLE. But for SELECT
the table is opened not as a stub. If it is the same table name we
anyway have two TABLE_LIST objects: stub and not stub. So for "not
stub" TDC_RT_REMOVE_ALL sees open count and decides to wait until it
is closed. And of course it hangs, because that was opened in the same
thread. Now we force close such TABLE objects before
mysql_rm_table_no_locks().

And the third, condition for sequences was wrong: we have to check
TABLE_LIST::sequence property to make sure we processing sequence.

5ebc663... by midenok

MDEV-30926 Segfault after MyISAM repair of vcol-indexed table

mi_repair_by_sort() allocates record and creates index which does
compute_vcols() which does move_fields() into allocated record but
does not restore fields back. Then record is freed by
mi_repair_by_sort() and the table fields still point to it.

The fix restores back field pointers in compute_vcols().

f4ee7c1... by Denis Protivensky <email address hidden>

MDEV-22232 Fix test after changing behavior of ALTER DROP FOREIGN KEY

Signed-off-by: Julius Goryavsky <email address hidden>

b7d1f65... by Marko Mäkelä

MDEV-12266 fixup: Remove dead code

Ever since commit 5e84ea9634ac491f3da84f6c15987d4c1b1a5a3a
this "else if" branch was unreachable because the preceding
"if" condition covered it.

bc28495... by Marko Mäkelä

MDEV-33251 Redundant check on prebuilt::n_rows_fetched overflow

row_search_mvcc(): Revise an overflow check, disabling it on 64-bit
systems. The maximum number of consecutive record reads in a key range
scan should be limited by the maximum number of records per page
(less than 2^13) and the maximum number of pages per tablespace (2^32)
to less than 2^45. On 32-bit systems we can simplify the overflow check.

Reviewed by: Vladislav Lesin

57ffcd6... by Monty <email address hidden>

MDEV-21472: ALTER TABLE ... ANALYZE PARTITION ... with EITS reads and locks all rows

This was fixed in 10.2 in 2020 but merging the code to 10.3 caused the
bug to come back.

f8fa3c5... by =?utf-8?q?Jan_Lindstr=C3=B6m?= <email address hidden>

MDEV-33173 : Galera test case galera_sr_kill_slave_before_apply unstable

Add wait_condition to make sure tables are created before next
operations.

Signed-off-by: Julius Goryavsky <email address hidden>