- 13 Feb, 2019 11 commits
-
-
Marko Mäkelä authored
This was developed by Aleksey Midenkov based on my design. In the original InnoDB storage format (that was retroactively named ROW_FORMAT=REDUNDANT in MySQL 5.0.3), the length of each index field is stored explicitly. Because of this, we can and now will allow instant conversion from VARCHAR to CHAR or VARBINARY to BINARY of equal or greater size, as well as instant conversion of TINYINT to SMALLINT to MEDIUMINT to INT to BIGINT (while not changing between signed and unsigned). Theoretically, we could allow changing from an unsigned integer to a bigger unsigned integer, as well as changing CHAR to VARCHAR, but that would require additional metadata and conversions whenever reading old records. Field_str::is_equal(), Field_varstring::is_equal(), Field_num::is_equal(): Return the new result IS_EQUAL_PACK_LENGTH_EXT if the table advertises HA_EXTENDED_TYPES_CONVERSION capability and we are considering the above-mentioned conversions. ALTER_COLUMN_EQUAL_PACK_LENGTH_EXT: A new ALTER TABLE flag, similar to ALTER_COLUMN_EQUAL_PACK_LENGTH but requiring conversions when reading the data. The Field::is_equal() result IS_EQUAL_PACK_LENGTH_EXT will map to this flag. dtype_get_fixed_size_low(): For BINARY, CHAR and integer columns in ROW_FORMAT=REDUNDANT, return 0 (variable length) from now on. dtype_get_sql_null_size(): Keep returning the current size for BINARY, CHAR and integer columns, so that in ROW_FORMAT=REDUNDANT it will remain possible to update in place between NULL and NOT NULL values. btr_index_rec_validate(): Relax a CHECK TABLE length check for ROW_FORMAT=REDUNDANT tables. btr_cur_instant_init_low(): No longer trust fixed_len for ROW_FORMAT=REDUNDANT tables. We cannot rely on fixed_len anymore because the record can have shorter length from before instant extension. Note that importing such tablespace into earlier MariaDB versions produces ER_TABLE_SCHEMA_MISMATCH when using a .cfg file.
-
Marko Mäkelä authored
In the original InnoDB storage format (which was retroactively named ROW_FORMAT=REDUNDANT in MySQL 5.0.3), the length of each index field is stored explicitly. Thus, we can and from now on will allow arbitrary extension of VARBINARY and VARCHAR columns when the table is in ROW_FORMAT=REDUNDANT. ha_innobase::open(): Advertise a new HA_EXTENDED_TYPES_CONVERSION capability for ROW_FORMAT=REDUNDANT tables. Field_varstring::is_equal(): If the HA_EXTENDED_TYPES_CONVERSION capability is advertised for the table, return IS_EQUAL_PACK_LENGTH for any length extension.
-
Marko Mäkelä authored
For up to 127 bytes length, InnoDB would use 1 byte for length, and that byte would always be less than 128. If the maximum length is longer than 255 bytes, InnoDB would use a variable-length encoding for the length, using 1 byte for lengths up to 127 bytes, and 2 bytes for longer lengths. Thus, 1-byte lengths are always compatible when the maximum size changes from less than 128 bytes to anything longer. Field_varstring::is_equal(): Return IS_EQUAL_PACK_LENGTH also when converting from VARCHAR less than 128 bytes to any longer VARCHAR.
-
Marko Mäkelä authored
-
Jan Lindström authored
10.4 make wsrep_load_data_splitting use streaming replication
-
Jan Lindström authored
Variable wsrep_load_data_splitting is deprecated and should be off by default.
-
Vladislav Vaintroub authored
-
Jan Lindström authored
cmake-wsrep: friendly error message about missing wsrep_api.h
-
Varun Gupta authored
This task involves the implementation for the optimizer trace. This feature produces a trace for any SELECT/UPDATE/DELETE/, which contains information about decisions taken by the optimizer during the optimization phase (choice of table access method, various costs, transformations, etc). This feature would help to tell why some decisions were taken by the optimizer and why some were rejected. Trace is session-local, controlled by the @@optimizer_trace variable. To enable optimizer trace we need to write: set @@optimizer_trace variable= 'enabled=on'; To display the trace one can run: SELECT trace FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; This task also involves: MDEV-18489: Limit the memory used by the optimizer trace introduces a switch optimizer_trace_max_mem_size which limits the memory used by the optimizer trace. This was implemented by Sergei Petrunia.
-
Varun Gupta authored
classes for Json_writer_object and Json_writer_array. These classes will be used for the implementation of the optimizer trace.
-
Daniel Black authored
Without this commit the error message is: $ cmake . -DWITH_WSREP=ON -- Running cmake version 3.12.1 -- MariaDB 10.4.3 CMake Error at cmake/wsrep.cmake:36 (FILE): FILE STRINGS file ".../mariadb-server-10.4/wsrep-lib/wsrep-API/v26/wsrep_api.h" cannot be read. Call Stack (most recent call first): CMakeLists.txt:147 (INCLUDE) Having 'git config cmake.update-submodules yes' nicely updates the build without error. $ cmake . -DWITH_WSREP=ON -- Running cmake version 3.12.1 -- MariaDB 10.4.3 Submodule path 'wsrep-lib': checked out 'e7d72ae7f6a6995a21d743389426a963429a1fff' Submodule path 'wsrep-lib/wsrep-API/v26': checked out '75a5f452f2ba07b0f4a3a9a94825fccc71b27398'
-
- 12 Feb, 2019 10 commits
-
-
Sergey Vojtovich authored
Remove unused key_thread_bootstrap. No more global bootstrap_error: it is return value of bootstrap() instead.
-
Sergei Golubchik authored
Optionally, restore the default root authentication, that is mysql_native_password USING 'invalid' OR unix_socket
-
Sergei Golubchik authored
recognize new unix_socket protected accounts, and don't scare the user into setting the password for them
-
Sergei Golubchik authored
Change the default authentication for root@localhost to IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket which provides secure passwordless login, while still allowing SET PASSWORD to work as expected. Also create a second all-privilege account for the user that owns datadir (and thus has full access to the data anyway). Compile unix_socket plugin statically into the server.
-
Sergei Golubchik authored
-
Jan Lindström authored
cmake/wsrep: allow disabling -DWITH_WSREP=OFF
-
Teemu Ollakka authored
-
Teemu Ollakka authored
If wsrep_load_data_splitting is configured, change streaming replication parameters internally to match the original behavior, i.e. replicate on every 10000 rows. After load data is over, restore original streaming replication settings. Removed redundant wsrep_tc_log_commit().
-
Alexander Barkov authored
-
Daniel Black authored
-
- 11 Feb, 2019 6 commits
-
-
Marko Mäkelä authored
-
Jan Lindström authored
warning.
-
Marko Mäkelä authored
When importing a tablespace, we must initialize dummy DEFAULT NULL values for any instantly added columns in order to avoid a debug assertion failure when PageConverter::update_records() invokes rec_get_offsets(). Finally, when the operation completes, we must evict and reload the table definition, so that the correct default values for instantly added columns will be loaded. ha_innobase::discard_or_import_tablespace(): On successful IMPORT TABLESPACE, evict and reload the table definition, so that btr_cur_instant_init() will load the correct metadata. PageConverter::update_index_page(): Fill in dummy DEFAULT NULL values for instantly added columns. These will be replaced upon the completion of the operation by evicting and reloading the metadata. row_discard_tablespace(): Invoke dict_table_t::remove_instant(). After DISCARD TABLESPACE, the table is no longer in "instant ALTER" format, because there is no data file attached.
-
Jan Lindström authored
MDEV-18178, mariabackup script timestamp change, galera suite fixed & re-recorded tests
-
Jan Lindström authored
Fixed use of uninitialized value in wsrep_TOI_end()
-
Teemu Ollakka authored
The if/else was a remnant from error voting code which was not included in the release.
-
- 08 Feb, 2019 8 commits
-
-
Marko Mäkelä authored
This is only a placeholder that allows an implementation later during the development of MariaDB, so that downgrade to an earlier version (with this code) will be possible. We want to be able to zero out freed pages to reduce write amplification, and to scrub old data. Zeroing out the pages is optional, not mandatory for correctness. After all, the MLOG_INIT_FREE_PAGE record can only be emitted for pages that are marked free in the allocation bitmap page.
-
Marko Mäkelä authored
Use ibuf_bitmap_page_init() only during recovery. fsp_fill_free_list(): Initialize the FIL_PAGE_TYPE using MLOG_2BYTES. The page contents will already have been zeroed out by MLOG_INIT_FILE_PAGE2. ibuf_bitmap_init_apply(): Replaces ibuf_parse_bitmap_init().
-
Marko Mäkelä authored
rec_init_offsets(): Relax a debug assertion that is too strict during the execution of btr_cur_instant_init_low().
-
Teemu Ollakka authored
-
mkaruza authored
Re-recorded: galera.galera_gcache_recover_manytrx Fixed: galera_3nodes.galera_evs_suspect_timeout
-
mkaruza authored
* Donor node will now provide binlog-index argument to wsrep_sst_rsync script if binlog is used. * Write correct path and binlog file names into joiner binlog-index file
-
mkaruza authored
During parallel execution mariabackup script can fail when trying to create archive because of non unique name. Extending archive timestamp with nanosecond.
-
Jan Lindström authored
Fix for failures on galera.galera_sst_mysqldump
-
- 07 Feb, 2019 5 commits
-
-
mkaruza authored
Test galera_sst_mysqldump could fail occasionally due certification failure. Enforcing stricter causality checks by removing wsrep_sync_wait=0 from test configuration.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
MySQL 5.7 introduced the class page_size_t and increased the size of buffer pool page descriptors by introducing this object to them. Maybe the intention of this exercise was to prepare for a future where the buffer pool could accommodate multiple page sizes. But that future never arrived, not even in MySQL 8.0. It is much easier to manage a pool of a single page size, and typically all storage devices of an InnoDB instance benefit from using the same page size. Let us remove page_size_t from MariaDB Server. This will make it easier to remove support for ROW_FORMAT=COMPRESSED (or make it a compile-time option) in the future, just by removing various occurrences of zip_size.
-
Eugene Kosov authored
instant_alter_column_possible(): allow non-rebuilding operations for ROW_FORMAT=COMPRESSED
-
Jan Lindström authored
Updated wsrep-lib to galera cache encryption implementation
-