- 09 Feb, 2018 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
This MySQL 5.5 test innodb_zip.innodb_prefix_index_lifted was renamed in MySQL 5.7. In commit 2e814d47 the test was inadvertently removed, instead of being renamed. The absence of this test caused a regression in MariaDB 10.2: MDEV-15257 Invalid CREATE INDEX fails to report error correctly
-
Marko Mäkelä authored
page_zip_write_rec(): Do not attempt to access a non-existing DB_TRX_ID column when writing a record to a non-leaf page.
-
- 08 Feb, 2018 10 commits
-
-
Igor Babaev authored
cte_nonrecursive.test with --embedded. This also fixed some problems for embedded CTEs. Adjusted test results accordingly.
-
Marko Mäkelä authored
-
Alexander Barkov authored
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
-
Marko Mäkelä authored
Rollback attempted to dereference DB_ROLL_PTR=0, which cannot possibly be a valid undo log pointer. A safe canonical value would be roll_ptr_t(1) << ROLL_PTR_INSERT_FLAG_POS which is what was chosen in MDEV-12288. This bug was reproduced in 10.3 only. Potentially, the problem could have been introduced by MDEV-11415, which suppresses undo logging for ALGORITHM=COPY operations. In those operations, we should actually have written the safe value of DB_ROLL_PTR instead of writing 0. However, the test in commit 5421e3ae demonstrates that access to the rebuilt table by earlier-started transactions should actually have been refused with ER_TABLE_DEF_CHANGED. btr_cur_ins_lock_and_undo(): When undo logging is disabled, use the safe value of DB_ROLL_PTR. btr_cur_optimistic_insert(): Validate the DB_TRX_ID,DB_ROLL_PTR before inserting into a clustered index leaf page. ins_node_t::sys_buf[]: Replaces row_id_buf and trx_id_buf and some heap usage. row_ins_alloc_sys_fields(): Initialize ins_node_t::sys_buf[]. trx_undo_page_report_modify(): Assert that the DB_ROLL_PTR is not 0. trx_undo_get_undo_rec_low(): Assert that the roll_ptr is valid before trying to dereference it. dict_index_t::is_primary(): Check if the index is the primary key.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Before killing the server, we have to FLUSH TABLES in order to prevent the corruption of any MyISAM system tables.
-
Marko Mäkelä authored
PageConverter::adjust_cluster_record(): Instead of writing the invalid value DB_ROLL_PTR=0, write a value that indicates a fresh insert, that is, prevents the DB_ROLL_PTR from being dereferenced in any circumstances. It can be argued that IMPORT TABLESPACE should actually update the dict_index_t::trx_id to prevent older transactions from accessing the table, similar to what I did on table rebuild in MySQL 5.6.6 in https://github.com/mysql/mysql-server/commit/03f81a55f221095d397c375afe8a10c8038da339
-
- 07 Feb, 2018 11 commits
-
-
Oleksandr Byelkin authored
Use unsigned comparison.
-
Monty authored
-
Vicențiu Ciorbaru authored
-
Vicențiu Ciorbaru authored
-
Daniel Black authored
If the CRYPTO_set_mem_functions fails just return success from check_openssl_compatibility. The only case where CRYPTO_set_mem_functions fails is the allow_customize==0 (aka FIPS mode). The check_openssl_compatibility isn't able to complete unless this function returns success. ref: https://github.com/openssl/openssl/blob/OpenSSL_1_1_0g/crypto/mem.c#L34
-
Marko Mäkelä authored
MDEV-14222 Unnecessary 'cascade' memory allocation for every updated row when there is no FOREIGN KEY This reverts the MySQL 5.7.2 change https://github.com/mysql/mysql-server/commit/377774689bf6a16af74182753fe950d514c2c6dd which introduced these problems. MariaDB 10.2.2 inherited these problems in commit 2e814d47. The FOREIGN KEY CASCADE and SET NULL operations implemented as procedural recursion are consuming more than 8 kilobytes of stack (9 stack frames) per iteration in a non-debug GNU/Linux AMD64 build. This is why we need to limit the maximum recursion depth to 15 steps instead of the 255 that it used to be in MySQL 5.7 and MariaDB 10.2. A corresponding change was made in MySQL 5.7.21 in https://github.com/mysql/mysql-server/commit/7b26dc98a624d5cdf79cd5eee455cb03e3bccb5a
-
Marko Mäkelä authored
row_upd_store_v_row(): Declare static row_upd_clust_rec_by_insert(), row_upd_del_mark_clust_rec(): Pass the parameter 'foreign' only #ifdef WITH_WSREP
-
Marko Mäkelä authored
This corruption was introduced in MDEV-13331. It would have been caught by the MySQL 5.7 test innodb.update-cascade which MariaDB was missing until now. row_ins_check_foreign_constraint(): Never replace err == DB_LOCK_WAIT with other values than DB_LOCK_WAIT_TIMEOUT.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
srv_mbr_print(): Remove. Geometry fields are already being output in raw form, and we do not need bogus MBR output for non-spatial indexes.
-
Marko Mäkelä authored
row_ins_cascade_calc_update_vec(): Remove the output parameter fts_col_affected, and instead return whether any fulltext index is affected by the cascade operation. row_ins_foreign_check_on_constraint(): Narrow the scope of some variables. ib_dec_in_dtor: Remove.
-
- 06 Feb, 2018 15 commits
-
-
Igor Babaev authored
If setting user variable was used in the specification of a recursive CTE then Item_func_set_user_var::fix_fields() went into an infinite loop.
-
Daniel Bartholomew authored
-
Igor Babaev authored
does not return error Corrected the code of st_select_lex::find_table_def_in_with_clauses() for a proper identification of CTE references used in embedded CTEs.
-
Igor Babaev authored
When identifying a table name the following should be taken into account: a CTE name cannot be qualified with a database name, otherwise the table name is considered as the name of a non-CTE table.
-
Marko Mäkelä authored
dict_tf_is_valid(): Allow no-rollback tables in ROW_FORMAT=REDUNDANT.
-
Sergei Golubchik authored
replace with awk (yuck!), avoiding gensub (which wasn't recognized)
-
Sergei Golubchik authored
all mmap-related functions take size_t lengh. mmaped_length was casted to size_t *every single time*
-
Sergei Golubchik authored
conversion from 'my_off_t' to '::size_t', possible loss of data
-
Sergei Golubchik authored
get_rec_bits() must return uchar, it's result is often assigned to uchar. And len is always less than 8.
-
Sergei Golubchik authored
this fixes the crash of main.fulltest
-
Sergei Golubchik authored
because dbug_print_item() can be invoked any time in gdb, also before fix_fields. this fixes a crash of main.win in debug builds
-
Sergei Golubchik authored
it was set before big if() that could decide not to merge and go with materialization. this fixes a crash in main.view test
-
Sergei Golubchik authored
-
Sergei Golubchik authored
in gcc `-Wno-unsupported-something` will not be an error or even a warning, so cmake will think the flag is supported. But if there's any other warning during compilation, for any reason, unknown option will be a warning too. Or an error when -Werror, even if that "other warning" would not be an error on itself. So we need to detect whether `-Wno-unsupported-something` is *really* supported. Luckily, `-Wunsupported-something` will always fail with an error. So, whenever there's a need to detect if -Wno-something is supported, test -Wsomething instead.
-
Sergei Golubchik authored
-
- 05 Feb, 2018 1 commit
-
-
Jan Lindström authored
Problem was that wrong error message was returned when insert returned FK-error and there was no duplicate key to process. row_ins If error from insert was DB_NO_REFERENCED_ROW and there was no duplicate key we should ignore ON DUPLICATE KEY UPDATE and return original error message.
-