| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Intermediary commit addressing the following
1) Repeat --start-position or --stop-position specified
on the command line
2) Added non-strict mode for omitting out-of-order
warnings while processing events
3) Updated ID delegation gtid event filter to use MariaDB
HASH type instead of manual hash implementation
4) Updated mariadb-binlog event processing to activate or
deactivate an event only when a Gtid_log_event is
encountered, rather than keeping track of each event
in the group
|
|
|
|
| |
position.
|
|
|
|
| |
--skip- prefix.
|
| |
|
|
|
|
|
|
|
| |
Intermediary commit addressing the following:
1. Refined error messages
2. Changed gtid seq no out of order to warn instead
of error. Warning is issued at the end.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Incremental commit with fixes addressing the initial round of code
review. Items addressed:
1. Active event groups are now maintained in a global state within
Log_event
2. When an event that ends an active group, e.g. Xid_log_event,
is processed, the event itself clears the active status in
its print function
3. Removed unnecessary protocol additions from COM_BINLOG_DUMP on
the server side
4. Added error logic for gaps in GTID sequencing
5. Added error processing to ensure that the GTIDs given
in --start-position are before their respective GTIDs
in --stop-position
6. Fixed a bug where an event would be incorrectly printed
after the --stop-position
7. Added test to verify that scalar offsets can be used with
GTID positions for --start-position and --stop-position
8. Added logic to ensure that mariadb-binlog stops processing
after all GTIDs specified in --stop-position have been hit
9. Added tests to verify GTID events unspecified in either the
start or stop position lists should be printed up until all
stop position GTIDs have been hit
10. Updated some descriptions and did some cleanup
Reviewed By:
============
Andrei Elkin: <andrei.elkin@mariadb.com>
|
|
|
|
|
| |
the slave server presents at connecting. mysqlbinlog-remote now does
the same, where the state is expressed by `start-position` arg.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New Feature:
===========
This commit extends the mariadb-binlog capabilities to allow events
to be filtered by GTID ranges. More specifically, the following
capabilities are addressed:
1) GTIDs can be used to filter results on local binlog files
2) GTIDs can be used to filter results from remote servers
3) For a given GTID range, its start-position is exclusive and
its stop-position is inclusive. This allows users to receive
events strictly after those that they already have, and is
useful in cases such as: 1) events were received out of order
and should be re-sent, or 2) specifying the gtid state of a
slave to get events newer than their current state.
4) After the events have been written, the session server id and
domain id are reset to their former values
To facilitate these features, the --start-position and
--stop-position arguments have been extended to accept values
formatted as a list of GTID positions, e.g.
--start-position=0-1-0,1-2-55
Reviewed By:
===========
Andrei Elkin: <andrei.elkin@mariadb.com>
|
|
|
|
|
|
|
|
| |
InnoDB fails to rollback the bulk insert buffered operation when
trx_mark_sql_stat_end() encounters the DB_DUPLICATE_KEY error.
In this case, check table fails with secondary index row count
mismatch. InnoDB gives the error "ER_ERROR_DURING_COMMIT"
while encountering the DB_DUPLICATE_KEY in trx_mark_sql_stat_end()
|
|
|
|
|
|
| |
fix test failures on rpm-centos73-ppc64
followup for 401ff6994d84
|
|
|
|
|
|
| |
it's https://gcc.gnu.org/bugzilla/show_bug.cgi?id=7302
fixed in 2011
affects fmtlib: https://github.com/fmtlib/fmt/issues/1936
|
| |
|
|
|
|
| |
add a test case
|
| |
|
|
|
|
|
|
|
|
| |
FixedBinTypeBundle<NATIVE_LEN, MAX_CHAR_LEN>::Type_handler_fbt::stored_field_cmp_to_item
The bug was fixed in 10.5 using INET6 specific tests.
This bugs adds only UUID specific tests (no code changes).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
UUID values
llllllll-mmmm-Vhhh-vsss-nnnnnnnnnnnn
are now stored as
nnnnnnnnnnnn-vsss-Vhhh-mmmm-llllllll
inside the record:
- the groups (segments separated by dash) are reordered right-to-left.
- the bytes inside the groups are not reordered (stored as before,
in big-endian format).
This provides a better sorting order: the earlier UUID was generated,
the higher it appears in the ORDER BY output.
Also, this change enables a good key prefix compression,
because the constant part is now in the beginning, while
the non-constant part (the timestamp) is in the end.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Adding a new template FixedBinTypeStorage.
- Restoring classes UUID and Inet6
as primitive "storage classes" for their data types.
They derive from FixedBinTypeStorage.
These storage classes have very few server dependencies so they
can later be easily reused in smart engines, e.g. ColumnStore.
- Changing the FixedBinTypeBundle parameter from
<size_t NATIVE_LEN, size_t MAX_CHAR_LEN> to <class FbtImpl>
and fixing UUID and INET6 bundles to get their storage
classes as a parameter.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
factor out the the common code for all plugin types that have a
fixed-length native binary representation and a possibly variable-length
string representation.
|
|
|
|
|
|
|
|
| |
to 'DEFAULT' in 10.7
Locking / unlocking plugins is already handled by Sys_var_plugin::check
method. No need to do that in the specialized checking code, use
var->save_value instead to get the plugin handle.
|
|\ |
|
| |\ |
|
| | |\ |
|
| | | |\ |
|
| | | | |\ |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The InnoDB changes in MySQL 5.7.36 that were applicable to MariaDB
were covered by MDEV-26864, MDEV-26865, MDEV-26866.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The initial test case for MySQL Bug #33053297 is based on
mysql/mysql-server@27130e25078864b010d81266f9613d389d4a229b.
innobase_get_field_from_update_vector is not a suitable function to fetch
updated row info, as well as parent table's update vector is not always
suitable. For instance, in case of DELETE it contains undefined data.
castade->update vector seems to be good enough to fetch all base columns
update data, and besides faster, and less error-prone.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
ha_rocksdb.h:459:15: warning: 'table_type' overrides a member
function but is not marked 'override' [-Winconsistent-missing-override]
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The assert inside String::copy() prevents copying from from "str"
if its own String::Ptr also points to the same memory.
The idea of the assert is that copy() performs memory reallocation,
and this reallocation can free (and thus invalidate) the memory pointed by Ptr,
which can lead to further copying from a freed memory.
The assert was incomplete: copy() can free the memory pointed by its Ptr
only if String::alloced is true!
If the String is not alloced, it is still safe to copy even from
the location pointed by Ptr.
This scenario demonstrates a safe copy():
const char *tmp= "123";
String str1(tmp, 3);
String str2(tmp, 3);
// This statement is safe:
str2.copy(str1->ptr(), str1->length(), str1->charset(), cs_to, &errors);
Inside the copy() the parameter "str" is equal to String::Ptr in this example.
But it's still ok to reallocate the memory for str2, because str2
was a constant before the copy() call. Thus reallocation does not
make the memory pointed by str1->ptr() invalid.
Adjusting the assert condition to allow copying for constant strings.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Take into account client capabilities.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Sometimes, although not often, it would timeout after 3 minutes.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Happens with Innodb engine.
Move unlock_locked_table() past drop_open_table(), and
rollback current statement, so that we can actually unlock the table.
Anything else results in assertions, in drop, or unlock, or in close_table.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
MDEV-25702(commit 696de6d06c0eeaf7b20d5f89278ed7d62a9f204f) should've
closed the fts table further. This patch closes the table after
finishing the bulk insert operation.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
DBUG_ASSERT removed as the AUTO INCREMENT can actually be 0 when the
SET insert_id= 0; was done.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Get rid of the global big_buffer.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
SysTablespace::file_not_found(): If the system tablespace cannot be
found and innodb_force_recovery has been specified, refuse to start up.
The system tablespace is necessary for accessing any InnoDB tables,
because it contains the TRX_SYS page (the state of transactions)
and the InnoDB data dictionary.
This is similar to our handling of innodb_read_only except that
we will happily create the InnoDB temporary tablespace even if
innodb_force_recovry is set.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In the replication-related code, in the exec_relay_log_event() (slave.cc)
function, where the "data_lock" mutex is captured, this mutex is then not
released on one of the early return branches within a specific insert for
WSREP, namely under the branch: "if (wsrep_before_statement(thd))". As a
result, the mutex remains captured, resulting in errors or hangs.
This commit fixes this issue, which is now showing up as intermittent
failures in mtr tests for galera and galera_sr suites.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Similar to commit f7684f0ca5f6f53d63e93afe89194b43bb5431d2 (MDEV-26855)
we will try to enable the adaptive spinloop for lock_sys.wait_mutex
on ARMv8.
Enabling any form of spinloop for lock_sys.wait_mutex did not show a
significant improvement in our tests on AMD64.
Spinning can be argued to be a hack to reduce the impact on mutex
contention. It would be better to adjust the code to reduce
contention in the first place.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
because plugin code is not only about encryption anymore
(also loads provider plugins), and xb_ prefix prevents name
clashes with the server code (that mariabackup links with).
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
incremental backup
prefer backup-my.cnf from the incremental-dir over the one in target-dir
|