Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Console View


Categories: connectors experimental galera main
Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

connectors experimental galera main
ParadoxV5
1.1

also, better say preparing for 37316, not 37321
Yuchen Pei
MDEV-15621 [wip] Auto add partitions by interval
ParadoxV5
1.4

`uchar`’s cousin, `ulong`!

In `Remote_event_stream::send_command()`,
`strlen` also needs casting to `ulong` before the switch to Connector/C.
ParadoxV5
MDEV-37321 Preliminary Replication build that links to Connector/C

Compile `rpl/` separately from the rest of the server (`sql/`),
so it can specify linking to Connector/C instead of `sql-common/`.

`mariadb_capi_rename.h` had to add a lot of symbols to resolve
multiple-definition errors with the addition of Connector/C.
While linking to the dynamic library instead of a static
compile could hide the ODR violations, running the server
can still select the wrong version and result in surprises.
This phenomenon affects not only this commit,
but also plugins that link to Connector/C themselves.
Monty
MDEV-39519 Change mariadb-dump to use SHOW REPLICA STATUS instead of SHOW SLAVE STATUS

Changes done to increase MySQL compatibility:
- Use SHOW REPLICA STATUS instead of SHOW SLAVE STATUS for retrieving
  slave status. If this fails with syntax error, retry with SHOW SLAVE
  STATUS.
- If SHOW MASTER FAILS, retry with MySQL 8.4 syntax SHOW BINARY LOG STATUS
- Add in MariaDB server SHOW BINARY LOG STATUS as an alias for
  SHOW MASTER STATUS.
Monty
Ensure that mtr.out-of-source is not acccidently calling itself

Calling itself will cause extensive memory usage that can kill
the machine when it runs out of memory (happend to me).

Fixed by having mtr.out-of-source checking that it is not calling itself.
In addition added a check for cmake to expand symlinks to make the
check if we are running mtr 'out of source' safer.

Author: Sergei Golubchik <[email protected]> (CMakeList.txt changes)
Dave Gosselin
MDEV-39618:  Assertion failed

In run_fj_null_complement_pass, the FULL JOIN null complement pass
called ha_end_keyread() on the right table to switch from index access
before rescanning, but never restored keyread after it finished; so
do that.
Alessandro Vetere
MDEV-38814 Reduce pessimistic update fallbacks

A high rate of index lock SX-to-X upgrades was traced to two patterns in
btr_cur_*_update() that turn benign UPDATEs into pessimistic fallbacks:

1. btr_cur_optimistic_update() returns DB_UNDERFLOW whenever the page
    would drop below BTR_CUR_PAGE_COMPRESS_LIMIT after the
    delete-then-insert, even when the record itself is growing. On a
    freshly split page this re-triggers a merge the moment the next
    update lands, defeating the split that just happened.

2. btr_cur_pessimistic_update() handles the DB_OVERFLOW fallback by
    calling btr_cur_insert_if_possible() unconditionally. When the
    uncompressed page cannot satisfy BTR_CUR_PAGE_REORGANIZE_LIMIT after
    a reorganize, that retry fails too and the same page churns through
    pessimistic_update without ever splitting.

Introduce a system variable innodb_reduce_pessimistic_update_fallbacks
(BOOL, default OFF) that gates both fixes:

* btr_cur_optimistic_update() returns DB_UNDERFLOW only when the new
  record is strictly smaller than the old one, so growing updates do
  not trip the merge path.
* btr_cur_pessimistic_update() skips btr_cur_insert_if_possible() and
  falls through to a page split when the optimistic error was
  DB_OVERFLOW, the page is uncompressed and still holds at least one
  record after the in-place delete (so the forced split produces 1+1,
  not 0+1), the record is growing, and a reorganize would not free
  BTR_CUR_PAGE_REORGANIZE_LIMIT bytes.

Same-size updates take the optimistic path under both fixes (no merge,
no split), matching the intent that only size-changing updates
contribute to space pressure. The trade-off is that an opportunistic
merge that previously triggered on any update to a sparse page now
requires an actual shrink to fire.

To make the impact measurable, expose seven debug-only atomic counters
via SHOW GLOBAL STATUS:

  Innodb_btr_cur_n_index_lock_upgrades
  Innodb_btr_cur_pessimistic_insert_calls
  Innodb_btr_cur_pessimistic_update_calls
  Innodb_btr_cur_pessimistic_delete_calls
  Innodb_btr_cur_pessimistic_update_optim_err_underflows
  Innodb_btr_cur_pessimistic_update_optim_err_overflows
  Innodb_mtr_n_index_x_lock_calls

A new test, innodb.index_lock_upgrade, drives a 1000-row INSERT /
UPDATE / DELETE workload on a 4K-page table across three shapes (PK
only; PK + secondary index on a DATETIME column; same with
ROW_FORMAT=COMPRESSED, KEY_BLOCK_SIZE=2). It snapshots all seven
counters plus the index_page_* INNODB_METRICS between phases. The
test runs in two combinations (off and on) to lock in counter
deltas for both the legacy and the optimized paths; the compressed
table also covers the deliberate scope limitation that the
pessimistic-side branch is gated to uncompressed pages while the
optimistic-side change applies uniformly.
Alexey Botchkov
MDEV-39592 ALTER.. with xmltype silently overwrites row with prior rows data.

tests added.
Marko Mäkelä
Merge mariadb-10.11.17 into 10.11
Thirunarayanan Balathandayuthapani
Serialize concurrent fulltext optimization

dict_acquire_mdl(): function now supports both MDL_SHARED (default)
and MDL_EXCLUSIVE via the exclusive template parameter.

Updated FTS optimize to acquire MDL_EXCLUSIVE first then downgrade
to MDL_SHARED_UPGRADABLE to serialize concurrent fulltext optimizations.
Alessandro Vetere
MDEV-39600 Reduce contention in buf_flush_ahead()

When calling buf_flush_ahead() with furious=false, the function
updates the async target buf_flush_async_lsn and, if necessary notifies
the page cleaner thread to start flushing more eagerly, to avoid
a long stall later when checkpoint will be required.

When many threads call buf_flush_ahead() with furious=false, if
the update of buf_flush_async_lsn is gated inside
buf_pool.flush_list_mutex, this can cause significant contention,
just to deliver the new buf_flush_async_lsn value and a potential
notification to the page cleaner thread.

This commit enables, for the non furious case, lock-free update
of buf_flush_async_lsn and lock-free check of the page cleaner idle
flag, to avoid the contention on buf_pool.flush_list_mutex.
The lock is acquired by the CAS-loop winner thread and only
after the page cleaner is observed idle.
The cleaner clears buf_flush_async_lsn via CAS, so a concurrent
lock-free bump is preserved across the clear.
Since the reads are not protected by the mutex, there is a chance that
the decision to not signal the page cleaner thread is wrong.
In the worst case though, under sustained redo-log pressure,
eventually a wakeup signal will be delivered to the page cleaner thread
anyway, so the risk of a long stall is limited.

Similar reasoning applies to the possibly wrong decision taken by the
page cleaner thread to go to idle: eventually it will be woken up.
Monty
Removed compiler warnings about not used/set not used variables in groonga
Alexey Botchkov
MDEV-39589 Wrong results with xmltype as a virtual column.

Store value in the XML column even if an error happened.
Dave Gosselin
In end_send, grab the list of fields from the prior join_tab if available

Allocate the full_join_duplicate_filter with operator new.  Add a comment
to the assertion and condense a couple of conditionals together.
Monty
Fixed that max_session_mem_used.test works for valgrind builds
Arcadiy Ivanov
fixup! 6e9ae08b7ad79885425652bc648f8fc56f7b1177

Fix 32-bit compile: use `sizeof(void*)` for blob pointer memcpy

`portable_sizeof_char_ptr` is always 8 (the record slot width), but
actual pointer size is 4 on 32-bit. The production code (`hp_hash.c`)
uses `HP_PTR_SIZE = sizeof(void*)` for memcpy of pointer values.
The test must do the same to avoid `-Werror=stringop-overflow`.
Alexey Botchkov
MDEV-39599 AddressSanitizer: heap-use-after-free in escape_string_for_mysql after sp with invalid xml (xmltype)).

Test case added.
Alexey Botchkov
MDEV-39589 Wrong results with xmltype as a virtual column.

Store value in the XML column even if an error happened.
Alexander Barkov
MDEV-39587 Package-wide TYPE for variable declarations

Note: only sql_mode=ORACLE. Because TYPE is only available in sql_mode=ORACLE.

TODO: tests: all TYPE grammar
Monty
MDEV-39519 Change mariadb-dump to use SHOW REPLICA STATUS instead of SHOW SLAVE STATUS

Changes done to increase MySQL compatibility:
- Use SHOW REPLICA STATUS instead of SHOW SLAVE STATUS for retrieving
  slave status. If this fails with syntax error, retry with SHOW SLAVE
  STATUS.
- If SHOW MASTER FAILS, retry with MySQL 8.4 syntax SHOW BINARY LOG STATUS
- Add in MariaDB server SHOW BINARY LOG STATUS as an alias for
  SHOW MASTER STATUS.
Marko Mäkelä
MDEV-13542 fixup: Remove orphan trx_print()
ParadoxV5
1.2

Draft-specific: Zero-config TLS is (temporarily?) unavailable.
ParadoxV5
1.3

Only GCC’s C++ standard library[^l] accepts `uchar`s
(`std::basic_string`(`_view`)`<unsigned char>`). Awesome!

[^l]: an intentional choice to avoid the
server library’s messy web of dependencies
Arcadiy Ivanov
fixup! 07846d3ef329caca03d26e58e200f3f2d1e4f04b

Replace exact `Created_tmp_%` counts with ON/OFF checks in blob_big tests

Exact temp table counts vary between 32-bit and 64-bit platforms
because view protocol creates additional temp tables whose overflow
behavior depends on pointer size and internal structure sizes.

Replace `SHOW STATUS LIKE 'Created_tmp%'` with a query that reports
ON/OFF for `CREATED_TMP_TABLES` and `CREATED_TMP_DISK_TABLES`. This
preserves the key assertions (disk tables created vs not created)
while being platform-independent.
Alessandro Vetere
MDEV-38814 Enable optimization by default
Alexey Botchkov
MDEV-39575 Protocol::end_statement(): Assertion `0' failed after insert into xmltype union of valid and invalid xml.

Field_xmltype::store has to do the my_error when it gets invalid XML,
  just the warning with the -1 return results in the DBUG_ASSERT.

Also the UpdateXML function result reverted back to the STRING as
it can legally produce invalid XML, so we can't have columns built
from the UpdateXML to be XMLTYPE.
Rex Johnston
MDEV-39492 Parallel Query: Study how to create worker threads

Introduces parallel_worker_threads variable to control the number
of worker threads created by a parallel execution query.

2 new files, sql_parallel_workers.h sql_parallel_workers.cc which
contain structures for the creation, management and deletion of
parallel worker threads (pwt_ in the name).  Main management
class created in the stack in JOIN::exec, implemented for the
top level select.

Current parallel_worker_thread_func sleeps for a random time, generates
a warning, signals the main thread, sleeps a random time, signals the
main thread again, sets it's finished flag and cleans it's THD.

The main thread loops through worker threads, looking for finished
thread and cleans them up if they have finished.
It then waits for a signal, then processes it's message queue.

The thread management data is allocated on the stack in JOIN::exec.
Everything else is allocated using my_malloc() and my_free().
Alexey Botchkov
MDEV-39573 Server crashes in Item_char_typecast::fix_length_and_dec_internal after select xmltype.

Charset specified for XMLTYPE constructor.
Error returned if XML is in UTF16/UTF32 as we can't parse it yet.
XML check added so only well-formed allowed.
Oleksandr Byelkin
Merge branch '12.3' into 13.0
Arcadiy Ivanov
Use SHA256 integrity checks in blob_fallback test

Store SHA2(blob, 256) on insert and compare on retrieval instead of
direct string comparison. Use non-repeat blob patterns to make
corruption detection more meaningful.