- 07 Apr, 2019 2 commits
-
-
Marko Mäkelä authored
This is a follow-up to MDEV-18733. As part of that fix, we made dict_check_sys_tables() skip tables that would be dropped by row_mysql_drop_garbage_tables(). DICT_ERR_IGNORE_DROP: A new mode where the file should not be attempted to be opened. dict_load_tablespace(): Do not try to load the tablespace if DICT_ERR_IGNORE_DROP has been specified. row_mysql_drop_garbage_tables(): Pass the DICT_ERR_IGNORE_DROP mode. fil_space_for_table_exists_in_mem(): Remove a parameter. The only caller that passed print_error_if_does_not_exist=true was row_drop_single_table_tablespace().
-
Marko Mäkelä authored
-
- 06 Apr, 2019 9 commits
-
-
Marko Mäkelä authored
The recv_sys data structures are accessed not only from the thread that executes InnoDB plugin initialization, but also from the InnoDB I/O threads, which can invoke recv_recover_page(). Assert that sufficient concurrency control is in place. Some code was accessing recv_sys data structures without holding recv_sys->mutex. recv_recover_page(bpage): Refactor the call from buf_page_io_complete() into a separate function that performs necessary steps. The main thread was unnecessarily releasing and reacquiring recv_sys->mutex. recv_recover_page(block,mtr,recv_addr): Pass more parameters from the caller. Avoid redundant lookups and computations. Eliminate some redundant variables. recv_get_fil_addr_struct(): Assert that recv_sys->mutex is being held. That was not always the case! recv_scan_log_recs(): Acquire recv_sys->mutex for the whole duration of the function. (While we are scanning and buffering redo log records, no pages can be read in.) recv_read_in_area(): Properly protect access with recv_sys->mutex. recv_apply_hashed_log_recs(): Check recv_addr->state only once, and continuously hold recv_sys->mutex. The mutex will be released and reacquired inside recv_recover_page() and recv_read_in_area(), allowing concurrent processing by buf_page_io_complete() in I/O threads.
-
Marko Mäkelä authored
The record MLOG_INDEX_LOAD is supposed to be written to indicate that some page modifications bypassed redo logging, and that redo logging is now re-enabled. It was not written for fulltext indexes during ALTER TABLE. row_merge_write_redo(): Declare globally. Assert that the index is neither a spatial nor fulltext index. recv_mlog_index_load(): Observe a MLOG_INDEX_LOAD operation. recv_parse_log_recs(): Handle MLOG_INDEX_LOAD also in multi-record mini-transactions. Because of this omission, we should keep writing MLOG_INDEX_LOAD in single-record mini-transactions, because older versions of Mariabackup would fail. row_fts_merge_insert(): Write MLOG_INDEX_LOAD for the auxiliary tables of fulltext indexes.
-
Marko Mäkelä authored
The record MLOG_ZIP_PAGE_COMPRESS is similar to MLOG_INIT_FILE_PAGE2 that it contains all the information needed to initialize the page. Like for the other record, do initialize the entire page on recovery.
-
Marko Mäkelä authored
The page_size argument to buf_page_get_gen() only matters when the page is going to be loaded into the buffer pool. Allow callers to pass a dummy parameter when using BUF_GET_IF_IN_POOL (which would return NULL if the block is not in the buffer pool).
-
Marko Mäkelä authored
btr_root_get(): Ignore the root->page.encrypted flag. The purpose of this flag is questionable since commit 8c43f963. btr_validate_index(): Avoid crash if btr_root_get() returns NULL.
-
Marko Mäkelä authored
btr_free_root(): Add the parameter bool invalidate. btr_free_root_invalidate(): Remove.
-
Marko Mäkelä authored
fsp_apply_init_file_page(): Renamed from fsp_init_file_page_low(). fsp_parse_init_file_page(): Remove. The redo log record has no parameters.
-
Marko Mäkelä authored
Normally, InnoDB is not in the process of executing crash recovery. Provide a hint to the compiler that the recovery-related code paths are rarely executed.
-
Marko Mäkelä authored
-
- 05 Apr, 2019 1 commit
-
-
Igor Babaev authored
With INFORMATION_SCHEMA set as the default database the check that a table referred in the processed query is defined in INORMATION_SCHEMA must be postponed until all CTE names can be identified.
-
- 04 Apr, 2019 3 commits
-
-
Marko Mäkelä authored
-
Monty authored
Fixed by adding more rows to a table Other things: - Speed up index_merge tests 20% by adding begin/commit around loops that generated rows.
-
Marko Mäkelä authored
-
- 03 Apr, 2019 12 commits
-
-
Marko Mäkelä authored
Normally, InnoDB will create temporary table names of the form #sql-ibNNNN, and with innodb_safe_truncate=OFF, #sql-ibNNNN-MMMM.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
If InnoDB crash recovery was needed, the InnoDB function srv_start() would invoke extra validation, reading something from every InnoDB data file. This should be unnecessary now that MDEV-14717 made RENAME operations crash-safe inside InnoDB (which can be disabled in MariaDB 10.2 by setting innodb_safe_truncate=OFF). dict_check_sys_tables(): Skip tables that would be dropped by row_mysql_drop_garbage_tables(). Perform extra validation only if innodb_safe_truncate=OFF, innodb_force_recovery=0 and crash recovery was needed. dict_load_table_one(): Validate the root page of the table. In this way, we can deny access to corrupted or mismatching tables not only after crash recovery, but also after a clean shutdown.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
For some reason, GCC 8 did not issue warnings for all such comparisons.
-
Marko Mäkelä authored
row_is_mysql_tmp_table_name(): Replaced with dict_table_t::is_temporary_name() and table_name_t::is_temporary(). table_name_t: Add constructors.
-
Marko Mäkelä authored
In MariaDB, InnoDB tables will always contain DATA_N_SYS_COLS = 3 columns, 2 or 3 of which are present in the clustered index. We remove the predicate that was added in MySQL 5.7 as part of WL#7682.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
InnoDB and XtraDB had redundant assertions for checking that function parameters that were declared as nonnull were not NULL.
-
- 02 Apr, 2019 9 commits
-
-
Sergei Golubchik authored
it was supposed to be `*(p-1)` not `*p-1` (the crash happens if `*p==0`)
-
Sergei Golubchik authored
in particular, don't search for libjemalloc.a, which is only needed for tokudb's ftcxx tests, when the tests aren't going to be built.
-
Sergei Golubchik authored
`zypper install krb5-devel` installs executables outside of $PATH. It also installs /etc/profile.d/krb5.sh that is sourced by a new shell to add the new location to the $PATH. But this doesn't affect the current shell. Now decent Linux distros remind the user to run `. /etc/profile` to reload paths in such a case. SUSE doesn't and for a good reason - it doesn't work there. Because SUSE sets PROFILEREAD=true in the environment and /etc/profile does not do anything. By this point, one should not really expect `unset PROFILEREAD` to help, and it does not - PROFILEREAD is readonly, and cannot be unset. Apparently SUSE really *really* wants you to re-login between installing MariaDB build dependencies and actually running the rpmbuild. Which we cannot do it buildbot. And it would look very user-un-friendly in the Build Instructions section of the manual. So, we work around it - by adding SUSE krb5 path to the search list. THIS IS SUSEEEEEE!!!
-
Sergei Golubchik authored
Filter out most common file types from automatic dependency collection. This makes `make package` in centos73 VM three times faster
-
Marko Mäkelä authored
MariaDB does support InnoDB tables with no stored columns. (They are necessarily empty.)
-
Marko Mäkelä authored
-
Marko Mäkelä authored
On Microsoft Windows, InnoDB writes the path separator \ to the redo log file, while on all other platforms, / is being used. fil_name_parse(): Normalize the parsed path separators to the native format. This allows backups or data sets to be portable between Windows and other systems.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
This is follow-up for commit 619d22dd to fix the cmake -DWITH_EMBEDDED_SERVER build.
-
- 01 Apr, 2019 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
MariaDB before MDEV-5800 in version 10.2.2 did not support indexed virtual columns. Non-persistent virtual columns were hidden from storage engines. Only starting with MDEV-5800, InnoDB would create internal metadata on virtual columns. Similar to what was done in MDEV-18084, MDEV-18090, MDEV-18960, we adjust one more code path for the old tables. innobase_build_col_map(): Allocate space for virtual columns in col_map[] but leave the entries at ULINT_UNDEFINED, noting that the virtual columns were missing before the table was being rebuilt.
-
Marko Mäkelä authored
InnoDB includes 3 parsers, which use 3 lexical analyzers that are generated with flex. Flex versions before 2.6 emitted the keyword "register", which is deprecated in C++17. The lexical analyzers were regenerated as follows: for s in storage/innobase storage/xtradb do (cd "$s"/pars; ./make_flex.sh) touch "$s"/fts/*.l make -C "$s"/fts -f Makefile.query done
-
Sergei Petrunia authored
-