- 12 Mar, 2019 8 commits
-
-
Varun Gupta authored
The issue here was when we had a subquery and a window function in an expression in the select list then subquery was getting computed after window function computation. This resulted in incorrect results because the subquery was correlated and the fields in the subquery was pointing to the base table instead of the temporary table. The approach to fix this was to have an additional field in the temporary table for the subquery and to execute the subquery before window function execution. After execution the values for the subquery were stored in the temporary table and then when we needed to calcuate the expression, all we do is read the values from the temporary table for the subquery.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
recv_parse_log_recs(): Do not compare type if ptr==end_ptr (we have reached the end of the redo log parsing buffer), because it will not have been correctly initialized in that case.
-
Marko Mäkelä authored
GCC 6 and later can optimize away the memset() that is part of mem_heap_zalloc() in a placement new call. So, instead of relying on that kind of initialization, explicitly initialize the necessary fields in the constructors. que_common_t::que_common_t(): Initialize more fields in the default constructor. purge_vcol_info_t::purge_vcol_info_t(): Initialize all fields in the default constructor. purge_node_t::purge_node_t(): Initialize all necessary fields. Reference: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388 https://gcc.gnu.org/ml/gcc/2016-02/msg00207.html
-
Marko Mäkelä authored
-
Marko Mäkelä authored
row_merge_create_fts_sort_index(): Initialize dict_col_t in an unambiguous way. GCC 6 and later appear to be able to optimize away the memset() that is part of mem_heap_zalloc() in the placement new call. Let us avoid using placement new in order to ensure that the objects will actually be initialized. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388 https://gcc.gnu.org/ml/gcc/2016-02/msg00207.html While the latter reference hints that the optimization is only applicable to non-POD types (and dict_col_t does not define any member functions before 10.2), it is most consistent to use the same initialization across all versions.
-
Sergei Golubchik authored
MDEV-17070 Table corruption or Assertion `table->file->stats.records > 0 || error' or Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon actions on temporary table This was caused by a combination of factors: * MyISAM/Aria temporary tables historically never saved the state to disk (MYI/MAI), because the state never needed to persist * certain ALTER TABLE operations modify the original TABLE structure and if they fail, the original table has to be reopened to revert all changes (m_needs_reopen=1) as a result, when ALTER fails and MyISAM/Aria temp table gets reopened, it reads the stale state from the disk. As a fix, MyISAM/Aria tables now *always* write the state to disk on close, *unless* HA_EXTRA_PREPARE_FOR_DROP was done first. And the server now always does HA_EXTRA_PREPARE_FOR_DROP before dropping a temporary table.
-
Sergei Golubchik authored
-
- 11 Mar, 2019 10 commits
-
-
Alexey Botchkov authored
JSON_ARRAY and JSON_OBJECT functions with no arguments now get the connection charset. Item_func_convert_charset returns the correct is_json() flag.
-
Sergey Vojtovich authored
-
Sergey Vojtovich authored
ALTER TABLE ... ADD FOREIGN KEY may trigger assertion failure when it has LOCK=EXCLUSIVE clause or concurrent FLUSH TABLES is being executed. In both cases being altered table is marked as flushed, which forces subsequent attempt to open parent table to re-open. Which in turn is not allowed while transaction is running. Rather than opening parent table, just take appropriate MDL lock. Also removed table_already_fk_prelocked() check: MDL itself has much better methods to handle duplicate locks. E.g. the former won't acquire MDL_SHARED_NO_WRITE if it already has MDL_SHARED_READ.
-
Marko Mäkelä authored
Initialize node->trx_id before checking if a table can be skipped.
-
Marko Mäkelä authored
wait_all_purged.inc: Wait for 60 seconds instead of 30 seconds. Purge can be slow on buildbot, especially in ASAN-instrumented builds.
-
Marko Mäkelä authored
purge_node_t::in_progress: Replaces purge_node_t::done. Only present in debug builds. purge_node_t::start(): Moved from the start of row_purge_step(). purge_node_t::end(): Replaces row_purge_end(). trx_purge_attach_undo_recs(): Omit a check from non-debug builds.
-
Marko Mäkelä authored
If a table has been dropped, rebuilt, or its tablespace has been discarded or the table is corrupted, it does not make sense to look up that table again while purging old undo log records. purge_node_t::purge_node_t(): Replaces row_purge_node_create(). que_common_t::que_common_t(): Constructor. row_import_update_index_root(): Remove the constant parameter dict_locked=true, and update the table->def_trx_id in the cache. purge_node_t::unavailable_table_id: The latest unavailable table ID, to avoid future lookups. purge_node_t::def_trx_id: The latest modification of the table identified by unavailable_table_id, or TRX_ID_MAX. purge_node_t::is_skipped(): Determine if a table should be skipped. purge_node_t::skip(): Note that a table should be skipped.
-
Marko Mäkelä authored
-
Eugene Kosov authored
This can be useful: UBSAN_OPTIONS=log_path=/some/path clang users may want to increase stack size in include/my_pthread.h or enable some optimizations
-
Marko Mäkelä authored
Clean up after commit 0957d257 which introduced some disorder (unsorted or duplicated test names).
-
- 09 Mar, 2019 6 commits
-
-
Jan Lindström authored
modified: suite/galera/t/galera_autoinc_sst_mariabackup.test
-
Jan Lindström authored
remove WSREP_SST_OPT_SUFFIX_VALUE, checking [mysqld] is covered in the parse_cnf --mysqld case also in wsrep_sst_xtrabackup-v2
-
Jan Lindström authored
-
Daniel Black authored
-
Daniel Black authored
wsrep_sst: remove WSREP_SST_OPT_SUFFIX_VALUE, checking [mysqld] is covered in the parse_cnf --mysqld case
-
Jan Lindström authored
modified: mysql-test/suite/galera/disabled.def modified: mysql-test/suite/galera/r/galera_many_rows.result modified: mysql-test/suite/galera/t/galera_kill_nochanges.test new file: mysql-test/suite/galera/t/galera_many_rows.cnf modified: mysql-test/suite/galera/t/galera_many_rows.test modified: mysql-test/suite/galera/t/galera_var_dirty_reads.test modified: scripts/wsrep_sst_mariabackup.sh
-
- 08 Mar, 2019 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
galera.partition and galera.galera_binlog_stmt_autoinc regularly display mismatching values for AUTO_INCREMENT columns. galera.MW-336 often times out while waiting for something in PROCESSLIST. Also, sort the test names, remove the redundant "galera." prefix and fix typos in 2 test names.
-
Thirunarayanan Balathandayuthapani authored
- Fetch innodb_compression_level from the running server.Add the value of innodb_compression_level in backup-my.cnf file during backup phase. So that prepare can use the innodb_compression_level variable from backup-my.cnf
-
- 07 Mar, 2019 10 commits
-
-
Marko Mäkelä authored
The 10.1 changes to the test case were accidentally omitted in the merge commit 913e33e4.
-
Marko Mäkelä authored
The test case was accidentally omitted from the merge commit 913e33e4.
-
Marko Mäkelä authored
GCC does not like MY_ATTRIBUTE((nonnull)) on a reference-to-pointer parameter. clang did not flag an issue wit that.
-
Marko Mäkelä authored
Rewrite the MDEV-13818 fix to prevent heap-use-after-free. Add a test case for MDEV-18272.
-
Marko Mäkelä authored
row_merge_create_index_graph(): Relay the internal state from dict_create_index_step(). Our caller should free the index only if it was not copied, added to the cache, and freed. row_merge_create_index(): Free the index template if it was not added to the cache. This is a safer variant of the logic that was introduced in 65070bef in 10.2. prepare_inplace_alter_table_dict(): Add additional fault injection to exercise a code path where we have already added an index to the cache.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
row_mysql_handle_errors(): Correct the wrong error handling for the code DB_FOREIGN_EXCEED_MAX_CASCADE that was introduced in https://github.com/mysql/mysql-server/commit/c0923d396aef46799883390e9dcf7bbf173e4a03 commit 35f5429e Author: Jimmy Yang <jimmy.yang@oracle.com> Date: Wed Oct 6 06:55:34 2010 -0700 Manual port Bug #Bug #54582 "stack overflow when opening many tables linked with foreign keys at once" from mysql-5.1-security to mysql-5.5-security again. rb://391 approved by Heikki No known test case exists for repeating the bug before MariaDB 10.2. The scenario should be that DB_FOREIGN_EXCEED_MAX_CASCADE is returned, then InnoDB wrongly skips the rollback to the start of the current row operation, and finally the SQL layer commits the transaction. Normally the SQL layer would roll back either the entire transaction or to the start of the statement. In the faulty scenario, InnoDB would leave the transaction in an inconsistent state, and the SQL layer could commit the transaction.
-
Galina Shalygina authored
using Item_cond This bug is similar to the bug MDEV-16765. It appears because of the wrong pushdown into HAVING clause while this pushdown shouldn't be made at all. This happens because function that checks if Item_cond can be pushed always returns that it can be pushed. To fix it new method Item_cond::excl_dep_on_table() was added.
-
- 06 Mar, 2019 3 commits
-
-
Sergei Golubchik authored
This fixes main.mysql_client_test, main.mysql_client_test_comp, main.mysql_client_test_nonblock failures in ASAN_OPTIONS="abort_on_error=1" runs
-
Sergei Golubchik authored
don't initialize mysql structure before it actually becomes needed. This fixes main.mysqladmin failures in ASAN_OPTIONS="abort_on_error=1" runs
-
Sergei Golubchik authored
free already allocated indexes if row_merge_create_index() fails This fixes innodb.alter_crash failure in ASAN_OPTIONS="abort_on_error=1" runs
-