mariadb/tests
Nikita Malyavin ab4bfad206 MDEV-16329 [5/5] ALTER ONLINE TABLE
* 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.
2023-08-15 10:16:11 +02:00
..
code_quality All-green GitLab CI in 11.0 branch 2023-03-30 14:55:24 +03:00
upgrade_from Implement mysql_upgrade upgrade testing in CI 2023-07-05 10:42:32 +01:00
async_queries.c Added 'const' to arguments in get_one_option and find_typeset() 2021-02-08 12:16:29 +02:00
auto_increment.res
auto_increment.tst
big_record.pl Merge 10.4 into 10.5 2020-07-02 09:41:44 +03:00
bug25714.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
check_async_queries.pl Switch Perl DBI scripts from DBD::mysql to DBD::MariaDB driver 2019-07-19 13:39:20 +03:00
check_costs.pl Fixed check_costs.pl to always create table if table does not exists 2023-02-15 15:50:21 +03:00
CMakeLists.txt MDEV-21303 Make executables MariaDB named 2020-03-21 20:20:29 +01:00
connect_test.c Update FSF Address 2019-05-11 21:29:06 +03:00
consistent_snapshot.pl Switch Perl DBI scripts from DBD::mysql to DBD::MariaDB driver 2019-07-19 13:39:20 +03:00
deadlock_test.c Update FSF Address 2019-05-11 21:29:06 +03:00
drop_test.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
export.pl mtr: use env for perl 2020-06-23 03:24:46 +02:00
fork2_test.pl MDEV-23697: perl -w -> perl 2020-09-24 08:09:56 +10:00
fork_big.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
fork_big2.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
function.res
function.tst
grant.res
index_corrupt.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
insert_and_repair.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
insert_test.c Update FSF Address 2019-05-11 21:29:06 +03:00
list_test.c MDEV-25602 get rid of __WIN__ in favor of standard _WIN32 2021-06-06 13:21:03 +02:00
lock_test.pl mtr: use env for perl 2020-06-23 03:24:46 +02:00
lock_test.res
mail_to_db.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
myisam-big-rows.tst
mysql_client_fw.c unify client/tool version string 2023-01-19 12:39:28 +01:00
mysql_client_test.c MDEV-16329 [5/5] ALTER ONLINE TABLE 2023-08-15 10:16:11 +02:00
nonblock-wrappers.h MDEV-25602 get rid of __WIN__ in favor of standard _WIN32 2021-06-06 13:21:03 +02:00
pmail.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
prev_record.cc MDEV-30699: Updated prev_record_reads() to be more exact 2023-02-21 15:36:39 +03:00
rename_test.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
restore-lock.smack
select_test.c Update FSF Address 2019-05-11 21:29:06 +03:00
showdb_test.c MDEV-25602 get rid of __WIN__ in favor of standard _WIN32 2021-06-06 13:21:03 +02:00
ssl_test.c MDEV-25602 get rid of __WIN__ in favor of standard _WIN32 2021-06-06 13:21:03 +02:00
table_types.pl mtr: use env for perl 2020-06-23 03:24:46 +02:00
test_delayed_insert.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30
thread_test.c MDEV-25602 get rid of __WIN__ in favor of standard _WIN32 2021-06-06 13:21:03 +02:00
truncate.pl Merge branch '10.4' into 10.5 2020-09-29 16:59:36 +05:30