- 12 Mar, 2018 1 commit
-
-
Teemu Ollakka authored
The problem is that the seqno part of wsrep XID is always stored in host byte order. This may cause issues when a physical backup is restored on a host with different architecture, the seqno part with XID may have incorrect value. In order to fix this, wsrep XID seqno is always written into XID data buffer in little endian byte order using int8store() and read from data buffer using sint8korr(). For backwards compatibility the seqno is read from TRX_SYS page in host byte order during upgrade. This patch implements byte ordering in wsrep_xid_init(), wsrep_xid_seqno(), and exposes functions to read wsrep XID uuid and seqno in wsrep_service_st. Backwards compatibility for upgrade is provided in trx_rseg_init_wsrep_xid().
-
- 09 Mar, 2018 1 commit
-
-
Marko Mäkelä authored
buf_flush_batch(), buf_flush_stats(): Declare static. buf_flush_common(): Remove (unused function).
-
- 07 Mar, 2018 3 commits
-
-
Alexander Barkov authored
- Adding a new virtual method Field::load_data_set_no_data(). - Overriding Field_timestamp::load_data_set_no_data() and moving the TIMESTAMP specific code there. - Overriding Field_geom::load_data_set_no_data() and implementing GEOMETRY specific behavior, to prevent writing empty strings when the loaded file ends unexpectedly. This fixes the bug. - Adding a new test gis-loaddaata.test. - The test in loaddata.test for CHAR was added simply to record behavior. The CHAR data type did not change its behaviour (only GEOMRYRY did). - Additionally, moving duplicate code into a new method Field::load_data_set_value() and reusing it in three places.
-
Daniel Black authored
-
Ian Gilfillan authored
-
- 06 Mar, 2018 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
With MDEV-15132 in MariaDB 10.3.5, InnoDB no longer writes the transaction identifier to the TRX_SYS page. The information is only written to undo log headers and sometimes rollback segment headers. Because the setting innodb_force_recovery=5 will skip reading any of those pages, the maximum transaction identifier will no longer be determined. innobase_map_isolation_level(): Always report READ UNCOMMITTED if innodb_force_recovery has been set to 5 or more, or innodb_read_only is set. This will avoid errors reported by lock_check_trx_id_sanity() and ReadView::check_trx_id_sanity(). lock_clust_rec_cons_read_sees(): Do not check for innodb_read_only, now that innobase_map_isolation_level() will guarantee that no read view will be created or used. row_search_mvcc(): Do not check for innodb_force_recovery<5, now that innobase_map_isolation_level() will guarantee that no read view will be created or used.
-
Marko Mäkelä authored
The problem is a regression caused by MDEV-15158. If some transactions were committed with wsrep_on=0, a rollback segment header having the highest trx_id assigned might store undefined wsrep XID. When reading the wsrep checkpoint from InnodB, the undefined wsrep XID might be returned instead of the highest valid one. Similarly, if the binary log is intermittently disabled or enabled while InnoDB transactions are being committed, the latest updated rollback segment header page might not contain the latest binlog metadata. Therefore, the MDEV-15158 logic to rely on TRX_RSEG_MAX_TRX_ID for determining the most recent WSREP XID or binlog position is invalid. We must choose the maximum entries among the rollback segment header pages. This fix is based on code submitted by Teemu Ollakka from Codership and by Thirunarayanan Balathandayuthapani from MariaDB Corporation. trx_purge_add_undo_to_history(): Only write TRX_RSEG_MAX_TRX_ID when it was used to be written before MDEV-15158. wsrep_seqno: Renamed from trx_sys_cur_xid_seqno. wsrep_uuid: Renamed from trx_sys_cur_xid_uuid, and enable in non-debug builds. read_wsrep_xid_uuid(): Make non-debug, and remove the memcpy(). trx_rseg_update_wsrep_checkpoint(): Correctly compare and copy the entire UUID in the debug check. In case of UUID mismatch, write the WSREP XID to all 128 rollback segment headers in a single mini-transaction. trx_rseg_read_wsrep_checkpoint(rseg_header, xid): Make static. In case the information is absent, do not overwrite xid. trx_rseg_read_wsrep_checkpoint(xid): Determine the maximum WSREP XID. trx_rseg_mem_restore(): Remove the parameter max_rseg_trx_id. Determine the latest binlog file and position by comparing file names and offsets. Declare trx_sys.recovered_binlog_offset as an unsigned type.
-
- 02 Mar, 2018 2 commits
-
-
Alexander Barkov authored
-
Alexander Barkov authored
-
- 01 Mar, 2018 1 commit
-
-
Oleksandr Byelkin authored
Expect index except unique constrain in case of heap table conversion.
-
- 28 Feb, 2018 2 commits
-
-
Alexander Barkov authored
-
Daniel Bartholomew authored
-
- 27 Feb, 2018 2 commits
-
-
Alexander Barkov authored
-
Alexander Barkov authored
Backporting from bb-10.2-compatibility to bb-10.2-ext Version: 2018-01-26 - CREATE PACKAGE [BODY] statements are now entirely written to mysql.proc with type='PACKAGE' and type='PACKAGE BODY'. - CREATE PACKAGE BODY now supports IF NOT EXISTS - DROP PACKAGE BODY now supports IF EXISTS - CREATE OR REPLACE PACKAGE [BODY] is now supported - CREATE PACKAGE [BODY] now support the DEFINER clause: CREATE DEFINER user@host PACKAGE pkg ... END; CREATE DEFINER user@host PACKAGE BODY pkg ... END; - CREATE PACKAGE [BODY] now supports SQL SECURITY and COMMENT clauses, e.g.: CREATE PACKAGE p1 SQL SECURITY INVOKER COMMENT "comment" AS ... END; - Package routines are now created from the package CREATE PACKAGE BODY statement and don't produce individual records in mysql.proc. - CREATE PACKAGE BODY now supports package-wide variables. Package variables can be read and set inside package routines. Package variables are stored in a separate sp_rcontext, which is cached in THD on the first packate routine call. - CREATE PACKAGE BODY now supports the initialization section. - All public routines (i.e. declared in CREATE PACKAGE) must have implementations in CREATE PACKAGE BODY - Only public package routines are available outside of the package - {CREATE|DROP} PACKAGE [BODY] now respects CREATE ROUTINE and ALTER ROUTINE privileges - "GRANT EXECUTE ON PACKAGE BODY pkg" is now supported - SHOW CREATE PACKAGE [BODY] is now supported - SHOW PACKAGE [BODY] STATUS is now supported - CREATE and DROP for PACKAGE [BODY] now works for non-current databases - mysqldump now supports packages - "SHOW {PROCEDURE|FUNCTION) CODE pkg.routine" now works for package routines - "SHOW PACKAGE BODY CODE pkg" now works (the package initialization section) - A new package body level MDL was added - Recursive calls for package procedures are now possible - Routine forward declarations in CREATE PACKATE BODY are now supported. - Package body variables now work as SP OUT parameters - Package body variables now work as SELECT INTO targets - Package body variables now support ROW, %ROWTYPE, %TYPE
-
- 25 Feb, 2018 3 commits
-
-
Alexander Barkov authored
- CREATE PACKAGE [BODY] statements are now entirely written to mysql.proc with type='PACKAGE' and type='PACKAGE BODY'. - CREATE PACKAGE BODY now supports IF NOT EXISTS - DROP PACKAGE BODY now supports IF EXISTS - CREATE OR REPLACE PACKAGE [BODY] is now supported - CREATE PACKAGE [BODY] now support the DEFINER clause: CREATE DEFINER user@host PACKAGE pkg ... END; CREATE DEFINER user@host PACKAGE BODY pkg ... END; - CREATE PACKAGE [BODY] now supports SQL SECURITY and COMMENT clauses, e.g.: CREATE PACKAGE p1 SQL SECURITY INVOKER COMMENT "comment" AS ... END; - Package routines are now created from the package CREATE PACKAGE BODY statement and don't produce individual records in mysql.proc. - CREATE PACKAGE BODY now supports package-wide variables. Package variables can be read and set inside package routines. Package variables are stored in a separate sp_rcontext, which is cached in THD on the first packate routine call. - CREATE PACKAGE BODY now supports the initialization section. - All public routines (i.e. declared in CREATE PACKAGE) must have implementations in CREATE PACKAGE BODY - Only public package routines are available outside of the package - {CREATE|DROP} PACKAGE [BODY] now respects CREATE ROUTINE and ALTER ROUTINE privileges - "GRANT EXECUTE ON PACKAGE BODY pkg" is now supported - SHOW CREATE PACKAGE [BODY] is now supported - SHOW PACKAGE [BODY] STATUS is now supported - CREATE and DROP for PACKAGE [BODY] now works for non-current databases - mysqldump now supports packages - "SHOW {PROCEDURE|FUNCTION) CODE pkg.routine" now works for package routines - "SHOW PACKAGE BODY CODE pkg" now works (the package initialization section) - A new package body level MDL was added - Recursive calls for package procedures are now possible - Routine forward declarations in CREATE PACKATE BODY are now supported. - Package body variables now work as SP OUT parameters - Package body variables now work as SELECT INTO targets - Package body variables now support ROW, %ROWTYPE, %TYPE
-
Sergei Golubchik authored
MDEV-15405 Mixed replication fails with "Could not execute Delete_rows_v1 event" upon DELETE HISTORY Allow slave thread to set time for system versioning Note that every binlog event stores now(0), while microseconds are only stored when they're actually used in the query. Meaning for unversioned->versioned replication, there will be no microseconds. Need to compensate for that.
-
Sergei Golubchik authored
Because NOW() is set to system time, unless overriden. And both should follow big manual system time changes, while still coping with lowres system clocks. Ignoring system time changes is both confusing and breaks with restarts.
-
- 24 Feb, 2018 11 commits
-
-
Sergei Golubchik authored
as these fields are always declared NOT NULL anyway
-
Sergei Golubchik authored
-
Sergei Golubchik authored
MDEV-15395 Wrong result or Assertion `old_part_id == m_last_part' failed in ha_partition::update_row on slave Revert commit fd240a10 and add a test case
-
Sergei Golubchik authored
-
Sergei Golubchik authored
set m_last_part to something meaningful when opening partitions
-
Sergei Golubchik authored
just as SHOW CREATE TABLE omits them from the index definition
-
Sergei Golubchik authored
copy the corresponding line from mysql_prepare_insert()
-
Sergei Golubchik authored
MDEV-15395 Wrong result or Assertion `old_part_id == m_last_part' failed in ha_partition::update_row on slave RBR cannot work with system versioning on the master. row_end column is either system time (not @@timestamp) with microsecond precision or transaction id. Either way, it'll certainly be different on the slave. So if the master row contains row_end column, it won't match on the slave. And if we ignore row_end when comparing, then some other row might match instead.
-
Sergei Golubchik authored
-
Sergei Golubchik authored
and few indentation changes
-
Sergei Golubchik authored
-
- 23 Feb, 2018 11 commits
-
-
Sergei Golubchik authored
-
Elena Stepanova authored
-
Sergei Golubchik authored
Remove 1668efb7 that introduced a special magic behavior for UNIX_TIMESTAMP() in the AS OF context
-
Sergei Golubchik authored
and delete few garbage-in-garbage-out tests
-
Sergei Golubchik authored
-
Aleksey Midenkov authored
-
Sergei Golubchik authored
-
Aleksey Midenkov authored
Vers SQL: force VERS_ALTER_HISTORY_KEEP behavior in the slave thread
-
Aleksey Midenkov authored
MDEV-15191 Assertion `bit < (map)->n_bits' failed in bitmap_is_set upon INSERT MDEV-15036 Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' in Diagnostics_area::set_ok_status or unexpected ER_RANGE_NOT_INCREASING_ERROR
-
Eugene Kosov authored
Vers_parse_info::fix_alter_info(): disallow DROP SYSTEM VERSIONING for system_time partitioned tables.
-
Sergei Golubchik authored
add a test case
-