- 10 Oct, 2017 10 commits
-
-
Jan Lindström authored
of WSREP_TO_ISOLATION_BEGIN.
-
Marko Mäkelä authored
Mariabackup 10.2.7 would delete the redo log files after a successful --prepare operation. If the user is manually copying the prepared files instead of using the --copy-back option, it could happen that some old redo log file would be preserved in the restored location. These old redo log files could cause corruption of the restored data files when the server is started up. We prevent this scenario by creating a "poisoned" redo log file ib_logfile0 at the end of the --prepare step. The poisoning consists of simply truncating the file to an empty file. InnoDB will refuse to start up on an empty redo log file. copy_back(): Delete all redo log files in the target if the source file ib_logfile0 is empty. (Previously we did this if the source file is missing.) SRV_OPERATION_RESTORE_EXPORT: A new variant of SRV_OPERATION_RESTORE when the --export option is specified. In this mode, we will keep deleting all redo log files, instead of truncating the first one. delete_log_files(): Add a parameter for the first file to delete, to be passed as 0 or 1. innobase_start_or_create_for_mysql(): In mariabackup --prepare, tolerate an empty ib_logfile0 file. Otherwise, require the first redo log file to be longer than 4 blocks (2048 bytes). Unless --export was specified, truncate the first log file at the end of --prepare.
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
Use GetFileInformationByHandleEx with FileAttributeTagInfo to query whether the file is sparse. This saves 1 syscall, as GetFileInformationByHandle() would additionally query volume info.
-
Vladislav Vaintroub authored
Try to fix fragmentation (unsparse files), for pre-existing installations. Unsparse the innodb file, when it needs to be extended, unless compression is used. For Win7/2008R2 unsparse does not work (as documented in MSDN), therefore for sparse files in older Windows, file extension will be done via writing zeroes at the end of file.
-
Vladislav Vaintroub authored
MDEV-13310 Preparing an incremental backup twice can corrupt data
-
Vladislav Vaintroub authored
The last parameter to this function is now,"bool is_sparse", like in 10.1 rather than the unused/useless "bool is_readonly", merged from MySQL 5.7 Like in 10.1, this function now supports sparse files, and efficient platform specific mechanisms for file extension os_file_set_size() is now consistenly used in all places where innodb files are extended.
-
sjaakola authored
galera_events test shows a regression with the original fix for MW-416 Reason was that Events::drop_event() can be called also from inside event execution, and there we have a speacial treatment for event, which executes "DROP EVENT" statement, and runs TOI replication inside the event processing body. This resulted in executing WSREP_TO_ISOLATION two times for such DROP EVENT statement. Fix is to call WSREP_TO_ISOLATION_BEGIN only in Events::drop_event()
-
sjaakola authored
Changed return code for replicatio error to TRUE. This is aligned with native mysql convention to return TRUE (defined to 1) or FALSE (defined to 0) from a bool function. This is wrong, but follows the mysql conventiosn, at least...
-
sjaakola authored
Moved TOI replication to happen after ACL checking for commands: SQLCOM_CREATE_EVENT SQLCOM_ALTER_EVENT SQLCOM_DROP_EVENT SQLCOM_CREATE_VIEW SQLCOM_CREATE_TRIGGER SQLCOM_DROP_TRIGGER SQLCOM_INSTALL_PLUGIN SQLCOM_UNINSTALL_PLUGIN
-
- 09 Oct, 2017 2 commits
-
-
Marko Mäkelä authored
MariaDB 10.1 introduced non-indexed virtual columns for InnoDB tables. When MySQL 5.7 introduced virtual columns in InnoDB tables, it also introduced the table SYS_VIRTUAL that stores metadata on virtual columns. This table does not initially exist in data files that were imported from 10.1. So, we do not always have virtual column metadata inside InnoDB. dict_index_contains_col_or_prefix(): In the clustered index records, all non-virtual columns are present and no virtual columns are present. ha_innobase::build_template(): In the clustered index, do not include virtual columns in the query template. The SQL layer is supposed to compute the virtual column values when needed.
-
Marko Mäkelä authored
When btr_create() invokes btr_free_root() after running out of space, fseg_create() would have acquired an SX-latch on the root page, not an X-latch. Relax the debug assertion in btr_free_root() accordingly. (In this case, SX-latch and X-latch are equivalent. During the CREATE operation there should be MDL_EXCLUSIVE and dict_operation_lock X-latch preventing concurrent access to the index. Normally the purpose of the SX-latch is to allow concurrent reads of the root page while certain fields in the root page are updated in place.)
-
- 07 Oct, 2017 7 commits
-
-
Vladislav Vaintroub authored
Some innobase/xtrabackup changes around from 10.1 are null merged , in partucular using os_set_file_size to extend tablespaces in server or mariabackup. They require non-trivial amount of additional work in 10.2, due to innobase differences between 10.1 and 10.2
-
Alexey Botchkov authored
Space for the next operation wasn't reserved in Item_func_spatial_relate::val_str()
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
Remove .delta file after it was successfully applied
-
Vladislav Vaintroub authored
This incorrect alignment can later lead to memcpy over buffer boundaries, and to a crash.
-
Vladislav Vaintroub authored
Fix incremental prepare to change file size while applying delta file, if delta file contains page 0 with the new size.
-
Vladislav Vaintroub authored
Change fil_space_extend_must_retry() to use this function.
-
- 06 Oct, 2017 5 commits
-
-
Marko Mäkelä authored
In MariaDB Server 10.1, this problem manifests itself only as a debug assertion failure in page_zip_decompress() when an insert requires a page to be decompressed. In MariaDB 10.1, the encryption of InnoDB data files repurposes the previously unused field FILE_FLUSH_LSN for an encryption key version. This field was only used in the first page of each file of the system tablespace. For ROW_FORMAT=COMPRESSED tables, the field was always written as 0 until encryption was implemented. There is no bug in the encryption, because the buffer pool blocks will not be written to files. Instead, copies of the blocks will be encrypted. In these encrypted copies, the key version field will be updated before the buffer is written to the file. The field in the buffer pool is basically garbage that does not really matter. Already in MariaDB 10.0, the memset() calls to reset this unused field in buf_flush_update_zip_checksum() and buf_flush_write_block_low() are unnecessary, because fsp_init_file_page_low() would guarantee that the field is always 0 in the buffer pool (unless 10.1 encryption is used). Removing the unnecessary memset() calls makes page_zip_decompress() happy and will prevent a SPATIAL INDEX corruption bug in MariaDB Server 10.2. In MySQL 5.7.5, as part of WL#6968, the same field was repurposed for an R-tree split sequence number (SSN) and these memset() were removed. (Because of the repurposing, MariaDB encryption is not available for tables that contain SPATIAL INDEX.)
-
Alexander Barkov authored
Fixing the asymmetry in the array field_types_merge_rules[][] which caused data loss when mixing FLOAT + BIGINT in UNIONs or hybrid functions: 1. FLOAT + INT = DOUBLE 2. FLOAT + BIGINT = FLOAT 3. INT + FLOAT = DOUBLE 4. BIGINT + FLOAT = DOUBLE Now FLOAT + BIGINT (as in #2) also produces DOUBLE, like the cases #1,#3,#4 do.
-
Alexey Botchkov authored
TRUE. Let's make empty brackets to be the syntax error in the JSON paths.
-
Alexey Botchkov authored
using JSON_UNQUOTE as an argument. The coercibility and repertoire should be set properly for the JSON_UNQUOTE.
-
Marko Mäkelä authored
-
- 05 Oct, 2017 4 commits
-
-
Alexey Botchkov authored
Check validity to the end of the JSON in the json_length function.
-
Alexey Botchkov authored
The 'value' state should be saved to be compared against the next array item.
-
Vladislav Vaintroub authored
not just for creating new files. Use os_file_set_size() in fil_space_extend_must_retry()
-
Alexander Barkov authored
-
- 04 Oct, 2017 5 commits
-
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
MDEV-13953 mariadb-10.2.9/storage/innobase/row/row0import.cc:3602: possible cut'n'paste error ? MDEV-13955 mariadb-10.2.9/sql/log_event.cc:7671: possible wrong operator ?
-
Sergei Golubchik authored
-
Marko Mäkelä authored
-
- 03 Oct, 2017 7 commits
-
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
functions. There is no reason to export IO this functionality from server, if it can be easily implemented with CRT. Note: for the sake of compatibility, we do not use _open() on Windows, but open file with CreateFile, with FILE_SHARE_DELETE flag, so it can be renamed or deleted when open. Also atomic append flag is used.
-
Vladislav Vaintroub authored
Fixes some warnings.
-
Marko Mäkelä authored
fil_space_extend_must_retry(): If the table is being truncated, do not call fil_flush_low(). The operation is covered by the truncate log. File extension during TRUNCATE only occurs if there are many indexes on the table. With smaller innodb_page_size, the file extension occurs already with fewer indexes on the table.
-
Sergei Petrunia authored
This is error-prone and causes warnings on Windows
-
Jan Lindström authored
wrep_sst_common and wsrep_sst_xtrabackup-v2 bugfixes to read sst parameters from configs
-
Marko Mäkelä authored
The function dict_disable_redo_if_temporary() was supposed to disable redo logging for temporary tables. It was invoked unnecessarily for two read-only operations: row_undo_search_clust_to_pcur() and dict_stats_update_transient_for_index(). When a table is not temporary and not in the system tablespace, the tablespace should be flagged for MLOG_FILE_NAME logging. We do not need this overhead for temporary tables. Therefore, either mtr_t::set_log_mode() or mtr_t::set_named_space() should be invoked. dict_table_t::is_temporary(): Determine if a table is temporary. dict_table_is_temporary(): Redefined as a macro wrapper for dict_table_t::is_temporary(). dict_disable_redo_if_temporary(): Remove.
-