- 02 Apr, 2018 4 commits
-
-
Alexander Barkov authored
- Adding class Field_int as a common parent for Field_{longlong|long|short|medium|tiny} - Moving store_decimal(), val_decimal(), get_date(), store_time_dec(), get_date(), val_bool() from Field_num to Field_int - Adding Field_int::val_str_from_long() and reusing it in Field_tiny::val_str(), Field_short::val_str(), Field_medium::val_str() and Field_long::val_str(). This removes a good amount of duplicate code - Adding "const" qualifier to "virtual bool Field::optimize_range()".
-
Sergey Vojtovich authored
Handle overlaping "from" and Field_blob_compressed::value for compressed blobs similarily to regular blobs.
-
Monty authored
-
Monty authored
MDEV-14831 CREATE OR REPLACE SEQUENCE under LOCK TABLE corrupts the sequence, causes ER_KEY_NOT_FOUND The problem was that sequence_insert didn't properly handle the case where there where there was a LOCK TABLE while creating the sequence. Fixed by opening the sequence table, for inserting the first record, in a new environment without any other open tables. Found also a bug in Locked_tables_list::reopen_tables() where the lock structure for the new tables was allocated in THD::mem_root, which causes crashes. This could cause problems with other create tables done under LOCK TABLES.
-
- 01 Apr, 2018 1 commit
-
-
Vladislav Vaintroub authored
Use high accuracy timer on Windows 8.1+ for system versioning,it needs accurate high resoution start query time. Continue to use the inaccurate (but much faster timer function) GetSystemTimeAsFileTime() where accuracy does not matter, e.g in set_timespec_time_nsec(),or my_time()
-
- 30 Mar, 2018 10 commits
-
-
Marko Mäkelä authored
This reverts commit d2660362. The patch would cause a crash when DROP TABLE is executed and the .ibd file is missing. It is not easy to fix this; there is some delicate logic in fil_space_get_page_size().
-
Marko Mäkelä authored
-
Marko Mäkelä authored
btr_free_root_check(), btr_free_if_exists(): Replace page_id, page_size with fil_space_t* and the root page number. btr_free_but_not_root(): Take fil_space_t* as a parameter, or NULL if the operation is not going to be redo-logged. btr_free(): Pass space=NULL to btr_free_but_not_root().
-
Alexander Barkov authored
-
Sergei Golubchik authored
this is a 10.3 version of 27d94b7e It disables caching of the first argument of IN, if it's of a temporal type. Because other types are not cached in this context.
-
Sergei Golubchik authored
this is a 10.3 version of 1c6f6dc8
-
Sergei Golubchik authored
this is a 10.3 version of 885edc4f
-
Sergei Golubchik authored
reorder items in args[] array. Instead of when1,then1,when2,then2,...[,case][,else] sort them as [case,]when1,when2,...,then1,then2,...[,else] in this case all items used for comparison take a continuous part of the array and can be aggregated directly. and all items that can be returned take a continuous part of the array and can be aggregated directly. Old code had to copy them to a temporary array before aggreation, and then copy back (thd->change_item_tree) everything that was changed. this is a 10.3 version of bf1ca14f
-
Sergei Golubchik authored
-
Marko Mäkelä authored
fil_space_for_table_exists_in_mem(): Fix a regression that was introduced in commit 05863142 when removing fil_system.name_hash. The condition !valid || space == fnamespace was incorrectly replaced with !valid, instead of true. fil_report_missing_tablespace(): Merge to the only caller.
-
- 29 Mar, 2018 25 commits
-
-
Varun Gupta authored
Introduced new status variable for custom aggregate functions.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
InnoDB always keeps all tablespaces in the fil_system cache. The fil_system.LRU is only for closing file handles; the fil_space_t and fil_node_t for all data files will remain in main memory. Between startup to shutdown, they can only be created and removed by DDL statements. Therefore, we can let dict_table_t::space point directly to the fil_space_t. dict_table_t::space_id: A numeric tablespace ID for the corner cases where we do not have a tablespace. The most prominent examples are ALTER TABLE...DISCARD TABLESPACE or a missing or corrupted file. There are a few functional differences; most notably: (1) DROP TABLE will delete matching .ibd and .cfg files, even if they were not attached to the data dictionary. (2) Some error messages will report file names instead of numeric IDs. There still are many functions that use numeric tablespace IDs instead of fil_space_t*, and many functions could be converted to fil_space_t member functions. Also, Tablespace and Datafile should be merged with fil_space_t and fil_node_t. page_id_t and buf_page_get_gen() could use fil_space_t& instead of a numeric ID, and after moving to a single buffer pool (MDEV-15058), buf_pool_t::page_hash could be moved to fil_space_t::page_hash. FilSpace: Remove. Only few calls to fil_space_acquire() will remain, and gradually they should be removed. mtr_t::set_named_space_id(ulint): Renamed from set_named_space(), to prevent accidental calls to this slower function. Very few callers remain. fseg_create(), fsp_reserve_free_extents(): Take fil_space_t* as a parameter instead of a space_id. fil_space_t::rename(): Wrapper for fil_rename_tablespace_check(), fil_name_write_rename(), fil_rename_tablespace(). Mariabackup passes the parameter log=false; InnoDB passes log=true. dict_mem_table_create(): Take fil_space_t* instead of space_id as parameter. dict_process_sys_tables_rec_and_mtr_commit(): Replace the parameter 'status' with 'bool cached'. dict_get_and_save_data_dir_path(): Avoid copying the fil_node_t::name. fil_ibd_open(): Return the tablespace. fil_space_t::set_imported(): Replaces fil_space_set_imported(). truncate_t: Change many member function parameters to fil_space_t*, and remove page_size parameters. row_truncate_prepare(): Merge to its only caller. row_drop_table_from_cache(): Assert that the table is persistent. dict_create_sys_indexes_tuple(): Write SYS_INDEXES.SPACE=FIL_NULL if the tablespace has been discarded. row_import_update_discarded_flag(): Remove a constant parameter.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
fsp_get_available_space_in_free_extents(): Declare the function static in the only caller, and take const fil_space_t& as a parameter.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
fil_space_get_by_name(): Remove. (Implement differently in mariabackup.) fil_ibd_open(): Check if the tablespace by the same ID already exists. If it is the same name, return success, else failure.
-
Marko Mäkelä authored
trx_rsegf_get(), trx_undo_get_first_rec(): Change the parameter to fil_space_t* so that fewer callers need to be adjusted. trx_undo_free_page(): Remove the redundant parameter 'space'.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Remove the parameter page_size, and pass a dummy page size to buf_page_get_gen() along with BUF_PEEK_IF_IN_POOL.
-
Marko Mäkelä authored
fil_discard_tablespace(): Merge to row_discard_tablespace() which was the only caller.
-
Marko Mäkelä authored
fil_recreate_table(), fil_recreate_tablespace(), fil_reinit_space_header_for_table(): Move the functions to the only calling module and declare static. fil_recreate_table(): Remove the constant parameter space_id=0,flags.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Replace index->table_name with index->table->name.
-
Marko Mäkelä authored
We can rely on the dict_table_t::space. All indexes of a table object are always in the same tablespace. (For fulltext indexes, the data is located in auxiliary tables, and these will continue to have their own table objects, separate from the main table.)
-
Marko Mäkelä authored
This is a non-functional change (pure refactoring).
-
Marko Mäkelä authored
-
Marko Mäkelä authored
fsp_header_init(): Take fil_space_t* as a parameter.
-
Marko Mäkelä authored
Add fil_system_t::sys_space, fil_system_t::temp_space. These will replace lookups for TRX_SYS_SPACE or SRV_TMP_SPACE_ID. mtr_t::m_undo_space, mtr_t::m_sys_space: Remove. mtr_t::set_sys_modified(): Remove. fil_space_get_type(), fil_space_get_n_reserved_extents(): Remove. fsp_header_get_tablespace_size(), fsp_header_inc_size(): Merge to the only caller, innobase_start_or_create_for_mysql().
-
Marko Mäkelä authored
fil_system_t::create(): Replaces fil_init(), fsp_init(). fil_system_t::close(): Replaces fil_close(). fil_system_t::max_n_open: Remove. Use srv_max_n_open_files directly.
-
Daniel Black authored
HAVE_LARGE_PAGES was always Linux but now there is HAVE_SOLARIS_LARGE_PAGES in the code base. Innodb was using HAVE_LINUX_LARGE_PAGES so keep this consistent everywhere. Test plan: $ grep Hugepagesize: /proc/meminfo Hugepagesize: 2048 kB $ sudo sysctl vm.nr_hugepages=1024 vm.nr_hugepages = 1024 $ sudo sysctl kernel.shmmax=$(( 2 * 1024 *1024 * 1024 )) kernel.shmmax = 2147483648 No errors in ouput: $ sql/mysqld --skip-networking --datadir=/tmp/datadir --log-bin=/tmp/datadir/mysqlbin --socket /tmp/s.sock --lc-messages-dir=${PWD}/sql/share --verbose --large-pages=1 2018-03-23 12:51:18 139697428129984 [Note] sql/mysqld (mysqld 10.2.14-MariaDB-log) starting as process 25406 ... 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Uses event mutexes 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Compressed tables use zlib 1.2.11 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Using Linux native AIO 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Number of pools: 1 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Using SSE2 crc32 instructions 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Completed initialization of buffer pool 2018-03-23 12:51:18 139696883590912 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Highest supported file format is Barracuda. 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: 128 out of 128 rollback segments are active. 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1" 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Creating shared tablespace for temporary tables 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: File './ibtmp1' size is now 12 MB. 2018-03-23 12:51:18 139697428129984 [Note] InnoDB: 5.7.21 started; log sequence number 1620099 2018-03-23 12:51:18 139696713733888 [Note] InnoDB: Loading buffer pool(s) from /tmp/datadir/ib_buffer_pool 2018-03-23 12:51:18 139696713733888 [Note] InnoDB: Buffer pool(s) load completed at 180323 12:51:18 2018-03-23 12:51:18 139697428129984 [Note] Plugin 'FEEDBACK' is disabled. 2018-03-23 12:51:18 139697428129984 [Note] Reading of all Master_info entries succeded 2018-03-23 12:51:18 139697428129984 [Note] Added new Master_info '' to hash table 2018-03-23 12:51:18 139697428129984 [Note] sql/mysqld: ready for connections. Version: '10.2.14-MariaDB-log' socket: '/tmp/s.sock' port: 0 Source distribution $ grep -i huge /proc/25406/smaps | grep -v ' 0 kB' Private_Hugetlb: 8192 kB Private_Hugetlb: 2048 kB $ grep huge /proc/25406/numa_maps 7f0d74400000 default file=/SYSV00000000\040(deleted) huge 7f0dbd200000 default file=/SYSV00000000\040(deleted) huge dirty=4 N0=4 kernelpagesize_kB=2048 7f0dc5600000 default file=/SYSV00000000\040(deleted) huge 7f0dd1200000 default file=/SYSV00000000\040(deleted) huge dirty=1 N0=1 kernelpagesize_kB=2048 $ grep Huge /proc/meminfo AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 940 HugePages_Free: 935 HugePages_Rsvd: 177 HugePages_Surp: 0 Hugepagesize: 2048 kB Ran again with --memlock (note needs ulimit -l > size) $ grep Huge /proc/meminfo AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 940 HugePages_Free: 758 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB $ grep huge /proc/26020/numa_maps 7fe870400000 default file=/SYSV00000000\040(deleted) huge dirty=62 N0=62 kernelpagesize_kB=2048 7fe8b3a00000 default file=/SYSV00000000\040(deleted) huge dirty=66 N0=66 kernelpagesize_kB=2048 7fe8bd600000 default file=/SYSV00000000\040(deleted) huge dirty=53 N0=53 kernelpagesize_kB=2048 7fe8c8400000 default file=/SYSV00000000\040(deleted) huge dirty=1 N0=1 kernelpagesize_kB=2048 $ grep -i huge /proc/26020/smaps | grep -v ' 0 kB' Private_Hugetlb: 126976 kB Private_Hugetlb: 135168 kB Private_Hugetlb: 108544 kB Private_Hugetlb: 2048 kB
-
Marko Mäkelä authored
create_table_info_t::create_table_def(): Assign the innodb_temporary tablespace directly. dict_build_tablespace_for_table(): Merge to the only remaining caller, dict_build_table_def_step().
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-