MDEV-40946 Two heap blob tests fail with the embedded server - #5613
Closed
arcivanov wants to merge 1 commit into
Closed
MDEV-40946 Two heap blob tests fail with the embedded server#5613arcivanov wants to merge 1 commit into
arcivanov wants to merge 1 commit into
Conversation
Both tests exercise server facilities that an embedded build does not have, so neither can run there. `INSERT DELAYED` has no delayed insert thread in an embedded build. The whole facility sits inside `#ifndef EMBEDDED_LIBRARY`, including the check that routes a delayed statement away from the ordinary insert path, so the statement is an ordinary insert and `DELAYED_WRITES` stays at 0. `ALTER TABLE ... LOCK=NONE` is never online in an embedded build. `online` is hard-wired to `false` when `HAVE_REPLICATION` is undefined, and `my_global.h` leaves it undefined for `EMBEDDED_LIBRARY`. The source lock is therefore not downgraded, the `alter_table_online_downgraded` sync point is never reached, and the test's `WAIT_FOR downgraded` runs out its `debug_sync` timeout. Skip both with `include/not_embedded.inc`, as `main.delayed` and `main.alter_table_online_debug` already do.
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes MDEV-40946. Base is
bb-blob-main-montyat5847c1aab08, the commit the failures were reported against.Neither failure is a HEAP blob defect. Each test exercises a server facility that is compiled out of
libmysqld, so the test cannot run there at all.INSERT DELAYEDhas no delayed insert thread in an embedded build. The wholeDelayed_insertfacility insql/sql_insert.ccsits inside#ifndef EMBEDDED_LIBRARY, including the check that routes a delayed statement away from the ordinary insert path, so the statement is an ordinary insert, no delayed thread runs, andDELAYED_WRITESstays at 0. That is the reported1->0diff.ALTER TABLE ... LOCK=NONEis never online in an embedded build. Inmysql_alter_table(),onlineis hard-wired tofalsewhenHAVE_REPLICATIONis undefined, andinclude/my_global.hleaves it undefined forEMBEDDED_LIBRARY. The MDL downgrade block that carriesDEBUG_SYNC(thd, "alter_table_online_downgraded")is itself inside#ifdef HAVE_REPLICATION, so the sync point is never reached and the test'sWAIT_FOR downgradedruns out itsdebug_synctimeout, emittingWarning 1639. That one test took 300 seconds under the embedded server against 8 ms normally.Both tests are therefore skipped with
include/not_embedded.inc, asmain.delayed,main.alter_table_online_debugandmain.vector_debugalready are. No test content is changed and no assertion is weakened; normal runs still exercise both tests in full.Verification
Built a dedicated embedded debug tree (
-DWITH_EMBEDDED_SERVER=ON -DCMAKE_BUILD_TYPE=Debug) and ran test-first:--embedded-server--embedded-server --suite=heap[ skipped ] Not run for embedded server; 40/40 pass, 8 skipped, 0 failures--suite=heapThe full-suite embedded run also confirms no other
heaptest is broken under the embedded server.