- 17 Apr, 2023 30 commits
-
-
Sergei Golubchik authored
don't simply set tdc->flushed, use flush_unused(1) that removes opened but unused TABLE instances (that would otherwise prevent TABLE_SHARE from being closed by keeping the ref_count>0).
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
even if called from binlog_rollback()
-
Nikita Malyavin authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
because some engines (e.g. rocksdb) only do it readonly. instead, downgrade the lock after reading the first row.
-
Sergei Golubchik authored
instead use only one (trx) IO_CACHE and truncate it if the statement is rolled back. don't use binlog_cache_mngr to accumulate the data, use binlog_cache_data instead. (binlog_cache_data owns one IO_CACHE, binlog_cache_mngr owns two binlog_cache_data's, trx and stmt).
-
Sergei Golubchik authored
because ALTER TABLE ... DROP SYSTEM VERSIONING is not just a change in the table structure, it also deletes all historical rows
-
Sergei Golubchik authored
also * don't modify write_set * backup/restore rpl_write_set
-
Sergei Golubchik authored
-
Sergei Golubchik authored
so any other value of ALGORITHM or LOCK disables online alter
-
Sergei Golubchik authored
use ht->start_consistent_snapshot() instead
-
Sergei Golubchik authored
no functional changes here
-
Sergei Golubchik authored
-
Sergei Golubchik authored
two new tests: * alter table times out because of a long concurrent trx * alter table adds a column in the middle
-
Nikita Malyavin authored
* Log rows in online_alter_binlog. * Table online data is replicated within dedicated binlog file * Cached data is written on commit. * Versioning is fully supported. * Works both wit and without binlog enabled. * For now savepoints setup is forbidden while ONLINE ALTER goes on. Extra support is required. We can simply log the SAVEPOINT query events and replicate them together with row events. But it's not implemented for now. * Cache flipping: We want to care for the possible bottleneck in the online alter binlog reading/writing in advance. IO_CACHE does not provide anything better that sequential access, besides, only a single write is mutex-protected, which is not suitable, since we should write a transaction atomically. To solve this, a special layer on top Event_log is implemented. There are two IO_CACHE files underneath: one for reading, and one for writing. Once the read cache is empty, an exclusive lock is acquired (we can wait for a currently active transaction finish writing), and flip() is emitted, i.e. the write cache is reopened for read, and the read cache is emptied, and reopened for writing. This reminds a buffer flip that happens in accelerated graphics (DirectX/OpenGL/etc). Cache_flip_event_log is considered non-blocking for a single reader and a single writer in this sense, with the only lock held by reader during flip. An alternative approach by implementing a fair concurrent circular buffer is described in MDEV-24676. * Cache managers: We have two cache sinks: statement and transactional. It is important that the changes are first cached per-statement and per-transaction. If a statement fails, then only statement data is rolled back. The transaction moves along, however. Turns out, there's no guarantee that TABLE well persist in thd->open_tables to the transaction commit moment. If an error occurs, tables from statement are purged. Therefore, we can't store te caches in TABLE. Ideally, it should be handlerton, but we cut the corner and store it in THD in a list.
-
Nikita Malyavin authored
Event_log is supposed to be a basic logging class that can write events in a single file. MYSQL_BIN_LOG in comparison will have: * rotation support * index files * purging * gtid and transactional information handling. * is dedicated for a general-purpose binlog
-
Nikita Malyavin authored
* Eliminate most usages of THD::use_trans_table. Only 3 left, and they are at quite high levels, and really essential. * Eliminate is_transactional argument when possible. Lots of places are left though, because of some WSREP error handling in MYSQL_BIN_LOG::set_write_error. * Remove junk binlog functions from THD * binlog_prepare_pending_rows_event is moved to log.cc inside MYSQL_BIN_LOG and is not anymore template. Instead it accepls event factory with a type code, and a callback to a constructing function in it.
-
Nikita Malyavin authored
pump up binlog and cache manager to level of binlog_log_row_internal
-
Nikita Malyavin authored
-
Nikita Malyavin authored
1. Change m_size to uint. This removes some implicit conversions. See unpack_row, for instance: uint max_cols= MY_MIN(tabledef->size(), cols->n_bits); 2. Improve table_def memory layout by reordering columns
-
Nikita Malyavin authored
-
Sergei Golubchik authored
alter_table_online -> alter_table_locknone gis-alter_table_online -> gis-alter_table
-
Sergei Golubchik authored
-
Sergei Golubchik authored
it was redundant, duplicating vcol_type == VCOL_GENERATED_STORED. Note that VCOL_DEFAULT is not "stored", "stored vcol" means that after rnd_next or index_read/etc the field value is already in the record[0] and does not need to be calculated separately
-
Sergei Golubchik authored
unpack_row() must calculate all stored and indexed vcols (in fill_extra_persistent_columns()). Also Update and Delete row events must mark in read_set all columns needed for calculating all stored and indexed vcols. If it's done properly in do_apply_event(), it no longer needs to be repeated per row.
-
Sergei Golubchik authored
it was created to handle the case of the concurrent inplace add index. So it should only work in that case, otherwise it's doing server's job (marks virtual column dependencies) and hides server's bugs. And it was redundant.
-
Sergei Golubchik authored
-
- 31 Mar, 2023 1 commit
-
-
Daniel Black authored
This reverts commit 158a5824. In 10.11 the generation of mysql-log-rotate was removed in commit fd0dcad6 There's no need to ignore files that aren't generated.
-
- 30 Mar, 2023 4 commits
-
-
Robin Newhouse authored
Include cppcheck and FlawFinder for SAST scanning. Ignorelists are present for both, so only new problems will trigger a CI failure. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
-
Vicențiu Ciorbaru authored
Often there are small "nitpicky" changes that need to be done to a PR in order to get it merged. To speed up the merge process, we will ask contributors if they are ok with the reviewer making those changes. Other fixups: Improve PR template rendering in browser's textarea field. Line wrapping at 80 characters provides a bad user experience within the browser, which handles word wrapping separately. Thus, prefer long lines in this markdown file. Remove the "backwards compatibility section". While the contributor should ideally care about the impact of their patch on the server's backwards compatibility, this is an advanced topic that is better presented in a separate document.
-
Mikhail Chalov authored
Add variable max_used_connections_time to show the time at which max_used_connections reached its current value. This is useful for troubleshooting high connection counts. MySQL 8 has this already. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services.
-
Ahmed Ibrahim authored
-
- 29 Mar, 2023 5 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-