- 13 Dec, 2018 16 commits
-
-
Aleksey Midenkov authored
-
Marko Mäkelä authored
dict_table_t::init_instant(): Initialize instant->non_pk_col_map[]. Refactored from dict_table_t::instant_column(). Also, assert that the n_nullable for the clustered index is initialized correctly.
-
Marko Mäkelä authored
dict_col_t::same_format(): Check if two columns have the same data type and compatible length.
-
Marko Mäkelä authored
Allow instant changes of columns in ROW_FORMAT=REDUNDANT from NOT NULL to NULL. Later, this may be implemented for ROW_FORMAT=COMPACT or DYNAMIC, but in that case any indexes on the table must be rebuilt. dict_table_t::prepare_instant(): Add some debug assertions, and relax a debug assertion so that the number of fields is allowed not to change. dict_index_t::instant_add_field(): Relax a debug assertion, allowing a column to change from NOT NULL to NULL. dict_table_t::instant_column(): Add debug assertions. instant_alter_column_possible(): Allow ALTER_COLUMN_NULLABLE when applicable. innodb_insert_sys_columns(): Add the parameter bool update=false to run UPDATE instead of INSERT. innobase_instant_add_col(): Remove; let the only caller invoke innodb_insert_sys_columns() directly. innobase_instant_try(): Update the SYS_COLUMNS record if the column is changed. Only convert the table to the instant ALTER TABLE format if necessary. For ALTER_COLUMN_NULLABLE in ROW_FORMAT=REDUNDANT, there is no data format change.
-
Marko Mäkelä authored
Remove the bug-compatible crc32 algorithm variant that was added to allow an upgrade from data files from big-endian systems where innodb_checksum_algorithm=crc32 was used on MySQL 5.6 or MariaDB 10.0 or 10.1. Affected users should be able to recompute page checksums using innochecksum.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
With innodb_default_row_format=redundant, InnoDB would crash when using table options that are incompatible with ROW_FORMAT=REDUNDANT. create_table_info_t::m_default_row_format: Cache the value of innodb_default_row_format. create_table_info_t::check_table_options(): Validate ROW_TYPE_DEFAULT with m_default_row_format. create_table_info_t::innobase_table_flags(): Use the cached m_default_row_format. create_table_info_t: Never read m_form->s->row_type. Use m_create_info->row_type instead. dict_tf_set(): Never set invalid flags for ROW_FORMAT=REDUNDANT. ha_innobase::truncate(): Set info.row_type based on the ROW_FORMAT of the current table.
-
Marko Mäkelä authored
In MySQL 5.7, it was noticed that files are not portable between big-endian and little-endian processor architectures (such as SPARC and x86), because the original implementation of innodb_checksum_algorithm=crc32 was not byte order agnostic. A byte order agnostic implementation of innodb_checksum_algorithm=crc32 was only added to MySQL 5.7, not backported to 5.6. Consequently, MariaDB Server versions 10.0 and 10.1 only contain the CRC-32C implementation that works incorrectly on big-endian architectures, and MariaDB Server 10.2.2 got the byte-order agnostic CRC-32C implementation from MySQL 5.7. MySQL 5.7 introduced a "legacy crc32" variant that is functionally equivalent to the big-endian version of the original crc32 implementation. Thanks to this variant, old data files can be transferred from big-endian systems to newer versions. Introducing new variants of checksum algorithms (without introducing new names for them, or something on the pages themselves to identify the algorithm) generally is a bad idea, because each checksum algorithm is like a lottery ticket. The more algorithms you try, the more likely it will be for the checksum to match on a corrupted page. So, essentially MySQL 5.7 weakened innodb_checksum_algorithm=crc32, and MariaDB 10.2.2 inherited this weakening. We introduce a build option that together with MDEV-17957 makes innodb_checksum_algorithm=strict_crc32 strict again by only allowing one variant of the checksum to match. WITH_INNODB_BUG_ENDIAN_CRC32: A new cmake option for enabling the bug-compatible "legacy crc32" checksum. This is only enabled on big-endian systems by default, to facilitate an upgrade from MariaDB 10.0 or 10.1. Checked by #ifdef INNODB_BUG_ENDIAN_CRC32. ut_crc32_byte_by_byte: Remove (unused function). legacy_big_endian_checksum: Remove. This variable seems to have unnecessarily complicated the logic. When the weakening is enabled, we must always fall back to the buggy checksum. buf_page_check_crc32(): A helper function to compute one or two CRC-32C variants.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Also, apply the MDEV-17957 changes to encrypted page checksums, and remove error message output from the checksum function, because these messages would be useless noise when mariabackup is retrying reads of corrupted-looking pages, and not that useful during normal server operation either. The error messages in fil_space_verify_crypt_checksum() should be refactored separately.
-
Alexander Barkov authored
-
Marko Mäkelä authored
This is a backport of a part of commit 18455ec3 from 10.1.
-
Marko Mäkelä authored
-
Thirunarayanan Balathandayuthapani authored
Problem: Innodb_checksum_algorithm checks for all checksum algorithm to validate the page checksum even though the algorithm is specified as strict_crc32, strict_innodb, strict_none. Fix: Remove the checks for all checksum algorithm to validate the page checksum if the algo is specified as strict_* values.
-
Varun Gupta authored
-
- 12 Dec, 2018 24 commits
-
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The Microsoft compiler only allows function attributes before the function signature, not after it.
-
Sergei Golubchik authored
-
Sergei Golubchik authored
1. don't run full mysql_upgrade on every server restart, use --version-check to do it only once 2. fix syslog tag name in the postinst script, don't pretend mysqld_safe generated all these messages. Auto-detect the version to simplify maintenance
-
Sergei Golubchik authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
ha_innobase::truncate(): Because CREATE TEMPORARY TABLE allows invalid table options when innodb_file_per_table=1, do allow them also in TRUNCATE for temporary tables.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
This is fixing a regression that was introduced in MDEV-15562 commit 0e5a4ac2. On rollback of UPDATE or DELETE of a ROW_FORMAT=COMPRESSED table, page_zip_write_trx_id_and_roll_ptr() was accessing offsets=offsets_ after offsets_ went out of scope.
-
Marko Mäkelä authored
-
Jiaye Wu authored
Current implementation is conflicting. If UNICODE is defined, FormatMessage() will be FormatMessageW(), and variable win_errormsg with type char can not be passed to it, which should be changed to TCHAR instead. Since we don't use UNICODE here, we can use FormatMessageA() directly to avoid conversion error. ``` my_global.h(1092): error C2664: 'DWORD FormatMessageW(D WORD,LPCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list *)' : cannot convert argument 5 from 'char [2048]' to 'LPWSTR' ```
-
Marko Mäkelä authored
References to global symbols prevent InnoDB from being built as a dynamic plugin on Windows. Refer to CHARSET_INFO::number, because that is what InnoDB is already persistently storing in its data dictionary.
-
Marko Mäkelä authored
btr_node_ptr_max_size(): Treat CHAR(0) from SQL as a special case. The InnoDB internal SQL parser maps the type "CHAR" to DATA_VARCHAR, but MariaDB does allow CHAR(0) with an empty value, and does enforce the length limitation.
-
Sergei Golubchik authored
keyinfo->name is a LEX_CSTRING also, fix the location comment (that applied to ext_key_part_map)
-
Marko Mäkelä authored
btr_cur_pessimistic_insert(): Convert the metadata field of the metadata record into BLOB before inserting, just like btr_cur_optimistic_insert() does.
-
Marko Mäkelä authored
-
Alexander Barkov authored
MDEV-17968 Error 174 "Fatal error during initialization of handler" from storage engine Aria upon DELETE from partitioned table The correct title is: MDEV-17972 Assertion `is_valid_value_slow()' failed in Datetime::Datetime
-
Alexander Barkov authored
MDEV-17968 Error 174 "Fatal error during initialization of handler" from storage engine Aria upon DELETE from partitioned table
-
Sergei Golubchik authored
-
Marko Mäkelä authored
-
Alexander Barkov authored
--echo # MDEV-17979 Assertion `0' failed in Item::val_native upon SELECT with timestamp, NULLIF, GROUP BY --echo #
-