- 01 Oct, 2010 6 commits
-
-
Alexey Kopytov authored
-
Mattias Jonsson authored
-
Mattias Jonsson authored
-
Vasil Dimov authored
-
Mattias Jonsson authored
-
Mattias Jonsson authored
LOAD DATA into partitioned MyISAM table Problem was that both partitioning and myisam used the same table_share->mutex for different protections (auto inc and repair). Solved by adding a specific mutex for the partitioning auto_increment. Also adding destroying the ha_data structure in free_table_share (which is to be propagated into 5.5). This is a 5.1 ONLY patch, already fixed in 5.5+.
-
- 30 Sep, 2010 3 commits
-
-
Mattias Jonsson authored
Bug#57113: ha_partition::extra(ha_extra_function): Assertion `m_extra_cache' failed Fix for bug#55458 included DBUG_ASSERTS causing debug builds of the server to crash on another multi-table update. Removed the asserts since they where wrong. (updated after testing the patch in 5.5).
-
Vasil Dimov authored
This is a simple optimization issue. All stats are related to only indexed columns, index size or number of rows in the whole table. UPDATEs that touch only non-indexed columns cannot affect stats and we can avoid calling the function row_update_statistics_if_needed() which may result in unnecessary I/O. Approved by: Marko (rb://466)
-
Vasil Dimov authored
TYPE __sync_lock_test_and_set (TYPE *ptr, TYPE value, ...) it is not documented what happens if the two arguments are of different type like it was before: the first one was lock_word_t (byte) and the second one was 1 or 0 (int). Approved by: Marko (via IRC)
-
- 28 Sep, 2010 3 commits
-
-
Vasil Dimov authored
InnoDB Plugin 1.0.12 has been released with MySQL 5.1.51.
-
Vasil Dimov authored
Spotted by: Marko
-
Vasil Dimov authored
-
- 24 Sep, 2010 3 commits
-
-
Davi Arnaut authored
Use UNINIT_VAR workaround instead of LINT_INIT. The former can also be used to silence false-positives in non-debug builds as it actually does not cause new code to be generated.
-
Davi Arnaut authored
Temporarily disable strict aliasing warnings in order to get wider coverage for optimized builds. Once the violations are fixed and false-positives silenced, this flag should be removed.
-
Dmitry Shulga authored
-
- 22 Sep, 2010 2 commits
-
-
Alexey Kopytov authored
Fixed a number of memory leaks discovered by valgrind.
-
Dmitry Shulga authored
-
- 21 Sep, 2010 1 commit
-
-
Ingo Struewing authored
Merge from saved bundle.
-
- 17 Sep, 2010 1 commit
-
-
Alfranio Correia authored
-
- 16 Sep, 2010 4 commits
-
-
Sergey Glukhov authored
Subselect executes twice, at JOIN::optimize stage and at JOIN::execute stage. At optimize stage Innodb prebuilt struct which is used for the retrieval of column values is initialized in. ha_innobase::index_read(), prebuilt->sql_stat_start is true. After QUICK_ROR_INTERSECT_SELECT finished his job it restores read_set/write_set bitmaps with initial values and deactivates one of the handlers used by QUICK_ROR_INTERSECT_SELECT in JOIN::cleanup (it's the case when we reuse original handler as one of handlers required by QUICK_ROR_INTERSECT_SELECT object). On second subselect execution inactive handler is activated in QUICK_RANGE_SELECT::reset, file->ha_index_init(). In ha_index_init Innodb prebuilt struct is reinitialized with inappropriate read_set/write_set bitmaps. Further reinitialization in ha_innobase::index_read() does not happen as prebuilt->sql_stat_start is false. It leads to partial retrieval of required field values and we get a mix of field values from different records in the record buffer. The fix is to reset read_set/write_set bitmaps as these values are required for proper intialization of internal InnoDB struct which is used for the retrieval of column values (see build_template(), ha_innodb.cc)
-
Magne Mahre authored
adding new indexes A fast alter table requires that the existing (old) table and indices are unchanged (i.e only new indices can be added). To verify this, the layout and flags of the old table/indices are compared for equality with the new. The PACK_KEYS option is a no-op in InnoDB, but the flag exists, and is used in the table compare. We need to check this (table) option flag before deciding whether an index should be packed or not. If the table has explicitly set PACK_KEYS to 0, the created indices should not be marked as packed/packable.
-
Dmitry Shulga authored
compression protocol. The loss of connection was caused by a malformed packet sent by the server in case when query cache was in use. When storing data in the query cache, the query cache memory allocation algorithm had a tendency to reduce the amount of memory block necessary to store a result set, up to finally storing the entire result set in a single block. With a significant result set, this memory block could turn out to be quite large - 30, 40 MB and on. When such a result set was sent to the client, the entire memory block was compressed and written to network as a single network packet. However, the length of the network packet is limited by 0xFFFFFF (16MB), since the packet format only allows 3 bytes for packet length. As a result, a malformed, overly large packet with truncated length would be sent to the client and break the client/server protocol. The solution is, when sending result sets from the query cache, to ensure that the data is chopped into network packets of size <= 16MB, so that there is no corruption of packet length. This solution, however, has a shortcoming: since the result set is still stored in the query cache as a single block, at the time of sending, we've lost boundaries of individual logical packets (one logical packet = one row of the result set) and thus can end up sending a truncated logical packet in a compressed network packet. As a result, on the client we may require more memory than max_allowed_packet to keep, both, the truncated last logical packet, and the compressed next packet. This never (or in practice never) happens without compression, since without compression it's very unlikely that a) a truncated logical packet would remain on the client when it's time to read the next packet b) a subsequent logical packet that is being read would be so large that size-of-new-packet + size-of-old-packet-tail > max_allowed_packet. To remedy this issue, we send data in 1MB sized packets, that's below the current client default of 16MB for max_allowed_packet, but large enough to ensure there is no unnecessary overhead from too many syscalls per result set.
-
Mikael Ronstrom authored
-
- 15 Sep, 2010 17 commits
-
-
Vasil Dimov authored
-
Vasil Dimov authored
Fix compiler warning: trx/trx0undo.c: In function 'trx_undo_truncate_end': trx/trx0undo.c:1069:14: error: variable 'rseg' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: trx/trx0undo.c: In function 'trx_undo_set_state_at_prepare': trx/trx0undo.c:1871:16: error: variable 'page_hdr' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: trx/trx0trx.c: In function 'trx_prepare_off_kernel': trx/trx0trx.c:1808:11: error: variable 'update_hdr_page' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: trx/trx0sys.c: In function 'trx_sys_create_doublewrite_buf': trx/trx0sys.c:244:15: error: variable 'new_block' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warnings: trx/trx0roll.c: In function 'trx_undo_arr_remove_info': trx/trx0roll.c:744:9: error: variable 'n' set but not used [-Werror=unused-but-set-variable] trx/trx0roll.c:743:9: error: variable 'n_used' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: trx/trx0purge.c: In function 'trx_purge_rec_release': trx/trx0purge.c:1071:18: error: variable 'arr' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: trx/trx0purge.c: In function 'trx_purge_rseg_get_next_history_log': trx/trx0purge.c:660:15: error: variable 'seg_hdr' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: trx/trx0purge.c: In function 'trx_purge_add_update_undo_to_history': trx/trx0purge.c:307:15: error: variable 'seg_header' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: trx/trx0purge.c: In function 'trx_purge_add_update_undo_to_history': trx/trx0purge.c:309:16: error: variable 'page_header' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: row/row0vers.c: In function 'row_vers_impl_x_locked_off_kernel': row/row0vers.c:74:9: error: variable 'err' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: row/row0umod.c: In function 'row_undo_mod_clust_low': row/row0umod.c:117:9: error: variable 'success' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: row/row0purge.c: In function 'row_purge_step': row/row0purge.c:687:9: error: variable 'err' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: que/que0que.c: In function 'que_run_threads_low': que/que0que.c:1287:9: error: variable 'cumul_resource' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warnings: os/os0file.c: In function 'os_file_create': os/os0file.c:1371:14: error: variable 'purpose_str' set but not used [-Werror=unused-but-set-variable] os/os0file.c:1370:14: error: variable 'type_str' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: log/log0recv.c: In function 'recv_synchronize_groups': log/log0recv.c:562:14: error: variable 'limit_lsn' set but not used [-Werror=unused-but-set-variable]
-
Vasil Dimov authored
Fix compiler warning: log/log0recv.c: In function 'recv_recovery_from_checkpoint_start_func': log/log0recv.c:2894:14: error: variable 'archived_lsn' set but not used [-Werror=unused-but-set-variable]
-