- 30 Sep, 2022 2 commits
-
-
Aleksey Midenkov authored
When ha_end_bulk_insert() fails F_UNLCK was done twice: in select_insert::prepare_eof() and in select_create::abort_result_set(). Now we avoid making F_UNLCK in prepare_eof() if error is non-zero.
-
Sergei Golubchik authored
-
- 29 Sep, 2022 6 commits
-
-
Aleksey Midenkov authored
ha_release_auto_increment() must be done before F_UNLCK. Non-atomic case is handled by select_insert::binlog_query().
-
Aleksey Midenkov authored
MDEV-28933 added a condition to avoid keeping cached foreign keys when renaming into temporary table. Such foreign keys must be freed.
-
Aleksey Midenkov authored
make_tmp_name() creates temporary name with prefix containing PID and TID. This prefix influences max length of the rest of the name (the whole name is limited by NAME_LEN). During the test run PID and TID can change. PID increases when the server restarts. TID is incremented with the new connections (generated by next_thread_id(), is not the posix thread ID). During the test run PID can increase max 2 decimal positions: from tens to thousands this requires ~900 restarts. TID depends on connection count, but for test we assume it will not trespass 100000 connections which is 5 decimal positions. So it should be enough to reserve 7 characters for PID and TID increment. The patch reserves more: it reserves 12 characters for 7-decimal PID and 5-decimal TID plus 4 chars of additional reserve (for future prefix changes) and assumes minimal legth of the prefix is 30 bytes: #sql-backup-PID-TID- #sql-create-PID-TID- 4-6-PID-TID- is 10 + 4 + PID + TID, so PID + TID is 16 chars (7 + 5 + 4).
-
Aleksey Midenkov authored
Usually when we get into finalize_locked_tables() with error m_locked_tables_count was not decremented. m_locked_tables_count is decremented when we drop the original table and if we failed that m_locked_tables_count is expected intact. The bug comes from the fact that finalize_atomic_replace() violates the above contract. It does HA_EXTRA_PREPARE_FOR_DROP and decrements m_locked_tables_count. Then it tries rename_table_and_triggers() and fails. With decremented m_locked_tables_count reopen_tables() does nothing and we don't get new value for pos_in_locked_tables->table. The test case demonstrates ER_ERROR_ON_RENAME where non-atomic CREATE OR REPLACE would not fail. The original RENAME TABLE fails under such broken environment, so nothing is wrong with atomic CREATE OR REPLACE failing there too.
-
Sergei Golubchik authored
mysqlslap has an unusual semantics of the --iterations option, so that $ mysqlslap --concurrency=16 --iterations=1000 performs 16,000 connections. Because of that it gets many times slower with --ssl Let's disable ssl for mysqlslap in mysql-test
-
Sergei Golubchik authored
-
- 27 Sep, 2022 1 commit
-
-
asklavou authored
Problem: ======= Test Case 4 sporadically failed upon waiting for the slave to start during master demotion to slave, due to a GTID event not existing in the new master's binlog. If by chance the original slave (new master) did not yet receive all the binlog events, then this failure could occur. Solution: ======== Sync slave with master GTID before master demotion. Reviewed By: ============ Brandon Nesterenko <brandon.nesterenko@mariadb.com>
-
- 26 Sep, 2022 1 commit
-
-
Sergei Golubchik authored
-
- 23 Sep, 2022 1 commit
-
-
Sergei Golubchik authored
-
- 21 Sep, 2022 7 commits
-
-
Monty authored
The benefit of this is that one can remove the READ ONLY ADMIN privilege from all users and this way ensure that no one can do any changes on any non-temporary tables. This is good option to use on slaves when one wants to ensure that the slave is kept identical to the master.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Update the result of a ./mtr --ps-protocol test
-
- 20 Sep, 2022 5 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Alexander Barkov authored
-
Marko Mäkelä authored
-
- 19 Sep, 2022 16 commits
-
-
Daniel Bartholomew authored
-
Daniel Bartholomew authored
-
Daniel Bartholomew authored
-
Vlad Lesin authored
The test is unstable because 'UPDATE t SET b = 100' latches a page and waits for 'upd_cont' signal in lock_trx_handle_wait_enter sync point, then purge requests RW_X_LATCH on the same page, and then 'SELECT * FROM t WHERE a = 10 FOR UPDATE' requests RW_S_LATCH, waiting for RW_X_LATCH requested by purge. 'UPDATE t SET b = 100' can't release page latch as it waits for upd_cont signal, which must be emitted after 'SELECT * FROM t WHERE a = 10 FOR UPDATE' acquired RW_S_LATCH. So we have a deadlock, which is resolved by finishing the debug sync point wait by timeout, and the 'UPDATE t SET b = 100' releases it's record locks rolling back the transaction, and 'SELECT * FROM t WHERE a = 10 FOR UPDATE' is finished successfully instead of finishing by lock wait timeout. The fix is to forbid purging during the test by opening read view in a separate connection before the first insert into the table. Besides, 'lock_wait_end' syncpoint is not needed, as it enough to wait the end of the SELECT execution to let the UPDATE to continue.
-
Daniel Bartholomew authored
-
Andrew Hutchings authored
* MDEV-29426 Fix memory leak in CONNECT JSON/BSON If information is being gathered on JSON/BSON tables we leak the heap allocated to the table class. With this fix we close and cleanup instead, just as we do for XML tables.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The reason why mysql/mysql-server@8020cfac20c55a870a874446870d5e90bdc181ed split the files was some unit tests that never existed in the MariaDB Server code base. The storage/innobase/unittest/ works just fine with this file. This is reverting part of 2e814d47 which applied InnoDB changes from MySQL 5.7.9.
-
Marko Mäkelä authored
The futex system calls were introduced in Linux 2.6.0, which was released in December 2003. It should be safe to assume that the system calls are always available on the Linux kernels that MariaDB Server 10.3 would run on.
-
Marko Mäkelä authored
There should be no point to disable branch prediction hints or prefetch.
-
Marko Mäkelä authored
Let us use the normal platform-specific preprocessor symbols __linux__, __sun__, _AIX instead of some homebrew ones. The preprocessor symbol UNIV_HPUX must have lost its meaning by f6deb00a (note: the symbol UNIV_HPUX10 is being checked for, but only UNIV_HPUX is defined).
-
Marko Mäkelä authored
log_phys_t::apply(): When parsing an INSERT_HEAP_DYNAMIC record, allow ll==rlen to hold for the last part. A secondary index record may inherit all preceding bytes from the infimum pseudo-record. For INSERT_HEAP_REDUNDANT, some header bytes will always be present because the header will never be copied from the page infimum. We will tolerate ll==rlen also in that case to be consistent with the parsing of INSERT_HEAP_DYNAMIC.
-
Marko Mäkelä authored
Thanks to Thirunarayanan Balathandayuthapani for spotting this.
-
Daniel Black authored
-
Ian Gilfillan authored
-
Ian Gilfillan authored
-
- 16 Sep, 2022 1 commit
-
-
Marko Mäkelä authored
recv_scan_log(): Do not dereference the first byte of the log record before recv_sys.parse_pmem() (or recv_sys_t::parse_mtr()) returns OK. In the case of the failure that was analyzed, we had recv_sys.offset == recv_sys.len and recv_sys_t::parse_mtr() would return PREMATURE_EOF. This would lead us to reading more data and parsing again. When a memory-mapped interface to the log is being used, that is, log_sys.is_pmem() holds, recv_sys.offset cannot point past the end of the memory-mapped log_sys.buf[]. This is guaranteed by log_sys.calc_lsn_offset(). Thanks to Nayuta Yanagisawa for providing a core dump for analysis.
-