- 29 Jun, 2017 8 commits
-
-
Marko Mäkelä authored
os_thread_active(): Remove. srv_shutdown_all_bg_threads(): Assert that high-level threads have already exited. Do not sleep if os_thread_count=0.
-
Sachin Setiya authored
-
Sachin Setiya authored
Problem:- While running tests from wsrep suite , we include file have_wsrep.inc or have_wsrep_enabled.inc , these file test wsrep plugin is ACTIVE or 'wsrep_on' is ON. These select does not ensure that whether 'wsrep_ready' is ON , So that we can process SQL queries. So sometimes we will get error like this mysqltest: At line 81: query 'call mtr.check_testcase()' failed: 1047: WSREP has not yet prepared node for application use not ok Solution:- In file have_wsrep.inc and have_wsrep_enabled.inc we will include wait_until_ready.inc , which will wait untill 'wsrep_on' is on
-
Daniel Black authored
18a2b0a1 wasn't sufficient. The path needed to be set so ccache wasn't picked up.
-
Igor Babaev authored
The fix was in the call the open_normal_and_derived_tables() from the function mysql_test_select() and it was similar to those from the patch for mdev-13107. Added explicit PREPARE statements that failed in --ps-protocol.
-
Daniel Black authored
-
Daniel Black authored
Revert "travis: allowed_failures MYSQL_TEST_SUITES=plugins (MDEV-13002)" This reverts commit c4cbc7a8.
-
Daniel Black authored
-
- 28 Jun, 2017 5 commits
-
-
Igor Babaev authored
The problems were in the code of sql_show.cc. There the tables could be opened in such a way that mysql_derived_init() never worked for CTE tables. As a result they were not marked as derived and mysql_handle_derived() were not called for derived tables used in their specifications.
-
Vicențiu Ciorbaru authored
The "is null" function performs one operation which no other Item_func does, which is to update used tables during fix_length_and_dec(). This however can not be performed before window functions have had a chance to resolve their order by and partition by definitions, which happens after the initial setup_fields call. Consequently, do not call Item_func_isnull update_used_tables during fix_length_and_dec(). There was another issue detected once the crash was resolved. Because window functions did not implement is_null() method, we would end up returning bad results for "is null" and "is not null" functions. Implemented is_null() method for Item_windowfunc.
-
Vicențiu Ciorbaru authored
During statement preparation st_order::item gets set to a value in ref_ptr_array. During statement execution we were overriding that value, causing subsequent checks for window functions to return true. Whenever we do any setting from ref_ptr_array, make sure to always store the value in all_fields as well. For function items containing window functions, as MDEV-12336 has discovered, we don't need to create a separate Item_direct_ref or Item_aggregate_ref as they will be computed directly from the top-level item once the window function argument columns are computed.
-
Vicențiu Ciorbaru authored
These self references were previously used to avoid having to check the IO_CACHE's type. However, a benchmark shows that on x86 5930k stock, the type comparison is marginally faster than the double pointer dereference. For 40 billion my_b_tell calls, the difference is .1 seconds in favor of performing the type check. (Basically there is no measurable difference) To prevent bugs from copying the structure using the equals(=) operator, and having to do the bookkeeping manually, remove these "convenience" variables.
-
Marko Mäkelä authored
srv_log_files_created: A debug flag to ensure that InnoDB redo log files can only be created once in the server lifetime, and that after log files have been created, no crash recovery will take place. recv_scan_log_recs(): Detect the special case where the log consists of a sole MLOG_CHECKPOINT record, such as immediately after creating the redo logs. recv_recovery_from_checkpoint_start(): Skip the recovery message if the redo log is logically empty.
-
- 27 Jun, 2017 2 commits
-
-
Marko Mäkelä authored
A merge error caused InnoDB bootstrap to fail when innodb_undo_tablespaces was set to more than 2. This was because of a bug that was introduced to srv_undo_tablespaces_init() by the merge. Furthermore, some adjustments for Oracle Bug#25551311 aka Bug#23517560 changes were forgotten. We must minimize direct references to srv_undo_tablespaces_open and use predicates instead. srv_undo_tablespaces_init(): Increment srv_undo_tablespaces_open once, not twice, per loop iteration. is_system_or_undo_tablespace(): Remove (unused function). is_predefined_tablespace(): Invoke srv_is_undo_tablespace().
-
Marko Mäkelä authored
When it comes to DEFAULT values of columns, InnoDB is imposing both unnecessary and insufficient conditions on whether ALGORITHM=INPLACE should be allowed for ALTER TABLE. When changing an existing column to NOT NULL, any NULL values in the columns only get a special treatment if the column is changed to an AUTO_INCREMENT column (which is not supported by ALGORITHM=INPLACE) or the column type is TIMESTAMP. In all other cases, an error must be reported for the failure to convert a NULL value to NOT NULL. InnoDB was unnecessarily interested in whether the DEFAULT value is not constant when altering other than TIMESTAMP columns. Also, when changing a TIMESTAMP column to NOT NULL, InnoDB was performing an insufficient check, and it was incorrectly allowing a constant DEFAULT value while not being able to replace NULL values with that constant value. Furthermore, in ADD COLUMN, InnoDB is unnecessarily rejecting certain nondeterministic DEFAULT expressions (depending on the session parameters or the current time).
-
- 26 Jun, 2017 3 commits
-
-
Igor Babaev authored
This patch corrects the fix for mdev-12845.
-
Sergey Vojtovich authored
Merged relevant part of MySQL revision: https://github.com/mysql/mysql-server/commit/565d20b44f24fcc855dc616164d87b03cfad10bc
-
Sergey Vojtovich authored
Relaxed assertion (in MySQL it was removed). For "LOCK TABLES t1 WRITE CONCURRENT, t1 READ" upgrade lock to weakest existing suitable lock, which is MDL_SHARED_NO_READ_WRITE.
-
- 23 Jun, 2017 3 commits
-
-
Marko Mäkelä authored
buf_flush_page_cleaner_coordinator(): Signal the thread creator that the error log output regarding setpriority() has been issued. innobase_start_or_create_for_mysql(): Wait for buf_flush_page_cleaner_coordinator() to completely start up. This prevents sporadic failures of tests that search the server error log for InnoDB redo log recovery messages.
-
Marko Mäkelä authored
While the primary purpose of innodb_force_recovery is to allow data to be rescued from an InnoDB instance that would crash due to some data corruption, the settings 1, 2, or 3 are relatively safe to use and there is no need to prevent write transactions in these modes. The setting innodb_force_recovery=4 and above can cause database corruption. For those modes, we already set the flag high_level_read_only to disable modifications, except DROP TABLE. MODIFICATIONS_NOT_ALLOWED_MSG_FORCE_RECOVERY: Remove. There is no need to spam the error log for each refused DML operation. It suffices to return an error to the client. There will be messages at startup if innodb_read_only or innodb_force_recovery are preventing writes.
-
Igor Babaev authored
This patch fills in a serious flaw in the code that supports condition pushdown into materialized views / derived tables. If a predicate happened to contain a reference to a mergeable view / derived table and it does not depended directly on the target materialized view / derived table then the predicate was not considered as a subject to pusdown to this view / derived table.
-
- 22 Jun, 2017 7 commits
-
-
Elena Stepanova authored
-
Elena Stepanova authored
-
Marko Mäkelä authored
If no checkpoint information is present, do not write to the data files. These writes would violate innodb_read_only=ON, among other things.
-
Marko Mäkelä authored
The original intention of the setting innodb_force_recovery=3 was to disable background activity that could create trouble, most notably, the rollback of incomplete transactions, and the purge of transaction history. MySQL 5.6 introduced more background threads, it is creating dict_stats_thread and fts_optimize_thread even though these threads are at least as non-essential as the rollback and purge. These threads are in fact worse, because they can create new transactions on their own. innobase_start_or_create_for_mysql(): Do not create any internal undo log sources unless innodb_force_recovery<3.
-
Oleksandr Byelkin authored
Parameters can be MYSQL_TYPE_VARCHAR for long data load.
-
Marko Mäkelä authored
These errors should only be possible when bootstrap is aborted and restarted.
-
Marko Mäkelä authored
buf_flush_init_for_writing(): Reset the FIL_PAGE_TYPE of the TRX_SYS page to the canonical value FIL_PAGE_TYPE_TRX_SYS instead of FIL_PAGE_TYPE_UNKNOWN.
-
- 21 Jun, 2017 1 commit
-
-
Elena Stepanova authored
-
- 20 Jun, 2017 1 commit
-
-
Vicențiu Ciorbaru authored
When running setup fields during the final step of insert using select the final setup_fields does not have any sum functions. Our current condition for calling split_sum_func however would attempt to use an empty NULL sum_func_list, if the item contained a window function. The solution is to not perform another split_sum_func for the item containing a window function if we do not actually have a sum_func_list.
-
- 19 Jun, 2017 6 commits
-
-
Marko Mäkelä authored
This will also change the minimum and maximum value of innodb_log_file_size to 1MiB and 512GiB, respectively.
-
Marko Mäkelä authored
MDEV-12975 InnoDB redo log minimum size check uses detected file size instead of requested innodb_log_file_size log_calc_max_ages(): Use the requested size in the check, instead of the detected redo log size. The redo log will be resized at startup if it differs from what has been requested.
-
Marko Mäkelä authored
The option was basically duplicating InnoDB functionality. Persistent statistics can be accessed via the tables mysql.innodb_table_stats and mysql.innodb_index_stats.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
These functions cannot possibly work in MariaDB 10.2, and it is uncertain if they really work in 10.1 either.
-
- 16 Jun, 2017 4 commits
-
-
Igor Babaev authored
This is another attempt to fix the bug mdev-12992. This patch introduces st_select_lex::context_analysis_place for the place in SELECT where context analysis is currently performed. It's similar to st_select_lex::parsing_place, but it is used at the preparation stage.
-
Oleksandr Byelkin authored
-
Sergey Vojtovich authored
lock not released after timeout Release GRL if FLUSH TABLES phase failed.
-
Marko Mäkelä authored
When the btr_search_latch was split into an array of latches in MySQL 5.7.8 as part of the Oracle Bug#20985298 fix, the "caching" of the latch across storage engine API calls was removed, and the field trx->has_search_latch would only be set during a short time frame in the execution of row_search_mvcc(), which was formerly called row_search_for_mysql(). This means that the column INFORMATION_SCHEMA.INNODB_TRX.TRX_ADAPTIVE_HASH_LATCHED will always report 0. That column cannot be removed in MariaDB 10.2, but it can be removed in future releases. trx_t::has_search_latch: Remove. trx_assert_no_search_latch(): Remove. row_sel_try_search_shortcut_for_mysql(): Remove a redundant condition on trx->has_search_latch (it was always true). sync_check_iterate(): Make the parameter const. sync_check_functor_t: Make the operator() const, and remove result() and the virtual destructor. There is no need to have mutable state in the functors. sync_checker<bool>: Replaces dict_sync_check and btrsea_sync_check. sync_check: Replaces btrsea_sync_check. dict_sync_check: Instantiated from sync_checker. sync_allowed_latches: Use std::find() directly on the array. Remove the std::vector. TrxInInnoDB::enter(), TrxInInnoDB::exit(): Remove obviously redundant debug assertions on trx->in_depth, and use equality comparison against 0 because it could be more efficient on some architectures.
-