- 01 Jul, 2017 1 commit
-
-
Marko Mäkelä authored
This is preparation for MDEV-12288, which would set DB_TRX_ID=0 when purging history. Also with that change in place, delete-marked records must always refer to an undo log record via a nonzero DB_TRX_ID column. (The DB_TRX_ID is only present in clustered index leaf page records.) btr_cur_parse_del_mark_set_clust_rec(), rec_get_trx_id(): Statically allocate the offsets (should never use the heap). Add some debug assertions. Replace some use of rec_get_trx_id() with row_get_rec_trx_id(). trx_undo_report_row_operation(): Add some sanity checks that are common for all operations that produce undo log.
-
- 30 Jun, 2017 15 commits
-
-
Jacob Mathew authored
-
Monty authored
-
Monty authored
- Crude hack to get it to work. Hope Serg has a better solution at some point..
-
Monty authored
-
Monty authored
- Added variable tmp_disk_table_size - Added variable tmp_memory_table_size as an alias for tmp_table_size - Changed internal variable tmp_table_size to tmp_memory_table_size - create_info.data_file_length is now set with tmp_disk_table_size - Fixed that Aria doesn't reset max_data_file_length for internal tables - Added status flag if table is full so that we can detect this on next insert. This ensures that the table is always 'correct', but we get the error one row after the row that grow the table too big. - Removed some mutex lock for internal temporary tables
-
Monty authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Vladislav Vaintroub authored
on Windows Align innodb_pool_size up to the innodb_buf_pool_chunk_unit.
-
Marko Mäkelä authored
The field fts_token->position is not initialized in row_merge_fts_doc_tokenize(). We cannot have that field without changing the fulltext parser plugin ABI (adding st_mysql_ftparser_boolean_info::position, as it was done in MySQL 5.7 in WL#6943). The InnoDB fulltext parser plugins "ngram" and "Mecab" that were introduced in MySQL 5.7 do depend on that field. But the simple_parser does not. Apparently, simple_parser is leaving the field as 0. So, in our fix we will assume that the missing position field is 0.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Igor Babaev authored
When an equality that can be pushed into a materialized derived table / view is extracted from multiple equalities and their operands are cloned then if they have some pointers to Item_equal objects those pointers must be set to NULL in the clones. Anyway they are not valid in the pushed predicates.
-
- 29 Jun, 2017 16 commits
-
-
Marko Mäkelä authored
In Mariabackup, we would want the backed-up redo log file size to be a multiple of 512 bytes, or OS_FILE_LOG_BLOCK_SIZE. However, at startup, InnoDB would be picky, requiring the file size to be a multiple of innodb_page_size. Furthermore, InnoDB would require the parameter to be a multiple of one megabyte, while the minimum granularity is 512 bytes. Because the data-file-oriented fil_io() API is being used for writing the InnoDB redo log, writes will for now require innodb_log_file_size to be a multiple of the maximum innodb_page_size (65536 bytes). To complicate matters, InnoDB startup divided srv_log_file_size by UNIV_PAGE_SIZE, so that initially, the unit was bytes, and later it was innodb_page_size. We will simplify this and keep srv_log_file_size in bytes at all times. innobase_log_file_size: Remove. Remove some obsolete checks against overflow on 32-bit systems. srv_log_file_size is always 64 bits, and the maximum size 512GiB in multiples of innodb_page_size always fits in ulint (which is 32 or 64 bits). 512GiB would be 8,388,608*64KiB or 134,217,728*4KiB. log_init(): Remove the parameter file_size that was always passed as srv_log_file_size. log_set_capacity(): Add a parameter for passing the requested file size. srv_log_file_size_requested: Declare static in srv0start.cc. create_log_file(), create_log_files(), innobase_start_or_create_for_mysql(): Invoke fil_node_create() with srv_log_file_size expressed in multiples of innodb_page_size. innobase_start_or_create_for_mysql(): Require the redo log file sizes to be multiples of 512 bytes.
-
Marko Mäkelä authored
Tablespace::shutdown(): Clear m_path. This was moved from Tablespace::~Tablespace(). LatchDebug::shutdown(): Remove a redundant condition.
-
Marko Mäkelä authored
trx_sys_print_mysql_binlog_offset(): Use 64-bit arithmetics and ib::info(). TRX_SYS_MYSQL_LOG_OFFSET: Replaces TRX_SYS_MYSQL_LOG_OFFSET_HIGH, TRX_SYS_MYSQL_LOG_OFFSET_LOW. trx_sys_update_mysql_binlog_offset(): Remove the constant parameter field=TRX_SYS_MYSQL_LOG_INFO. Use 64-bit arithmetics.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
A similar change was contributed to Percona XtraBackup, but for some reason, it is not present in Percona XtraDB. Since MDEV-9566 (MariaDB 10.1.23), that change is present in the MariaDB XtraDB.
-
Marko Mäkelä authored
Change many function parameters from IORequest& to const IORequest&. Remove an unused definition of ECANCELED.
-
Marko Mäkelä authored
recv_sys_init(): Remove the parameter. recv_sys_create(): Merge to recv_sys_init(). recv_sys_mem_free(): Merge to recv_sys_close(). log_mem_free(): Merge to log_shutdown().
-
Marko Mäkelä authored
-
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 1 commit
-
-
Igor Babaev authored
This patch corrects the fix for mdev-12845.
-