------------------------------------------------------------ revno: 3690 tags: clone-mysql-5.1.47-ndb-7.1.5a-src-build, mysql-5.1.47-ndb-7.1.5 committer: Bernd Ocklin branch nick: clone-mysql-5.1.47-ndb-7.1.5-src-build timestamp: Tue 2010-06-29 12:46:18 +0200 message: disable ndbjtie test for none cluster builds ------------------------------------------------------------ revno: 3689 [merge] tags: clone-mysql-5.1.47-ndb-7.1.5-src-build committer: Jonas Oreland branch nick: telco-7.1 timestamp: Tue 2010-06-22 09:54:10 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.103 tags: clone-mysql-5.1.47-ndb-7.0.16-src-build, mysql-5.1.47-ndb-7.0.16 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-22 09:53:38 +0200 message: ndb - bug-50621 refix which got lost in gull-ification ------------------------------------------------------------ revno: 3688 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Tue 2010-06-22 09:24:39 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.102 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-22 09:23:36 +0200 message: ndb - wl2342 - stricten checks in alterTable_parse and let master-parse set changeMask bits ------------------------------------------------------------ revno: 3362.41.101 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-22 08:46:58 +0200 message: ndb - wl2342 - add Rope::equal(Rope) ------------------------------------------------------------ revno: 3687 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Tue 2010-06-22 08:45:00 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.100 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-22 08:43:34 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.155.11 [merge] tags: clone-mysql-5.1.47-ndb-6.3.35-src-build, mysql-5.1.47-ndb-6.3.35 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Tue 2010-06-22 08:41:58 +0200 message: ndb - merge 62 to 63 ------------------------------------------------------------ revno: 2572.82.10 committer: Jonas Oreland branch nick: telco-6.2 timestamp: Tue 2010-06-22 08:38:51 +0200 message: ndb - bug#54685 - release memory if no API connected in Qmgr::execAPI_BROADCAST_REP ------------------------------------------------------------ revno: 2572.82.9 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Thu 2010-06-17 13:54:48 +0200 message: Merge ------------------------------------------------------------ revno: 3686 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Mon 2010-06-21 11:59:32 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.99 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Mon 2010-06-21 11:56:51 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.155.10 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Mon 2010-06-21 11:55:21 +0200 message: ndb - bahh... windows doesnt have rand_r, do a simple stupid ndb_rand_r ------------------------------------------------------------ revno: 3362.41.98 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Mon 2010-06-21 11:00:32 +0200 message: ndb - NdbDictionary::supportedAlterTable should/can not initiate schema-transaction ------------------------------------------------------------ revno: 3685 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Mon 2010-06-21 10:52:22 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.97 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Mon 2010-06-21 10:51:07 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.155.9 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Mon 2010-06-21 10:49:20 +0200 message: ndb - move testDict -n DictRestart from devel into basic ------------------------------------------------------------ revno: 2585.155.8 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Mon 2010-06-21 10:28:54 +0200 message: ndb - extend testDict -n DictRestart with alter tables, and make NdbMixRestarter and RandSchemaOp use own rand-sequence for stable reruns ------------------------------------------------------------ revno: 3684 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Mon 2010-06-21 10:48:00 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.96 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Mon 2010-06-21 10:46:45 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.155.7 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Mon 2010-06-21 09:37:52 +0200 message: ndb - bug#54651 - check for duplicate table name in alter-table rename ------------------------------------------------------------ revno: 3683 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Fri 2010-06-18 13:12:40 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.95 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Fri 2010-06-18 13:11:46 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.155.6 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Fri 2010-06-18 13:10:41 +0200 message: ndb - darn, missed #ifdef ERROR_INSERT in last push ------------------------------------------------------------ revno: 3682 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Fri 2010-06-18 13:02:51 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.94 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Fri 2010-06-18 12:57:02 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.155.5 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Fri 2010-06-18 12:50:09 +0200 message: ndb - bug#54611 - fix so that latest completed LCP is used even if cluster shutsdown directly afterwards ------------------------------------------------------------ revno: 2585.155.4 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.3 timestamp: Thu 2010-06-17 13:46:11 +0200 message: Merge ------------------------------------------------------------ revno: 3681 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Thu 2010-06-17 14:31:49 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.93 committer: Magnus Blåudd branch nick: 7.0 timestamp: Thu 2010-06-17 14:28:52 +0200 message: WL#4523 - Properly redirect stdout and stderr to log file ndb__out.log ------------------------------------------------------------ revno: 3362.41.92 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-7.0 timestamp: Thu 2010-06-17 13:40:14 +0200 message: Merge ------------------------------------------------------------ revno: 3680 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-7.1 timestamp: Thu 2010-06-17 12:59:23 +0200 message: Merge ------------------------------------------------------------ revno: 3362.41.91 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-7.0 timestamp: Thu 2010-06-17 11:24:19 +0200 message: Merge ------------------------------------------------------------ revno: 2585.155.3 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.3 timestamp: Thu 2010-06-17 11:18:37 +0200 message: Merge ------------------------------------------------------------ revno: 2572.82.8 committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Thu 2010-06-17 10:42:10 +0200 message: Added explicit type conversion to avoid compiler warning ------------------------------------------------------------ revno: 2572.82.7 committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Thu 2010-06-17 10:35:28 +0200 message: Bug#52062 Compiler warning in os0file.c on windows 64-bit ------------------------------------------------------------ revno: 3362.41.90 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-7.0 timestamp: Wed 2010-06-16 22:49:05 +0200 message: Merged in mysql-5.1-telco-6.3(mysql-5.1.45,mysql-5.1.46,mysql-5.1.47) ------------------------------------------------------------ revno: 2585.155.2 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.3 timestamp: Wed 2010-06-16 20:47:16 +0200 message: Merge ------------------------------------------------------------ revno: 2572.82.6 committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Wed 2010-06-16 20:41:53 +0200 message: Server variable ndb_use_exact_count had wrong default value ------------------------------------------------------------ revno: 2572.82.5 committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Wed 2010-06-16 20:35:38 +0200 message: Initialized variables to avoid compiler warnings ------------------------------------------------------------ revno: 2585.155.1 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.3 timestamp: Wed 2010-06-16 14:04:53 +0200 message: Merged in mysql-5.1-telco-6.2(mysql-5.1.45,mysql-5.1.46,mysql-5.1.47) ------------------------------------------------------------ revno: 2572.82.4 committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Tue 2010-06-15 11:50:37 +0200 message: Forward port of patch for bug#52884 3391 Sergey Glukhov 2010-05-20 Bug#52884 mysql-test-run does not work with --debug option Server crashes on 64bit linux with 'double free or corruption' message, on 32bit mysql-test-run silently fails on bootstrap stage. The problem is that FreeState() is called twice for init_settings struct in _db_end_ function. The fix is to remove superfluous FreeState() call. Additional fix: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. @ dbug/dbug.c The problem is that FreeState() is called twice for init_settings struct in _db_end_ function. The fix is to remove superfluous FreeState() call. @ mysql-test/r/variables_debug.result fixed discrepancy of result file when debug & valgrind options are enabled for MTR. @ mysql-test/t/variables_debug.test fixed discrepancy of result file when debug & valgrind options are enabled for MTR. @ sql/set_var.cc fixed discrepancy of result file when debug & valgrind options are enabled for MTR. ------------------------------------------------------------ revno: 2572.82.3 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Tue 2010-06-15 11:07:26 +0200 message: Merged in 5.1.47 ------------------------------------------------------------ revno: 2555.764.21 [merge] tags: mysql-5.1.47 committer: Karen Langford branch nick: mysql-5.1.47-release timestamp: Thu 2010-05-06 17:14:10 +0200 message: Merge ------------------------------------------------------------ revno: 2555.738.73 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Tue 2010-05-04 12:31:28 +0300 message: btr_page_split_and_insert(): Correct the fix of Bug #52964. When split_rec==NULL, choose the correct node pointer key (first_rec). ------------------------------------------------------------ revno: 2555.738.72 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Mon 2010-05-03 15:28:59 +0300 message: buf_zip_decompress(): Allow BUF_NO_CHECKSUM_MAGIC as the stamped checksum. buf_page_get_gen(): Assert that buf_zip_decompress() succeeds. Callers are not prepared for a NULL return value. (Bug #53248) ------------------------------------------------------------ revno: 2555.764.20 [merge] tags: clone-5.1.47-build committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Wed 2010-05-05 17:57:53 +0300 message: tree name change ------------------------------------------------------------ revno: 1810.3989.17 [merge] committer: Georgi Kodinov branch nick: merge-5.0-bugteam timestamp: Wed 2010-05-05 12:40:18 +0300 message: merge ------------------------------------------------------------ revno: 1810.3991.2 author: sunanda.menon@sun.com committer: MySQL Build Team branch nick: mysql-5.0 timestamp: Mon 2010-05-03 12:06:18 +0200 message: Raise version number after cloning 5.0.91 ------------------------------------------------------------ revno: 1810.3991.1 tags: clone-5.0.91-build committer: Georgi Kodinov branch nick: merge-5.0-bugteam timestamp: Sat 2010-05-01 16:46:04 +0300 message: tree name change ------------------------------------------------------------ revno: 1810.3989.16 committer: Georgi Kodinov branch nick: merge-5.0-bugteam timestamp: Wed 2010-05-05 12:38:59 +0300 message: tree name change ------------------------------------------------------------ revno: 2555.764.19 committer: Georgi Kodinov branch nick: B53417-5.1-bugteam timestamp: Wed 2010-05-05 11:54:52 +0300 message: On behalf of Kristofer : Bug#53417 my_getwd() makes assumptions on the buffer sizes which not always hold true The mysys library contains many functions for rewriting file paths. Most of these functions makes implicit assumptions on the buffer sizes they write to. If a path is put in my_realpath() it will propagate to my_getwd() which assumes that the buffer holding the path name is greater than 2. This is not true in cases. In the special case where a VARBIN_ITEM is passed as argument to the LOAD_FILE function this can lead to a crash. This patch fixes the issue by introduce more safe guards agaist buffer overruns. ------------------------------------------------------------ revno: 2555.764.18 [merge] committer: Alfranio Correia branch nick: mysql-5.1-bugteam.merge timestamp: Tue 2010-05-04 23:15:10 +0100 message: merge mysql-5.1-bugteam (local) --> mysql-5.1-bugteam ------------------------------------------------------------ revno: 2555.775.2 committer: Alfranio Correia branch nick: mysql-5.1-bugteam timestamp: Tue 2010-05-04 10:41:28 +0100 message: BUG#43407 SET GLOBAL SQL_SLAVE_SKIP_COUNTER should log previous state in error log When issuing a 'SET GLOBAL SQL_SLAVE_SKIP_COUNTER' statement, the previous position along with the new position is dumped into the error log. Namely, the following information is printed out: skip_counter, group_relay_log_name and group_relay_log_pos. ------------------------------------------------------------ revno: 2555.775.1 committer: Alfranio Correia branch nick: mysql-5.1-bugteam timestamp: Tue 2010-05-04 10:17:20 +0100 message: BUG#43406 CHANGE MASTER TO should log previous state in error log When issuing a 'CHANGE MASTER TO' statement, key elements of the previous state, namely the host, port, the master_log_file and the master_log_pos are dumped into the error log. ------------------------------------------------------------ revno: 2555.764.17 committer: Omer BarNir branch nick: bug-5.1 timestamp: Tue 2010-05-04 14:24:36 -0700 message: Updates to README file of the 'engines' test suites ------------------------------------------------------------ revno: 2555.764.16 [merge] committer: Georgi Kodinov branch nick: B53371-5.1-bugteam timestamp: Tue 2010-05-04 17:03:28 +0300 message: Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants. This is the 5.1 merge and extension of the fix. The server was happily accepting paths in table name in all places a table name is accepted (e.g. a SELECT). This allowed all users that have some privilege over some database to read all tables in all databases in all mysql server instances that the server file system has access to. Fixed by : 1. making sure no path elements are allowed in quoted table name when constructing the path (note that the path symbols are still valid in table names when they're properly escaped by the server). 2. checking the #mysql50# prefixed names the same way they're checked for path elements in mysql-5.0. ------------------------------------------------------------ revno: 1810.3989.15 committer: Georgi Kodinov branch nick: B53371-5.0-bugteam timestamp: Mon 2010-05-03 18:16:51 +0300 message: Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants. The server was not checking the supplied to COM_FIELD_LIST table name for validity and compliance to acceptable table names standards. Fixed by checking the table name for compliance similar to how it's normally checked by the parser and returning an error message if it's not compliant. ------------------------------------------------------------ revno: 2555.764.15 [merge] committer: Kristofer Pettersson branch nick: mysql-5.1-bugteam timestamp: Mon 2010-05-03 19:21:09 +0200 message: Automerge ------------------------------------------------------------ revno: 2555.774.1 [merge] committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Sat 2010-05-01 19:12:12 +0300 message: merged 5.1-innodb ------------------------------------------------------------ revno: 2555.738.71 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Fri 2010-04-30 13:02:36 +0300 message: Disable innodb.innodb, main.ps_3innodb and main.partition_innodb_plugin mysql-tests because those emit (spurious?) valgrind warnings. ------------------------------------------------------------ revno: 2555.738.70 committer: Marko Makela branch nick: mysql-5.1-innodb timestamp: Thu 2010-04-29 15:41:47 +0200 message: recv_sys_init(), recv_sys_empty_hash(): Shrink recv_sys->addr_hash. This addresses Bug #53122 in the built-in InnoDB. ------------------------------------------------------------ revno: 2555.738.69 committer: Marko Makela branch nick: mysql-5.1-innodb timestamp: Thu 2010-04-29 15:37:50 +0200 message: recv_sys_init(), recv_sys_empty_hash(): Shrink recv_sys->addr_hash. recv_addr_t: Turn space,page_no into bitfields to save space on 64-bit. This addresses Bug #53122 in the InnoDB Plugin. ------------------------------------------------------------ revno: 2555.738.68 committer: Marko Makela branch nick: mysql-5.1-innodb timestamp: Thu 2010-04-29 15:29:45 +0200 message: Reduce the next-key locking of READ UNCOMMITTED to match that of READ COMMITTED in the built-in InnoDB. (Bug #48607) ------------------------------------------------------------ revno: 2555.738.67 committer: Marko Makela branch nick: mysql-5.1-innodb timestamp: Thu 2010-04-29 15:27:43 +0200 message: Reduce the next-key locking of READ UNCOMMITTED to match that of READ COMMITTED in the InnoDB Plugin. (Bug #48607) ------------------------------------------------------------ revno: 2555.738.66 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-28 13:34:52 +0300 message: Bug#53046 dict_update_statistics_low can still be run concurrently on same table Followup to vasil.dimov@oracle.com-20100428102033-dt3caf531rs3lidr : Add more asserions, which I forgot. ------------------------------------------------------------ revno: 2555.738.65 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-28 13:32:00 +0300 message: Revert the fix of Bug#38996 Race condition in ANALYZE TABLE This is branches/zip@r6032 in SVN and _is part_ of revid:svn-v4:16c675df-0fcb-4bc9-8058-dcc011a37293:branches/zip:6113 in BZR. This is being reverted because now the code is serialized directly on index->stat_n_diff_key_vals[] as the fix for Bug#53046 dict_update_statistics_low can still be run concurrently on same table goes. ------------------------------------------------------------ revno: 2555.738.64 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-28 13:20:33 +0300 message: Followup to vasil.dimov@oracle.com-20100428084627-wtrmc66wqvjsdgj7: Address Marko's suggestions wrt the fix of Bug#53046 dict_update_statistics_low can still be run concurrently on same table ------------------------------------------------------------ revno: 2555.738.63 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-28 11:46:27 +0300 message: Fix Bug#53046 dict_update_statistics_low can still be run concurrently on same table Protect dict_index_t::stat_n_diff_key_vals[] with an array of mutexes. Testing: tested all code paths under UNIV_SYNC_DEBUG for the one in dict_print() one has to enable the InnoDB table monitor: CREATE TABLE innodb_table_monitor (a int) ENGINE=INNODB; ------------------------------------------------------------ revno: 2555.738.62 committer: Marko Makela branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-28 08:33:25 +0200 message: Merge r6103 from InnoDB Plugin to the built-in InnoDB to fix Bug #53202: ------------------------------------------------------------------------ r6103 | marko | 2009-10-26 15:46:18 +0200 (Mon, 26 Oct 2009) | 4 lines Changed paths: M /branches/zip/row/row0ins.c branches/zip: row_ins_alloc_sys_fields(): Zero out the system columns DB_TRX_ID, DB_ROLL_PTR and DB_ROW_ID, in order to avoid harmless Valgrind warnings about uninitialized data. (The warnings were harmless, because the fields would be initialized at a later stage.) ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 2555.738.61 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Tue 2010-04-27 17:45:30 +0300 message: Merge mysql-5.1 -> mysql-5.1-innodb, this merge does not change any files. ------------------------------------------------------------ revno: 2555.738.60 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Tue 2010-04-27 17:05:41 +0300 message: Do not define UNIV_DEBUG_VALGRIND when HAVE_purify because this results in some valgrind errors. Bug#53202 valgrind: uninitialized bytes in dtuple_print() has been opened to track this. ------------------------------------------------------------ revno: 2555.738.59 [merge] committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Tue 2010-04-27 16:51:54 +0300 message: Merge ------------------------------------------------------------ revno: 2555.773.3 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Tue 2010-04-27 09:16:45 +0300 message: Merge 3417..3421 from mysql-5.1-innodb ------------------------------------------------------------ revno: 2555.773.2 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Tue 2010-04-27 09:09:08 +0300 message: Split the innodb.innodb mysql-test. Extract part of innodb.innodb into innodb.innodb_misc1 This is needed in order to be able to more easily debug this test, under valgrind, it is too huge. ------------------------------------------------------------ revno: 2555.738.58 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Tue 2010-04-27 16:47:38 +0300 message: row_merge_drop_temp_indexes(): Remove a bogus char-to-ulint cast. ------------------------------------------------------------ revno: 2555.738.57 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Mon 2010-04-26 16:10:29 +0300 message: lock_rec_queue_validate(): Disable a bogus check that a transaction that holds a lock on a clustered index record also holds a lock on the secondary index record. ------------------------------------------------------------ revno: 2555.738.56 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Mon 2010-04-26 14:26:09 +0300 message: recv_sys_init(): Skip the red-black tree in Hot Backup. ------------------------------------------------------------ revno: 2555.738.55 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Mon 2010-04-26 14:08:56 +0300 message: Add a test case for Bug #52745. ------------------------------------------------------------ revno: 2555.738.54 [merge] committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Mon 2010-04-26 13:52:15 +0300 message: Merge Vasil Dimov 2010-04-26 Bump InnoDB Plugin version number after 1.0.7 ------------------------------------------------------------ revno: 2555.773.1 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Mon 2010-04-26 11:35:57 +0300 message: Bump InnoDB Plugin version number after 1.0.7 has been released in MySQL 5.1.46. ------------------------------------------------------------ revno: 2555.738.53 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Mon 2010-04-26 13:27:25 +0300 message: row_search_for_mysql(): Never try semi-consistent read in unique searches. They are only useful in table scans. (Bug #52663) ------------------------------------------------------------ revno: 2555.738.52 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Mon 2010-04-26 10:39:49 +0300 message: btr_page_split_and_insert(): Silence a compiler warning about possibly uninitialized variable insert_left. ------------------------------------------------------------ revno: 2555.738.51 committer: Calvin Sun branch nick: mysql-5.1-innodb timestamp: Thu 2010-04-22 14:16:14 -0500 message: mysql-5.1-innodb: add error codes to innodb_bug51920.test kill of active connection yields different error code depending on platform. ------------------------------------------------------------ revno: 2555.738.50 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Thu 2010-04-22 12:33:42 +0300 message: Correct the definition of DICT_SYS_INDEXES_NAME_FIELD. When row_merge_drop_temp_indexes() was reworked to drop the indexes via the data dictionary cache, the code was broken because it would read the index name from the wrong field. ------------------------------------------------------------ revno: 2555.738.49 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Wed 2010-04-21 21:53:59 +0300 message: btr_page_split_and_insert(): Avoid an infinite loop. (Bug #52964) btr_page_tuple_smaller(): New function, refactored from btr_page_split_and_insert(). btr_page_get_split_rec(): Renamed from btr_page_get_sure_split_rec(). Note that a NULL return may mean that the tuple is to be inserted into either the lower or upper page, to be determined by btr_page_tuple_smaller(). btr_page_split_and_insert(): When btr_page_get_split_rec() returns NULL, invoke btr_page_tuple_smaller() to determine which half-page the tuple belongs to. Reviewed by Sunny Bains ------------------------------------------------------------ revno: 2555.738.48 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Wed 2010-04-21 13:27:23 +0300 message: dict_create_index_step(): Be strict about DYNAMIC and COMPRESSED tables. Bug #50495 is about REDUNDANT and COMPACT tables, after all. ------------------------------------------------------------ revno: 2555.738.47 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Wed 2010-04-21 13:00:29 +0300 message: ha_innobase::add_index(): Only check for duplicate indexes when the data dictionary is locked. This fixes a UNIV_DEBUG assertion failure in innodb-index.test. ------------------------------------------------------------ revno: 2555.738.46 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Wed 2010-04-21 12:50:33 +0300 message: dtuple_convert_big_rec(): Store locally any fields whose maximum length is less than 256 bytes. (Bug #52745) Add related comments and debug assertions to the "offsets" functions in rem0rec.c. Approved by Sunny Bains ------------------------------------------------------------ revno: 2555.738.45 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Wed 2010-04-21 12:40:32 +0300 message: Adjust tests for the Bug #50495 fix. ------------------------------------------------------------ revno: 2555.738.44 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Wed 2010-04-21 12:16:11 +0300 message: rec_convert_dtuple_to_rec(): Correct the debug check. The "extern" accessor functions return zero or nonzero, not 0 or 1. ------------------------------------------------------------ revno: 2555.738.43 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Wed 2010-04-21 09:39:16 +0300 message: rec_convert_dtuple_to_rec(): Add a debug check. ------------------------------------------------------------ revno: 2555.738.42 committer: Marko Makela branch nick: 5.1-innodb timestamp: Tue 2010-04-20 23:15:50 +0300 message: btr_cur_optimistic_insert(): Remove unused variable "heap". ------------------------------------------------------------ revno: 2555.738.41 committer: Marko Makela branch nick: 5.1-innodb timestamp: Tue 2010-04-20 14:42:22 +0300 message: dict_create_index_step(): Invoke dict_index_add_to_cache() in strict mode only if innodb_strict_mode is set. (Bug #50495) trx_is_strict(): New function, for checking innodb_strict_mode. ------------------------------------------------------------ revno: 2555.738.40 committer: Marko Mäkelä branch nick: 5.1-innodb timestamp: Tue 2010-04-20 11:29:08 +0300 message: Implement UNIV_BTR_AVOID_COPY, an optimization of page splits. ------------------------------------------------------------ revno: 2555.738.39 committer: Marko =?ISO-8859-1?Q?M=E4kel=E4?= branch nick: 5.1-innodb timestamp: Mon 2010-04-19 13:36:03 +0300 message: Enable UNIV_DEBUG_VALGRIND when HAVE_purify is set. ------------------------------------------------------------ revno: 2555.738.38 committer: Marko =?ISO-8859-1?Q?M=E4kel=E4?= branch nick: 5.1-innodb timestamp: Mon 2010-04-19 12:44:05 +0300 message: Enable innodb_plugin tests based on the presence of lib_innodb_plugin. ------------------------------------------------------------ revno: 2555.738.37 committer: Marko =?ISO-8859-1?Q?M=E4kel=E4?= branch nick: 5.1-innodb timestamp: Mon 2010-04-19 12:21:13 +0300 message: Do not require innodb for running innodb_plugin tests. ------------------------------------------------------------ revno: 2555.738.36 committer: Marko Makela branch nick: mysql-5.1-innodb timestamp: Thu 2010-04-15 09:01:22 +0200 message: storage/innodb_plugin: Relax too strict assertions about prefix indexed BLOBs for ROW_FORMAT=DYNAMIC and ROW_FORMAT_COMPRESSED tables (Bug #52746). In these tables, the locally stored prefix of a BLOB can be as small as 20 bytes (BTR_EXTERN_FIELD_REF_SIZE). ROW_FORMAT=REDUNDANT and ROW_FORMAT=COMPACT store a prefix of 768 bytes (REC_MAX_INDEX_COL_LEN). trx_undo_rec_get_col_val(): Relax the ut_ad() assertion and add a reference to dtuple_convert_big_rec(). trx_undo_rec_get_partial_row(): Relax the ut_a() assertion that prompted Bug #52746. ------------------------------------------------------------ revno: 2555.738.35 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-14 23:04:13 +0300 message: Also send emails to innodb_dev_ww@oracle.com ------------------------------------------------------------ revno: 2555.738.34 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-14 23:02:47 +0300 message: Change the tree name to mysql-5.1-innodb in .bzr-mysql/default.conf ------------------------------------------------------------ revno: 2555.738.33 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Mon 2010-04-12 17:26:20 +0300 message: Fix path to have_innodb_plugin.inc ------------------------------------------------------------ revno: 2555.738.32 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Mon 2010-04-12 17:23:00 +0300 message: Remove unused file ------------------------------------------------------------ revno: 2555.738.31 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Mon 2010-04-12 16:58:47 +0300 message: Fix path to innodb-index.inc ------------------------------------------------------------ revno: 2555.738.30 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Mon 2010-04-12 14:56:24 +0300 message: Remove outdated InnoDB Plugin tests from mysql-test/suite/innodb, the InnoDB Plugin tests are now in mysql-test/suite/innodb_plugin. Move InnoDB tests to the innodb suite at mysql-test/suite/innodb. ------------------------------------------------------------ revno: 2555.738.29 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Fri 2010-04-09 16:38:28 +0300 message: Convert InnoDB Plugin tests to include have_innodb_plugin.inc. This also instructs mtr to transparently load the plugin. ------------------------------------------------------------ revno: 2555.738.28 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Fri 2010-04-09 16:33:42 +0300 message: Fix mtr warning in innodb-autoinc-44030.test ------------------------------------------------------------ revno: 2555.738.27 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Fri 2010-04-09 16:29:13 +0300 message: Fix a failure of innodb_plugin.innodb-autoinc-44030 now that MySQL and InnoDB dictionaries do not get out of sync. ------------------------------------------------------------ revno: 2555.738.26 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Fri 2010-04-09 16:25:17 +0300 message: Fix a mtr warning in innodb_plugin.innodb-autoinc ------------------------------------------------------------ revno: 2555.738.25 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Fri 2010-04-09 16:07:41 +0300 message: Merge from innodb-branches-zip ------------------------------------------------------------ revno: 0.3.2081 [merge] committer: Vasil Dimov branch nick: innodb-branches-zip timestamp: Fri 2010-04-09 16:05:29 +0300 message: Merge from innodb-branches-zip ------------------------------------------------------------ revno: 0.4.4 committer: vdimov timestamp: Thu 2010-04-08 14:05:17 +0000 message: branches/zip: Adjust the innodb test after change in behavior in MySQL The change in behavior was introduced by this changeset: ------------------------------------------------------------ revno: 3405 revision-id: joro@sun.com-20100317141846-es0qyf5zcqb0hu1c parent: davi.arnaut@sun.com-20100309125156-z2c4uyqque49v61k committer: Georgi Kodinov branch nick: B49838-5.1-bugteam timestamp: Wed 2010-03-17 16:18:46 +0200 message: Bug #49838: DROP INDEX and ADD UNIQUE INDEX for same index may corrupt definition at engine If a single ALTER TABLE contains both DROP INDEX and ADD INDEX using the same index name (a.k.a. index modification) we need to disable in-place alter table because we can't ask the storage engine to have two copies of the index with the same name even temporarily (if we first do the ADD INDEX and then DROP INDEX) and we can't modify indexes that are needed by e.g. foreign keys if we first do DROP INDEX and then ADD INDEX. Fixed the problem by disabling in-place ALTER TABLE for these cases. modified: mysql-test/r/innodb_mysql.result sp1f-innodb_mysql.result-20060426055153-bychbbfnqtvmvrwccwhn24i6yi46uqjv mysql-test/t/innodb_mysql.test sp1f-innodb_mysql.test-20060816102624-6ymo37d3nyhvbqyzqn5ohsfuydwo426k sql/sql_table.cc sp1f-sql_table.cc-19700101030959-tzdkvgigezpuaxnldqh3fx2h7h2ggslu ------------------------------------------------------------ revno: 2555.738.24 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Fri 2010-04-09 15:56:51 +0300 message: Move the InnoDB Plugin tests from storage/innodb_plugin/mysql-test/ where they are ignored to a new test suite "innodb_plugin". Remove a hack in mtr that was deployed to run the builtin InnoDB tests against the InnoDB Plugin. Also detect if a test is an 'innodb plugin test' and if so then transparently replace the builtin InnoDB with the InnoDB Plugin. ------------------------------------------------------------ revno: 2555.738.23 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Thu 2010-04-08 19:55:55 +0300 message: Adjust mysql-test/suite/binlog/t/binlog_killed.test after a change in behavior in InnoDB. The change in behavior was introduced by this changeset: ------------------------------------------------------------ revno: 3370 revision-id: vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457 parent: vasil.dimov@oracle.com-20100331130440-l0y517y3mjsjqy4v parent: vasil.dimov@oracle.com-20100331113119-2kbgkaz1d426a43c committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 16:06:13 +0300 message: Merge from innodb-branches-5.1 ------------------------------------------------------------ revno: 0.1.819 revision-id: vasil.dimov@oracle.com-20100331113119-2kbgkaz1d426a43c parent: vasil.dimov@oracle.com-20100331064722-9rc3wypzmer7d6jj parent: svn-v4:cee13dc7-1704-0410-992b-c9b4543f1246:branches/5.1:6918 committer: Vasil Dimov branch nick: innodb-branches-5.1 timestamp: Wed 2010-03-31 14:31:19 +0300 message: Merge from SVN ------------------------------------------------------------ revno: 0.2.1 revision-id: svn-v4:cee13dc7-1704-0410-992b-c9b4543f1246:branches/5.1:6918 parent: svn-v4:cee13dc7-1704-0410-992b-c9b4543f1246:branches/5.1:6912 committer: mmakela timestamp: Wed 2010-03-31 07:14:51 +0000 message: branches/5.1: Obey KILL during a lock wait (Bug #51920). srv_suspend_mysql_thread(), srv_lock_timeout_and_monitor_thread(): Check trx_is_interrupted() in addition to checking the lock wait timeout. rb://279 approved by Sunny Bains ------------------------------------------------------------ revno: 2555.738.22 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 22:42:25 +0300 message: Merge from innodb-branches-zip ------------------------------------------------------------ revno: 0.3.2080 [merge] committer: Vasil Dimov branch nick: innodb-branches-zip timestamp: Wed 2010-04-07 22:41:50 +0300 message: Merge from SVN ------------------------------------------------------------ revno: 0.4.3 committer: vdimov timestamp: Wed 2010-04-07 18:40:38 +0000 message: branches/zip: Whitespace fixup in univ.i ------------------------------------------------------------ revno: 0.4.2 committer: csun timestamp: Wed 2010-04-07 18:24:55 +0000 message: branches/zip: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------ revno: 2555.738.21 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 22:00:06 +0300 message: Merge from innodb-branches-zip ------------------------------------------------------------ revno: 0.3.2079 [merge] committer: Vasil Dimov branch nick: innodb-branches-zip timestamp: Wed 2010-04-07 21:53:09 +0300 message: Merge from SVN ------------------------------------------------------------ revno: 0.4.1 committer: mmakela timestamp: Wed 2010-04-07 11:03:54 +0000 message: branches/zip: innobase_init(): Correct the error message about wrong innodb_change_buffering value. Reported by Ranger. ------------------------------------------------------------ revno: 2555.738.20 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 21:59:02 +0300 message: Merge from innodb-branches-5.1 ------------------------------------------------------------ revno: 0.1.822 [merge] committer: Vasil Dimov branch nick: innodb-branches-5.1 timestamp: Wed 2010-04-07 21:52:37 +0300 message: Merge from SVN ------------------------------------------------------------ revno: 0.2.5 committer: vdimov timestamp: Tue 2010-04-06 16:18:25 +0000 message: branches/5.1: Fix ./export.sh to honor ENDREV ------------------------------------------------------------ revno: 0.2.4 committer: mmakela timestamp: Tue 2010-04-06 06:14:51 +0000 message: branches/zip: trx0sys.ic: Correct a typo in a comment. ------------------------------------------------------------ revno: 2555.738.19 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 21:33:36 +0300 message: Repply changes to storage/innodb_plugin/plug.in that were made by MySQL ------------------------------------------------------------ revno: 2555.738.18 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 21:30:44 +0300 message: Repply changes to storage/innodb_plugin/mysql-test/innodb_bug42101-nonzero-master.opt that were made by MySQL ------------------------------------------------------------ revno: 2555.738.17 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 21:17:13 +0300 message: Repply changes to storage/innodb_plugin/mysql-test/*.opt that were made by MySQL ------------------------------------------------------------ revno: 2555.738.16 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 20:44:47 +0300 message: Repply changes to storage/innodb_plugin/handler/ha_innodb.cc that were made by MySQL ------------------------------------------------------------ revno: 2555.738.15 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 20:24:43 +0300 message: Repply changes to storage/innodb_plugin/Makefile.am that were made by MySQL ------------------------------------------------------------ revno: 2555.738.14 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 20:21:15 +0300 message: Reapply changes to storage/innodb_plugin/CMakeLists.txt that were made by MySQL ------------------------------------------------------------ revno: 2555.738.13 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 19:53:14 +0300 message: Import branches/zip@r6960 from SVN on top of storage/innodb_plugin ------------------------------------------------------------ revno: 0.3.2078 committer: Vasil Dimov branch nick: innodb-branches-zip timestamp: Wed 2010-04-07 14:18:43 +0300 message: Move everything into a subdirectory xyz/ ------------------------------------------------------------ revno: 0.3.2077 committer: mmakela timestamp: Wed 2010-04-07 06:21:26 +0000 message: branches/zip: buf_flush_block_cmp(): Do not mix declarations and code. Stick to C90, because some build platforms are not C99 yet. ------------------------------------------------------------ revno: 0.3.2076 committer: vdimov timestamp: Tue 2010-04-06 18:05:54 +0000 message: branches/zip: Whitespace fixup ------------------------------------------------------------ revno: 0.3.2075 committer: vdimov timestamp: Tue 2010-04-06 17:55:02 +0000 message: Change the BZR property ------------------------------------------------------------ revno: 0.3.2074 committer: vdimov timestamp: Tue 2010-04-06 17:48:35 +0000 message: Set some experimental properties ------------------------------------------------------------ revno: 0.3.2073 committer: vdimov timestamp: Tue 2010-04-06 16:20:33 +0000 message: Set some experimental properties that could help with the merge into BZR. ------------------------------------------------------------ revno: 0.3.2072 committer: mmakela timestamp: Tue 2010-04-06 12:11:46 +0000 message: branches/zip: Add debug checks to track down Issue #461. dict_table_check_for_dup_indexes(): Add the flag tmp_ok. If !tmp_ok, check that no index name starts with TEMP_INDEX_PREFIX. ha_innobase::add_index(), ha_innobase::prepare_drop_index(), ha_innobase::final_drop_index(): Call dict_table_check_for_dup_indexes(). ------------------------------------------------------------ revno: 0.3.2071 committer: mmakela timestamp: Wed 2010-03-31 11:30:56 +0000 message: branches/zip: Merge revisions 6921:6924 from branches/5.1: ------------------------------------------------------------------------ r6924 | mmakela | 2010-03-31 15:28:25 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: M /branches/5.1/mysql-test/innodb_bug51920.test branches/5.1: innodb_bug51920.test: Fix a race condition. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.2070 committer: mmakela timestamp: Wed 2010-03-31 10:54:30 +0000 message: branches/zip: Merge revisions 6918:6921 from branches/5.1: ------------------------------------------------------------------------ r6921 | mmakela | 2010-03-31 14:33:04 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/5.1/mysql-test/innodb_bug51920.result M /branches/5.1/mysql-test/innodb_bug51920.test branches/5.1: innodb_bug51920.test: Make the test quicker and more deterministic. Suggested by Vasil Dimov. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.2069 committer: mmakela timestamp: Wed 2010-03-31 07:49:08 +0000 message: branches/zip: Fix a compilation error that sneaked in in r6919. ------------------------------------------------------------ revno: 0.3.2068 committer: mmakela timestamp: Wed 2010-03-31 07:34:22 +0000 message: branches/zip: Merge revisions 6788:6918 from branches/5.1: ------------------------------------------------------------------------ r6822 | vasil | 2010-03-15 10:17:31 +0200 (Mon, 15 Mar 2010) | 12 lines Changed paths: M /branches/5.1/row/row0sel.c branches/5.1: Typecast to silence a compiler warning: row/row0sel.c: 4548 C4244: '=' : conversion from 'float' to 'ib_ulonglong', possible loss of data row/row0sel.c: 4553 C4244: '=' : conversion from 'double' to 'ib_ulonglong', possible loss of data Reported by: Jonas Oreland Discussed with: Sunny Bains ------------------------------------------------------------------------ r6884 | vdimov | 2010-03-26 13:05:03 +0200 (Fri, 26 Mar 2010) | 6 lines Changed paths: M /branches/5.1/mysql-test/innodb_bug38231.test branches/5.1: Fix a non-determinism in innodb_bug38231. Reported by: Sergey Vojtovich ------------------------------------------------------------------------ r6911 | vdimov | 2010-03-30 11:39:02 +0300 (Tue, 30 Mar 2010) | 2 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Whitespace fixup ------------------------------------------------------------------------ r6912 | vdimov | 2010-03-30 12:18:46 +0300 (Tue, 30 Mar 2010) | 2 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Whitespace fixup on line 354 ------------------------------------------------------------------------ r6918 | mmakela | 2010-03-31 11:14:51 +0300 (Wed, 31 Mar 2010) | 6 lines Changed paths: A /branches/5.1/mysql-test/innodb_bug51920.result A /branches/5.1/mysql-test/innodb_bug51920.test M /branches/5.1/srv/srv0srv.c branches/5.1: Obey KILL during a lock wait (Bug #51920). srv_suspend_mysql_thread(), srv_lock_timeout_and_monitor_thread(): Check trx_is_interrupted() in addition to checking the lock wait timeout. rb://279 approved by Sunny Bains ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.2067 committer: mmakela timestamp: Mon 2010-03-29 09:54:57 +0000 message: branches/zip: Merge c6899 from branches/innodb+: Add debug assertions to track down Bug #52360. hash_table_t::magic_n: Add HASH_TABLE_MAGIC_N checks, which were fully absent. ut_hash_ulint(): Assert table_size > 0 before division. ------------------------------------------------------------ revno: 0.3.2066 committer: mmakela timestamp: Mon 2010-03-29 07:36:19 +0000 message: branches/zip: innodb_mutex_show_status(): Fix a condition that was accidentally negated in r6781, making SHOW ENGINE INNODB MUTEX STATUS display only locks with no OS waits. ------------------------------------------------------------ revno: 0.3.2065 committer: vdimov timestamp: Fri 2010-03-26 14:19:01 +0000 message: Non-functional change: update copyright year to 2010 of the files that have been modified after 2010-01-01 according to svn. for f in $(svn log -v -r{2010-01-01}:HEAD |grep "^ M " |cut -b 16- |sort -u) ; do sed -i "" -E 's/(Copyright \(c\) [0-9]{4},) [0-9]{4}, (.*Innobase Oy.+All Rights Reserved)/\1 2010, \2/' $f ; done ------------------------------------------------------------ revno: 0.3.2064 committer: vdimov timestamp: Thu 2010-03-25 16:18:15 +0000 message: branches/zip: Wrap line at 78 column in ChangeLog. ------------------------------------------------------------ revno: 0.3.2063 committer: vdimov timestamp: Thu 2010-03-25 15:17:52 +0000 message: branches/zip: Wrap ChangeLog at 78th column ------------------------------------------------------------ revno: 0.3.2062 committer: vdimov timestamp: Thu 2010-03-25 15:06:56 +0000 message: branches/zip: Use Bug#N instead of Bug #N to be consistent with the rest of the fil. ------------------------------------------------------------ revno: 0.3.2061 committer: vdimov timestamp: Thu 2010-03-25 15:03:17 +0000 message: branches/zip: Fix ChangeLog - write only the bug title in bugs.mysql.com-related entires. ------------------------------------------------------------ revno: 0.3.2060 committer: vdimov timestamp: Thu 2010-03-25 14:39:44 +0000 message: branches/zip: Whitespace fixup to be consistent with the rest of the file. ------------------------------------------------------------ revno: 0.3.2059 committer: mmakela timestamp: Thu 2010-03-25 11:03:08 +0000 message: branches/zip: page_validate(): Check the buf[] bounds. ------------------------------------------------------------ revno: 0.3.2058 committer: mmakela timestamp: Wed 2010-03-24 12:05:53 +0000 message: branches/zip: dtype_new_store_for_order_and_null_size(): Add ut_ad() on mtype. ------------------------------------------------------------ revno: 0.3.2057 committer: vdimov timestamp: Tue 2010-03-23 17:31:02 +0000 message: branches/zip: Merge joerg@mysql.com-20100322150231-vdq0afbqtmbs6phy from BZR, Including univ.i before mysql/plugin.h is needed to avoid this compiler error: o This is how gcc puts it: o > > ccache /usr/local/gcc-4.3.2/bin/gcc -static-libgcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -I../../include -I../../regex -I./include -I../../sql -I. -I../../zlib -g -O3 -march=i686 -DUNIV_LINUX -MT libinnobase_a-trx0i_s.o -MD -MP -MF .deps/libinnobase_a-trx0i_s.Tpo -c -o libinnobase_a-trx0i_s.o `test -f 'trx/trx0i_s.c' || echo './'`trx/trx0i_s.c o > > In file included from ./include/univ.i:114, o > > from trx/trx0i_s.c:36: o > > ../../include/my_pthread.h:628: error: expected ')' before '*' token o > > In file included from ../../include/my_pthread.h:732, o > > from ./include/univ.i:114, o > > from trx/trx0i_s.c:36: o > > ../../include/mysql/psi/mysql_thread.h:100: error: expected specifier-qualifier-list before 'pthread_rwlock_t' o > > ../../include/mysql/psi/mysql_thread.h:116: error: expected specifier-qualifier-list before 'pthread_rwlock_t' o > > ../../include/mysql/psi/mysql_thread.h: In function 'inline_mysql_rwlock_init': o > > ../../include/mysql/psi/mysql_thread.h:711: error: 'mysql_rwlock_t' has no member named 'm_psi' o > > ../../include/mysql/psi/mysql_thread.h:716: error: 'mysql_rwlock_t' has no member named 'm_rwlock' o > > .... ((continued)) o o Intel's icc gives slightly clearer messages: o > > icc -static-intel -static-libgcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -I../../include -I../../regex -I./include -I../../sql -I. -I../../zlib -O3 -g -unroll2 -ip -mp -restrict -no-ftz -no-prefetch -DUNIV_LINUX -MT libinnobase_a-trx0i_s.o -MD -MP -MF .deps/libinnobase_a-trx0i_s.Tpo -c -o libinnobase_a-trx0i_s.o `test -f 'trx/trx0i_s.c' || echo './'`trx/trx0i_s.c o > > ../../include/my_pthread.h(628): error: identifier "pthread_rwlock_t" is undefined o > > extern int rw_pr_init(rw_pr_lock_t *); o > > ^ o > > o > > ../../include/mysql/psi/mysql_thread.h(100): error: identifier "pthread_rwlock_t" is undefined o > > rw_lock_t m_rwlock; o > > ^ o > > o > > ../../include/mysql/psi/mysql_thread.h(116): error: identifier "pthread_rwlock_t" is undefined o > > rw_pr_lock_t m_prlock; o > > ^ ------------------------------------------------------------ revno: 0.3.2056 committer: jyang timestamp: Tue 2010-03-23 16:20:36 +0000 message: branches/zip: This is patch from Inaam that uses red-black tree to speed up insertions into the flush_list and thus the recovery process. The patch has been tested by Nokia. ------------------------------------------------------------ revno: 0.3.2055 committer: mmakela timestamp: Tue 2010-03-23 12:09:24 +0000 message: branches/zip: innodb_read_ahead_threshold: Add missing space to help string. ------------------------------------------------------------ revno: 0.3.2054 committer: mmakela timestamp: Tue 2010-03-23 12:07:53 +0000 message: branches/zip: innodb_change_buffering: Correct the documentation. ------------------------------------------------------------ revno: 0.3.2053 committer: marko timestamp: Mon 2010-03-22 11:35:29 +0000 message: branches/zip: mutex_own(), rw_lock_own(): Add attribute((warn_unused_result)). ------------------------------------------------------------ revno: 0.3.2052 committer: calvin timestamp: Thu 2010-03-18 22:32:23 +0000 message: branches/zip: Fix Bug #52102 InnoDB Plugin shows performance drop comparing to builtin InnoDB (Windows only). Disable Windows atomics by default. Approved by: Inaam ------------------------------------------------------------ revno: 0.3.2051 committer: marko timestamp: Thu 2010-03-18 07:48:18 +0000 message: branches/zip: buf_page_peek_if_too_old(): Use 32-bit arithmetics when comparing the age of access_time to buf_LRU_old_threshold_ms. This fixes a bug on 64-bit systems. ------------------------------------------------------------ revno: 0.3.2050 committer: calvin timestamp: Wed 2010-03-17 15:16:38 +0000 message: branches/zip: rename IB_HAVE_PAUSE_INSTRUCTION to HAVE_IB_PAUSE_INSTRUCTION in CMakeLists.txt. The rename was done as r5871, but CMakeLists.txt was forgotten. Also, add INNODB_RW_LOCKS_USE_ATOMICS to CMake. ------------------------------------------------------------ revno: 0.3.2049 committer: inaam timestamp: Thu 2010-03-11 21:15:17 +0000 message: branches/zip issue#463 Fixed compiler warning about uninitialized variable. Non-functional change. ------------------------------------------------------------ revno: 0.3.2048 committer: marko timestamp: Thu 2010-03-11 11:34:28 +0000 message: branches/zip: mtr_memo_contains(): Relax the assertion of r6800, allowing mtr->state == MTR_COMMITTING. ------------------------------------------------------------ revno: 0.3.2047 committer: marko timestamp: Thu 2010-03-11 10:02:57 +0000 message: branches/zip: Add ut_ad(mtr->state == MTR_ACTIVE) to various places. ------------------------------------------------------------ revno: 0.3.2046 committer: jyang timestamp: Thu 2010-03-11 07:59:42 +0000 message: branches/zip: Once change in bug #47621 merges into zip branch, zip only test innodb_bug44571 needs to be updated to reflect the column name change would be successful be done in InnoDB as well. ------------------------------------------------------------ revno: 0.3.2045 committer: marko timestamp: Thu 2010-03-11 07:53:01 +0000 message: branches/zip: Fix and clarify the latching of some buf_block_t members. buf_block_t::check_index_page_at_flush: Note that this field is not protected by any mutex. Make it a separate field, not a bitfield that could share the machine word with other fields. buf_block_t::lock_hash_val: Note that this field is protected by buf_block_t::lock (or during block creation, by buf_pool_mutex and buf_block_t::mutex). buf_block_get_lock_hash_val(): Assert that block->lock is held by the current thread. Issue #465, rb://267 approved by Inaam Rana ------------------------------------------------------------ revno: 0.3.2044 committer: marko timestamp: Wed 2010-03-10 12:02:19 +0000 message: branches/zip: Merge revisions 6669:6788 from branches/5.1: ------------------------------------------------------------------------ r6774 | calvin | 2010-03-03 23:56:10 +0200 (Wed, 03 Mar 2010) | 2 lines Changed paths: M /branches/5.1/trx/trx0sys.c branches/5.1: fix bug#51653: outdated reference to set-variable Non functional change. ------------------------------------------------------------------------ r6780 | vasil | 2010-03-08 19:13:20 +0200 (Mon, 08 Mar 2010) | 4 lines Changed paths: M /branches/5.1/plug.in branches/5.1: Whitespace fixup. ------------------------------------------------------------------------ r6783 | jyang | 2010-03-09 17:54:14 +0200 (Tue, 09 Mar 2010) | 9 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb_bug21704.result A /branches/5.1/mysql-test/innodb_bug47621.result A /branches/5.1/mysql-test/innodb_bug47621.test branches/5.1: Fix bug #47621 "MySQL and InnoDB data dictionaries will become out of sync when renaming columns". MySQL does not provide new column name information to storage engine to update the system table. To avoid column name mismatch, we shall just request a table copy for now. rb://246 approved by Marko. ------------------------------------------------------------------------ r6785 | vasil | 2010-03-10 09:04:38 +0200 (Wed, 10 Mar 2010) | 11 lines Changed paths: M /branches/5.1/mysql-test/innodb_bug38231.test branches/5.1: Add the missing --reap statements in innodb_bug38231.test. Probably MySQL enforced the presence of those recently and the test started failing like: main.innodb_bug38231 [ fail ] Test ended at 2010-03-10 08:48:32 CURRENT_TEST: main.innodb_bug38231 mysqltest: At line 49: Cannot run query on connection between send and reap ------------------------------------------------------------------------ r6788 | vasil | 2010-03-10 10:53:21 +0200 (Wed, 10 Mar 2010) | 8 lines Changed paths: M /branches/5.1/mysql-test/innodb_bug38231.test branches/5.1: In innodb_bug38231.test: replace the fragile sleep 0.2 that depends on timing with a more robust condition which waits for the TRUNCATE and LOCK commands to appear in information_schema.processlist. This could also break if there are other sessions executing the same SQL commands, but there are none during the execution of the mysql test. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.2043 committer: marko timestamp: Wed 2010-03-10 11:56:41 +0000 message: branches/zip: Copy tests from branches/5.1 that were lost in some merge. ------------------------------------------------------------ revno: 0.3.2042 committer: marko timestamp: Wed 2010-03-10 11:39:06 +0000 message: branches/zip: Add ChangeLog entries for r6789, r6790. ------------------------------------------------------------ revno: 0.3.2041 committer: jyang timestamp: Wed 2010-03-10 11:09:41 +0000 message: branches/zip: Fix bug #51356: "many valgrind errors in error messages with concurrent ddl". Null terminate the name string returned from innobase_convert_identifier() call when reporting DB_DUPLICATE_KEY error in create_table_def(). rb://266 approved by Marko ------------------------------------------------------------ revno: 0.3.2040 committer: jyang timestamp: Wed 2010-03-10 09:18:18 +0000 message: branches/zip: If a unique index is on a column prefix, such unique index cannot be upgrade to primary index even if there is no primary index already defined. Also fix possible corruption when initialize "ref_length" value in case there is a mismatch between MySQL and InnoDB primary key. Fix bug #51378: "Init 'ref_length' to correct value, in case an out of bound MySQL primary_key". rb://262 approved by Marko. ------------------------------------------------------------ revno: 0.3.2039 committer: marko timestamp: Wed 2010-03-10 08:35:06 +0000 message: branches/zip: recv_parse_log_rec(): Remove a bogus assertion about page_no. TODO: We might also consider removing recv_max_parsed_page_no, because it does not make much sense with *.ibd files. recv_report_corrupt_log(), recv_scan_log_recs(): Abort when a corrupted log record has been found, unless innodb_force_recovery has been set. This fixes Issue #464. rb://265 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.2038 committer: vasil timestamp: Wed 2010-03-10 07:16:50 +0000 message: branches/zip: Fix typo in comment ------------------------------------------------------------ revno: 0.3.2037 committer: marko timestamp: Tue 2010-03-09 12:09:26 +0000 message: branches/zip: fil0fil.c: Update comments on table->flags as of r6252. ------------------------------------------------------------ revno: 0.3.2036 committer: marko timestamp: Tue 2010-03-09 07:41:08 +0000 message: branches/zip: Make SHOW ENGINE INNODB MUTEX display SUM(os_waits) for block mutexes and blocks. Designed by Michael and Marko. rb://188, Issue #358 ------------------------------------------------------------ revno: 0.3.2035 committer: marko timestamp: Mon 2010-03-08 12:35:42 +0000 message: branches/zip: Fix IMPORT TABLESPACE of compressed tables. Previously, a wrong parameter was passed to buf_flush_init_for_writing(). fil_reset_too_high_lsns(): Set up page_zip and use it if needed. rb://264, Issue #352 ------------------------------------------------------------ revno: 0.3.2034 committer: marko timestamp: Thu 2010-03-04 11:01:25 +0000 message: branches/zip: trx_undo_update_rec_get_update(): Silence a bogus GCC warning about a possibly uninitialized variable. ------------------------------------------------------------ revno: 0.3.2033 committer: marko timestamp: Wed 2010-03-03 13:31:54 +0000 message: branches/zip: row_raw_format(): Silence a GCC 4.4.2 warning of possibly uninitialized variable format_in_hex. ------------------------------------------------------------ revno: 0.3.2032 committer: marko timestamp: Wed 2010-03-03 12:52:43 +0000 message: Document r6770. ------------------------------------------------------------ revno: 0.3.2031 committer: marko timestamp: Wed 2010-03-03 10:52:55 +0000 message: branches/zip: Disallow duplicate index name when creating an index. This should fix Mantis Issue #461. innodb.test, innodb.result, innodb-index.test, innodb-index.result: Adjust the test result and mention that the introduced restriction has been reported as MySQL Bug #51451. innobase_check_index_keys(): Add a parameter for the InnoDB table and check that no duplicate index name is added. Report errors by my_error() instead of sql_print_error(). rb://260 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.2030 committer: vasil timestamp: Tue 2010-03-02 16:20:48 +0000 message: branches/zip: Add a NOTE to the comment of btr_node_ptr_get_child_page_no() to prevent mysterious bugs. ------------------------------------------------------------ revno: 0.3.2029 committer: calvin timestamp: Mon 2010-03-01 16:16:10 +0000 message: branches/zip: fix bug#51587 Non-functional change. ------------------------------------------------------------ revno: 0.3.2028 committer: marko timestamp: Wed 2010-02-24 08:56:43 +0000 message: branches/zip: Allocate the merge sort buffers from a heap, not stack. The merge sort can use up to 48KiB of buffers when merging blocks. That can cause a stack overflow, especially on 64-bit systems when not building with inlined functions. This was reported as Issue #462. row_merge_dup_report(): Allocate buf and offsets from a heap. row_merge_heap_create(): Allocate space for buf[3] too. Fix bogus sizeof arithmetics that happened to work, because sizeof(ulint)==sizeof(void*). row_merge_blocks(), row_merge_blocks_copy(): Allocate buf[3] from heap. row_merge_insert_index_tuples(): Allocate buf from graph_heap. rb://258 approved and tested by Sunny Bains ------------------------------------------------------------ revno: 0.3.2027 committer: marko timestamp: Mon 2010-02-22 06:57:23 +0000 message: branches/zip: row_fetch_store_uint4(): Remove unused function. This was added to trunk in r435. ------------------------------------------------------------ revno: 0.3.2026 committer: vasil timestamp: Sat 2010-02-20 16:45:41 +0000 message: Non-functional change: update copyright year to 2010 of the files that have been modified after 2010-01-01 according to svn. for f in $(svn log -v -r{2010-01-01}:HEAD |grep "^ M " |cut -b 16- |sort -u) ; do sed -i "" -E 's/(Copyright \(c\) [0-9]{4},) [0-9]{4}, (.*Innobase Oy.+All Rights Reserved)/\1 2010, \2/' $f ; done ------------------------------------------------------------ revno: 0.3.2025 committer: sunny timestamp: Thu 2010-02-18 11:44:31 +0000 message: branches/zip: Don't print the entire lock bit set if the block was not found in the buffer pool. Only print the bits that are set and that information is in the lock and not in the block. See rb://256 approved by Marko. ------------------------------------------------------------ revno: 0.3.2024 committer: marko timestamp: Wed 2010-02-17 16:54:04 +0000 message: branches/zip: Remove UNIV_BASIC_LOG_DEBUG. This fixes the FILE_FLUSH_LSN printouts mentioned in Issue #341. Suggested by Heikki. ------------------------------------------------------------ revno: 0.3.2023 committer: marko timestamp: Wed 2010-02-17 16:50:20 +0000 message: branches/zip: fsp_init_file_page_low(): Declare the page uninitialized for Valgrind. ------------------------------------------------------------ revno: 0.3.2022 committer: marko timestamp: Wed 2010-02-17 16:49:21 +0000 message: branches/zip: FIL_PAGE_FILE_FLUSH_LSN: Note that the field is only valid for the first page of each ibdata* file, not *.ibd files. Suggested by Heikki, in connection with the LSN warning noted in Issue #341. ------------------------------------------------------------ revno: 0.3.2021 committer: marko timestamp: Wed 2010-02-17 13:52:05 +0000 message: branches/zip: Merge revisions 6613:6669 from branches/5.1: ------------------------------------------------------------------------ r6669 | jyang | 2010-02-11 12:24:19 +0200 (Thu, 11 Feb 2010) | 7 lines branches/5.1: Fix bug #50691, AIX implementation of readdir_r causes InnoDB errors. readdir_r() returns an non-NULL value in the case of reaching the end of a directory. It should not be treated as an error return. rb://238 approved by Marko ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.2020 committer: marko timestamp: Wed 2010-02-17 09:48:34 +0000 message: branches/zip: lock_table_other_has_incompatible(): Return an incompatible lock or NULL instead of TRUE or FALSE. Approved by Sunny over IM. ------------------------------------------------------------ revno: 0.3.2019 committer: marko timestamp: Tue 2010-02-16 13:06:16 +0000 message: branches/zip: Fix a comment. ------------------------------------------------------------ revno: 0.3.2018 committer: marko timestamp: Tue 2010-02-16 12:53:20 +0000 message: branches/zip: log_reserve_and_write_fast(): Correct a race condition in UNIV_LOG_LSN_DEBUG. This could have caused Issue #440. ------------------------------------------------------------ revno: 0.3.2017 committer: sunny timestamp: Tue 2010-02-16 08:14:21 +0000 message: branches/zip: Fix comment. Non functional change. ------------------------------------------------------------ revno: 0.3.2016 committer: sunny timestamp: Tue 2010-02-16 08:12:25 +0000 message: branches/zip: Update the comments and fix the whitespace issues. See rb://255 Approved by: Marko ------------------------------------------------------------ revno: 0.3.2015 committer: sunny timestamp: Tue 2010-02-16 08:12:17 +0000 message: branches/zip: Change the bit fields back to ulint. Bit fields were causing problems with concurrency on SMP systems because of word packing issues. The number of trx_t's in a system is not sufficient enough to require that we try and save a few bytes in the data structure. See rb://255 for details. ------------------------------------------------------------ revno: 0.3.2014 committer: marko timestamp: Tue 2010-02-16 08:05:36 +0000 message: branches/zip: trx_lists_init_at_db_start(): Assert that the kernel_mutex is held by the caller. ------------------------------------------------------------ revno: 0.3.2013 committer: inaam timestamp: Fri 2010-02-12 17:22:35 +0000 message: branches/zip ChangeLog entry for r6674. ------------------------------------------------------------ revno: 0.3.2012 committer: marko timestamp: Thu 2010-02-11 20:41:11 +0000 message: branches/zip: Remove bogus debug assertions introduced in r6660. ------------------------------------------------------------ revno: 0.3.2011 committer: inaam timestamp: Thu 2010-02-11 15:54:44 +0000 message: branches/zip bug# 49535 This is a backport of r4924. mem_heap_get_size() scans all allocated blocks to calculate the total size of the heap. This patch introduces a new, total_size, field in mem_block_info_struct. This field is valid only for base block (i.e.: the first block allocated for the heap) and is set to ULINT_UNDEFINED in other blocks. This considerably improves the performance of redo scan during recovery. rb://108 issue#216 Approved by: Heikki ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.2010 committer: marko timestamp: Thu 2010-02-11 11:09:48 +0000 message: branches/zip: Relax a debug assertion about a missing BLOB. (Issue #452) When rolling back an incomplete transaction in purge, tolerate missing BLOBs also in update undo, when undoing an INSERT by updating a delete-marked record, and the delete-marked record is no longer needed. Previously, we only tolerated missing BLOBs in insert undo. This merely fixes a debug assertion; the code performed correctly without UNIV_DEBUG. rb://249 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.3.2009 committer: marko timestamp: Thu 2010-02-11 11:01:18 +0000 message: branches/zip: Introduce thr_is_recv(). ------------------------------------------------------------ revno: 0.3.2008 committer: marko timestamp: Thu 2010-02-11 09:21:11 +0000 message: branches/zip: Clarify the rollback of INSERT by UPDATE of delete-marked rec. row_undo_mod_remove_clust_low(): Augment the function comment. row_undo_mod_remove_clust_low(), row_undo_mod_del_mark_or_remove_sec_low(), row_undo_mod_del_mark_or_remove_sec(), row_undo_mod_upd_del_sec(): Add ut_ad(node->rec_type == TRX_UNDO_UPD_DEL_REC); ------------------------------------------------------------ revno: 0.3.2007 committer: marko timestamp: Wed 2010-02-10 11:11:04 +0000 message: branches/zip: trx_rseg_create(): Unused function, remove. ------------------------------------------------------------ revno: 0.3.2006 committer: marko timestamp: Wed 2010-02-10 09:07:05 +0000 message: branches/zip: Clean up after r6559. Now that btr_pcur_open_with_no_init() is a macro, do not mix preprocessor directives in the macro invocation, because it is implementation-defined whether that is going to work. ------------------------------------------------------------ revno: 0.3.2005 committer: marko timestamp: Wed 2010-02-10 08:40:55 +0000 message: branches/zip: Merge revisions 6538:6613 from branches/5.1: ------------------------------------------------------------------------ r6545 | jyang | 2010-02-03 03:57:32 +0200 (Wed, 03 Feb 2010) | 8 lines Changed paths: M /branches/5.1/lock/lock0lock.c branches/5.1: Fix bug #49001, "SHOW INNODB STATUS deadlock info incorrect when deadlock detection aborts". Print the correct lock owner when recursive function lock_deadlock_recursive() exceeds its maximum depth LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK. rb://217, approved by Marko. ------------------------------------------------------------------------ r6613 | inaam | 2010-02-09 20:23:09 +0200 (Tue, 09 Feb 2010) | 11 lines Changed paths: M /branches/5.1/buf/buf0buf.c M /branches/5.1/buf/buf0rea.c M /branches/5.1/include/buf0rea.h branches/5.1: Fix Bug #38901 InnoDB logs error repeatedly when trying to load page into buffer pool In buf_page_get_gen() if we are unable to read a page (because of corruption or some other reason) we keep on retrying. This fills up error log with millions of entries in no time and we'd eventually run out of disk space. This patch limits the number of attempts that we make (currently set to 100) and after that we abort with a message. rb://241 Approved by: Heikki ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.2004 committer: marko timestamp: Wed 2010-02-10 07:19:52 +0000 message: branches/zip: Document r6614 in ChangeLog. ------------------------------------------------------------ revno: 0.3.2003 committer: inaam timestamp: Tue 2010-02-09 18:26:23 +0000 message: branches/plugin rb://242 Let the master thread sleep if the amount of work to be done is calibrated as taking less than a second. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.2002 committer: marko timestamp: Tue 2010-02-09 12:32:39 +0000 message: branches/zip: recv_recovery_rollback_active(): Drop the temporary tables and indexes after enabling sync order checks. This should not make any difference. This could have been done in r6611. ------------------------------------------------------------ revno: 0.3.2001 committer: marko timestamp: Tue 2010-02-09 12:28:25 +0000 message: branches/zip: Roll back dictionary transaction(s) before scanning *.ibd files innobase_start_or_create_for_mysql(): Roll back data dictionary transactions before scanning the *.ibd files. Then, data dictionary records can be loaded to the cache before opening the *.ibd files. recv_recovery_rollback_active(): Refactored from recv_recovery_from_checkpoint_finish(). rb://235, committing without review, because this is needed for TablespaceDictionary. ------------------------------------------------------------ revno: 0.3.2000 committer: marko timestamp: Tue 2010-02-09 11:53:59 +0000 message: branches/zip: When dropping temporary indexes and tables at startup, first load them to the data dictionary cache and use the normal routines for dropping tables or indexes. This should reduce the risk of bugs and also make the code compatible with the upcoming TablespaceDictionary implementation. DICT_SYS_INDEXES_NAME_FIELD: The clustered index position of SYS_INDEXES.NAME. row_merge_drop_temp_indexes(): Scan SYS_INDEXES for tables containing temporary indexes, and load the tables as needed. Invoke row_merge_drop_index() to drop the indexes. row_mysql_drop_temp_tables(): Scan SYS_TABLES for temporary tables, load them with dict_load_table() and drop them with row_drop_table_for_mysql(). rb://251, not yet reviewed ------------------------------------------------------------ revno: 0.3.1999 committer: marko timestamp: Tue 2010-02-09 11:45:40 +0000 message: branches/zip: dict_field_print_low(): Add const qualifier. ------------------------------------------------------------ revno: 0.3.1998 committer: marko timestamp: Tue 2010-02-09 09:02:37 +0000 message: branches/zip: ha_innobase::add_index(): Check for !innodb_table. ------------------------------------------------------------ revno: 0.3.1997 committer: marko timestamp: Mon 2010-02-08 11:53:02 +0000 message: branches/zip: btr_pcur_commit(): Unused function, remove. ------------------------------------------------------------ revno: 0.3.1996 committer: marko timestamp: Mon 2010-02-08 10:55:04 +0000 message: branches/zip: rec_get_nth_field_offs_old(): Replace if (!cond) ut_error; tests with ut_a(cond). ------------------------------------------------------------ revno: 0.3.1995 committer: marko timestamp: Mon 2010-02-08 08:06:39 +0000 message: branches/zip: row_merge_drop_index(): Remove redundant condition on SYS_INDEXES.TABLE_ID. INDEX_ID must be instance-widely unique, because SYS_FIELDS is not indexed by TABLE_ID. ------------------------------------------------------------ revno: 0.3.1994 committer: sunny timestamp: Thu 2010-02-04 14:11:23 +0000 message: branches/zip: Remove the additional check introduced in r6534 which tries to check if the joining transaction has any other transactions waiting on its locks. This optimization results in excessive deadlocks when running Sysbench with a large number of threads. The function seems to return FALSE positives. rb://250 ------------------------------------------------------------ revno: 0.3.1993 committer: marko timestamp: Thu 2010-02-04 11:21:18 +0000 message: branches/zip: Pass the file name and line number of the caller of the b-tree cursor functions to the buffer pool requests, in order to make the latch diagnostics more accurate. buf_page_optimistic_get_func(): Renamed to buf_page_optimistic_get(). btr_page_get_father_node_ptr(), btr_insert_on_non_leaf_level(), btr_pcur_open(), btr_pcur_open_with_no_init(), btr_pcur_open_on_user_rec(), btr_pcur_open_at_rnd_pos(), btr_pcur_restore_position(), btr_cur_open_at_index_side(), btr_cur_open_at_rnd_pos(): Rename the function to _func and add the parameters file, line. Define wrapper macros with __FILE__, __LINE__. btr_cur_search_to_nth_level(): Add the parameters file, line. ------------------------------------------------------------ revno: 0.3.1992 committer: marko timestamp: Wed 2010-02-03 13:01:39 +0000 message: branches/zip: buf_LRU_invalidate_tablespace(): Ensure that prev_bpage is not relocated when freeing a compressed block. This avoids the costly rescan of the LRU list. (Bug #35077, Issue #449) At most one buffer-fix will be active at a time, affecting two blocks: the buf_page_t and the compressed page frame. This should not block the memory defragmentation in buf0buddy.c too much. In fact, it may avoid unnecessary copying if also prev_bpage belongs to the tablespace that is being invalidated. rb://240 ------------------------------------------------------------ revno: 0.3.1991 committer: marko timestamp: Wed 2010-02-03 12:43:38 +0000 message: branches/zip: Clean up CHECK TABLE error handling. (Issue #220) ha_innobase::change_active_index(): Clean up code formatting. ha_innobase::check(): Incorporate the code from row_check_table_for_mysql(). Report errors to the client connection instead of writing them to the error log. row_check_table_for_mysql(): Remove. row_check_index_for_mysql(): Renamed from row_scan_and_check_index(). Let the caller initialize prebuilt, and assume that the index is usable. rb://178 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.1990 committer: jyang timestamp: Wed 2010-02-03 09:05:24 +0000 message: branches/zip: Relax assertion on the number of index defined in InnoDB must be comparable with that of MySQL to tolerate possible dictionary inconsistency. Fix Mantis issue #455, "UNIV_DEBUG+ assert ha_innodb.cc:3152 ib_num_index >= mysql_num_index". rb://248 Approved by Marko. ------------------------------------------------------------ revno: 0.3.1989 committer: marko timestamp: Mon 2010-02-01 09:35:13 +0000 message: branches/zip: ChangeLog: Document the merge of 6471:6538 from branches/5.1. ------------------------------------------------------------ revno: 0.3.1988 committer: marko timestamp: Mon 2010-02-01 09:31:12 +0000 message: branches/zip: Merge revisions 6471:6538 from branches/5.1: ------------------------------------------------------------------------ r6488 | sunny | 2010-01-21 02:55:08 +0200 (Thu, 21 Jan 2010) | 2 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Factor out test for bug#44030 from innodb-autoinc.test into a separate test/result files. ------------------------------------------------------------------------ r6489 | sunny | 2010-01-21 02:57:50 +0200 (Thu, 21 Jan 2010) | 2 lines Changed paths: A /branches/5.1/mysql-test/innodb-autoinc-44030.result A /branches/5.1/mysql-test/innodb-autoinc-44030.test branches/5.1: Factor out test for bug#44030 from innodb-autoinc.test into a separate test/result files. ------------------------------------------------------------------------ r6492 | sunny | 2010-01-21 09:38:35 +0200 (Thu, 21 Jan 2010) | 1 line Changed paths: M /branches/5.1/mysql-test/innodb-autoinc-44030.test branches/5.1: Add reference to bug#47621 in the comment. ------------------------------------------------------------------------ r6535 | sunny | 2010-01-30 00:08:40 +0200 (Sat, 30 Jan 2010) | 11 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Undo the change from r6424. We need to return DB_SUCCESS even if we were unable to initialize the tabe autoinc value. This is required for the open to succeed. The only condition we currently treat as a hard error is if the autoinc field instance passed in by MySQL is NULL. Previously if the table autoinc value was 0 and the next value was requested we had an assertion that would fail. Change that assertion and treat a value of 0 to mean that the autoinc system is unavailable. Generation of next value will now return failure. rb://237 ------------------------------------------------------------------------ r6536 | sunny | 2010-01-30 00:13:42 +0200 (Sat, 30 Jan 2010) | 6 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Check *first_value everytime against the column max value and set *first_value to next autoinc if it's > col max value. ie. not rely on what is passed in from MySQL. [49497] Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value rb://236 ------------------------------------------------------------------------ r6537 | sunny | 2010-01-30 00:35:00 +0200 (Sat, 30 Jan 2010) | 2 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Undo r6536. ------------------------------------------------------------------------ r6538 | sunny | 2010-01-30 00:43:06 +0200 (Sat, 30 Jan 2010) | 6 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Check *first_value every time against the column max value and set *first_value to next autoinc if it's > col max value. ie. not rely on what is passed in from MySQL. [49497] Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value rb://236 ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1987 committer: sunny timestamp: Fri 2010-01-29 21:42:49 +0000 message: branches/zip: Two changes to fix the problem: 1. First scan the joining transaction's locks and check if no other transaction is waiting for a lock held by the joining transaction. If no other transaction is waiting then no deadlock an occur and we avoid doing an exhaustive search. 2. Change the direction of the lock traversal from backward to forward. Previously we traversed backward from the lock that has to wait, the function to that fetched the previous node was very inefficient resulting in O(n^2) access to the rec lock list. Fix Bug #49047 InnoDB deadlock detection is CPU intensive with many locks on a single row. rb://218 ------------------------------------------------------------ revno: 0.3.1986 committer: calvin timestamp: Fri 2010-01-29 21:31:59 +0000 message: branches/zip: remove duplicated copyright and license info. ------------------------------------------------------------ revno: 0.3.1985 committer: vasil timestamp: Fri 2010-01-29 12:39:48 +0000 message: branches/zip: Extend the comment about row_mysql_handle_errors(). Suggested by: Heikki ------------------------------------------------------------ revno: 0.3.1984 committer: jyang timestamp: Thu 2010-01-28 16:12:40 +0000 message: branches/zip: Add index translation table to map mysql index number to InnoDB index structure directly. Fix Bug #47622: "the new index is added before the existing ones in MySQL, but after one in SE". rb://215, approved by Marko ------------------------------------------------------------ revno: 0.3.1983 committer: marko timestamp: Thu 2010-01-28 14:23:15 +0000 message: branches/zip: buf_LRU_invalidate_tablespace(): Do not unnecessarily acquire the block_mutex for every block in the LRU list. Only acquire it when holding buf_pool_mutex is not sufficient. This should speed up the function and considerably reduce traffic on the memory bus and caches. I noticed this deficiency when working on Issue #157. This deficiency popped up again in Issue #449 (Bug #35077), which this fix does not fully address. rb://78 revision 1 approved by Heikki Tuuri. ------------------------------------------------------------ revno: 0.3.1982 committer: marko timestamp: Wed 2010-01-27 08:49:01 +0000 message: branches/zip: Drop temporary tables at startup. This addresses the third aspect of Bug #41609. row_mysql_drop_temp_tables(): New function, to drop all temporary tables. These can be distinguished by the least significant bit of MIX_LEN. However, we will skip ROW_FORMAT=REDUNDANT tables, because in the records for those tables, that bit may be garbage. recv_recovery_from_checkpoint_finish(): Invoke row_mysql_drop_temp_tables(). Normally, if the .frm files for the temporary tables exist at startup, MySQL will ask InnoDB to drop the temporary tables. However, if the files are deleted, for instance, by the boot scripts of the operating system, the tables would remain in the InnoDB data dictionary unless someone digs them up by innodb_table_monitor and creates .frm files for dropping the tables. rb://221 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.3.1981 committer: marko timestamp: Thu 2010-01-21 09:22:52 +0000 message: branches/zip: buf_page_get_gen(): Obey recv_no_ibuf_operations and do not call ibuf_merge_or_delete_for_page() in crash recovery, before the redo log has been applied. This could cure some hard-to-repeat, hard-to-explain bugs related to secondary indexes. A possible recipe to repeat the bug: 1. update a secondary index leaf page on a compressed table 2. evict the page from the buffer pool while it is still dirty 3. ibuf_insert() something for the page 4. crash 5. crash recovery; ibuf merge would be done too early, before applying redo log to the sec index page or the ibuf pages ------------------------------------------------------------ revno: 0.3.1980 committer: calvin timestamp: Fri 2010-01-15 23:58:16 +0000 message: branches/zip: fix bug#49396: innodb.innodb-index test fails in embedded mode This is 2nd part of the fix for bug#49396. The 1st part is innodb.test. Tested in both embedded mode and normal server mode. ------------------------------------------------------------ revno: 0.3.1979 committer: calvin timestamp: Fri 2010-01-15 23:53:47 +0000 message: branches/zip: Merge revisions 6425:6471 from branches/5.1 to pick up the first part fix of bug49396. ------------------------------------------------------------------------ r6471 | calvin | 2010-01-15 17:43:27 -0600 (Fri, 15 Jan 2010) | 4 lines branches/5.1: fix bug#49396: main.innodb test fails in embedded mode Change replace_result by using $MYSQLD_DATADIR. Tested in both embedded mode and normal server mode. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1978 committer: inaam timestamp: Thu 2010-01-14 18:46:00 +0000 message: branches/zip rb://226 log_sys->written_to_all_lsn does not accurately represent the LSN upto which write and flush has taken place. Under a race condition it can fall behind log_sys->flushed_to_disk_lsn which is accurate. Besides written_to_all_lsn is redundant as currently InnoDB supports only one log group. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1977 committer: marko timestamp: Thu 2010-01-14 13:43:37 +0000 message: branches/zip: page_copy_rec_list_end(), page_copy_rec_list_start(): Update PAGE_MAX_TRX_ID before attempting to compress the page. This fixes Issue #382 (a debug assertion failure in page_zip_reorganize()) and reduces the generated redo log. There was no bug or crash in non-debug builds. ------------------------------------------------------------ revno: 0.3.1976 committer: marko timestamp: Wed 2010-01-13 20:38:53 +0000 message: branches/zip: lock_rec_validate_page(): Only validate the record queues when the thread is not holding a space->latch. When UNIV_DEBUG is defined while UNIV_SYNC_DEBUG is not, latching order violations will still occur and deadlocks will be possible. sync_thread_levels_nonempty_gen(): Renamed from sync_thread_levels_empty_gen(). Return the violating latch or NULL instead of FALSE or TRUE, except that there will be a ut_error before the non-NULL return. sync_thread_levels_empty_gen(): A macro that negates the return value of sync_thread_levels_nonempty_gen(). sync_thread_levels_contains(): New function, based on sync_thread_levels_nonempty_gen(). This should fix Issue #441. ------------------------------------------------------------ revno: 0.3.1975 committer: marko timestamp: Wed 2010-01-13 15:43:44 +0000 message: branches/zip: row_sel_get_clust_rec_for_mysql(): On the READ UNCOMMITTED isolation level, do not attempt to access a clustered index record that has been marked for deletion. This fixes Issue #433. Approved by Heikki over the IM. ------------------------------------------------------------ revno: 0.3.1974 committer: marko timestamp: Wed 2010-01-13 15:20:10 +0000 message: branches/zip: Treat mem_hash_mutex specially in mutex_free(), and explicitly free mem_hash_mutex in mem_close(). This fixes the breakage of UNIV_MEM_DEBUG that was filed as Issue #434. ------------------------------------------------------------ revno: 0.3.1973 committer: marko timestamp: Wed 2010-01-13 15:15:29 +0000 message: branches/zip: buf_pool_drop_hash_index(): Check block->page.state before checking block->is_hashed, because the latter may be uninitialized right after server startup. ------------------------------------------------------------ revno: 0.3.1972 committer: marko timestamp: Wed 2010-01-13 11:19:00 +0000 message: branches/zip: dict_sys_tables_get_flags(), dict_create_sys_*_tuple(): Add some const qualifiers and comments. ------------------------------------------------------------ revno: 0.3.1971 committer: marko timestamp: Tue 2010-01-12 13:36:14 +0000 message: branches/zip: row_sel_sec_rec_is_for_clust_rec(): Document the return value more accurately. ------------------------------------------------------------ revno: 0.3.1970 committer: marko timestamp: Tue 2010-01-12 11:47:11 +0000 message: branches/zip: Merge revisions 6350:6424 from branches/5.1: ------------------------------------------------------------------------ r6421 | jyang | 2010-01-12 07:59:16 +0200 (Tue, 12 Jan 2010) | 8 lines Changed paths: M /branches/5.1/row/row0mysql.c branches/5.1: Fix bug #49238: Creating/Dropping a temporary table while at 1023 transactions will cause assert. Handle possible DB_TOO_MANY_CONCURRENT_TRXS when deleting metadata in row_drop_table_for_mysql(). rb://220, approved by Marko ------------------------------------------------------------------------ r6422 | marko | 2010-01-12 11:34:27 +0200 (Tue, 12 Jan 2010) | 3 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/handler/ha_innodb.h branches/5.1: Non-functional change: Make innobase_get_int_col_max_value() a static function. It does not access any fields of class ha_innobase. ------------------------------------------------------------------------ r6424 | marko | 2010-01-12 12:22:19 +0200 (Tue, 12 Jan 2010) | 16 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/handler/ha_innodb.h branches/5.1: In innobase_initialize_autoinc(), do not attempt to read the maximum auto-increment value from the table if innodb_force_recovery is set to at least 4, so that writes are disabled. (Bug #46193) innobase_get_int_col_max_value(): Move the function definition before ha_innobase::innobase_initialize_autoinc(), because that function now calls this function. ha_innobase::innobase_initialize_autoinc(): Change the return type to void. Do not attempt to read the maximum auto-increment value from the table if innodb_force_recovery is set to at least 4. Issue ER_AUTOINC_READ_FAILED to the client when the auto-increment value cannot be read. rb://144 by Sunny, revised by Marko ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1969 committer: marko timestamp: Mon 2009-12-28 13:39:19 +0000 message: branches/zip: dict_index_add_to_cache(): Always free the index object, also when returning DB_CORRUPTION. ------------------------------------------------------------ revno: 0.3.1968 committer: marko timestamp: Sat 2009-12-26 19:06:31 +0000 message: branches/zip: ibuf_bitmap_get_map_page(): Define a wrapper macro that passes __FILE__, __LINE__ of the caller to buf_page_get_gen(). This will ease the diagnosis of the likes of Issue #135. ------------------------------------------------------------ revno: 0.3.1967 committer: marko timestamp: Tue 2009-12-22 10:33:01 +0000 message: branches/zip: Merge revisions 6206:6350 from branches/5.1, except r6347, r6349, r6350 which were committed separately to both branches, and r6310, which was backported from zip to 5.1. ------------------------------------------------------------------------ r6206 | jyang | 2009-11-20 09:38:43 +0200 (Fri, 20 Nov 2009) | 3 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Non-functional change, fix formatting. ------------------------------------------------------------------------ r6230 | sunny | 2009-11-24 23:52:43 +0200 (Tue, 24 Nov 2009) | 3 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result branches/5.1: Fix autoinc failing test results. (this should be skipped when merging 5.1 into zip) ------------------------------------------------------------------------ r6231 | sunny | 2009-11-25 10:26:27 +0200 (Wed, 25 Nov 2009) | 7 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test M /branches/5.1/row/row0sel.c branches/5.1: Fix BUG#49032 - auto_increment field does not initialize to last value in InnoDB Storage Engine. We use the appropriate function to read the column value for non-integer autoinc column types, namely float and double. rb://208. Approved by Marko. ------------------------------------------------------------------------ r6232 | sunny | 2009-11-25 10:27:39 +0200 (Wed, 25 Nov 2009) | 2 lines Changed paths: M /branches/5.1/row/row0sel.c branches/5.1: This is an interim fix, fix white space errors. ------------------------------------------------------------------------ r6233 | sunny | 2009-11-25 10:28:35 +0200 (Wed, 25 Nov 2009) | 2 lines Changed paths: M /branches/5.1/include/mach0data.h M /branches/5.1/include/mach0data.ic M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test M /branches/5.1/row/row0sel.c branches/5.1: This is an interim fix, fix tests and make read float/double arg const. ------------------------------------------------------------------------ r6234 | sunny | 2009-11-25 10:29:03 +0200 (Wed, 25 Nov 2009) | 2 lines Changed paths: M /branches/5.1/row/row0sel.c branches/5.1: This is an interim fix, fix whitepsace issues. ------------------------------------------------------------------------ r6235 | sunny | 2009-11-26 01:14:42 +0200 (Thu, 26 Nov 2009) | 9 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Fix Bug#47720 - REPLACE INTO Autoincrement column with negative values. This bug is similiar to the negative autoinc filter patch from earlier, with the additional handling of filtering out the negative column values set explicitly by the user. rb://184 Approved by Heikki. ------------------------------------------------------------------------ r6242 | vasil | 2009-11-27 22:07:12 +0200 (Fri, 27 Nov 2009) | 4 lines Changed paths: M /branches/5.1/export.sh branches/5.1: Minor changes to support plugin snapshots. ------------------------------------------------------------------------ r6306 | calvin | 2009-12-14 15:12:46 +0200 (Mon, 14 Dec 2009) | 5 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: fix bug#49267: innodb-autoinc.test fails on windows because of different case mode There is no change to the InnoDB code, only to fix test case by changing "T1" to "t1". ------------------------------------------------------------------------ r6324 | jyang | 2009-12-17 06:54:24 +0200 (Thu, 17 Dec 2009) | 8 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/lock0lock.h M /branches/5.1/include/srv0srv.h M /branches/5.1/lock/lock0lock.c M /branches/5.1/log/log0log.c M /branches/5.1/srv/srv0srv.c M /branches/5.1/srv/srv0start.c branches/5.1: Fix bug #47814 - Diagnostics are frequently not printed after a long lock wait in InnoDB. Separate out the lock wait timeout check thread from monitor information printing thread. rb://200 Approved by Marko. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1966 committer: marko timestamp: Tue 2009-12-22 09:11:18 +0000 message: branches/zip: Remove an obsolete declaration of LOCK_thread_count. ------------------------------------------------------------ revno: 0.3.1965 committer: marko timestamp: Tue 2009-12-22 09:04:34 +0000 message: branches/zip: Merge a change from MySQL: ------------------------------------------------------------ revno: 3236 committer: Satya B branch nick: mysql-5.1-bugteam timestamp: Tue 2009-12-01 17:48:57 +0530 message: merge to mysql-5.1-bugteam ------------------------------------------------------------ revno: 3234.1.1 committer: Gleb Shchepa branch nick: mysql-5.1-bugteam timestamp: Tue 2009-12-01 14:38:40 +0400 message: Bug #38883 (reopened): thd_security_context is not thread safe, crashes? manual merge 5.0-->5.1, updating InnoDB plugin. ------------------------------------------------------------ revno: 1810.3968.13 committer: Gleb Shchepa branch nick: mysql-5.0-bugteam timestamp: Tue 2009-12-01 14:24:44 +0400 message: Bug #38883 (reopened): thd_security_context is not thread safe, crashes? The bug 38816 changed the lock that protects THD::query from LOCK_thread_count to LOCK_thd_data, but didn't update the associated InnoDB functions. 1. The innobase_mysql_prepare_print_arbitrary_thd and the innobase_mysql_end_print_arbitrary_thd InnoDB functions have been removed, since now we have a per-thread mutex: now we don't need to wrap several inter-thread access tries to THD::query with a single global LOCK_thread_count lock, so we can simplify the code. 2. The innobase_mysql_print_thd function has been modified to lock LOCK_thd_data in direct way. ------------------------------------------------------------ revno: 0.3.1964 committer: marko timestamp: Mon 2009-12-21 10:03:25 +0000 message: branches/zip: recv_recovery_from_checkpoint_finish(): Revert a change that was accidentally committed in r6345. ------------------------------------------------------------ revno: 0.3.1963 committer: marko timestamp: Mon 2009-12-21 08:46:14 +0000 message: branches/zip: recv_scan_log_recs(): Non-functional change: Replace a debug assertion ut_ad(len > 0) with ut_ad(len >= OS_FILE_LOG_BLOCK_SIZE). This change is only for readability, for Issue #428. Another assertion on len being an integer multiple of OS_FILE_LOG_BLOCK_SIZE already ensured together with the old ut_ad(len > 0) that actually len must be at least OS_FILE_LOG_BLOCK_SIZE. ------------------------------------------------------------ revno: 0.3.1962 committer: marko timestamp: Wed 2009-12-16 14:16:33 +0000 message: branches/zip: row_merge_drop_temp_indexes(): Revert a hack to transaction isolation level that was made unnecessary by r5826 (Issue #337). When this function is called, any active data dictionary transaction should have been rolled back. ------------------------------------------------------------ revno: 0.3.1961 committer: marko timestamp: Wed 2009-12-16 08:10:36 +0000 message: branches/zip: fil_close(): Add #ifndef UNIV_HOTBACKUP around a debug assertion on mutex.magic_n. InnoDB Hot Backup is a single-threaded program and does not contain mutexes. This change allows InnoDB Hot Backup to be compiled with UNIV_DEBUG. Suggested by Michael Izioumtchenko. ------------------------------------------------------------ revno: 0.3.1960 committer: marko timestamp: Tue 2009-12-15 12:05:50 +0000 message: branches/zip: lock_rec_insert_check_and_lock(): Avoid casting away constness. Use page_rec_get_next_const() instead. This silences a gcc 4.2.4 warning. Reported by Sunny Bains. ------------------------------------------------------------ revno: 0.3.1959 committer: marko timestamp: Mon 2009-12-14 11:03:57 +0000 message: branches/zip: row_undo_mod_del_unmark_sec_and_undo_update(): Add a missing const qualifier. ------------------------------------------------------------ revno: 0.3.1958 committer: marko timestamp: Wed 2009-12-09 07:51:00 +0000 message: branches/zip: row_upd_copy_columns(): Remove redundant code that was accidentally added in r1591, which introduced dfield_t::ext in order to make the merge sort of fast index creation support externally stored columns. Initially, I tried to allocate the bit for dfield_t::ext from dfield_t::len by making the length 31 bits and mapping UNIV_SQL_NULL to something that would fit in it. Then I decided that it would be too risky. The redundant check was part of the mapping. The condition may have been dfield_is_null() initially. This is similar to the redundant code in row_sel_fetch_columns() that was noticed by Sergey Petrunya on the MySQL internals list and removed in r6285. As far as I can tell, there are no redundant UNIV_SQL_NULL assignments remaining after this change. ------------------------------------------------------------ revno: 0.3.1957 committer: marko timestamp: Wed 2009-12-09 07:24:50 +0000 message: branches/zip: row_sel_fetch_columns(): Remove redundant code that was accidentally added in r1591, which introduced dfield_t::ext in order to make the merge sort of fast index creation support externally stored columns, Initially, I tried to allocate the bit for dfield_t::ext from dfield_t::len by making the length 31 bits and mapping UNIV_SQL_NULL to something that would fit in it. Then I decided that it would be too risky. The redundant check was part of the mapping. The condition may have been dfield_is_null() initially. This redundant code was noticed by Sergey Petrunya on the MySQL internals list. ------------------------------------------------------------ revno: 0.3.1956 committer: marko timestamp: Tue 2009-12-08 09:13:36 +0000 message: branches/zip: fsp0fsp.c: Add some missing in/out and const qualifiers. ------------------------------------------------------------ revno: 0.3.1955 committer: pekka timestamp: Thu 2009-12-03 16:32:47 +0000 message: branches/zip: Minor changes which allow build with UNIV_HOTBACKUP defined to succeed: include/trx0sys.h: Allow Hot Backup build to see some TRX_SYS_DOUBLEWRITE_... macros. trx/trx0sys.c: Exclude trx_sys_close() function from Hot Backup build. log/log0recv.[ch]: Exclude recv_sys_var_init() function from Hot Backup build. This change should not affect !UNIV_HOTBACKUP build. ------------------------------------------------------------ revno: 0.3.1954 committer: marko timestamp: Thu 2009-12-03 12:47:12 +0000 message: branches/zip: dict_table_check_for_dup_indexes(): Assert that the data dictionary mutex is being held while table->indexes is accessed. This is already the case. Currently, only dict_table_get_next_index() and dict_table_get_first_index() are being invoked without holding dict_sys->mutex. ------------------------------------------------------------ revno: 0.3.1953 committer: marko timestamp: Wed 2009-12-02 09:46:05 +0000 message: branches/zip: Revert changes that were accidentally committed in r6271. ------------------------------------------------------------ revno: 0.3.1952 committer: marko timestamp: Wed 2009-12-02 09:43:49 +0000 message: branches/zip: ChangeLog: Document that since r6270, the zlib version number will be displayed at start-up. ------------------------------------------------------------ revno: 0.3.1951 committer: marko timestamp: Wed 2009-12-02 09:36:47 +0000 message: branches/zip: innobase_start_or_create_for_mysql(): Log the zlib version. ------------------------------------------------------------ revno: 0.3.1950 committer: marko timestamp: Wed 2009-12-02 09:35:22 +0000 message: branches/zip: innobase_start_or_create_for_mysql(): UNIV_IBUF_DEBUG should not break crash recovery, but UNIV_IBUF_COUNT_DEBUG will. ------------------------------------------------------------ revno: 0.3.1949 committer: vasil timestamp: Tue 2009-12-01 14:19:44 +0000 message: branches/zip: Add ChangeLog entry for the release of 1.0.6. ------------------------------------------------------------ revno: 0.3.1948 committer: vasil timestamp: Tue 2009-12-01 12:49:05 +0000 message: branches/zip: Increment version number from 1.0.6 to 1.0.7 1.0.6 has been released ------------------------------------------------------------ revno: 0.3.1947 committer: marko timestamp: Mon 2009-11-30 10:50:11 +0000 message: branches/zip: Suppress errors about non-found temporary tables. Write the is_temp flag to SYS_TABLES.MIX_LEN. dict_table_t::flags: Add a flag for is_temporary, DICT_TF2_TEMPORARY. Unlike other flags, this will not be written to the tablespace flags or SYS_TABLES.TYPE, but only to SYS_TABLES.MIX_LEN. dict_build_table_def_step(): Only pass DICT_TF_BITS to tablespaces. dict_check_tablespaces_and_store_max_id(), dict_load_table(): Suppress errors about temporary tables not being found. dict_create_sys_tables_tuple(): Write the DICT_TF2_TEMPORARY flag to SYS_TABLES.MIX_LEN. fil_space_create(), fil_create_new_single_table_tablespace(): Add assertions about space->flags. row_drop_table_for_mysql(): Do not complain about non-found temporary tables. rb://160 approved by Heikki Tuuri. This addresses the second part of Bug #41609 Crash recovery does not work for InnoDB temporary tables. ------------------------------------------------------------ revno: 0.3.1946 committer: marko timestamp: Mon 2009-11-30 10:19:50 +0000 message: branches/zip: ChangeLog: Document r4922 that was forgotten. ------------------------------------------------------------ revno: 0.3.1945 committer: vasil timestamp: Fri 2009-11-20 21:39:48 +0000 message: branches/zip: Whitespace fixup. ------------------------------------------------------------ revno: 0.3.1944 committer: vasil timestamp: Fri 2009-11-20 08:49:24 +0000 message: branches/zip: Add ChangeLog entry for c6207. ------------------------------------------------------------ revno: 0.3.1943 committer: vasil timestamp: Fri 2009-11-20 08:19:14 +0000 message: branches/zip: Merge r6198:6206 from branches/5.1: (r6203 was skipped as it is already in branches/zip) ------------------------------------------------------------------------ r6200 | vasil | 2009-11-19 12:14:23 +0200 (Thu, 19 Nov 2009) | 4 lines Changed paths: M /branches/5.1/btr/btr0btr.c branches/5.1: White space fixup - indent under the opening ( ------------------------------------------------------------------------ r6203 | jyang | 2009-11-19 15:12:22 +0200 (Thu, 19 Nov 2009) | 8 lines Changed paths: M /branches/5.1/btr/btr0btr.c branches/5.1: Use btr_free_root() instead of fseg_free() for the fix of bug #48469, because fseg_free() is not defined in the zip branch. And we could save one mini-trasaction started by fseg_free(). Approved by Marko. ------------------------------------------------------------------------ r6205 | jyang | 2009-11-20 07:55:48 +0200 (Fri, 20 Nov 2009) | 11 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Add a special case to handle the Duplicated Key error and return DB_ERROR instead. This is to avoid a possible SIGSEGV by mysql error handling re-entering the storage layer for dup key info without proper table handle. This is to prevent a server crash when error situation in bug #45961 "DDL on partitioned innodb tables leaves data dictionary in an inconsistent state" happens. rb://157 approved by Sunny Bains. ------------------------------------------------------------------------ r6206 | jyang | 2009-11-20 09:38:43 +0200 (Fri, 20 Nov 2009) | 5 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Fix a minor code formating issue for the parenthesis iplacement of the if condition in rename_table(). ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1942 committer: jyang timestamp: Thu 2009-11-19 13:01:00 +0000 message: branches/zip: Function fseg_free() is no longer defined in branches/zip. To port fix for bug #48469 to zip, we can use btr_free_root() which frees the page, and also does not require mini-transaction. Approved by Marko. ------------------------------------------------------------ revno: 0.3.1941 committer: marko timestamp: Thu 2009-11-19 12:09:11 +0000 message: branches/zip: ha_innobase::add_index(): Clarify the comment on orphaned tables when creating a primary key. ------------------------------------------------------------ revno: 0.3.1940 committer: vasil timestamp: Thu 2009-11-19 10:10:12 +0000 message: branches/zip: Merge r6159:6198 from branches/5.1: ------------------------------------------------------------------------ r6187 | jyang | 2009-11-18 05:27:30 +0200 (Wed, 18 Nov 2009) | 9 lines Changed paths: M /branches/5.1/btr/btr0btr.c branches/5.1: Fix bug #48469 "when innodb tablespace is configured too small, crash and corruption!". Function btr_create() did not check the return status of fseg_create(), and continue the index creation even there is no sufficient space. rb://205 Approved by Marko ------------------------------------------------------------------------ r6188 | jyang | 2009-11-18 07:14:23 +0200 (Wed, 18 Nov 2009) | 8 lines Changed paths: M /branches/5.1/data/data0type.c branches/5.1: Fix bug #48526 "Data type for float and double is incorrectly reported in InnoDB table monitor". Certain datatypes are not printed correctly in dtype_print(). rb://204 Approved by Marko. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1939 committer: vasil timestamp: Thu 2009-11-19 07:44:31 +0000 message: branches/zip: Add ChangeLog entry for r6197. ------------------------------------------------------------ revno: 0.3.1938 committer: calvin timestamp: Thu 2009-11-19 07:32:55 +0000 message: branches/zip: merge the fix of bug#48317 (CMake file) Due to MySQL changes to the CMake, it is no longer able to build InnoDB plugin as a static library on Windows. The fix is proposed by Vlad of MySQL. ------------------------------------------------------------ revno: 0.3.1937 committer: vasil timestamp: Thu 2009-11-19 07:24:45 +0000 message: branches/zip: Increment version number from 1.0.5 to 1.0.6 since 1.0.5 was just released by MySQL and we will soon release 1.0.6. ------------------------------------------------------------ revno: 0.3.1936 committer: marko timestamp: Wed 2009-11-18 09:36:18 +0000 message: branches/zip: ha_innobase::add_index(): When creating the primary key and the table is being locked by another transaction, do not attempt to drop the table. (Bug #48782) Approved by Sunny Bains over IM ------------------------------------------------------------ revno: 0.3.1935 committer: vasil timestamp: Tue 2009-11-17 14:48:14 +0000 message: branches/zip: Add ChangeLog entry for r6185. ------------------------------------------------------------ revno: 0.3.1934 committer: marko timestamp: Tue 2009-11-17 14:44:20 +0000 message: branches/zip: Report duplicate table names to the client connection, not to the error log. This change will allow innodb-index.test to be re-enabled. It was previously disabled, because mysql-test-run does not like output in the error log. row_create_table_for_mysql(): Do not output anything to the error log when reporting DB_DUPLICATE_KEY. Let the caller report the error. Add a TODO comment that the dict_table_t object is apparently not freed when an error occurs. create_table_def(): Convert InnoDB table names to the character set of the client connection for reporting. Use my_error(ER_WRONG_COLUMN_NAME) for reporting reserved column names. Report my_error(ER_TABLE_EXISTS_ERROR) when row_create_table_for_mysql() returns DB_DUPLICATE_KEY. rb://206 ------------------------------------------------------------ revno: 0.3.1933 committer: marko timestamp: Tue 2009-11-17 11:52:01 +0000 message: branches/zip: innodb-index.test: Restore innodb_file_format_check. ------------------------------------------------------------ revno: 0.3.1932 committer: marko timestamp: Tue 2009-11-17 11:51:16 +0000 message: branches/zip: Prepend loose_ to plugin-only mysql-test options. ------------------------------------------------------------ revno: 0.3.1931 committer: marko timestamp: Tue 2009-11-17 11:49:15 +0000 message: branches/zip: Set svn:eol-style on mysql-test files. ------------------------------------------------------------ revno: 0.3.1930 committer: vasil timestamp: Tue 2009-11-17 10:21:41 +0000 message: branches/zip: At the end of innodb-index.test: restore the environment as it was before the test was started to silence this warning: MTR's internal check of the test case 'main.innodb-index' failed. This means that the test case does not preserve the state that existed before the test case was executed. Most likely the test case did not do a proper clean-up. This is the diff of the states of the servers before and after the test case was executed: mysqltest: Logging to '/tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.log'. mysqltest: Results saved in '/tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result'. mysqltest: Connecting to server localhost:13000 (socket /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/mysqld.1.sock) as 'root', connection 'default', attempt 0 ... mysqltest: ... Connected. mysqltest: Start processing test commands from './include/check-testcase.test' ... mysqltest: ... Done processing test commands. --- /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result 2009-11-17 13:10:40.000000000 +0300 +++ /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.reject 2009-11-17 13:10:54.000000000 +0300 @@ -84,7 +84,7 @@ INNODB_DOUBLEWRITE ON INNODB_FAST_SHUTDOWN 1 INNODB_FILE_FORMAT Antelope -INNODB_FILE_FORMAT_CHECK Antelope +INNODB_FILE_FORMAT_CHECK Barracuda INNODB_FILE_PER_TABLE OFF INNODB_FLUSH_LOG_AT_TRX_COMMIT 1 INNODB_FLUSH_METHOD mysqltest: Result content mismatch not ok ------------------------------------------------------------ revno: 0.3.1929 committer: marko timestamp: Tue 2009-11-17 08:19:34 +0000 message: branches/zip: ha_innobase::change_active_index(): When the history is missing, report it to the client, not to the error log. ------------------------------------------------------------ revno: 0.3.1928 committer: calvin timestamp: Mon 2009-11-16 18:20:38 +0000 message: branches/zip: add an entry to ChangeLog for r6065 ------------------------------------------------------------ revno: 0.3.1927 committer: vasil timestamp: Mon 2009-11-16 18:07:39 +0000 message: branches/zip: Wrap line at 78th char in the ChangeLog ------------------------------------------------------------ revno: 0.3.1926 committer: marko timestamp: Thu 2009-11-12 13:49:08 +0000 message: branches/zip: Allow CREATE INDEX to be interrupted. (Issue #354) rb://183 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1925 committer: calvin timestamp: Thu 2009-11-12 12:40:43 +0000 message: branches/zip: add test case for bug#46676 This crash is reproducible with InnoDB plugin 1.0.4 + MySQL 5.1.37. But no longer reproducible after MySQL 5.1.38 (with plugin 1.0.5). Add test case to catch future regression. ------------------------------------------------------------ revno: 0.3.1924 committer: calvin timestamp: Wed 2009-11-11 15:53:20 +0000 message: branches/zip: Exclude thd_binlog_filter_ok() when building with older version of MySQL. thd_binlog_filter_ok() is introduced in MySQL 5.1.41. But the plugin can be built with MySQL prior to 5.1.41. Approved by Heikki (on IM). ------------------------------------------------------------ revno: 0.3.1923 committer: vasil timestamp: Wed 2009-11-11 14:00:12 +0000 message: branches/zip: Add ChangeLog for r6157. ------------------------------------------------------------ revno: 0.3.1922 committer: vasil timestamp: Wed 2009-11-11 13:36:16 +0000 message: branches/zip: Add changelog entry for r6160. ------------------------------------------------------------ revno: 0.3.1921 committer: vasil timestamp: Wed 2009-11-11 13:33:49 +0000 message: branches/zip: Merge r6152:6159 from branches/5.1: (r6158 was skipped as an equivallent change has already been merged from MySQL) ------------------------------------------------------------------------ r6154 | calvin | 2009-11-11 02:51:17 +0200 (Wed, 11 Nov 2009) | 17 lines Changed paths: M /branches/5.1/include/os0file.h M /branches/5.1/os/os0file.c branches/5.1: fix bug#3139: Mysql crashes: 'windows error 995' after several selects on a large DB During stress environment, Windows AIO may fail with error code ERROR_OPERATION_ABORTED. InnoDB does not handle the error, rather crashes. The cause of the error is unknown, but likely due to faulty hardware or driver. This patch introduces a new error code OS_FILE_OPERATION_ABORTED, which maps to Windows ERROR_OPERATION_ABORTED (995). When the error is detected during AIO, the InnoDB will issue a synchronous retry (read/write). This patch has been extensively tested by MySQL support. Approved by: Marko rb://196 ------------------------------------------------------------------------ r6158 | vasil | 2009-11-11 14:52:14 +0200 (Wed, 11 Nov 2009) | 37 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/handler/ha_innodb.h branches/5.1: Merge a change from MySQL: (this has been reviewed by Calvin and Marko, and Calvin says Luis has incorporated Marko's suggestions) ------------------------------------------------------------ revno: 3092.5.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Thu 2009-09-24 15:52:52 +0100 message: BUG#42829: binlogging enabled for all schemas regardless of binlog-db-db / binlog-ignore-db InnoDB will return an error if statement based replication is used along with transaction isolation level READ-COMMITTED (or weaker), even if the statement in question is filtered out according to the binlog-do-db rules set. In this case, an error should not be printed. This patch addresses this issue by extending the existing check in external_lock to take into account the filter rules before deciding to print an error. Furthermore, it also changes decide_logging_format to take into consideration whether the statement is filtered out from binlog before decision is made. added: mysql-test/suite/binlog/r/binlog_stm_do_db.result mysql-test/suite/binlog/t/binlog_stm_do_db-master.opt mysql-test/suite/binlog/t/binlog_stm_do_db.test modified: sql/sql_base.cc sql/sql_class.cc storage/innobase/handler/ha_innodb.cc storage/innobase/handler/ha_innodb.h storage/innodb_plugin/handler/ha_innodb.cc storage/innodb_plugin/handler/ha_innodb.h ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1920 committer: vasil timestamp: Wed 2009-11-11 13:13:01 +0000 message: branches/zip: Merge a change from MySQL: (this has been reviewed by Calvin and Marko, and Calvin says Luis has incorporated Marko's suggestions) ------------------------------------------------------------ revno: 3092.5.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Thu 2009-09-24 15:52:52 +0100 message: BUG#42829: binlogging enabled for all schemas regardless of binlog-db-db / binlog-ignore-db InnoDB will return an error if statement based replication is used along with transaction isolation level READ-COMMITTED (or weaker), even if the statement in question is filtered out according to the binlog-do-db rules set. In this case, an error should not be printed. This patch addresses this issue by extending the existing check in external_lock to take into account the filter rules before deciding to print an error. Furthermore, it also changes decide_logging_format to take into consideration whether the statement is filtered out from binlog before decision is made. added: mysql-test/suite/binlog/r/binlog_stm_do_db.result mysql-test/suite/binlog/t/binlog_stm_do_db-master.opt mysql-test/suite/binlog/t/binlog_stm_do_db.test modified: sql/sql_base.cc sql/sql_class.cc storage/innobase/handler/ha_innodb.cc storage/innobase/handler/ha_innodb.h storage/innodb_plugin/handler/ha_innodb.cc storage/innodb_plugin/handler/ha_innodb.h ------------------------------------------------------------ revno: 0.3.1919 committer: jyang timestamp: Wed 2009-11-11 12:27:09 +0000 message: branches/zip: Fix an issue that a local variable defined in innodb_file_format_check_validate() is being referenced across function in innodb_file_format_check_update(). In addition, fix "set global innodb_file_format_check = DEFAULT" call. Bug #47167: "set global innodb_file_format_check" cannot set value by User-Defined Variable." rb://169 approved by Sunny Bains and Marko. ------------------------------------------------------------ revno: 0.3.1918 committer: vasil timestamp: Tue 2009-11-10 13:33:22 +0000 message: branches/zip: Merge r6125:6152 from branches/5.1: (everything except the last white-space change was skipped as it is already in branches/zip) ------------------------------------------------------------------------ r6127 | vasil | 2009-10-30 11:18:25 +0200 (Fri, 30 Oct 2009) | 18 lines Changed paths: M /branches/5.1/Makefile.am M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Backport c6121 from branches/zip: ------------------------------------------------------------------------ r6121 | sunny | 2009-10-30 01:42:11 +0200 (Fri, 30 Oct 2009) | 7 lines Changed paths: M /branches/zip/mysql-test/innodb-autoinc.result branches/zip: This test has been problematic for sometime now. The underlying bug is that the data dictionaries get out of sync. In the AUTOINC code we try and apply salve to the symptoms. In the past MySQL made some unrelated change and the dictionaries stopped getting out of sync and this test started to fail. Now, it seems they have reverted that changed and the test is passing again. I suspect this is not he last time that this test will change. ------------------------------------------------------------------------ ------------------------------------------------------------------------ r6129 | vasil | 2009-10-30 17:14:22 +0200 (Fri, 30 Oct 2009) | 4 lines Changed paths: M /branches/5.1/Makefile.am branches/5.1: Revert a change to Makefile.am that sneaked unnoticed in c6127. ------------------------------------------------------------------------ r6136 | marko | 2009-11-04 12:28:10 +0200 (Wed, 04 Nov 2009) | 15 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/ha_prototypes.h M /branches/5.1/ut/ut0ut.c branches/5.1: Port r6134 from branches/zip: ------------------------------------------------------------------------ r6134 | marko | 2009-11-04 07:57:29 +0000 (Wed, 04 Nov 2009) | 5 lines branches/zip: innobase_convert_identifier(): Convert table names with explain_filename() to address Bug #32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs. rb://134 approved by Sunny Bains ------------------------------------------------------------------------ innobase_print_identifier(): Replace with innobase_convert_name(). innobase_convert_identifier(): New function, called by innobase_convert_name(). ------------------------------------------------------------------------ r6149 | vasil | 2009-11-09 11:15:01 +0200 (Mon, 09 Nov 2009) | 5 lines Changed paths: M /branches/5.1/CMakeLists.txt branches/5.1: Followup to r5700: Adjust the changes so they are the same as in the BZR repository. ------------------------------------------------------------------------ r6150 | vasil | 2009-11-09 11:43:31 +0200 (Mon, 09 Nov 2009) | 58 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Merge a part of r2911.5.5 from MySQL: (the other part of this was merged in c5700) ------------------------------------------------------------ revno: 2911.5.5 committer: Vladislav Vaintroub branch nick: 5.1-innodb_plugin timestamp: Wed 2009-06-10 10:59:49 +0200 message: Backport WL#3653 to 5.1 to enable bundled innodb plugin. Remove custom DLL loader code from innodb plugin code, use symbols exported from mysqld. removed: storage/innodb_plugin/handler/handler0vars.h storage/innodb_plugin/handler/win_delay_loader.cc added: storage/mysql_storage_engine.cmake win/create_def_file.js modified: CMakeLists.txt include/m_ctype.h include/my_global.h include/my_sys.h include/mysql/plugin.h libmysqld/CMakeLists.txt mysql-test/mysql-test-run.pl mysql-test/t/plugin.test mysql-test/t/plugin_load-master.opt mysys/charset.c sql/CMakeLists.txt sql/handler.h sql/mysql_priv.h sql/mysqld.cc sql/sql_class.cc sql/sql_class.h sql/sql_list.h sql/sql_profile.h storage/Makefile.am storage/archive/CMakeLists.txt storage/blackhole/CMakeLists.txt storage/csv/CMakeLists.txt storage/example/CMakeLists.txt storage/federated/CMakeLists.txt storage/heap/CMakeLists.txt storage/innobase/CMakeLists.txt storage/innobase/handler/ha_innodb.cc storage/innodb_plugin/CMakeLists.txt storage/innodb_plugin/handler/ha_innodb.cc storage/innodb_plugin/handler/handler0alter.cc storage/innodb_plugin/handler/i_s.cc storage/innodb_plugin/plug.in storage/myisam/CMakeLists.txt storage/myisammrg/CMakeLists.txt win/Makefile.am win/configure.js ------------------------------------------------------------------------ r6152 | vasil | 2009-11-10 15:30:20 +0200 (Tue, 10 Nov 2009) | 4 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: White space fixup. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1917 committer: marko timestamp: Wed 2009-11-04 13:24:28 +0000 message: branches/zip: dict_index_too_big_for_undo(): Correct a typo. ------------------------------------------------------------ revno: 0.3.1916 committer: marko timestamp: Wed 2009-11-04 07:57:29 +0000 message: branches/zip: innobase_convert_identifier(): Convert table names with explain_filename() to address Bug #32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs. rb://134 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.1915 committer: marko timestamp: Mon 2009-11-02 09:42:56 +0000 message: branches/zip: Free all resources at shutdown. Set pointers to NULL, so that Valgrind will not complain about freed data structures that are reachable via pointers. This addresses Bug #45992 and Bug #46656. This patch is mostly based on changes copied from branches/embedded-1.0, mainly c5432, c3439, c3134, c2994, c2978, but also some other code was copied. Some added cleanup code is specific to MySQL/InnoDB. rb://199 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.1914 committer: vasil timestamp: Fri 2009-10-30 08:36:07 +0000 message: branches/zip: Merge r6112:6125 from branches/5.1: (skipping r6122 and r6123, Jimmy says these are already present and need not be merged): ------------------------------------------------------------------------ r6122 | jyang | 2009-10-30 05:18:38 +0200 (Fri, 30 Oct 2009) | 7 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb_bug44369.result M /branches/5.1/mysql-test/innodb_bug44369.test M /branches/5.1/mysql-test/innodb_bug46000.result M /branches/5.1/mysql-test/innodb_bug46000.test branches/5.1: Chnage WARN_LEVEL_ERROR to WARN_LEVEL_WARN for push_warning_printf() call in innodb. Fix Bug#47233: Innodb calls push_warning(MYSQL_ERROR::WARN_LEVEL_ERROR) rb://170 approved by Marko. ------------------------------------------------------------------------ r6123 | jyang | 2009-10-30 05:43:06 +0200 (Fri, 30 Oct 2009) | 8 lines Changed paths: M /branches/5.1/os/os0proc.c branches/5.1: In os_mem_alloc_large(), if we fail to attach the shared memory, reset memory pointer ptr to NULL, and allocate memory from conventional pool. This is a port from branches/zip. Bug #48237 Error handling in os_mem_alloc_large appears to be incorrect rb://198 Approved by: Marko ------------------------------------------------------------------------ r6125 | vasil | 2009-10-30 10:31:23 +0200 (Fri, 30 Oct 2009) | 4 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: White-space fixup. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1913 committer: jyang timestamp: Fri 2009-10-30 08:02:31 +0000 message: branches/zip: Correct the bug number for -r6109 change from # 48273 to #48237 ------------------------------------------------------------ revno: 0.3.1912 committer: sunny timestamp: Thu 2009-10-29 23:42:11 +0000 message: branches/zip: This test has been problematic for sometime now. The underlying bug is that the data dictionaries get out of sync. In the AUTOINC code we try and apply salve to the symptoms. In the past MySQL made some unrelated change and the dictionaries stopped getting out of sync and this test started to fail. Now, it seems they have reverted that changed and the test is passing again. I suspect this is not he last time that this test will change. ------------------------------------------------------------ revno: 0.3.1911 committer: vasil timestamp: Thu 2009-10-29 16:43:51 +0000 message: branches/zip: * Add ChangeLog entries for latest changes * Obey alphabetical order in the list of the files * White-space fixup ------------------------------------------------------------ revno: 0.3.1910 committer: vasil timestamp: Thu 2009-10-29 16:15:50 +0000 message: branches/zip: Merge r5912:6112 from branches/5.1: (after this merge the innodb-autoinc test starts to fail, but I commit anyway because it would be easier to investigate the failure this way) ------------------------------------------------------------------------ r5952 | calvin | 2009-09-22 19:45:07 +0300 (Tue, 22 Sep 2009) | 7 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: fix bug#42383: Can't create table 'test.bug39438' For embedded server, MySQL may pass in full path, which is currently disallowed. It is needed to relax the condition by accepting full paths in the embedded case. Approved by: Heikki (on IM) ------------------------------------------------------------------------ r6032 | vasil | 2009-10-01 15:55:49 +0300 (Thu, 01 Oct 2009) | 8 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Fix Bug#38996 Race condition in ANALYZE TABLE by serializing ANALYZE TABLE inside InnoDB. Approved by: Heikki (rb://175) ------------------------------------------------------------------------ r6045 | jyang | 2009-10-08 02:27:08 +0300 (Thu, 08 Oct 2009) | 7 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc A /branches/5.1/mysql-test/innodb_bug47777.result A /branches/5.1/mysql-test/innodb_bug47777.test branches/5.1: Fix bug #47777. Treat the Geometry data same as Binary BLOB in ha_innobase::store_key_val_for_row(), since the Geometry data is stored as Binary BLOB in Innodb. Review: rb://180 approved by Marko Makela. ------------------------------------------------------------------------ r6051 | sunny | 2009-10-12 07:05:00 +0300 (Mon, 12 Oct 2009) | 6 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Ignore negative values supplied by the user when calculating the next value to store in dict_table_t. Setting autoincrement columns top negative values is undefined behavior and this change should bring the behavior of InnoDB closer to what users expect. Added several tests to check. rb://162 ------------------------------------------------------------------------ r6052 | sunny | 2009-10-12 07:09:56 +0300 (Mon, 12 Oct 2009) | 4 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Reset the statement level autoinc counter on ROLLBACK. Fix the test results too. rb://164 ------------------------------------------------------------------------ r6053 | sunny | 2009-10-12 07:37:49 +0300 (Mon, 12 Oct 2009) | 6 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Copy the maximum AUTOINC value from the old table to the new table when MySQL does a CREATE INDEX ON T. This is required because MySQL does a table copy, rename and drops the old table. Fix Bug#47125: auto_increment start value is ignored if an index is created and engine=innodb rb://168 ------------------------------------------------------------------------ r6076 | vasil | 2009-10-14 19:30:12 +0300 (Wed, 14 Oct 2009) | 4 lines Changed paths: M /branches/5.1/row/row0mysql.c branches/5.1: Fix typo. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1909 committer: calvin timestamp: Thu 2009-10-29 14:21:15 +0000 message: branches/zip: consideration for icc compilers Proposed by MySQL, and approved by Marko. ------------------------------------------------------------ revno: 0.3.1908 committer: marko timestamp: Thu 2009-10-29 11:04:11 +0000 message: branches/zip: Fix corruption of buf_pool->LRU_old and improve debug assertions. This was reported as Issue #381. buf_page_set_old(): Assert that blocks may only be set old if buf_pool->LRU_old is initialized and buf_pool->LRU_old_len is nonzero. Assert that buf_pool->LRU_old points to the block at the old/new boundary. buf_LRU_old_adjust_len(): Invoke buf_page_set_old() after adjusting buf_pool->LRU_old and buf_pool->LRU_old_len, in order not to violate the added assertions. buf_LRU_old_init(): Replace buf_page_set_old() with a direct assignment to bpage->old, because these loops that initialize all the blocks would temporarily violate the assertions about buf_pool->LRU_old. buf_LRU_remove_block(): When setting buf_pool->LRU_old = NULL, also clear all bpage->old flags and set buf_pool->LRU_old_len = 0. buf_LRU_add_block_to_end_low(), buf_LRU_add_block_low(): Move the buf_page_set_old() call later in order not to violate the debug assertions. If buf_pool->LRU_old is NULL, set old=FALSE. buf_LRU_free_block(): Replace the UNIV_LRU_DEBUG assertion with a dummy buf_page_set_old() call that performs more thorough checks. buf_LRU_validate(): Do not tolerate garbage in buf_pool->LRU_old_len even if buf_pool->LRU_old is NULL. Check that bpage->old is monotonic. buf_relocate(): Make the UNIV_LRU_DEBUG checks stricter. buf0buf.h: Revise the documentation of buf_page_t::old and buf_pool_t::LRU_old_len. ------------------------------------------------------------ revno: 0.3.1907 committer: marko timestamp: Thu 2009-10-29 10:44:57 +0000 message: branches/zip: Makefile.am (INCLUDES): Merge a change from MySQL: Use $(srcdir)/include instead of $(top_srcdir)/storage/innobase/include. ------------------------------------------------------------ revno: 0.3.1906 committer: jyang timestamp: Thu 2009-10-29 08:37:32 +0000 message: branches/zip: In os_mem_alloc_large(), if we fail to attach the shared memory, reset memory pointer ptr to NULL, and allocate memory from conventional pool. Bug #48237 Error handling in os_mem_alloc_large appears to be incorrect rb://198 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1905 committer: calvin timestamp: Thu 2009-10-29 05:58:04 +0000 message: branches/zip: close file handle when building with UNIV_HOTBACKUP The change does not affect regular InnoDB engine. Confirmed by Marko. ------------------------------------------------------------ revno: 0.3.1904 committer: marko timestamp: Wed 2009-10-28 14:10:34 +0000 message: branches/zip: buf_page_set_old(): Improve UNIV_LRU_DEBUG diagnostics in order to catch the buf_pool->LRU_old corruption reported in Issue #381. buf_LRU_old_init(): Set the property from the tail towards the front of the buf_pool->LRU list, in order not to trip the debug check. ------------------------------------------------------------ revno: 0.3.1903 committer: calvin timestamp: Tue 2009-10-27 22:05:52 +0000 message: branches/zip: backport r3848 from 6.0 branch ---- branches/6.0: innobase_start_or_create_for_mysql(): Make the 10 MB minimum tablespace limit independent of UNIV_PAGE_SIZE. (Bug #41490) ------------------------------------------------------------ revno: 0.3.1902 committer: marko timestamp: Mon 2009-10-26 13:46:18 +0000 message: branches/zip: row_ins_alloc_sys_fields(): Zero out the system columns DB_TRX_ID, DB_ROLL_PTR and DB_ROW_ID, in order to avoid harmless Valgrind warnings about uninitialized data. (The warnings were harmless, because the fields would be initialized at a later stage.) ------------------------------------------------------------ revno: 0.3.1901 committer: marko timestamp: Mon 2009-10-26 07:32:23 +0000 message: branches/zip: row_prebuilt_struct::prebuilts: Unused field, remove. ------------------------------------------------------------ revno: 0.3.1900 committer: jyang timestamp: Fri 2009-10-23 07:45:50 +0000 message: branches/zip: Update test result with the WARN_LEVEL_ERROR to WARN_LEVEL_WARN change. This is the same result as submitted in rb://172 review, which approved by Sunny Bains and Marko. ------------------------------------------------------------ revno: 0.3.1899 committer: jyang timestamp: Thu 2009-10-22 02:51:07 +0000 message: branches/zip: As a request from mysql, WARN_LEVEL_ERROR cannot be used for push_warning_* call any more. Switch to WARN_LEVEL_WARN. Bug #47233. rb://172 approved by Sunny Bains and Marko. ------------------------------------------------------------ revno: 0.3.1898 committer: jyang timestamp: Thu 2009-10-22 01:58:39 +0000 message: branches/zip: Port bug #46000 related changes from 5.1 to zip branch. Due to different code path for creating index in zip branch comparing to 5.1), the index reserved name check function is extended to be used in ha_innobase::add_index(). rb://190 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1897 committer: vasil timestamp: Mon 2009-10-19 12:06:09 +0000 message: branches/zip: Add ChangeLog entry for r6095. ------------------------------------------------------------ revno: 0.3.1896 committer: vasil timestamp: Mon 2009-10-19 12:04:59 +0000 message: branches/zip: Fix Bug#47808 innodb_information_schema.test fails when run under valgrind by using the wait_until_rows_count macro that loops until the number of rows becomes 14 instead of sleep 0.1, which is obviously very fragile. ------------------------------------------------------------ revno: 0.3.1895 committer: vasil timestamp: Thu 2009-10-15 04:21:17 +0000 message: branches/zip: Add ChangeLog entry for r6080. ------------------------------------------------------------ revno: 0.3.1894 committer: sunny timestamp: Wed 2009-10-14 21:29:01 +0000 message: branches/zip: Change page_mem_alloc_free() to inline. Fix Bug #47058 - Failure to compile innodb_plugin on solaris 10u7 + spro cc/CC 5.10 ------------------------------------------------------------ revno: 0.3.1893 committer: inaam timestamp: Tue 2009-10-13 16:43:13 +0000 message: branches/zip rb://182 Call fsync() on datafiles after a batch of pages is written to disk even when skip_innodb_doublewrite is set. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1892 committer: calvin timestamp: Tue 2009-10-13 14:23:35 +0000 message: branches/zip: non-functional changes Changes from MySQL to fix build issue. ------------------------------------------------------------ revno: 0.3.1891 committer: vasil timestamp: Fri 2009-10-09 15:05:26 +0000 message: branches/zip: Fix compilation warning in Hot Backup: innodb/fil/fil0fil.c: In function 'fil_load_single_table_tablespace': innodb/fil/fil0fil.c:3253: warning: format '%lld' expects type 'long long int', but argument 6 has type 'ib_int64_t' ------------------------------------------------------------ revno: 0.3.1890 committer: vasil timestamp: Fri 2009-10-09 04:42:55 +0000 message: branches/zip: When scanning a directory readdir() is called and stat() after it, if a file is deleted between the two calls stat will fail and the whole precedure will fail. Change this behavior to continue with the next entry if stat() fails because of nonexistent file. This is transparent change as it will make it look as if the file was deleted before the readdir() call. This change is needed in order to fix https://svn.innodb.com/mantis/view.php?id=174 in which we need to abort if os_file_readdir_next_file() encounters "real" errors. Approved by: Marko, Pekka (rb://177) ------------------------------------------------------------ revno: 0.3.1889 committer: pekka timestamp: Thu 2009-10-08 08:24:56 +0000 message: branches/zip: Revert r6044 which added os_file_is_same() function (issue#186). This functionality is moved to Hot Backup source tree. ------------------------------------------------------------ revno: 0.3.1888 committer: pekka timestamp: Tue 2009-10-06 13:44:54 +0000 message: branches/zip: Add os_file_is_same() function for Hot Backup (inside ifdef UNIV_HOTBACKUP). This is part of the fix for Issue #186. Note! The Windows implementation is incomplete. ------------------------------------------------------------ revno: 0.3.1887 committer: inaam timestamp: Mon 2009-10-05 13:45:35 +0000 message: branches/zip rb://176 Do not invalidate buffer pool while an LRU batch is active. Added code to buf_pool_invalidate() to wait for the running batches to finish. This patch also resets the state of buf_pool struct at invalidation. This addresses the concern where buf_pool->freed_page_clock becomes non-zero because we read in a system tablespace page for file format info at startup. Approved by: Marko ------------------------------------------------------------ revno: 0.3.1886 committer: calvin timestamp: Thu 2009-10-01 19:19:46 +0000 message: branches/zip: fix a typo in error message Reported as bug#47763. ------------------------------------------------------------ revno: 0.3.1885 committer: marko timestamp: Thu 2009-10-01 10:24:33 +0000 message: branches/zip: Clean up after a crash during DROP INDEX. When InnoDB crashes while dropping an index, ensure that the index will be completely dropped during crash recovery. row_merge_drop_index(): Before dropping an index, rename the index to start with TEMP_INDEX_PREFIX_STR and commit the change, so that row_merge_drop_temp_indexes() will drop the index after crash recovery if the server crashes while dropping the index. fseg_inode_try_get(): New function, forked from fseg_inode_get(). Return NULL if the file segment index node is free. fseg_inode_get(): Assert that the file segment index node is not free. fseg_free_step(): If the file segment index node is already free, print a diagnostic message and return TRUE. fsp_free_seg_inode(): Write a nonzero number to FSEG_MAGIC_N, so that allocated-and-freed file segment index nodes can be better distinguished from uninitialized ones. This is rb://174, addressing Issue #348. Tested by restarting mysqld upon the completion of the added log_write_up_to() invocation below, during DROP INDEX. The index was dropped after crash recovery, and re-issuing the DROP INDEX did not crash the server. Index: btr/btr0btr.c =================================================================== --- btr/btr0btr.c (revision 6026) +++ btr/btr0btr.c (working copy) @@ -42,6 +42,7 @@ Created 6/2/1994 Heikki Tuuri #include "ibuf0ibuf.h" #include "trx0trx.h" +#include "log0log.h" /* Latching strategy of the InnoDB B-tree -------------------------------------- @@ -873,6 +874,8 @@ leaf_loop: goto leaf_loop; } + + log_write_up_to(mtr.end_lsn, LOG_WAIT_ALL_GROUPS, TRUE); top_loop: mtr_start(&mtr); ------------------------------------------------------------ revno: 0.3.1884 committer: calvin timestamp: Wed 2009-09-30 19:32:02 +0000 message: branches/zip: non-functional changes Fix typo. ------------------------------------------------------------ revno: 0.3.1883 committer: marko timestamp: Wed 2009-09-30 12:55:23 +0000 message: branches/zip: recv_no_log_write: New debug flag for tracking down Mantis Issue #347. No modifications should be made to the database while recv_apply_hashed_log_recs() is about to complete. ------------------------------------------------------------ revno: 0.3.1882 committer: marko timestamp: Wed 2009-09-30 06:18:24 +0000 message: branches/zip: Add some debug assertions for checking FSEG_MAGIC_N. ------------------------------------------------------------ revno: 0.3.1881 committer: vasil timestamp: Tue 2009-09-29 12:19:59 +0000 message: branches/zip: Fix the year, should be 2009. Pointed by: Calvin ------------------------------------------------------------ revno: 0.3.1880 committer: vasil timestamp: Tue 2009-09-29 09:15:25 +0000 message: branches/zip: Add ChangeLog entry for the release of 1.0.4. ------------------------------------------------------------ revno: 0.3.1879 committer: vasil timestamp: Tue 2009-09-29 07:09:52 +0000 message: branches/zip: ChangeLog: wrap around 78th column, not earlier. ------------------------------------------------------------ revno: 0.3.1878 committer: marko timestamp: Mon 2009-09-28 12:03:58 +0000 message: branches/zip: Remove an assertion failure when the InnoDB data dictionary is inconsistent with the MySQL .frm file. ha_innobase::index_read(): When the index cannot be found, return an error. ha_innobase::change_active_index(): When prebuilt->index == NULL, set also prebuilt->index_usable = FALSE. This is not needed for correctness, because prebuilt->index_usable is only checked by row_search_for_mysql(), which requires prebuilt->index != NULL. This addresses Issue #349. Approved by Heikki Tuuri over IM. ------------------------------------------------------------ revno: 0.3.1877 committer: marko timestamp: Mon 2009-09-28 11:46:02 +0000 message: branches/zip: Address Issue #350 in comments. lock_rec_queue_validate(), lock_rec_queue_validate(): Note that this debug code may violate the latching order and cause deadlocks. ------------------------------------------------------------ revno: 0.3.1876 committer: marko timestamp: Mon 2009-09-28 07:52:25 +0000 message: branches/zip: Do not write to PAGE_INDEX_ID after page creation, not even when restoring an uncompressed page after a compression failure. btr_page_reorganize_low(): On compression failure, do not restore those page header fields that should not be affected by the reorganization. Instead, compare the fields. page_zip_decompress(): Add the parameter ibool all, for copying all page header fields. Pass the parameter all=TRUE on block read completion, redo log application, and page_zip_validate(); pass all=FALSE in all other cases. page_zip_reorganize(): Do not restore the uncompressed page on failure. It will be restored (to pre-modification state) by the caller anyway. rb://167, Issue #346 ------------------------------------------------------------ revno: 0.3.1875 committer: marko timestamp: Mon 2009-09-28 07:33:59 +0000 message: branches/zip: Try to prevent the reuse of tablespace identifiers after InnoDB has crashed during table creation. Also, refuse to start if files with duplicate tablespace identifiers are encountered. fil_node_create(): Update fil_system->max_assigned_id. This should prevent the reuse of a space->id when InnoDB does a full crash recovery and invokes fil_load_single_table_tablespaces(). Normally, fil_system->max_assigned_id is initialized from SELECT MAX(ID) FROM SYS_TABLES. fil_open_single_table_tablespace(): Return FALSE when fil_space_create() fails. fil_load_single_table_tablespace(): Exit if fil_space_create() fails and innodb_force_recovery=0. rb://173 approved by Heikki Tuuri. This addresses Issue #335. ------------------------------------------------------------ revno: 0.3.1874 committer: vasil timestamp: Mon 2009-09-28 06:10:29 +0000 message: branches/zip: Add ChangeLog entry for c5988. ------------------------------------------------------------ revno: 0.3.1873 committer: calvin timestamp: Fri 2009-09-25 18:14:43 +0000 message: branches/zip: fix bug#47055 unconditional exit(1) on ERROR_WORKING_SET_QUOTA 1453 (0x5AD) for InnoDB backend When error ERROR_WORKING_SET_QUOTA or ERROR_NO_SYSTEM_RESOURCES occurs, yields for 100ms and retries the operation. Approved by: Heikki (on IM) ------------------------------------------------------------ revno: 0.3.1872 committer: marko timestamp: Thu 2009-09-24 09:16:10 +0000 message: branches/zip: ha_innodb.cc: Define MYSQL_PLUGIN_IMPORT when necessary. This preprocessor symbol has been recently introduced in MySQL 5.1. The InnoDB Plugin should remain source compatible with MySQL 5.1.24 and later. ------------------------------------------------------------ revno: 0.3.1871 committer: marko timestamp: Thu 2009-09-24 06:47:56 +0000 message: branches/zip: Fix warnings and errors when UNIV_HOTBACKUP is defined. ------------------------------------------------------------ revno: 0.3.1870 committer: marko timestamp: Wed 2009-09-23 18:53:21 +0000 message: branches/zip: recv_add_to_hash_table(): Simplify obfuscated pointer arithmetics. ------------------------------------------------------------ revno: 0.3.1869 committer: marko timestamp: Wed 2009-09-23 18:44:52 +0000 message: branches/zip: fil_node_open_file(): In InnoDB Hot Backup, determine the page size of single-file tablespaces before computing the file node size. Otherwise, the space->size of compressed tablespaces would be computed with UNIV_PAGE_SIZE instead of key_block_size. This should fix Issue #313. ------------------------------------------------------------ revno: 0.3.1868 committer: marko timestamp: Wed 2009-09-23 12:03:51 +0000 message: branches/zip: os_file_pwrite(): Make the code compile in InnoDB Hot Backup when the pwrite system call is not available. ------------------------------------------------------------ revno: 0.3.1867 committer: calvin timestamp: Tue 2009-09-22 22:30:10 +0000 message: branches/zip: remove handler0vars.h from Makefile.am Left over from r5950. ------------------------------------------------------------ revno: 0.3.1866 committer: calvin timestamp: Tue 2009-09-22 14:17:01 +0000 message: branches/zip: adjust CMake file to work with old versions of MySQL Tested with MySQL 5.1.38 and 5.1.30. ------------------------------------------------------------ revno: 0.3.1865 committer: calvin timestamp: Tue 2009-09-22 05:42:46 +0000 message: branches/zip: adjust Windows loading method for 5.1.38 Starting at 5.1.38, MySQL server exports symbols needed for dynamic plugin on Windows. There is no need for Windows specific loading. Also, the CMake files are simplified in 5.1.38. When WITH_INNOBASE_STORAGE_ENGINE is specified during configuration (win\configure.js), InnoDB is built as a static library. Otherwise, a dynamic InnoDB will be built (ha_innodb.dll). CMakeLists.txt requires minor changes in order to work with MySQL prior to 5.1.38. The changes will be in a separate patch. This patch addresses Mantis issue#286. ------------------------------------------------------------ revno: 0.3.1864 committer: calvin timestamp: Mon 2009-09-21 13:53:22 +0000 message: branches/zip: fix a type in r5935 Should be innodb_open_files, spotted by Michael. ------------------------------------------------------------ revno: 0.3.1863 committer: vasil timestamp: Mon 2009-09-21 04:26:04 +0000 message: branches/zip: Add ChangeLog entries for c5938. ------------------------------------------------------------ revno: 0.3.1862 committer: calvin timestamp: Sat 2009-09-19 06:14:25 +0000 message: branches/zip: Merge revisions 2584:2956 from branches/6.0, except c2932. Bug#37232 and bug#31183 were fixed in the 6.0 branch only. They should be fixed in the plugin too, specially MySQL 6.0 is discontinued at this point. ------------------------------------------------------------------------ r2604 | inaam | 2008-08-21 09:37:06 -0500 (Thu, 21 Aug 2008) | 8 lines branches/6.0 bug#37232 Relax locking behaviour for REPLACE INTO t SELECT ... FROM t1. Now SELECT on t1 is performed as a consistent read when the isolation level is set to READ COMMITTED. Reviewed by: Heikki ------------------------------------------------------------------------ r2605 | inaam | 2008-08-21 09:59:33 -0500 (Thu, 21 Aug 2008) | 7 lines branches/6.0 Added a comment to clarify why distinct calls to read MySQL binary log file name and log position do not entail any race condition. Suggested by: Heikki ------------------------------------------------------------------------ r2956 | inaam | 2008-11-04 04:47:30 -0600 (Tue, 04 Nov 2008) | 11 lines branches/6.0 bug#31183 If the system tablespace runs out of space because 'autoextend' is not specified with innodb_data_file_path there was no error message printed to the error log. The client would get 'table full' error. This patch prints an appropriate error message to the error log. rb://43 Approved by: Marko ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1861 committer: calvin timestamp: Fri 2009-09-18 20:08:02 +0000 message: branches/zip: fix bug#44338; minor non-functional changes Bug#44338 innodb has message about non-existing option innodb_max_files_open. Change the option to innodb_open_files. The fix was committed into 6.0 branch. ------------------------------------------------------------ revno: 0.3.1860 committer: vasil timestamp: Fri 2009-09-18 16:06:46 +0000 message: branches/zip: Fix typo. ------------------------------------------------------------ revno: 0.3.1859 committer: vasil timestamp: Fri 2009-09-18 03:59:30 +0000 message: branches/zip: White space and formatting cleanup in the ChangeLog ------------------------------------------------------------ revno: 0.3.1858 committer: marko timestamp: Thu 2009-09-17 05:32:08 +0000 message: branches/zip: innodb-zip.test: Make the test work with zlib 1.2.3.3. Apparently, the definition of compressBound() has slightly changed. This has been filed as Mantis Issue #345. ------------------------------------------------------------ revno: 0.3.1857 committer: vasil timestamp: Wed 2009-09-16 17:47:22 +0000 message: branches/zip: Add ChangeLog entries for r5916. ------------------------------------------------------------ revno: 0.3.1856 committer: vasil timestamp: Wed 2009-09-16 17:37:13 +0000 message: branches/zip: Whitespace cleanup in the ChangeLog. ------------------------------------------------------------ revno: 0.3.1855 committer: marko timestamp: Wed 2009-09-16 08:56:23 +0000 message: branches/zip: innobase_get_cset_width(): Cache the value of current_thd. ------------------------------------------------------------ revno: 0.3.1854 committer: marko timestamp: Wed 2009-09-16 08:54:43 +0000 message: branches/zip: Merge revisions 5622:5912 from branches/5.1, except r5700 (changes to CMakeLists.txt) ------------------------------------------------------------------------ r5622 | vasil | 2009-08-03 15:27:00 +0300 (Mon, 03 Aug 2009) | 20 lines Changed paths: M /branches/5.1/Makefile.am branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2988 committer: Satya B branch nick: mysql-5.1-bugteam timestamp: Wed 2009-07-01 11:06:05 +0530 message: Fix build failure after applying Innodb snapshot 5.1-ss5282 After applying Innodb snapshot 5.1-ss5282, build was broken because of missing header file. Adding the header file to Makefile.am after informing the innodb developers. modified: storage/innobase/Makefile.am ------------------------------------------------------------------------ r5740 | jyang | 2009-09-03 06:33:47 +0300 (Thu, 03 Sep 2009) | 5 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/db0err.h A /branches/5.1/mysql-test/innodb_bug46000.result A /branches/5.1/mysql-test/innodb_bug46000.test branches/5.1: Disallow creating index with the name of "GEN_CLUST_INDEX" which is reserved for the default system primary index. (Bug #46000) rb://149 approved by Sunny Bains. ------------------------------------------------------------------------ r5741 | jyang | 2009-09-03 07:16:01 +0300 (Thu, 03 Sep 2009) | 5 lines Changed paths: M /branches/5.1/dict/dict0dict.c M /branches/5.1/handler/ha_innodb.cc A /branches/5.1/mysql-test/innodb_bug44369.result A /branches/5.1/mysql-test/innodb_bug44369.test M /branches/5.1/row/row0mysql.c branches/5.1: Block creating table with column name conflicting with Innodb reserved key words. (Bug #44369) rb://151 approved by Sunny Bains. ------------------------------------------------------------------------ r5757 | jyang | 2009-09-04 04:26:13 +0300 (Fri, 04 Sep 2009) | 3 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/db0err.h D /branches/5.1/mysql-test/innodb_bug46000.result D /branches/5.1/mysql-test/innodb_bug46000.test branches/5.1: Revert change in 5740. Making the fix in a subsequent check in. ------------------------------------------------------------------------ r5760 | jyang | 2009-09-04 07:07:34 +0300 (Fri, 04 Sep 2009) | 3 lines Changed paths: M /branches/5.1/dict/dict0dict.c M /branches/5.1/handler/ha_innodb.cc D /branches/5.1/mysql-test/innodb_bug44369.result D /branches/5.1/mysql-test/innodb_bug44369.test M /branches/5.1/row/row0mysql.c branches/5.1: This is to revert change 5741. A return status for create_table_def() needs to be fixed. ------------------------------------------------------------------------ r5797 | calvin | 2009-09-09 18:26:29 +0300 (Wed, 09 Sep 2009) | 3 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: merge change from 5.1.38 HA_ERR_TOO_MANY_CONCURRENT_TRXS is added in 5.1.38. ------------------------------------------------------------------------ r5799 | calvin | 2009-09-09 20:47:31 +0300 (Wed, 09 Sep 2009) | 10 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: fix bug#46256 Allow tables to be dropped even if the collation is not found, but issue a warning. Could not find an easy way to add mysql-test since it requires changes to charsets and restarting the server. Tests were executed manually. Approved by: Heikki (on IM) ------------------------------------------------------------------------ r5805 | vasil | 2009-09-10 08:41:48 +0300 (Thu, 10 Sep 2009) | 7 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Fix a compilation warning caused by c5799: handler/ha_innodb.cc: In function 'void innobase_get_cset_width(ulint, ulint*, ulint*)': handler/ha_innodb.cc:830: warning: format '%d' expects type 'int', but argument 2 has type 'ulint' ------------------------------------------------------------------------ r5834 | jyang | 2009-09-11 00:43:05 +0300 (Fri, 11 Sep 2009) | 5 lines Changed paths: M /branches/5.1/dict/dict0dict.c M /branches/5.1/handler/ha_innodb.cc A /branches/5.1/mysql-test/innodb_bug44369.result A /branches/5.1/mysql-test/innodb_bug44369.test M /branches/5.1/row/row0mysql.c branches/5.1: Block creating table with column name conflicting with Innodb reserved key words. (Bug #44369) rb://151 approved by Sunny Bains. ------------------------------------------------------------------------ r5895 | jyang | 2009-09-15 03:39:21 +0300 (Tue, 15 Sep 2009) | 5 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc A /branches/5.1/mysql-test/innodb_bug46000.result A /branches/5.1/mysql-test/innodb_bug46000.test branches/5.1: Disallow creating index with the name of "GEN_CLUST_INDEX" which is reserved for the default system primary index. (Bug #46000) rb://149 approved by Marko Makela. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1853 committer: marko timestamp: Wed 2009-09-16 07:07:21 +0000 message: branches/zip: Introduce UNIV_LOG_LSN_DEBUG and MLOG_LSN for redo log diagnostics. This was written in order to better track down Issue #313 in InnoDB Hot Backup. MLOG_LSN: A new redo log entry type, for recording the current log sequence number (LSN). This will be checked in an assertion in recv_parse_log_rec(). rb://161, discussed with Sunny and Vasil. ------------------------------------------------------------ revno: 0.3.1852 committer: marko timestamp: Tue 2009-09-15 10:26:01 +0000 message: branches/zip: ut0ut.h: Do not #include "os0sync.h" #ifdef UNIV_HOTBACKUP. Since r5872, the InnoDB Hot Backup build was broken. Fix it by not defining any thread synchronization primitives in ut0ut.h. InnoDB Hot Backup is a single-threaded program. ------------------------------------------------------------ revno: 0.3.1851 committer: marko timestamp: Tue 2009-09-15 09:18:50 +0000 message: branches/zip: Add */.dirstamp to svn:ignore, for https://svn.innodb.com/svn/hotbackup/branches/3.5 ------------------------------------------------------------ revno: 0.3.1850 committer: marko timestamp: Tue 2009-09-15 07:29:00 +0000 message: branches/zip: Avoid bogus messages about latching order violations when UNIV_SYNC_DEBUG is defined. sync_thread_levels_g(): Add the parameter "warn". Do not print anything unless it is set. sync_thread_add_level(): Pass warn=TRUE to sync_thread_levels_g() when the check is within an assertion; FALSE if it is not. ------------------------------------------------------------ revno: 0.3.1849 committer: inaam timestamp: Mon 2009-09-14 14:20:48 +0000 message: branches/zip rb://159 In case of pages that are not made young the counter is incremented only when the page in question is 'old'. In case of pages that are made young the counter is incremented in case of all pages. For apple to apple comparison this patch changes the 'young-making' counter to consider only 'old' blocks. Approved by: Marko ------------------------------------------------------------ revno: 0.3.1848 committer: vasil timestamp: Mon 2009-09-14 08:17:18 +0000 message: branches/zip: Add missing return statement in the test program that could have caused a warning. ------------------------------------------------------------ revno: 0.3.1847 committer: vasil timestamp: Mon 2009-09-14 07:38:45 +0000 message: branches/zip: Back-merge c5880 and c5881 from branches/embedded-1.0: ------------------------------------------------------------------------ r5880 | vasil | 2009-09-12 17:28:44 +0300 (Sat, 12 Sep 2009) | 18 lines Changed paths: M /branches/embedded-1.0/configure.in M /branches/embedded-1.0/include/os0sync.h M /branches/embedded-1.0/srv/srv0start.c branches/embedded-1.0: Clean up and simplify the code that surrounds the atomic ops: * Simplify the code that prints what atomics are used: Instead of repeating the same conditions on which each atomics are used use just one printf that prints a variable defined by the code which chooses what atomics to use. * In os0sync.h pick up each atomic variant only if it has been selected by autoconf (based on IB_ATOMIC_MODE_* macros). Define the startup message to be printed. * In configure.in: check what user has chosen and if he has chosen something that is not available, emit an error. If nothing has been chosen explicitly by the user, auto select an option according to the described logic in configure.in. ------------------------------------------------------------------------ r5881 | vasil | 2009-09-12 20:08:27 +0300 (Sat, 12 Sep 2009) | 4 lines Changed paths: M /branches/embedded-1.0/configure.in branches/embedded-1.0: Fix syntax error in test program. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1846 committer: vasil timestamp: Sat 2009-09-12 11:11:25 +0000 message: branches/zip: Remove unnecessary macro. ------------------------------------------------------------ revno: 0.3.1845 committer: vasil timestamp: Sat 2009-09-12 08:35:17 +0000 message: branches/zip: Explicitly include os0sync.h to the places where HAVE_ATOMIC_BUILTINS and INNODB_RW_LOCKS_USE_ATOMICS are used to avoid potential problems. ------------------------------------------------------------ revno: 0.3.1844 committer: vasil timestamp: Sat 2009-09-12 08:25:44 +0000 message: branches/zip: Rename HAVE_SOLARIS_ATOMICS to HAVE_IB_SOLARIS_ATOMICS and IB_HAVE_PAUSE_INSTRUCTION to HAVE_IB_PAUSE_INSTRUCTION so they all follow the same HAVE_IB_* convention. ------------------------------------------------------------ revno: 0.3.1843 committer: vasil timestamp: Sat 2009-09-12 08:13:44 +0000 message: branches/zip: Define HAVE_ATOMIC_BUILTINS and INNODB_RW_LOCKS_USE_ATOMICS in os0sync.h instead of in univ.i. The code expects os_*() macros to be present if HAVE_ATOMIC_BUILTINS and INNODB_RW_LOCKS_USE_ATOMICS are defined. So define them next to defining the os_*() macros. ------------------------------------------------------------ revno: 0.3.1842 committer: vasil timestamp: Sat 2009-09-12 07:33:11 +0000 message: branches/zip: Include ut0auxconf.h only if none of the macros it would define is defined. The check when to include this header was outdated from the time when there was only one macro involved. Move the atomics checks that are in univ.i outside of #if windows ... #else ... #endif This simplifies the code and removes some duplicates like defining HAVE_ATOMIC_BUILTINS if HAVE_WINDOWS_ATOMICS is defined in both branches. Do not define the same macro HAVE_ATOMIC_PTHREAD_T for different events. Instead define HAVE_IB_ATOMIC_PTHREAD_T_GCC and HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS. ------------------------------------------------------------ revno: 0.3.1841 committer: vasil timestamp: Sat 2009-09-12 07:01:17 +0000 message: branches/zip: Move the check whether to include ut0auxconf.h before everything because we are now even checking for GCC atomics, we relied on MySQL to define this macro before. ------------------------------------------------------------ revno: 0.3.1840 committer: vasil timestamp: Sat 2009-09-12 06:43:45 +0000 message: branches/zip: Update comment to reflect reality. ------------------------------------------------------------ revno: 0.3.1839 committer: vasil timestamp: Sat 2009-09-12 06:30:08 +0000 message: branches/zip: Add the check for GCC atomics to ut0auxconf* (copied from plug.in) because we no longer rely on MySQL's HAVE_GCC_ATOMIC_BUILTINS. ------------------------------------------------------------ revno: 0.3.1838 committer: vasil timestamp: Sat 2009-09-12 06:26:03 +0000 message: branches/zip: Simplify the compile time checks by splittig them into 5 independent checks: * Whether GCC atomics are available * Whether pthread_t can be used by GCC atomics * Whether Solaris libc atomics are available * Whether pthread_t can be used by Solaris libs atomics * Checking the size of pthread_t ------------------------------------------------------------ revno: 0.3.1837 committer: vasil timestamp: Sat 2009-09-12 06:22:55 +0000 message: branches/zip: Include string.h which is needed for memset(). ------------------------------------------------------------ revno: 0.3.1836 committer: vasil timestamp: Sat 2009-09-12 06:07:08 +0000 message: branches/zip: Check that pthread_t can indeed be passed to Solaris atomic functions, instead of assuming that it can be passed if 0 can be assigned to it. It could be that: * 0 can be assigned, but pthread_t cannot be passed and * 0 cannot be assigned but pthread_t can be passed Better to check what we are interested in, not something else and make assumptions. ------------------------------------------------------------ revno: 0.3.1835 committer: vasil timestamp: Fri 2009-09-11 16:46:47 +0000 message: branches/zip: Fix the indentation of the closing bracket. ------------------------------------------------------------ revno: 0.3.1834 committer: marko timestamp: Thu 2009-09-10 10:29:46 +0000 message: branches/zip: Roll back recovered dictionary transactions before dropping incomplete indexes (Issue #337). trx_rollback_or_clean_recovered(ibool all): New function, split from trx_rollback_or_clean_all_recovered(). all==FALSE will only roll back dictionary transactions. recv_recovery_from_checkpoint_finish(): Call trx_rollback_or_clean_recovered(FALSE) before row_merge_drop_temp_indexes(). rb://158 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.1833 committer: marko timestamp: Thu 2009-09-10 09:47:09 +0000 message: branches/zip: Reduce mutex contention that was introduced when addressing Bug #45015 (Issue #316), in r5703. buf_page_set_accessed_make_young(): New auxiliary function, called by buf_page_get_zip(), buf_page_get_gen(), buf_page_optimistic_get_func(). Call ut_time_ms() outside of buf_pool_mutex. Use cached access_time. buf_page_set_accessed(): Add the parameter time_ms, so that ut_time_ms() need not be called while holding buf_pool_mutex. buf_page_optimistic_get_func(), buf_page_get_known_nowait(): Read buf_page_t::access_time without holding buf_pool_mutex. This should be OK, because the field is only used for heuristic purposes. buf_page_peek_if_too_old(): If buf_pool->freed_page_clock == 0, return FALSE, so that we will not waste time moving blocks in the LRU list in the warm-up phase or when the workload fits in the buffer pool. rb://156 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.1832 committer: marko timestamp: Thu 2009-09-10 09:10:20 +0000 message: branches/zip: buf_page_release(): De-stutter the function comment. ------------------------------------------------------------ revno: 0.3.1831 committer: marko timestamp: Thu 2009-09-10 04:29:31 +0000 message: branches/zip: trx_cleanup_at_db_startup(): Fix a typo in comment. ------------------------------------------------------------ revno: 0.3.1830 committer: calvin timestamp: Wed 2009-09-09 14:28:10 +0000 message: branches/zip: HA_ERR_TOO_MANY_CONCURRENT_TRXS is added in 5.1.38. But the plugin should still work with previous versions of MySQL. ------------------------------------------------------------ revno: 0.3.1829 committer: vasil timestamp: Wed 2009-09-09 12:35:58 +0000 message: branches/zip: Fix a bug in manipulating the variable innodb_old_blocks_pct: for any value assigned it got that value -1, except for 75. When assigned 75, it got 75. mysql> set global innodb_old_blocks_pct=15; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'innodb_old_blocks_pct'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_old_blocks_pct | 14 | +-----------------------+-------+ 1 row in set (0.00 sec) mysql> set global innodb_old_blocks_pct=75; Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'innodb_old_blocks_pct'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_old_blocks_pct | 75 | +-----------------------+-------+ After the fix it gets exactly what was assigned. Approved by: Marko (via IM) ------------------------------------------------------------ revno: 0.3.1828 committer: marko timestamp: Wed 2009-09-09 06:25:00 +0000 message: branches/zip: buf_page_is_accessed(): Correct the function comment. ------------------------------------------------------------ revno: 0.3.1827 committer: marko timestamp: Wed 2009-09-09 06:00:59 +0000 message: branches/zip: buf_page_peek_if_too_old(): Silence a compiler warning that was introduced in r5779 on 32-bit systems. ------------------------------------------------------------ revno: 0.3.1826 committer: marko timestamp: Wed 2009-09-09 05:50:50 +0000 message: branches/zip: ut_time_ms(): Return ulint, not uint. ------------------------------------------------------------ revno: 0.3.1825 committer: marko timestamp: Wed 2009-09-09 05:17:19 +0000 message: branches/zip: buf_page_peek_if_too_old(): Make the bitmasking work when buf_pool->freed_page_clock is wider than 32 bits. ------------------------------------------------------------ revno: 0.3.1824 committer: marko timestamp: Tue 2009-09-08 14:50:25 +0000 message: branches/zip: Remove BUF_LRU_INITIAL_RATIO, which should have been removed together with buf_LRU_get_recent_limit(). ------------------------------------------------------------ revno: 0.3.1823 committer: calvin timestamp: Mon 2009-09-07 20:15:05 +0000 message: branches/zip: Build InnoDB on Windows with UNIV_HOTBACKUP The changes are non-functional changes for normal InnoDB, but needed for building the Hot Backup on Windows (with UNIV_HOTBACKUP defined). - Define os_aio_use_native_aio for HB. - Do not acquire seek mutexes for backup since HB is single threaded. - Do not use srv_flush_log_at_trx_commit for HB build rb://155 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1822 committer: marko timestamp: Thu 2009-09-03 13:55:51 +0000 message: branches/zip: recv_recover_page_func(): Write the log sequence number to the compressed page, if there is one. Previously, the function only wrote the LSN to the uncompressed page. It is not clear why recv_recover_page_func() is updating FIL_PAGE_LSN in the buffer pool. The log sequence number will be stamped on the page when it is flushed to disk, in buf_flush_init_for_writing(). I noticed this inconsistency when analyzing Issue #313, but this patch does not fix it. That is no surprise, since FIL_PAGE_LSN should only matter on disk files, not in the buffer pool. ------------------------------------------------------------ revno: 0.3.1821 committer: marko timestamp: Thu 2009-09-03 13:36:15 +0000 message: branches/zip: row_merge(): Remove a bogus debug assertion that was triggered when creating an index on an empty table. row_merge_sort(): Add debug assertions and comments that justify the loop termination condition. The bogus assertion ut_ad(ihalf > 0) was reported by Michael. ------------------------------------------------------------ revno: 0.3.1820 committer: marko timestamp: Thu 2009-09-03 10:05:44 +0000 message: branches/zip: MLOG_MULTI_REC_END: Correct the comment. ------------------------------------------------------------ revno: 0.3.1819 committer: marko timestamp: Thu 2009-09-03 09:46:38 +0000 message: branches/zip: recv_scan_log_recs(): Replace while with do...while, because the termination condition will always hold on the first iteration. ------------------------------------------------------------ revno: 0.3.1818 committer: marko timestamp: Thu 2009-09-03 07:55:36 +0000 message: branches/zip: log_reserve_and_write_fast(): Do not cache the log_sys pointer in a local variable. ------------------------------------------------------------ revno: 0.3.1817 committer: marko timestamp: Thu 2009-09-03 07:38:22 +0000 message: branches/zip: log_check_log_recs(): Enclose in #ifdef UNIV_LOG_DEBUG. Add const qualifiers. ------------------------------------------------------------ revno: 0.3.1816 committer: marko timestamp: Thu 2009-09-03 07:28:35 +0000 message: branches/zip: ut_align(): Make ptr const, like in ut_align_down(). ------------------------------------------------------------ revno: 0.3.1815 committer: marko timestamp: Thu 2009-09-03 05:36:12 +0000 message: branches/zip: log_reserve_and_write_fast(): Remove the redundant output parameter "success". Success is also indicated by a nonzero return value. ------------------------------------------------------------ revno: 0.3.1814 committer: marko timestamp: Wed 2009-09-02 06:53:19 +0000 message: branches/zip: Enclose some timestamp functions in #ifndef UNIV_HOTBACKUP. ------------------------------------------------------------ revno: 0.3.1813 committer: marko timestamp: Wed 2009-09-02 06:43:09 +0000 message: branches/zip: univ.i: Do not undefine PACKAGE or VERSION. InnoDB source code does not refer to these macros. ------------------------------------------------------------ revno: 0.3.1812 committer: sunny timestamp: Wed 2009-09-02 06:08:45 +0000 message: branches/zip: Update ChangeLog with r5733 changes. ------------------------------------------------------------ revno: 0.3.1811 committer: sunny timestamp: Wed 2009-09-02 06:05:15 +0000 message: branches/zip: Fix a regression introduced by the fix for bug#26316. We check whether a transaction holds any AUTOINC locks before we acquire the kernel mutex and release those locks. Fix for rb://153. Approved by Marko. ------------------------------------------------------------ revno: 0.3.1810 committer: vasil timestamp: Mon 2009-08-31 06:47:49 +0000 message: branches/zip: Fix Bug#46718 InnoDB plugin incompatible with gcc 4.1 (at least: on PPC): "Undefined symbol" by implementing our own check in plug.in instead of using the result from the check from MySQL because it is insufficient. Approved by: Marko (rb://154) ------------------------------------------------------------ revno: 0.3.1809 committer: marko timestamp: Mon 2009-08-31 05:10:10 +0000 message: branches/zip: buf_chunk_not_freed(): Do not acquire block->mutex unless block->page.state == BUF_BLOCK_FILE_PAGE. Check that block->page.state makes sense. Approved by Sunny Bains over the IM. ------------------------------------------------------------ revno: 0.3.1808 committer: inaam timestamp: Fri 2009-08-28 05:22:46 +0000 message: branches/zip rb://152 Disable display of deprecated parameter innodb_file_io_threads in 'show variables'. ------------------------------------------------------------ revno: 0.3.1807 committer: inaam timestamp: Thu 2009-08-27 21:43:32 +0000 message: branches/zip Remove redundant TRUE : FALSE from the return statement ------------------------------------------------------------ revno: 0.3.1806 committer: inaam timestamp: Thu 2009-08-27 15:20:35 +0000 message: branches/zip Remove unused macros as we erased the random readahead code in r5703. Also fixed some comments. ------------------------------------------------------------ revno: 0.3.1805 committer: inaam timestamp: Thu 2009-08-27 15:00:27 +0000 message: branches/zip rb://147 Done away with following two status variables: innodb_buffer_pool_read_ahead_rnd innodb_buffer_pool_read_ahead_seq Introduced two new status variables: innodb_buffer_pool_read_ahead = number of pages read as part of readahead since server startup innodb_buffer_pool_read_ahead_evicted = number of pages that are read in as readahead but were evicted before ever being accessed since server startup i.e.: a measure of how badly our readahead is performing SHOW INNODB STATUS will show two extra numbers in buffer pool section: pages read ahead/sec and pages evicted without access/sec Approved by: Marko ------------------------------------------------------------ revno: 0.3.1804 committer: marko timestamp: Thu 2009-08-27 10:56:24 +0000 message: branches/zip: dict_index_find_cols(): On column name lookup failure, return DB_CORRUPTION (HA_ERR_CRASHED) instead of abnormally terminating the server. Also, disable the previously added diagnostic output to the error log, because mysql-test-run does not like extra output in the error log. (Bug #44571) dict_index_add_to_cache(): Handle errors from dict_index_find_cols(). mysql-test/innodb_bug44571.test: A test case for triggering the bug. rb://135 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.3.1803 committer: marko timestamp: Thu 2009-08-27 07:31:17 +0000 message: branches/zip: Fix a critical bug in fast index creation that could corrupt the created indexes. row_merge(): Make "half" an in/out parameter. Determine the offset of half the output file. Copy the last blocks record-by-record instead of block-by-block, so that the records can be counted. Check that the input and output have matching n_rec. row_merge_sort(): Do not assume that two blocks of size N are merged into a block of size 2*N. The output block can be shorter than the input if the last page of each input block is almost empty. Use an accurate termination condition, based on the "half" computed by row_merge(). row_merge_read(), row_merge_write(), row_merge_blocks(): Add debug output. merge_file_t, row_merge_file_create(): Add n_rec, the number of records in the merge file. row_merge_read_clustered_index(): Update n_rec. row_merge_blocks(): Update and check n_rec. row_merge_blocks_copy(): New function, for copying the last blocks in row_merge(). Update and check n_rec. This bug was discovered with a user-supplied test case that creates an index where the initial temporary file is 249 one-megabyte blocks and the merged files become smaller. In the test, possible merge record sizes are 10, 18, and 26 bytes. rb://150 approved by Sunny Bains. This addresses Issue #320. ------------------------------------------------------------ revno: 0.3.1802 committer: marko timestamp: Thu 2009-08-27 06:25:00 +0000 message: branches/zip: Replace the constant 3/8 ratio that controls the LRU_old size with the settable global variable innodb_old_blocks_pct. The minimum and maximum values are 5 and 95 per cent, respectively. The default is 100*3/8, in line with the old behavior. ut_time_ms(): New utility function, to return the current time in milliseconds. TODO: Is there a more efficient timestamp function, such as rdtsc divided by a power of two? buf_LRU_old_threshold_ms: New variable, corresponding to innodb_old_blocks_time. The value 0 is the default behaviour: no timeout before making blocks 'new'. bpage->accessed, bpage->LRU_position, buf_pool->ulint_clock: Remove. bpage->access_time: New field, replacing bpage->accessed. Protected by buf_pool_mutex instead of bpage->mutex. Updated when a page is created or accessed the first time in the buffer pool. buf_LRU_old_ratio, innobase_old_blocks_pct: New variables, corresponding to innodb_old_blocks_pct buf_LRU_old_ratio_update(), innobase_old_blocks_pct_update(): Update functions for buf_LRU_old_ratio, innobase_old_blocks_pct. buf_page_peek_if_too_old(): Compare ut_time_ms() to bpage->access_time if buf_LRU_old_threshold_ms && bpage->old. Else observe buf_LRU_old_ratio and bpage->freed_page_clock. buf_pool_t: Add n_pages_made_young, n_pages_not_made_young, n_pages_made_young_old, n_pages_not_made_young, for statistics. buf_print(): Display buf_pool->n_pages_made_young, buf_pool->n_pages_not_made_young. This function is only for crash diagnostics. buf_print_io(): Display buf_pool->LRU_old_len and quantities derived from buf_pool->n_pages_made_young, buf_pool->n_pages_not_made_young. This function is invoked by SHOW ENGINE INNODB STATUS. rb://129 approved by Heikki Tuuri. This addresses Bug #45015. ------------------------------------------------------------ revno: 0.3.1801 committer: marko timestamp: Thu 2009-08-27 06:03:15 +0000 message: branches/zip: Document also the files affected by r5698 in the ChangeLog. ------------------------------------------------------------ revno: 0.3.1800 committer: marko timestamp: Thu 2009-08-27 06:01:42 +0000 message: branches/zip: Document r5698 in the ChangeLog. ------------------------------------------------------------ revno: 0.3.1799 committer: inaam timestamp: Wed 2009-08-26 13:34:35 +0000 message: branches/zip bug#42885 rb://148 The call to put IO threads to sleep was most probably meant for Windows only as the comment in buf0rea.c suggests. However it was enabled on all platforms. This patch restricts the sleep call to windows. This approach of not putting threads to sleep makes even more sense because now we have multiple threads working in the background and it probably is not a good idea to put all of them to sleep because a user thread wants to post a batch for readahead. Approved by: Marko ------------------------------------------------------------ revno: 0.3.1798 committer: vasil timestamp: Wed 2009-08-26 12:44:40 +0000 message: branches/zip: Fix typo. ------------------------------------------------------------ revno: 0.3.1797 committer: vasil timestamp: Wed 2009-08-26 12:15:59 +0000 message: branches/zip: Merge a change from MySQL: http://lists.mysql.com/commits/80832 2968 Jonathan Perkin 2009-08-14 Build fixes for Windows, AIX, HP/UX and Sun Studio11, from Timothy Smith. modified: CMakeLists.txt cmd-line-utils/readline/util.c storage/innodb_plugin/handler/i_s.cc storage/innodb_plugin/include/univ.i ------------------------------------------------------------ revno: 0.3.1796 committer: marko timestamp: Wed 2009-08-26 12:14:59 +0000 message: branches/zip: UNIV_DEBUG_LOCK_VALIDATE: Move the definition to univ.i. ------------------------------------------------------------ revno: 0.3.1795 committer: marko timestamp: Wed 2009-08-26 10:25:26 +0000 message: branches/zip: buf_page_t: Clarify that bpage->list may contain garbage. This comment was provoked by Inaam. ------------------------------------------------------------ revno: 0.3.1794 committer: vasil timestamp: Thu 2009-08-20 08:20:22 +0000 message: branches/zip: ChangeLog: Follow the convention from the rest of the ChangeLog: for bugfixes from bugs.mysql.com only the bug number and title goes in the ChangeLog. Detailed explanation on what is the problem and how it was fixed is present in the bugs database. ------------------------------------------------------------ revno: 0.3.1793 committer: vasil timestamp: Thu 2009-08-20 08:15:05 +0000 message: branches/zip: White-space fixup. ------------------------------------------------------------ revno: 0.3.1792 committer: sunny timestamp: Thu 2009-08-20 07:18:29 +0000 message: branches/zip: Update the ChangeLog with r5684 change. ------------------------------------------------------------ revno: 0.3.1791 committer: sunny timestamp: Thu 2009-08-20 07:05:30 +0000 message: branches/zip: Fix bug# 46650: Innodb assertion autoinc_lock == lock in lock_table_remove_low on INSERT SELECT We only store the autoinc locks that are granted in the transaction's autoinc lock vector. A transacton, that has been rolled back due to a deadlock because of an AUTOINC lock attempt, will not have added that lock to the vector. We need to check for that when we remove that lock. rb://145 Approved by Marko. ------------------------------------------------------------ revno: 0.3.1790 committer: sunny timestamp: Fri 2009-08-14 05:16:24 +0000 message: branches/zip: When building HotBackup srv_use_sys_malloc is #ifdef out. We move access to the this variable within a !UNIV_HOTBACKUP block. ------------------------------------------------------------ revno: 0.3.1789 committer: marko timestamp: Thu 2009-08-13 07:46:33 +0000 message: branches/zip: ha_innobase::add_index(): Fix Bug #46557: after a successful operation, read innodb_table->flags from the newly created table object, not from the old one that was just freed. Approved by Sunny. ------------------------------------------------------------ revno: 0.3.1788 committer: marko timestamp: Wed 2009-08-12 12:16:37 +0000 message: branches/zip: trx_undo_rec_copy(): Add const qualifier to undo_rec. This is a non-functional change. ------------------------------------------------------------ revno: 0.3.1787 committer: marko timestamp: Tue 2009-08-11 10:42:37 +0000 message: branches/zip: trx_general_rollback_for_mysql(): Remove the redundant parameter partial. If savept==NULL, partial==FALSE. ------------------------------------------------------------ revno: 0.3.1786 committer: marko timestamp: Tue 2009-08-11 08:54:16 +0000 message: branches/zip: Bump the version number to 1.0.5 after releasing 1.0.4. ------------------------------------------------------------ revno: 0.3.1785 committer: calvin timestamp: Thu 2009-08-06 22:04:03 +0000 message: branches/zip: remove duplicate "the" in comments. ------------------------------------------------------------ revno: 0.3.1784 committer: marko timestamp: Thu 2009-08-06 09:39:34 +0000 message: branches/zip: mem_heap_block_free(): If innodb_use_sys_malloc is set, do not tell Valgrind that the memory is free, to avoid a bogus warning in Valgrind's built-in free() hook. ------------------------------------------------------------ revno: 0.3.1783 committer: marko timestamp: Wed 2009-08-05 11:27:30 +0000 message: branches/zip: lock_rec_validate_page(): Add the parameter zip_size. This should help track down Mantis Issue #289. ------------------------------------------------------------ revno: 0.3.1782 committer: marko timestamp: Wed 2009-08-05 10:06:55 +0000 message: branches/zip: Replace with NUMBER in some comments, to avoid problems with Doxygen XML output. ------------------------------------------------------------ revno: 0.3.1781 committer: marko timestamp: Tue 2009-08-04 10:42:44 +0000 message: branches/zip: mysql-test: Pass MTR's internal checks. ------------------------------------------------------------ revno: 0.3.1780 committer: vasil timestamp: Tue 2009-08-04 04:53:31 +0000 message: branches/zip: Revert the dummy change from c5625. ------------------------------------------------------------ revno: 0.3.1779 committer: vasil timestamp: Tue 2009-08-04 04:52:48 +0000 message: branches/zip: Merge 5518:5622 from branches/5.1, resolving conflict in r5622 (after resolving the conflict Makefile.am was not changed so I have made a dummy change so I can commit and thus record that branches/5.1 has been merged in branches/zip up to 5622): ------------------------------------------------------------------------ r5622 | vasil | 2009-08-03 15:27:00 +0300 (Mon, 03 Aug 2009) | 20 lines Changed paths: M /branches/5.1/Makefile.am branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2988 committer: Satya B branch nick: mysql-5.1-bugteam timestamp: Wed 2009-07-01 11:06:05 +0530 message: Fix build failure after applying Innodb snapshot 5.1-ss5282 After applying Innodb snapshot 5.1-ss5282, build was broken because of missing header file. Adding the header file to Makefile.am after informing the innodb developers. modified: storage/innobase/Makefile.am ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1778 committer: vasil timestamp: Fri 2009-07-31 14:09:07 +0000 message: branches/zip: Add fsp0types.h to the list of noinst_HEADERS Suggested by: Sergey Vojtovich ------------------------------------------------------------ revno: 0.3.1777 committer: vasil timestamp: Tue 2009-07-21 09:28:27 +0000 message: branches/zip: Add a test program to check whether the PAUSE instruction is available. ------------------------------------------------------------ revno: 0.3.1776 committer: vasil timestamp: Tue 2009-07-21 08:31:26 +0000 message: branches/zip: Fixups in ChangeLog: sort filenames alphabetically and wrap to 78 chars per line. ------------------------------------------------------------ revno: 0.3.1775 committer: sunny timestamp: Mon 2009-07-20 20:56:30 +0000 message: branches/zip: For HotBackup builds we don't want to hide the symbols. ------------------------------------------------------------ revno: 0.3.1774 committer: calvin timestamp: Mon 2009-07-20 16:14:30 +0000 message: branches/zip: add ChangeLog entry for r5524. ------------------------------------------------------------ revno: 0.3.1773 committer: inaam timestamp: Mon 2009-07-20 15:23:15 +0000 message: branches/zip Change the read ahead parameter name to innodb_read_ahead_threshold. Change the meaning of this parameter to signify the number of pages that must be sequentially accessed for InnoDB to trigger a readahead request. Suggested by: Ken ------------------------------------------------------------ revno: 0.3.1772 committer: vasil timestamp: Mon 2009-07-20 07:51:47 +0000 message: branches/zip: Add ChangeLog entries for r5498 and r5519. ------------------------------------------------------------ revno: 0.3.1771 committer: vasil timestamp: Mon 2009-07-20 07:45:18 +0000 message: branches/zip: Merge r5497:5518 from branches/5.1: ------------------------------------------------------------------------ r5518 | vasil | 2009-07-20 11:29:47 +0300 (Mon, 20 Jul 2009) | 22 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2874.2.1 committer: Anurag Shekhar branch nick: mysql-5.1-bugteam-windows-warning timestamp: Wed 2009-05-13 15:41:24 +0530 message: Bug #39802 On Windows, 32-bit time_t should be enforced This patch fixes compilation warning, "conversion from 'time_t' to 'ulong', possible loss of data". The fix is to typecast time_t to ulong before assigning it to ulong. Backported this from 6.0-bugteam tree. modified: storage/archive/ha_archive.cc storage/federated/ha_federated.cc storage/innobase/handler/ha_innodb.cc storage/myisam/ha_myisam.cc ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1770 committer: sunny timestamp: Mon 2009-07-20 06:55:11 +0000 message: Add /* UNIV_HOTBACK */ ------------------------------------------------------------ revno: 0.3.1769 committer: sunny timestamp: Mon 2009-07-20 06:46:05 +0000 message: branches/zip: Make this file usable from within HotBackup. A new file has been introduced called hb_univ.i. This file should have all the HotBackup specific configuration. ------------------------------------------------------------ revno: 0.3.1768 committer: sunny timestamp: Mon 2009-07-20 06:29:14 +0000 message: branches/zip: The dict_table_t::autoinc_mutex field is not used in HotBackup. ------------------------------------------------------------ revno: 0.3.1767 committer: sunny timestamp: Sun 2009-07-19 23:08:49 +0000 message: branches/zip: Only use my_bool when UNIV_HOTBACKUP is not defined. ------------------------------------------------------------ revno: 0.3.1766 committer: sunny timestamp: Sun 2009-07-19 22:58:43 +0000 message: branches/zip: Undo r5512 ------------------------------------------------------------ revno: 0.3.1765 committer: sunny timestamp: Sun 2009-07-19 22:52:48 +0000 message: branches/zip: Remove unused extern ref to timed_mutexes. ------------------------------------------------------------ revno: 0.3.1764 committer: calvin timestamp: Thu 2009-07-16 12:45:28 +0000 message: branches/zip: add ChangeLog entry for r5508. ------------------------------------------------------------ revno: 0.3.1763 committer: calvin timestamp: Thu 2009-07-16 12:40:47 +0000 message: branches/zip: Support inlining of functions and prefetch with Sun Studio Those changes are contributed by Sun/MySQL. Two sets of changes in this patch when Sun Studio is used: - Explicit inlining of functions - Prefetch Support This patch has been tested by Sunny with the plugin statically built in. Since we've never built the plugin as a dynamically loaded module on Solaris, it is a separate task to change plug.in. rb://142 Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1762 committer: calvin timestamp: Wed 2009-07-15 07:58:44 +0000 message: branches/zip: fix compile errors on Win64 Both srv_read_ahead_factor and srv_io_capacity should be defined as ulong. Approved by: Sunny ------------------------------------------------------------ revno: 0.3.1761 committer: vasil timestamp: Tue 2009-07-14 17:16:11 +0000 message: branches/zip: Non-functional change: put files in noinst_HEADERS and libinnobase_a_SOURCES one per line and sort alphabetically, so it is easier to find if a file is there or not and also diffs show exactly the added or removed file instead of surrounding lines too. ------------------------------------------------------------ revno: 0.3.1760 committer: vasil timestamp: Tue 2009-07-14 16:59:59 +0000 message: branches/zip: Add include/ut0auxconf.h to noinst_HEADERS ------------------------------------------------------------ revno: 0.3.1759 committer: vasil timestamp: Tue 2009-07-14 16:58:15 +0000 message: branches/zip: Add @ZLIB_INCLUDES@ so that the InnoDB Plugin picks up the same zlib.h header file that is eventually used by mysqld. ------------------------------------------------------------ revno: 0.3.1758 committer: calvin timestamp: Tue 2009-07-14 16:03:26 +0000 message: branches/zip: minor change Remove an extra "with". ------------------------------------------------------------ revno: 0.3.1757 committer: calvin timestamp: Tue 2009-07-14 15:55:10 +0000 message: branches/zip: add a missing file in Makefile.am This change was suggested by MySQL. ------------------------------------------------------------ revno: 0.3.1756 committer: vasil timestamp: Tue 2009-07-14 06:16:18 +0000 message: branches/zip: Merge r5341:5497 from branches/5.1, skipping: c5419 because it is merge from branches/zip into branches/5.1 c5466 because the source code has been adjusted to match the MySQL behavior and the innodb-autoinc test does not fail in branches/zip, if c5466 is merged, then innodb-autoinc starts failing, Sunny suggested not to merge c5466. and resolving conflicts in c5410, c5440, c5488: ------------------------------------------------------------------------ r5410 | marko | 2009-06-24 22:26:34 +0300 (Wed, 24 Jun 2009) | 2 lines Changed paths: M /branches/5.1/include/trx0sys.ic M /branches/5.1/trx/trx0purge.c M /branches/5.1/trx/trx0sys.c M /branches/5.1/trx/trx0undo.c branches/5.1: Add missing #include "mtr0log.h" to avoid warnings when compiling with -DUNIV_MUST_NOT_INLINE. ------------------------------------------------------------------------ r5419 | marko | 2009-06-25 16:11:57 +0300 (Thu, 25 Jun 2009) | 18 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb_bug42101-nonzero.result M /branches/5.1/mysql-test/innodb_bug42101-nonzero.test M /branches/5.1/mysql-test/innodb_bug42101.result M /branches/5.1/mysql-test/innodb_bug42101.test branches/5.1: Merge r5418 from branches/zip: ------------------------------------------------------------------------ r5418 | marko | 2009-06-25 15:55:52 +0300 (Thu, 25 Jun 2009) | 5 lines Changed paths: M /branches/zip/ChangeLog M /branches/zip/handler/ha_innodb.cc M /branches/zip/mysql-test/innodb_bug42101-nonzero.result M /branches/zip/mysql-test/innodb_bug42101-nonzero.test M /branches/zip/mysql-test/innodb_bug42101.result M /branches/zip/mysql-test/innodb_bug42101.test branches/zip: Fix a race condition caused by SET GLOBAL innodb_commit_concurrency=DEFAULT. (Bug #45749) When innodb_commit_concurrency is initially set nonzero, DEFAULT would change it back to 0, triggering Bug #42101. rb://139 approved by Heikki Tuuri. ------------------------------------------------------------------------ ------------------------------------------------------------------------ r5440 | vasil | 2009-06-30 13:04:29 +0300 (Tue, 30 Jun 2009) | 8 lines Changed paths: M /branches/5.1/fil/fil0fil.c branches/5.1: Fix Bug#45814 URL reference in InnoDB server errors needs adjusting to match documentation by changing the URL from http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.html to http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting-datadict.html ------------------------------------------------------------------------ r5466 | vasil | 2009-07-02 10:46:45 +0300 (Thu, 02 Jul 2009) | 6 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Adjust the failing innodb-autoinc test to conform to the latest behavior of the MySQL code. The idea and the comment in innodb-autoinc.test come from Sunny. ------------------------------------------------------------------------ r5488 | vasil | 2009-07-09 19:16:44 +0300 (Thu, 09 Jul 2009) | 13 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc A /branches/5.1/mysql-test/innodb_bug21704.result A /branches/5.1/mysql-test/innodb_bug21704.test branches/5.1: Fix Bug#21704 Renaming column does not update FK definition by checking whether a column that participates in a FK definition is being renamed and denying the ALTER in this case. The patch was originally developed by Davi Arnaut : http://lists.mysql.com/commits/77714 and was later adjusted to conform to InnoDB coding style by me (Vasil), I also added some more comments and moved the bug specific mysql-test to a separate file to make it more manageable and flexible. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1755 committer: calvin timestamp: Mon 2009-07-13 18:01:00 +0000 message: branches/zip: fix run-time symbols clash on Solaris. This patch is from Sergey Vojtovich of Sun Microsystems, to fix run-time symbols clash on Solaris with older C++ compiler: - when finding out a way to hide symbols, make decision basing on compiler, not operating system. - Sun Studio supports __hidden declaration specifier for this purpose. ------------------------------------------------------------ revno: 0.3.1754 committer: inaam timestamp: Mon 2009-07-13 17:04:57 +0000 message: branches/zip Fixed warnings on windows where ulint != ib_uint64_t ------------------------------------------------------------ revno: 0.3.1753 committer: inaam timestamp: Mon 2009-07-13 14:48:45 +0000 message: branches/zip rb://138 (REVERT) Revert the flush neighbors patch as it shows regression in the benchmarks run by Michael. ------------------------------------------------------------ revno: 0.3.1752 committer: vasil timestamp: Mon 2009-07-13 06:37:35 +0000 message: branches/zip: Restore the original value of innodb_sync_spin_loops at the end, previously the test assumed that setting it to 20 will do this, but now the default is 30 and MTR's internal check failed. ------------------------------------------------------------ revno: 0.3.1751 committer: calvin timestamp: Fri 2009-07-10 20:47:34 +0000 message: branches/zip: add ChangeLog entries for r5484-r5486. ------------------------------------------------------------ revno: 0.3.1750 committer: calvin timestamp: Fri 2009-07-10 15:19:17 +0000 message: branches/zip: add copyright info to files related to PAUSE instruction patch, contributed by Sun Microsystems. ------------------------------------------------------------ revno: 0.3.1749 committer: vasil timestamp: Fri 2009-07-10 08:04:20 +0000 message: branches/zip: Add ChangeLog entry for 5489. ------------------------------------------------------------ revno: 0.3.1748 committer: vasil timestamp: Fri 2009-07-10 08:02:22 +0000 message: branches/zip: Change the defaults for innodb_sync_spin_loops: 20 -> 30 innodb_spin_wait_delay: 5 -> 6 This change was proposed by Sun/MySQL based on their performance testing, see https://svn.innodb.com/innobase/Release_tasks_for_InnoDB_Plugin_V1.0.4 ------------------------------------------------------------ revno: 0.3.1747 committer: calvin timestamp: Wed 2009-07-08 15:42:28 +0000 message: branches/zip: fix PAUSE instruction patch on Windows The original PAUSE instruction patch (r5470) does not compile on Windows. Also, there is an elegant way of doing it on Windows - YieldProcessor(). Approved by: Heikki (on IM) ------------------------------------------------------------ revno: 0.3.1746 committer: inaam timestamp: Wed 2009-07-08 15:11:40 +0000 message: branches/zip rb://133 This patch introduces heuristics based flushing rate of dirty pages to avoid IO bursts at checkpoint. 1) log_capacity / log_generated per second gives us number of seconds in which ALL dirty pages need to be flushed. Based on this rough assumption we can say that n_dirty_pages / (log_capacity / log_generation_rate) = desired_flush_rate 2) We use weighted averages (hard coded to 20 seconds) of log_generation_rate to avoid resonance. 3) From the desired_flush_rate we subtract the number of pages that have been flushed due to LRU flushing. That gives us pages that we should flush as part of flush_list cleanup. And that is the number (capped by maximum io_capacity) that we try to flush from the master thread. Knobs: ====== innodb_adaptive_flushing: boolean, global, dynamic, default TRUE. Since this heuristic is very experimental and has the potential to dramatically change the IO pattern I think it is a good idea to leave a knob to turn it off. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1745 committer: inaam timestamp: Tue 2009-07-07 22:00:49 +0000 message: branches/zip rb://138 The current implementation is to try to flush the neighbors of every page that we flush. This patch makes the following distinction: 1) If the flush is from flush_list AND 2) If the flush is intended to move the oldest_modification LSN ahead (this happens when a user thread sees little space in the log file and attempts to flush pages from the buffer pool so that a checkpoint can be made) THEN Do not try to flush the neighbors. Just focus on flushing dirty pages at the end of flush_list Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1744 committer: inaam timestamp: Tue 2009-07-07 21:57:14 +0000 message: branches/zip rb://126 Based on contribution from Google Inc. This patch introduces a new parameter innodb_io_capacity to control the rate at which master threads performs various tasks. The default value is 200 and higher values imply more aggressive flushing and ibuf merges from within the master thread. This patch also changes the ibuf merge from synchronous to asynchronous. Another minor change is not to force the master thread to wait for a log flush to complete every second. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1743 committer: calvin timestamp: Tue 2009-07-07 08:36:43 +0000 message: branches/zip: add IB_HAVE_PAUSE_INSTRUCTION to CMake. Windows will support PAUSE instruction by default. ------------------------------------------------------------ revno: 0.3.1742 committer: calvin timestamp: Mon 2009-07-06 21:36:35 +0000 message: branches/zip: add COPYING files for Percona and Sun Micro. 1.0.4 contains patches based on contributions from Percona and Sun Microsystems. ------------------------------------------------------------ revno: 0.3.1741 committer: vasil timestamp: Mon 2009-07-06 16:16:32 +0000 message: branches/zip: Remove unnecessary quotes and simplify plug.in. ------------------------------------------------------------ revno: 0.3.1740 committer: vasil timestamp: Thu 2009-07-02 12:12:36 +0000 message: branches/zip: Use PAUSE instruction inside spinloop if it is available. The patch was originally developed by Mikael Ronstrom and can be found here: http://bazaar.launchpad.net/%7Emysql/mysql-server/mysql-5.4/revision/2768 http://bazaar.launchpad.net/%7Emysql/mysql-server/mysql-5.4/revision/2771 http://bazaar.launchpad.net/%7Emysql/mysql-server/mysql-5.4/revision/2772 http://bazaar.launchpad.net/%7Emysql/mysql-server/mysql-5.4/revision/2774 http://bazaar.launchpad.net/%7Emysql/mysql-server/mysql-5.4/revision/2777 http://bazaar.launchpad.net/%7Emysql/mysql-server/mysql-5.4/revision/2799 http://bazaar.launchpad.net/%7Emysql/mysql-server/mysql-5.4/revision/2800 Approved by: Heikki (rb://137) ------------------------------------------------------------ revno: 0.3.1739 committer: inaam timestamp: Tue 2009-06-30 17:21:09 +0000 message: branches/zip Non functional change. s/Percona/Percona Inc./ ------------------------------------------------------------ revno: 0.3.1738 committer: marko timestamp: Tue 2009-06-30 11:42:52 +0000 message: branches/zip: Replace a non-ASCII character (ISO 8859-1 encoded U+00AD SOFT HYPHEN) with a cheap ASCII substitute. ------------------------------------------------------------ revno: 0.3.1737 committer: marko timestamp: Tue 2009-06-30 11:14:01 +0000 message: branches/zip: os_process_set_priority_boost(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1736 committer: marko timestamp: Tue 2009-06-30 11:10:26 +0000 message: branches/zip: os_file_close_no_error_handling(): Restore, as this function is used within InnoDB Hot Backup. ------------------------------------------------------------ revno: 0.3.1735 committer: marko timestamp: Tue 2009-06-30 11:09:49 +0000 message: branches/zip: page_set_max_trx_id(): Make the code compile with UNIV_HOTBACKUP. ------------------------------------------------------------ revno: 0.3.1734 committer: marko timestamp: Tue 2009-06-30 11:02:20 +0000 message: branches/zip: os_file_close_no_error_handling(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1733 committer: marko timestamp: Tue 2009-06-30 11:00:50 +0000 message: branches/zip: innobase_start_or_create_for_mysql(): Invoke os_get_os_version() at most once. ------------------------------------------------------------ revno: 0.3.1732 committer: marko timestamp: Tue 2009-06-30 10:56:36 +0000 message: branches/zip: mem_heap_cat(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1731 committer: marko timestamp: Tue 2009-06-30 10:37:58 +0000 message: branches/zip: srv_que_task_queue_check(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1730 committer: marko timestamp: Tue 2009-06-30 10:35:45 +0000 message: branches/zip: srv_que_round_robin(), srv_que_task_enqueue(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1729 committer: marko timestamp: Tue 2009-06-30 10:28:11 +0000 message: branches/zip: row_build_row_ref_from_row(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1728 committer: marko timestamp: Tue 2009-06-30 10:19:49 +0000 message: branches/zip: que_graph_try_free(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1727 committer: marko timestamp: Tue 2009-06-30 10:03:00 +0000 message: branches/zip: os_event_create_auto(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1726 committer: marko timestamp: Tue 2009-06-30 09:45:41 +0000 message: branches/zip: lock_is_on_table(), lock_table_unlock(): Unused, remove. ------------------------------------------------------------ revno: 0.3.1725 committer: marko timestamp: Tue 2009-06-30 09:30:14 +0000 message: branches/zip: ha_delete(): Remove this unused function that was very similar to ha_search_and_delete_if_found(). ------------------------------------------------------------ revno: 0.3.1724 committer: marko timestamp: Tue 2009-06-30 08:15:22 +0000 message: branches/zip: fseg_validate(): Enclose in #ifdef UNIV_DEBUG. This function is unused, but it could turn out to be a useful debugging aid. ------------------------------------------------------------ revno: 0.3.1723 committer: marko timestamp: Tue 2009-06-30 08:10:32 +0000 message: branches/zip: fseg_free(): Remove this unused function. ------------------------------------------------------------ revno: 0.3.1722 committer: marko timestamp: Tue 2009-06-30 08:10:01 +0000 message: branches/zip: ibuf_dummy_index_free(): Beautify the comment. ------------------------------------------------------------ revno: 0.3.1721 committer: marko timestamp: Mon 2009-06-29 12:58:40 +0000 message: branches/zip: Revert an accidentally made change in r5430 to univ.i. ------------------------------------------------------------ revno: 0.3.1720 committer: marko timestamp: Mon 2009-06-29 12:58:07 +0000 message: branches/zip: lock_rec_validate_page(): Add another assertion to track down Issue #289. ------------------------------------------------------------ revno: 0.3.1719 committer: marko timestamp: Mon 2009-06-29 12:49:54 +0000 message: branches/zip: Do not crash on SET GLOBAL innodb_file_format=DEFAULT or SET GLOBAL innodb_file_format_check=DEFAULT. innodb_file_format.test: New test for innodb_file_format and innodb_file_format_check. innodb_file_format_name_validate(): Store the string in *save. innodb_file_format_name_update(): Check the string again. innodb_file_format_check_validate(): Store the string in *save. innodb_file_format_check_update(): Check the string again. Issue #282, rb://140 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1718 committer: marko timestamp: Mon 2009-06-29 10:06:29 +0000 message: branches/zip: row_sel_store_mysql_rec(): Add missing pointer cast. Do not do arithmetics on void pointers. ------------------------------------------------------------ revno: 0.3.1717 committer: marko timestamp: Mon 2009-06-29 08:54:53 +0000 message: branches/zip: lock_print_info_all_transactions(), buf_read_recv_pages(): Tolerate missing tablespaces (zip_size==ULINT_UNDEFINED). buf_page_get_gen(): Add ut_ad(ut_is_2pow(zip_size)). Issue #289, rb://136 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.1716 committer: marko timestamp: Mon 2009-06-29 08:24:27 +0000 message: branches/zip: buf_page_get_gen(): Fix a race condition when reading buf_fix_count. This could explain Issue #156. Tested by Michael. ------------------------------------------------------------ revno: 0.3.1715 committer: marko timestamp: Mon 2009-06-29 07:52:30 +0000 message: branches/zip: ha_innobase::add_index(), ha_innobase::final_drop_index(): Start prebuilt->trx before locking the table. This should fix Issue #293 and could fix Issue #229. Approved by Sunny (over IM). ------------------------------------------------------------ revno: 0.3.1714 committer: calvin timestamp: Fri 2009-06-26 19:52:52 +0000 message: branches/zip: Fix typos. ------------------------------------------------------------ revno: 0.3.1713 committer: marko timestamp: Thu 2009-06-25 11:55:52 +0000 message: branches/zip: Fix a race condition caused by SET GLOBAL innodb_commit_concurrency=DEFAULT. (Bug #45749) When innodb_commit_concurrency is initially set nonzero, DEFAULT would change it back to 0, triggering Bug #42101. rb://139 approved by Heikki Tuuri. ------------------------------------------------------------ revno: 0.3.1712 committer: marko timestamp: Thu 2009-06-25 11:20:56 +0000 message: branches/zip: ha_innodb.cc: Move the misplaced Doxygen @file comment. ------------------------------------------------------------ revno: 0.3.1711 committer: marko timestamp: Thu 2009-06-25 09:45:57 +0000 message: branches/zip: dict_index_find_cols(): Print diagnostic on name mismatch. This addresses Bug #44571 but does not fix it. rb://135 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.3.1710 committer: marko timestamp: Thu 2009-06-25 09:27:08 +0000 message: branches/zip: Replace a DBUG_ASSERT with ut_a to track down Issue #290. ------------------------------------------------------------ revno: 0.3.1709 committer: calvin timestamp: Wed 2009-06-24 12:51:08 +0000 message: branches/zip: remove relative path of header files. Suggested by Marko. ------------------------------------------------------------ revno: 0.3.1708 committer: calvin timestamp: Tue 2009-06-23 19:59:42 +0000 message: branches/zip: change the header file path. Change the header file path from ../storage/innobase/include/ to ../include/. In the planned 5.1 + plugin release, the source directory of the plugin will not be in storage/innobase. Approved by: Heikki (IM) ------------------------------------------------------------ revno: 0.3.1707 committer: pekka timestamp: Mon 2009-06-22 12:46:34 +0000 message: branches/zip: Add functions for checking the format of tablespaces for Hot Backup build (UNIV_HOTBACKUP defined). This change should not affect !UNIV_HOTBACKUP build. ------------------------------------------------------------ revno: 0.3.1706 committer: pekka timestamp: Mon 2009-06-22 12:27:55 +0000 message: branches/zip: Minor changes for Hot Backup to build correctly. (The code bracketed between #ifdef UNIV_HOTBACKUP and #endif /* UNIV_HOTBACKUP */). This change should not affect !UNIV_HOTBACKUP build. ------------------------------------------------------------ revno: 0.3.1705 committer: marko timestamp: Mon 2009-06-22 10:58:20 +0000 message: branches/zip: ha_innobase::check_if_incompatible_data(): When ROW_FORMAT=DEFAULT, do not compare to get_row_type(). Without this change, fast index creation will be disabled in recent versions of MySQL 5.1. ------------------------------------------------------------ revno: 0.3.1704 committer: marko timestamp: Mon 2009-06-22 08:31:35 +0000 message: branches/zip: buf_page_get_zip(): Fix a bogus warning about block_mutex being possibly uninitialized. ------------------------------------------------------------ revno: 0.3.1703 committer: marko timestamp: Wed 2009-06-17 12:03:45 +0000 message: branches/zip: row_merge_read_rec(): Fix a UNIV_DEBUG bug (Bug #45426) ------------------------------------------------------------ revno: 0.3.1702 committer: vasil timestamp: Wed 2009-06-17 11:56:12 +0000 message: branches/zip: Add ChangeLog entry for r5342. ------------------------------------------------------------ revno: 0.3.1701 committer: marko timestamp: Wed 2009-06-17 09:15:32 +0000 message: branches/zip: Merge revisions 5233:5341 from branches/5.1: ------------------------------------------------------------------------ r5233 | marko | 2009-06-03 15:12:44 +0300 (Wed, 03 Jun 2009) | 11 lines branches/5.1: Merge the test case from r5232 from branches/5.0: ------------------------------------------------------------------------ r5232 | marko | 2009-06-03 14:31:04 +0300 (Wed, 03 Jun 2009) | 21 lines branches/5.0: Merge r3590 from branches/5.1 in order to fix Bug #40565 (Update Query Results in "1 Row Affected" But Should Be "Zero Rows"). Also, add a test case for Bug #40565. rb://128 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------------------ r5243 | sunny | 2009-06-04 03:17:14 +0300 (Thu, 04 Jun 2009) | 14 lines branches/5.1: When the InnoDB and MySQL data dictionaries go out of sync, before the bug fix we would assert on missing autoinc columns. With this fix we allow MySQL to open the table but set the next autoinc value for the column to the MAX value. This effectively disables the next value generation. INSERTs will fail with a generic AUTOINC failure. However, the user should be able to read/dump the table, set the column values explicitly, use ALTER TABLE to set the next autoinc value and/or sync the two data dictionaries to resume normal operations. Fix Bug#44030 Error: (1500) Couldn't read the MAX(ID) autoinc value from the index (PRIMARY) rb://118 ------------------------------------------------------------------------ r5252 | sunny | 2009-06-04 10:16:24 +0300 (Thu, 04 Jun 2009) | 2 lines branches/5.1: The version of the result file checked in was broken in r5243. ------------------------------------------------------------------------ r5259 | vasil | 2009-06-05 10:29:16 +0300 (Fri, 05 Jun 2009) | 7 lines branches/5.1: Remove the word "Error" from the printout because the mysqltest suite interprets it as an error and thus the innodb-autoinc test fails. Approved by: Sunny (via IM) ------------------------------------------------------------------------ r5339 | marko | 2009-06-17 11:01:37 +0300 (Wed, 17 Jun 2009) | 2 lines branches/5.1: Add missing #include "mtr0log.h" so that the code compiles with -DUNIV_MUST_NOT_INLINE. (null merge; this had already been committed in branches/zip) ------------------------------------------------------------------------ r5340 | marko | 2009-06-17 12:11:49 +0300 (Wed, 17 Jun 2009) | 4 lines branches/5.1: row_unlock_for_mysql(): When the clustered index is unknown, refuse to unlock the record. (Bug #45357, caused by the fix of Bug #39320). rb://132 approved by Sunny Bains. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1700 committer: marko timestamp: Tue 2009-06-16 12:23:10 +0000 message: branches/zip: innodb.test: Adjust the tolerance of innodb_buffer_pool_pages_total for r5320. ------------------------------------------------------------ revno: 0.3.1699 committer: marko timestamp: Tue 2009-06-16 08:27:46 +0000 message: branches/zip: buf_page_io_query(): Remove unused function. ------------------------------------------------------------ revno: 0.3.1698 committer: vasil timestamp: Tue 2009-06-16 08:03:27 +0000 message: branches/zip: Add ChangeLog entries for r5283 and r5320. ------------------------------------------------------------ revno: 0.3.1697 committer: marko timestamp: Tue 2009-06-16 08:00:48 +0000 message: branches/zip: buf_page_get_zip(): Eliminate a buf_page_get_mutex() call. The function must switch on the block state anyway. ------------------------------------------------------------ revno: 0.3.1696 committer: marko timestamp: Tue 2009-06-16 07:08:59 +0000 message: branches/zip: buf_page_get_gen(): Reduce mutex holding time by adjusting buf_pool->n_pend_unzip while only holding buf_pool_mutex. ------------------------------------------------------------ revno: 0.3.1695 committer: inaam timestamp: Thu 2009-06-11 12:15:41 +0000 message: branches/zip rb://131 This patch changes the following defaults: max_dirty_pages_pct: default from 90 to 75. max allowed from 100 to 99 additional_mem_pool_size: default from 1 to 8 MB buffer_pool_size: default from 8 to 128 MB log_buffer_size: default from 1 to 8 MB read_io_threads/write_io_threads: default from 1 to 4 The log file sizes are untouched because of upgrade issues Reviewed by: Heikki ------------------------------------------------------------ revno: 0.3.1694 committer: marko timestamp: Thu 2009-06-11 07:40:33 +0000 message: branches/zip: Declare os_thread_id_t as unsigned long, because ulint is wrong on Win64. Pointed out by Vladislav Vaintroub . ------------------------------------------------------------ revno: 0.3.1693 committer: inaam timestamp: Tue 2009-06-09 16:46:29 +0000 message: branches/zip rb://130 Enable Group Commit functionality that was broken in 5.0 when distributed transactions were introduced. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.3.1692 committer: inaam timestamp: Mon 2009-06-08 15:18:21 +0000 message: branches/zip Non functional change: Added legal notices acknowledging percona contribution to the multiple IO helper threads patch i.e.: r5262 ------------------------------------------------------------ revno: 0.3.1691 committer: vasil timestamp: Fri 2009-06-05 15:34:11 +0000 message: branches/zip: Add ChangeLog entry for r5262. ------------------------------------------------------------ revno: 0.3.1690 committer: vasil timestamp: Fri 2009-06-05 15:26:58 +0000 message: branches/zip: Add ChangeLog entry for r5261. ------------------------------------------------------------ revno: 0.3.1689 committer: vasil timestamp: Fri 2009-06-05 15:19:37 +0000 message: branches/zip: Whitespace cleanup. ------------------------------------------------------------ revno: 0.3.1688 committer: vasil timestamp: Fri 2009-06-05 15:04:25 +0000 message: branches/zip: Enable functionality to have multiple background io helper threads. This patch is based on percona contributions. More details about this patch will be written at: https://svn.innodb.com/innobase/MultipleBackgroundThreads The patch essentially does the following: expose following knobs: innodb_read_io_threads = [1 - 64] default 1 innodb_write_io_threads = [1 - 64] default 1 deprecate innodb_file_io_threads (this parameter was relevant only on windows) Internally it allows multiple segments for read and write IO request arrays where one thread works on one segement. Submitted by: Inaam (rb://124) Approved by: Heikki (rb://124) ------------------------------------------------------------ revno: 0.3.1687 committer: vasil timestamp: Fri 2009-06-05 14:13:31 +0000 message: branches/zip: Fix Mantis Issue#244 fix bug in linear read ahead (no check on access pattern) The changes are: 1) Take into account access pattern when deciding whether or not to do linear read ahead. 2) Expose a knob innodb_read_ahead_factor = [0-64] default (8), dynamic, global to control linear read ahead behvior 3) Disable random read ahead. Keep the code for now. Submitted by: Inaam (rb://122) Approved by: Heikki (rb://122) ------------------------------------------------------------ revno: 0.3.1686 committer: marko timestamp: Thu 2009-06-04 09:37:35 +0000 message: branches/zip: Add missing Doxygen comments for page0zip. ------------------------------------------------------------ revno: 0.3.1685 committer: marko timestamp: Thu 2009-06-04 05:59:51 +0000 message: branches/zip: Replace <= in a function comment. ------------------------------------------------------------ revno: 0.3.1684 committer: marko timestamp: Thu 2009-06-04 05:58:23 +0000 message: branches/zip: Add Doxygen comments to the rest of buf0*. ------------------------------------------------------------ revno: 0.3.1683 committer: marko timestamp: Wed 2009-06-03 11:26:41 +0000 message: branches/zip: Merge revisions 5148:5233 from branches/5.1: ------------------------------------------------------------------------ r5150 | vasil | 2009-05-27 18:56:03 +0300 (Wed, 27 May 2009) | 4 lines branches/5.1: Whitespace fixup. ------------------------------------------------------------------------ r5191 | vasil | 2009-05-30 17:46:05 +0300 (Sat, 30 May 2009) | 19 lines branches/5.1: Merge a change from MySQL (this fixes the failing innodb_mysql test): ------------------------------------------------------------ revno: 1810.3894.10 committer: Sergey Glukhov branch nick: mysql-5.0-bugteam timestamp: Tue 2009-05-19 11:32:21 +0500 message: Bug#39793 Foreign keys not constructed when column has a '#' in a comment or default value Internal InnoDN FK parser does not recognize '\'' as quotation symbol. Suggested fix is to add '\'' symbol check for quotation condition (dict_strip_comments() function). modified: innobase/dict/dict0dict.c mysql-test/r/innodb_mysql.result mysql-test/t/innodb_mysql.test ------------------------------------------------------------------------ r5233 | marko | 2009-06-03 15:12:44 +0300 (Wed, 03 Jun 2009) | 11 lines branches/5.1: Merge the test case from r5232 from branches/5.0: ------------------------------------------------------------------------ r5232 | marko | 2009-06-03 14:31:04 +0300 (Wed, 03 Jun 2009) | 21 lines branches/5.0: Merge r3590 from branches/5.1 in order to fix Bug #40565 (Update Query Results in "1 Row Affected" But Should Be "Zero Rows"). Also, add a test case for Bug #40565. rb://128 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1682 committer: marko timestamp: Mon 2009-06-01 09:35:25 +0000 message: branches/zip: Clean up some comments. Make the rec parameter of mlog_open_and_write_index() const. ------------------------------------------------------------ revno: 0.3.1681 committer: marko timestamp: Thu 2009-05-28 10:14:02 +0000 message: branches/zip: Correct a debug assertion that was added in r5125. ------------------------------------------------------------ revno: 0.3.1680 committer: marko timestamp: Thu 2009-05-28 06:21:55 +0000 message: branches/zip: mtr0mtr.h: Add Doxygen comments for the redo log entry types. ------------------------------------------------------------ revno: 0.3.1679 committer: marko timestamp: Wed 2009-05-27 10:46:42 +0000 message: branches/zip: Merge revisions 4994:5148 from branches/5.1: ------------------------------------------------------------------------ r5126 | vasil | 2009-05-26 16:57:12 +0300 (Tue, 26 May 2009) | 9 lines branches/5.1: Preparation for the fix of Bug#45097 Hang during recovery, redo logs for doublewrite buffer pages Non-functional change: move FSP_* macros from fsp0fsp.h to a new file fsp0types.h. This is needed in order to be able to use FSP_EXTENT_SIZE in mtr0log.ic. ------------------------------------------------------------------------ r5127 | vasil | 2009-05-26 17:05:43 +0300 (Tue, 26 May 2009) | 9 lines branches/5.1: Preparation for the fix of Bug#45097 Hang during recovery, redo logs for doublewrite buffer pages Do not include unnecessary headers mtr0log.h and fut0lst.h in trx0sys.h and include fsp0fsp.h just before it is needed. This is needed in order to be able to use TRX_SYS_SPACE in mtr0log.ic. ------------------------------------------------------------------------ r5128 | vasil | 2009-05-26 17:26:37 +0300 (Tue, 26 May 2009) | 7 lines branches/5.1: Fix Bug#45097 Hang during recovery, redo logs for doublewrite buffer pages Do not write redo log for the pages in the doublewrite buffer. Also, do not make a dummy change to the page because this is not needed. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1678 committer: marko timestamp: Wed 2009-05-27 09:55:14 +0000 message: branches/zip: ibuf0ibuf.c: Improve a comment. ------------------------------------------------------------ revno: 0.3.1677 committer: marko timestamp: Wed 2009-05-27 06:57:25 +0000 message: branches/zip: buf0buf.h, Doxyfile: Fix the Doxygen translation. @defgroup is for source code modules, not for field groups. Tell Doxygen to expand the UT_LIST declarations. ------------------------------------------------------------ revno: 0.3.1676 committer: marko timestamp: Wed 2009-05-27 06:01:40 +0000 message: branches/zip: Add Doxyfile. ------------------------------------------------------------ revno: 0.3.1675 committer: marko timestamp: Wed 2009-05-27 05:08:43 +0000 message: branches/zip: Add some Doxygen @return comments. ------------------------------------------------------------ revno: 0.3.1674 committer: marko timestamp: Tue 2009-05-26 12:28:49 +0000 message: branches/zip: Add some Doxygen comments for many structs, typedefs, #defines and global variables. Many are still missing. ------------------------------------------------------------ revno: 0.3.1673 committer: marko timestamp: Mon 2009-05-25 20:32:35 +0000 message: branches/zip: lexyy.c: Remove the inadvertently added @file directive. There is nothing for Doxygen to see in this file, move along. ------------------------------------------------------------ revno: 0.3.1672 committer: marko timestamp: Mon 2009-05-25 12:09:24 +0000 message: branches/zip: Add some Doxygen comments, mainly to structs, typedefs, macros and global variables. Many more to go. ------------------------------------------------------------ revno: 0.3.1671 committer: marko timestamp: Mon 2009-05-25 10:52:20 +0000 message: branches/zip: Enclose some #error checks inside #ifndef DOXYGEN to prevent bogus Doxygen errors. ------------------------------------------------------------ revno: 0.3.1670 committer: marko timestamp: Mon 2009-05-25 10:39:07 +0000 message: branches/zip: Revert ut0auxconf_* to r5102, that is, make Doxygen ignore these test programs. ------------------------------------------------------------ revno: 0.3.1669 committer: marko timestamp: Mon 2009-05-25 09:52:29 +0000 message: branches/zip: Add @file comments, and convert decorative /********************************* comments to Doxygen /** style like this: /*****************************//** This conversion was performed by the following command: perl -i -e 'while(){if (m|^/\*{30}\**$|) { s|\*{4}$|//**| if ++$com>1; $_ .= "\@file $ARGV\n" if $com==2} print; if(eof){$.=0;undef $com}}' */*[ch] include/univ.i ------------------------------------------------------------ revno: 0.3.1668 committer: marko timestamp: Mon 2009-05-25 09:47:14 +0000 message: branches/zip: Add missing file comments. ------------------------------------------------------------ revno: 0.3.1667 committer: marko timestamp: Mon 2009-05-25 08:42:47 +0000 message: branches/zip: Introduce the macro TEMP_INDEX_PREFIX_STR. This is to avoid triggering an error in Doxygen. ------------------------------------------------------------ revno: 0.3.1666 committer: marko timestamp: Mon 2009-05-25 08:09:45 +0000 message: branches/zip: Split some long lines that were introduced in r5091. ------------------------------------------------------------ revno: 0.3.1665 committer: marko timestamp: Mon 2009-05-25 05:54:17 +0000 message: branches/zip: Adjust some function comments after r5091. ------------------------------------------------------------ revno: 0.3.1664 committer: marko timestamp: Mon 2009-05-25 05:30:14 +0000 message: branches/zip: Convert the function comments to Doxygen format. This patch was created by running the following commands: for i in */*[ch]; do doxygenify.pl $i; done perl -i -pe 's#\*{3} \*/$#****/#' */*[ch] where doxygenify.pl is https://svn.innodb.com/svn/misc/trunk/tools/doxygenify.pl r510 Verified the consistency as follows: (0) not too many /* in: */ or /* out: */ comments left in the code: grep -l '/\*\s*\(in\|out\)[,:/]' */*[ch] (1) no difference when ignoring blank lines, after stripping all C90-style /* comments */, including multi-line ones, before and after applying this patch: perl -i -e 'undef $/;while(){s#/\*(.*?)\*/##gs;print}' */*[ch] diff -I'^\s*$' --exclude .svn -ru TREE1 TREE2 (2) after stripping @return comments and !<, generated a diff and omitted the hunks where /* out: */ function return comments were removed: perl -i -e'undef $/;while(){s#!<##g;s#\n\@return\t.*?\*/# \*/#gs;print}'\ */*[ch] svn diff| perl -e 'undef $/;$_=<>;s#\n-\s*/\* out[:,]([^\n]*?)(\n-[^\n]*?)*\*/##gs;print' Some unintended changes were left. These will be removed in a subsequent patch. ------------------------------------------------------------ revno: 0.3.1663 committer: vasil timestamp: Thu 2009-05-21 04:27:00 +0000 message: branches/zip: Whitespace fixup. ------------------------------------------------------------ revno: 0.3.1662 committer: marko timestamp: Wed 2009-05-20 20:51:23 +0000 message: branches/zip: Fix some function comments. ------------------------------------------------------------ revno: 0.3.1661 committer: marko timestamp: Wed 2009-05-20 19:17:43 +0000 message: branches/zip: ha_innodb.cc: Add some missing function comments. ------------------------------------------------------------ revno: 0.3.1660 committer: marko timestamp: Wed 2009-05-20 12:17:26 +0000 message: branches/zip: innobase_end(), innobase_flush_logs(): Document the function parameters. ------------------------------------------------------------ revno: 0.3.1659 committer: marko timestamp: Wed 2009-05-20 12:10:17 +0000 message: branches/zip: ut_dulint_sort(): Write proper comments. ------------------------------------------------------------ revno: 0.3.1658 committer: marko timestamp: Wed 2009-05-20 10:45:03 +0000 message: branches/zip: ha_innodb.cc: Clean up some comments. ------------------------------------------------------------ revno: 0.3.1657 committer: marko timestamp: Wed 2009-05-20 10:07:49 +0000 message: branches/zip: innodb_export_status(): Remove the return(0), now that the function was declared void in r5060. ------------------------------------------------------------ revno: 0.3.1656 committer: marko timestamp: Wed 2009-05-20 10:06:59 +0000 message: branches/zip: Clean up some comments. ------------------------------------------------------------ revno: 0.3.1655 committer: marko timestamp: Wed 2009-05-20 09:06:03 +0000 message: branches/zip: Clean up some function comments. ------------------------------------------------------------ revno: 0.3.1654 committer: marko timestamp: Wed 2009-05-20 08:45:17 +0000 message: branches/zip: Remove bogus in: comments from struct members. ------------------------------------------------------------ revno: 0.3.1653 committer: marko timestamp: Wed 2009-05-20 08:35:33 +0000 message: branches/zip: page_cur_lcg_prng(): Add missing parameter list. ------------------------------------------------------------ revno: 0.3.1652 committer: marko timestamp: Wed 2009-05-20 08:32:37 +0000 message: branches/zip: ib_vector_is_empty(): Fix the function comment. ------------------------------------------------------------ revno: 0.3.1651 committer: marko timestamp: Wed 2009-05-20 08:28:44 +0000 message: branches/zip: inno_bcmp(): Remove this memcmp replacement. srv0start.c does not (any longer) call memcmp. srv_parse_megabytes(): Add a function comment. ------------------------------------------------------------ revno: 0.3.1650 committer: marko timestamp: Wed 2009-05-20 08:26:49 +0000 message: branches/zip: ut_snprintf(): Fix the function comments. ------------------------------------------------------------ revno: 0.3.1649 committer: marko timestamp: Wed 2009-05-20 08:19:40 +0000 message: branches/zip: Fix some function comments. ------------------------------------------------------------ revno: 0.3.1648 committer: marko timestamp: Wed 2009-05-20 07:37:08 +0000 message: branches/zip: fil0fil.c: Correct some comments. ------------------------------------------------------------ revno: 0.3.1647 committer: marko timestamp: Wed 2009-05-20 07:11:58 +0000 message: branches/zip: mlog_parse_index(): Correct a parameter comment and add a const qualifier that was missing. ------------------------------------------------------------ revno: 0.3.1646 committer: marko timestamp: Wed 2009-05-20 04:46:01 +0000 message: branches/zip: sync0rw.ic: Remove an extra ; that was added in r5041. ------------------------------------------------------------ revno: 0.3.1645 committer: marko timestamp: Wed 2009-05-20 04:42:12 +0000 message: branches/zip: Add missing function comments. ------------------------------------------------------------ revno: 0.3.1644 committer: marko timestamp: Tue 2009-05-19 19:13:12 +0000 message: branches/zip: ib_wqueue_wait(): Add decorative comment. ------------------------------------------------------------ revno: 0.3.1643 committer: marko timestamp: Tue 2009-05-19 18:59:07 +0000 message: branches/zip: Write PAGE_MAX_TRX_ID to the redo log. Otherwise, transactions that are started before the rollback of incomplete transactions has finished may have an inconsistent view of the secondary indexes. dict_index_is_sec_or_ibuf(): Auxiliary function for controlling updates and checks of PAGE_MAX_TRX_ID: check whether an index is a secondary index or the insert buffer tree. page_set_max_trx_id(), page_update_max_trx_id(), lock_rec_insert_check_and_lock(), lock_sec_rec_modify_check_and_lock(), btr_cur_ins_lock_and_undo(), btr_cur_upd_lock_and_undo(): Add the parameter mtr. page_set_max_trx_id(): Allow mtr to be NULL. When mtr==NULL, do not attempt to write to the redo log. This only occurs when creating a page or reorganizing a compressed page. In these cases, the PAGE_MAX_TRX_ID will be set correctly during the application of redo log records, even though there is no explicit log record about it. btr_discard_only_page_on_level(): Preserve PAGE_MAX_TRX_ID. This function should be unreachable, though. btr_cur_pessimistic_update(): Update PAGE_MAX_TRX_ID. Add some assertions for checking that PAGE_MAX_TRX_ID is set on all secondary index leaf pages. rb://115 tested by Michael, fixes Issue #211 ------------------------------------------------------------ revno: 0.3.1642 committer: marko timestamp: Tue 2009-05-19 09:08:16 +0000 message: branches/zip: Fix a typo that was introduced in r5036. ------------------------------------------------------------ revno: 0.3.1641 committer: marko timestamp: Tue 2009-05-19 09:05:50 +0000 message: branches/zip: Add proper comments to some file page accessors. ------------------------------------------------------------ revno: 0.3.1640 committer: marko timestamp: Tue 2009-05-19 09:04:58 +0000 message: branches/zip: ut0auxconf_have_solaris_atomics.c: Get the function declarations from . Call the functions with proper arguments. ------------------------------------------------------------ revno: 0.3.1639 committer: marko timestamp: Tue 2009-05-19 08:41:32 +0000 message: branches/zip: row_update_prebuilt_trx(): Correct bogus comment. ------------------------------------------------------------ revno: 0.3.1638 committer: marko timestamp: Tue 2009-05-19 07:00:51 +0000 message: branches/zip: Remove bogus out: comments of functions returning void. ------------------------------------------------------------ revno: 0.3.1637 committer: marko timestamp: Tue 2009-05-19 06:30:02 +0000 message: branches/zip: Add missing out: comments to nullary functions. ------------------------------------------------------------ revno: 0.3.1636 committer: marko timestamp: Tue 2009-05-19 06:04:04 +0000 message: branches/zip: os_thread_get_curr_id(), os_thread_get_curr(): Add missing out: comments. ------------------------------------------------------------ revno: 0.3.1635 committer: marko timestamp: Mon 2009-05-18 12:40:07 +0000 message: branches/zip: When executing an optimistic update by delete-and-insert, correctly estimate the free space on the compressed page by page_zip_available(..., create=TRUE). This was reported as Issue #231. btr_cur_update_alloc_zip(): Add the parameter ibool create and pass it to page_zip_available(). The parameter was previously passed as 0. btr_cur_optimistic_update(): Pass create=TRUE to btr_cur_update_alloc_zip(). rb://120 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1634 committer: marko timestamp: Mon 2009-05-18 12:36:10 +0000 message: branches/zip: Add some missing out: comments to buf0buf.h, buf0buf.c. ------------------------------------------------------------ revno: 0.3.1633 committer: marko timestamp: Mon 2009-05-18 12:29:51 +0000 message: branches/zip: buf_validate(): Add missing out: comment. ------------------------------------------------------------ revno: 0.3.1632 committer: vasil timestamp: Thu 2009-05-14 16:13:41 +0000 message: branches/zip: Add ChangeLog entry for r4994. ------------------------------------------------------------ revno: 0.3.1631 committer: marko timestamp: Thu 2009-05-14 11:31:43 +0000 message: branches/zip: Merge revisions 4976:4994 from branches/5.1: ------------------------------------------------------------------------ r4994 | marko | 2009-05-14 15:04:55 +0300 (Thu, 14 May 2009) | 18 lines branches/5.1: Prevent a race condition in innobase_commit() by ensuring that innodb_commit_concurrency>0 remains constant at run time. (Bug #42101) srv_commit_concurrency: Make this a static variable in ha_innodb.cc. innobase_commit_concurrency_validate(): Check that innodb_commit_concurrency is not changed from or to 0 at run time. This is needed, because innobase_commit() assumes that innodb_commit_concurrency>0 remains constant. Without this limitation, the checks for innodb_commit_concurrency>0 in innobase_commit() should be removed and that function would have to acquire and release commit_cond_m at least twice per invocation. Normally, innodb_commit_concurrency=0, and introducing the mutex operations would mean significant overhead. innodb_bug42101.test, innodb_bug42101-nonzero.test: Test cases. rb://123 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1630 committer: vasil timestamp: Wed 2009-05-13 12:21:55 +0000 message: branches/zip: Add ChangeLog entry for r4977. ------------------------------------------------------------ revno: 0.3.1629 committer: marko timestamp: Wed 2009-05-13 11:49:38 +0000 message: branches/zip: Merge revisions 4746:4976 from branches/5.1: ------------------------------------------------------------------------ r4976 | marko | 2009-05-13 15:44:54 +0300 (Wed, 13 May 2009) | 6 lines branches/5.1: Display DB_ROLL_PTR in the COLUMNS section of the innodb_table_monitor output. It was accidentally omitted due to an off-by-one loop condition. (Bug #44320) rb://116 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1628 committer: marko timestamp: Wed 2009-04-29 19:23:27 +0000 message: branches/zip: Distinguish temporary tables in MLOG_FILE_CREATE. This addresses Mantis Issue #23 in InnoDB Hot Backup and some of MySQL Bug #41609. In MLOG_FILE_CREATE, we need to distinguish temporary tables, so that InnoDB Hot Backup can work correctly. It turns out that we can do this easily, by using a bit of the previously unused parameter for page number. (The page number parameter of MLOG_FILE_CREATE has been written as 0 ever since MySQL 4.1, which introduced MLOG_FILE_CREATE.) MLOG_FILE_FLAG_TEMP: A flag for indicating a temporary table in the page number parameter of MLOG_FILE_ operations. fil_op_write_log(): Add the parameter log_flags. fil_op_log_parse_or_replay(): Add the parameter log_flags. Do not replay MLOG_FILE_CREATE when MLOG_FILE_FLAG_TEMP is set in log_flags. This only affects ibbackup --apply-log. InnoDB itself never replays file operations. rb://117 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1627 committer: marko timestamp: Wed 2009-04-29 07:51:25 +0000 message: branches/zip: btr_cur_optimistic_insert(): Remove a redundant condition. The insert buffer tree is a clustered index. ------------------------------------------------------------ revno: 0.3.1626 committer: marko timestamp: Mon 2009-04-27 09:40:20 +0000 message: branches/zip: row_scan_and_check_index(): Add some comments on prebuilt->index_usable, as suggested by Michael. ------------------------------------------------------------ revno: 0.3.1625 committer: marko timestamp: Thu 2009-04-23 11:15:07 +0000 message: branches/zip: Correct a misleading comment. PAGE_MAX_TRX_ID will be updated in ibuf_insert_low() and updated from the insert buffer tree page to the secondary index tree page during the insert buffer merge. ------------------------------------------------------------ revno: 0.3.1624 committer: marko timestamp: Thu 2009-04-23 06:40:34 +0000 message: branches/zip: row_scan_and_check_index(): Check row_merge_is_index_usable() earlier, to make the logic clearer. ------------------------------------------------------------ revno: 0.3.1623 committer: marko timestamp: Thu 2009-04-23 06:37:40 +0000 message: branches/zip: row_scan_and_check_index(): Improve the diagnostics, by reporting errors from row_search_for_mysql() in the error log. The errors will still be ignored by CHECK TABLE. This is somewhat related to Issue #211. ------------------------------------------------------------ revno: 0.3.1622 committer: marko timestamp: Thu 2009-04-23 06:22:06 +0000 message: branches/zip: ChangeLog: Add the missing include/ to two files. ------------------------------------------------------------ revno: 0.3.1621 committer: marko timestamp: Thu 2009-04-23 06:21:07 +0000 message: branches/zip: ChangeLog: Document r4893. ------------------------------------------------------------ revno: 0.3.1620 committer: marko timestamp: Thu 2009-04-23 05:32:36 +0000 message: branches/zip: Introduce the logical type names trx_id_t, roll_ptr_t, and undo_no_t. Each type is still defined as dulint. This is an initial step towards replacing dulint with a 64-bit data type. Because modern compilers have no trouble supporting 64-bit arithmetics even on 32-bit targets, the dulint struct is a relic that should go. The last remaining major use of dulint is dictionary IDs (table, index, and row ids). rb://114 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.1619 committer: marko timestamp: Mon 2009-04-20 12:11:38 +0000 message: branches/zip: Cosmetic fixes. row_unlock_for_mysql(): Add a const qualifier to read-only rec_t*. Use dict_index_is_clust(). CMakeLists.txt: svn propset svn:eol-style native. ------------------------------------------------------------ revno: 0.3.1618 committer: vasil timestamp: Fri 2009-04-17 22:40:47 +0000 message: branches/zip: Add aux config programs to emulate the newly added checks in plug.in (from r4678). ------------------------------------------------------------ revno: 0.3.1617 committer: vasil timestamp: Fri 2009-04-17 22:22:33 +0000 message: branches/zip: Add comment and copyright notice to the aux config program. ------------------------------------------------------------ revno: 0.3.1616 committer: vasil timestamp: Fri 2009-04-17 22:19:03 +0000 message: branches/zip: Rename the aux config program and give it a more specific name because more are coming. ------------------------------------------------------------ revno: 0.3.1615 committer: vasil timestamp: Fri 2009-04-17 21:31:34 +0000 message: branches/zip: Silence a compiler warning. ------------------------------------------------------------ revno: 0.3.1614 committer: vasil timestamp: Fri 2009-04-17 21:30:37 +0000 message: branches/zip: Include the needed header for memset(). ------------------------------------------------------------ revno: 0.3.1613 committer: vasil timestamp: Fri 2009-04-17 21:29:16 +0000 message: branches/zip: Silence warning about unused variables. ------------------------------------------------------------ revno: 0.3.1612 committer: vasil timestamp: Fri 2009-04-17 20:58:08 +0000 message: branches/zip: Add ChangeLog entry for t4748. ------------------------------------------------------------ revno: 0.3.1611 committer: vasil timestamp: Fri 2009-04-17 20:50:09 +0000 message: branches/zip: Merge revisions 4710:4746 from branches/5.1: ------------------------------------------------------------------------ r4746 | vasil | 2009-04-18 00:32:08 +0300 (Sat, 18 Apr 2009) | 110 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/pars0pars.h branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2728.10.2 committer: Ignacio Galarza branch nick: mysql-5.1-bugteam-bug29125 timestamp: Fri 2009-02-13 11:41:47 -0500 message: Bug#29125 Windows Server X64: so many compiler warnings - Remove bothersome warning messages. This change focuses on the warnings that are covered by the ignore file: support-files/compiler_warnings.supp. - Strings are guaranteed to be max uint in length modified: client/mysql_upgrade.c client/mysqladmin.cc client/mysqlbinlog.cc client/mysqlcheck.c client/mysqldump.c client/mysqlslap.c client/mysqltest.cc client/sql_string.cc extra/comp_err.c extra/yassl/src/buffer.cpp extra/yassl/taocrypt/include/block.hpp extra/yassl/taocrypt/src/algebra.cpp extra/yassl/taocrypt/src/asn.cpp include/config-win.h libmysql/libmysql.c mysys/array.c mysys/base64.c mysys/charset.c mysys/checksum.c mysys/default.c mysys/default_modify.c mysys/hash.c mysys/mf_keycache.c mysys/mf_tempdir.c mysys/my_append.c mysys/my_compress.c mysys/my_conio.c mysys/my_copy.c mysys/my_getwd.c mysys/my_pread.c mysys/my_quick.c mysys/my_read.c mysys/safemalloc.c mysys/string.c server-tools/instance-manager/buffer.cc server-tools/instance-manager/instance.cc server-tools/instance-manager/options.cc server-tools/instance-manager/parse.h sql-common/client.c sql-common/my_user.c sql/event_data_objects.cc sql/event_parse_data.cc sql/events.cc sql/gen_lex_hash.cc sql/item.h sql/item_func.cc sql/item_strfunc.cc sql/item_timefunc.cc sql/lock.cc sql/log_event.cc sql/log_event.h sql/log_event_old.cc sql/net_serv.cc sql/sp_head.h sql/spatial.h sql/sql_class.h sql/sql_connect.cc sql/sql_crypt.cc sql/sql_error.cc sql/sql_insert.cc sql/sql_lex.cc sql/sql_lex.h sql/sql_load.cc sql/sql_prepare.cc sql/sql_profile.cc sql/sql_repl.cc sql/sql_servers.cc sql/sql_string.cc sql/sql_table.cc sql/sql_trigger.cc sql/sql_udf.cc sql/sql_view.cc sql/udf_example.c sql/uniques.cc storage/archive/azio.c storage/archive/azlib.h storage/csv/ha_tina.cc storage/csv/ha_tina.h storage/csv/transparent_file.h storage/federated/ha_federated.cc storage/federated/ha_federated.h storage/heap/hp_write.c storage/innobase/handler/ha_innodb.cc storage/innobase/include/pars0pars.h storage/myisam/ha_myisam.cc storage/myisam/mi_check.c storage/myisam/mi_packrec.c storage/myisam/mi_search.c storage/myisam/rt_index.c storage/myisammrg/ha_myisammrg.cc strings/ctype.c strings/my_vsnprintf.c tests/bug25714.c tests/mysql_client_test.c ------------------------------------------------------------ revno: 0.3.1610 committer: calvin timestamp: Fri 2009-04-17 04:13:20 +0000 message: branches/zip: minor changes to CMakeLists.txt All are non-functional changes: - should check for long (not int), spotted by Sunny - comment out the project definition, avoiding to generate another .sln file. ------------------------------------------------------------ revno: 0.3.1609 committer: marko timestamp: Thu 2009-04-16 12:02:27 +0000 message: branches/zip: univ.i: Define REFMAN as the base URL of the MySQL Reference Manual and use it in every string. This fixes Issue #221. ------------------------------------------------------------ revno: 0.3.1608 committer: marko timestamp: Thu 2009-04-16 06:32:09 +0000 message: branches/zip: row_scan_and_check_index(): Initialize prebuilt->index_usable. This should have been done in r4631. Spotted by Michael. ------------------------------------------------------------ revno: 0.3.1607 committer: vasil timestamp: Thu 2009-04-16 05:44:48 +0000 message: branches/zip: Add ChangeLog entry for r4717. ------------------------------------------------------------ revno: 0.3.1606 committer: calvin timestamp: Wed 2009-04-15 21:22:35 +0000 message: branches/zip: Use the Windows Interlocked functions for atomic memory access Mapping the atomic operations to Windows Interlocked functions: os_compare_and_swap_* to InterlockedCompareExchange(64) os_atomic_increment_* to InterlockedExchangeAdd(64) os_atomic_test_and_set_byte to InterlockedExchange In this patch, the legacy code under UNIV_CAN_USE_X86_ASSEMBLER is removed all together, and add HAVE_WINDOWS_ATOMICS and INNODB_RW_LOCKS_USE_ATOMICS to CMakeLists.txt This is to address mantis issue#194. rb://113 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1605 committer: vasil timestamp: Wed 2009-04-15 17:36:06 +0000 message: branches/zip: Add ChangeLog entry for r4543. ------------------------------------------------------------ revno: 0.3.1604 committer: vasil timestamp: Wed 2009-04-15 08:39:04 +0000 message: branches/zip: Whitespace cleanup in ChangeLog ------------------------------------------------------------ revno: 0.3.1603 committer: vasil timestamp: Wed 2009-04-15 08:36:57 +0000 message: branches/zip: Fix typo in the ChangeLog ------------------------------------------------------------ revno: 0.3.1602 committer: vasil timestamp: Wed 2009-04-15 08:36:16 +0000 message: branches/zip: Add missing ChangeLog entries ------------------------------------------------------------ revno: 0.3.1601 committer: vasil timestamp: Wed 2009-04-15 08:26:32 +0000 message: branches/zip: Merge revisions 4481:4710 from branches/5.1: (resolving conflict in r4574, r4575 and skipping r4699 and r4705 because analogous changes to r4699 and r4705 were already made to branches/zip) ------------------------------------------------------------------------ r4573 | vasil | 2009-03-30 14:17:13 +0300 (Mon, 30 Mar 2009) | 4 lines Changed paths: M /branches/5.1/mysql-test/innodb.test branches/5.1: Fix email address from dev@innodb.com to innodb_dev_ww@oracle.com ------------------------------------------------------------------------ r4574 | vasil | 2009-03-30 14:27:08 +0300 (Mon, 30 Mar 2009) | 38 lines Changed paths: M /branches/5.1/Makefile.am M /branches/5.1/mysql-test/innodb.test branches/5.1: Restore the state of INNODB_THREAD_CONCURRENCY to silence this warning: TEST RESULT TIME (ms) ------------------------------------------------------------ worker[1] Using MTR_BUILD_THREAD 250, with reserved ports 12500..12509 main.innodb [ pass ] 8803 MTR's internal check of the test case 'main.innodb' failed. This means that the test case does not preserve the state that existed before the test case was executed. Most likely the test case did not do a proper clean-up. This is the diff of the states of the servers before and after the test case was executed: mysqltest: Logging to '/tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.log'. mysqltest: Results saved in '/tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result'. mysqltest: Connecting to server localhost:12500 (socket /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/mysqld.1.sock) as 'root', connection 'default', attempt 0 ... mysqltest: ... Connected. mysqltest: Start processing test commands from './include/check-testcase.test' ... mysqltest: ... Done processing test commands. --- /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result 2009-03-30 14:12:31.000000000 +0300 +++ /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.reject 2009-03-30 14:12:41.000000000 +0300 @@ -99,7 +99,7 @@ INNODB_SUPPORT_XA ON INNODB_SYNC_SPIN_LOOPS 20 INNODB_TABLE_LOCKS ON -INNODB_THREAD_CONCURRENCY 8 +INNODB_THREAD_CONCURRENCY 16 INNODB_THREAD_SLEEP_DELAY 10000 INSERT_ID 0 INTERACTIVE_TIMEOUT 28800 mysqltest: Result content mismatch not ok ------------------------------------------------------------------------ r4575 | vasil | 2009-03-30 15:55:31 +0300 (Mon, 30 Mar 2009) | 8 lines Changed paths: M /branches/5.1/mysql-test/innodb.result M /branches/5.1/mysql-test/innodb.test branches/5.1: Fix Bug#43309 Test main.innodb can't be run twice Make the innodb mysql-test more flexible by inspecting how much a variable of interest has changed since the start of the test. Do not assume the variables have zero values at the start of the test. ------------------------------------------------------------------------ r4576 | vasil | 2009-03-30 16:25:10 +0300 (Mon, 30 Mar 2009) | 4 lines Changed paths: M /branches/5.1/Makefile.am branches/5.1: Revert a change to Makefile.am that I committed accidentally in c4574. ------------------------------------------------------------------------ r4659 | vasil | 2009-04-06 15:34:51 +0300 (Mon, 06 Apr 2009) | 6 lines Changed paths: M /branches/5.1/mysql-test/innodb.test branches/5.1: Followup to r4575 and the fix of Bug#43309 Test main.innodb can't be run twice: Add an explanatory comment, as suggested by Patrick Crews in the bug report. ------------------------------------------------------------------------ r4699 | vasil | 2009-04-09 14:01:52 +0300 (Thu, 09 Apr 2009) | 15 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/srv0srv.h M /branches/5.1/page/page0cur.c M /branches/5.1/srv/srv0srv.c branches/5.1: Fix Bug#43660 SHOW INDEXES/ANALYZE does NOT update cardinality for indexes of InnoDB table by replacing the PRNG that is used to pick random pages with a better one. This is based on r4670 but also adds a new configuration option and enables the fix only if this option is changed. Please skip the present revision when merging. Approved by: Heikki (via email) ------------------------------------------------------------------------ r4705 | vasil | 2009-04-14 14:30:13 +0300 (Tue, 14 Apr 2009) | 5 lines Changed paths: M /branches/5.1/page/page0cur.c branches/5.1: When using the random function, first take the modulus by the number of pages and then typecast to ulint. ------------------------------------------------------------------------ r4710 | vasil | 2009-04-15 11:55:18 +0300 (Wed, 15 Apr 2009) | 25 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Merge a change from MySQL (looks like this is against 5.0 but they later merged it to 5.1): ------------------------------------------------------------ revno: 1810.3846.1 committer: Alexey Botchkov branch nick: 31435 timestamp: Tue 2008-11-11 14:42:32 +0400 message: Bug#31435 ha_innodb.cc:3983: ulint convert_search_mode_to_innobase(ha_rkey_function): Asse I think we don't need to issue an error statement in the convert_search_mode_to_innobase(). Returning the PAGE_CUR_UNSUPP value is enough as allows to handle this case depending on the requirements. per-file comments: sql/ha_innodb.cc Bug#31435 ha_innodb.cc:3983: ulint convert_search_mode_to_innobase(ha_rkey_function): Asse no error issued in convert_search_mode_to_innobase. ha_innobase::records_in_range() returns HA_POS_ERROR if search mode isn't supported. modified: sql/ha_innodb.cc ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1600 committer: calvin timestamp: Tue 2009-04-14 13:47:31 +0000 message: branches/zip: remove statically linked libraries from mysql To make zlib and strings dynamically linked; mysqld will export additional functions required by InnoDB. Since the symbols will be resolved dynamically during runtime, wdl_load_mapfile() is no longer able to make any function calls to ones in mysqld. As the result, strtoull() (from strings.lib) is replaced with _strtoui64(). rb://111 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1599 committer: vasil timestamp: Tue 2009-04-14 10:32:11 +0000 message: branches/zip: When using the random function, first take the modulus by the number of pages and then typecast to ulint. ------------------------------------------------------------ revno: 0.3.1598 committer: calvin timestamp: Mon 2009-04-13 14:20:45 +0000 message: branches/zip: new CMakeLists.txt CMakeLists.txt is completely rewritten with enhancements: - Print out useful information, such as system name, directory, generator used, win64, Microsoft compiler, etc. - Remove one workaround for mysqld.lib location. User does not need to specify a build type when invoking MSVC generator. ------------------------------------------------------------ revno: 0.3.1597 committer: calvin timestamp: Mon 2009-04-13 14:16:44 +0000 message: branches/zip: delete the original CMakeLists.txt A new version will be committed, suggested by Ken. ------------------------------------------------------------ revno: 0.3.1596 committer: calvin timestamp: Fri 2009-04-10 20:37:10 +0000 message: branches/zip: Rewrite CMakeLists.txt CMakeLists.txt is completely rewritten: - To replace the one written by mysql - Print out some useful information, such as system name, directory, generator used, win64, Microsoft compiler, etc. - Remove one workaround for mysqld.lib location. User does not need to specify a build type ------------------------------------------------------------ revno: 0.3.1595 committer: marko timestamp: Wed 2009-04-08 10:24:49 +0000 message: branches/zip: Hide unnecessarily visible globals. dict_ind_redundant, dict_ind_compact: Declare these UNIV_INTERN. innodb_hton_ptr: Declare static. We do not attempt to access the built-in InnoDB any more. trx_roll_savepoints_free(): Declare UNIV_INTERN. ------------------------------------------------------------ revno: 0.3.1594 committer: vasil timestamp: Wed 2009-04-08 09:11:15 +0000 message: branches/zip: Add ChangeLog entry for r4678. ------------------------------------------------------------ revno: 0.3.1593 committer: vasil timestamp: Wed 2009-04-08 09:08:59 +0000 message: branches/zip: Whitespace fixup in the ChangeLog ------------------------------------------------------------ revno: 0.3.1592 committer: inaam timestamp: Tue 2009-04-07 14:45:37 +0000 message: branches/zip Enable atomics on solaris (using the libc functions as defined in atomic.h) if GCC atomic builtins are not present. There still remains some work to be done (by Vasil?). This patch makes changes to plug.in to check pthread_t size and presence of atomic functions when running on solaris. The same has to become a part of the generated Makefile.in when we bake our source. Reviewed by: Heikki rb://106 ------------------------------------------------------------ revno: 0.3.1591 committer: marko timestamp: Tue 2009-04-07 12:19:31 +0000 message: branches/zip: Adjust r4673 as in the merge to branches/6.0 -r4676. ------------------------------------------------------------ revno: 0.3.1590 committer: marko timestamp: Tue 2009-04-07 11:45:28 +0000 message: branches/zip: Allow in-place updates of UTF-8 CHAR columns from or to NULL in ROW_FORMAT=REDUNDANT. (Bug #44032) rb://107 approved by Heikki Tuuri. ------------------------------------------------------------ revno: 0.3.1589 committer: vasil timestamp: Tue 2009-04-07 05:37:31 +0000 message: branches/zip: Add ChangeLog entry for r4670. ------------------------------------------------------------ revno: 0.3.1588 committer: vasil timestamp: Tue 2009-04-07 05:35:23 +0000 message: branches/zip: Fix Bug#43660 SHOW INDEXES/ANALYZE does NOT update cardinality for indexes of InnoDB table by replacing the pseudo random number generator with a better one (LCG). This also fixes Mantis Issue#212. Approved by: Heikki (rb://110) ------------------------------------------------------------ revno: 0.3.1587 committer: marko timestamp: Mon 2009-04-06 12:17:30 +0000 message: branches/zip: Initialize innodb_change_buffering from the configuration file. So far, the parameter innodb_change_buffering was only settable by the SET GLOBAL command. Any change specified in the configuration file or on the mysqld command line was ignored. This was reported as Issue #217. rb://109 approved by Heikki Tuuri. ------------------------------------------------------------ revno: 0.3.1586 committer: marko timestamp: Mon 2009-04-06 11:13:45 +0000 message: branches/zip: Remove the bogus failure reported in Issue #219. ------------------------------------------------------------ revno: 0.3.1585 committer: vasil timestamp: Mon 2009-04-06 06:07:26 +0000 message: branches/zip: Fix formatting in ChangeLog to be consistent. ------------------------------------------------------------ revno: 0.3.1584 committer: vasil timestamp: Mon 2009-04-06 06:05:25 +0000 message: branches/zip: Add changelog entry for c4630. ------------------------------------------------------------ revno: 0.3.1583 committer: marko timestamp: Thu 2009-04-02 12:23:12 +0000 message: branches/zip: Refuse to use newly created indexes that may lack history. This addresses Mantis issue #116. dict_index_t: Enable the storage of trx_id. row_prebuilt_t: Make many fields bit-fields to reduce the memory footprint. Add index_usable. ha_innobase::change_active_index(): Check if the index is usable and set prebuilt->index_usable accordingly. Unfortunately, the return status of this function is ignored by MySQL, and the actual refusal to use the index must be made in row_search_for_mysql(). row_search_for_mysql(): Return DB_MISSING_HISTORY if !prebuilt->index_usable. convert_error_code_to_mysql(): Map DB_MISSING_HISTORY to HA_ERR_TABLE_DEF_CHANGED. innodb-index.test: Add a test case where access to a newly created secondary index must be blocked for old transactions. rb://100 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1582 committer: calvin timestamp: Thu 2009-04-02 11:46:47 +0000 message: branches/zip: Mantis issue #197 - Make srv_spin_wait_delay configurable New parameter innodb_spin_wait_delay to set the maximum delay between polling for a spin lock. 5 is the default. Approved by: Marko (on IM) ------------------------------------------------------------ revno: 0.3.1581 committer: marko timestamp: Tue 2009-03-31 06:40:58 +0000 message: branches/zip: struct read_view_struct: Add clarifying comments about low_limit_id and up_limit_id. ------------------------------------------------------------ revno: 0.3.1580 committer: inaam timestamp: Wed 2009-03-25 17:18:33 +0000 message: branches/zip SHOW ENGINE INNODB MUTEX shows all mutexes and rw_locks. This can be overwhelming particularly when the buffer pool is very large (note that each block in buffer pool has at least one mutex, one rw_lock and an additional mutex if rw_lock does not use atomics). With this patch status of following mutexes and rw-locks is not shown: 1) block->mutex 2) block->lock 3) block->lock->mutex (if applicable) 4) All other mutexes and rw-locks for which number of os-waits are zero Addresses issue# 179 rb://99 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1579 committer: calvin timestamp: Tue 2009-03-24 15:59:45 +0000 message: branches/zip: Mantis issue #201 - remove innodb_plugin_init() due to new option --ignore_builtin_innodb Starting 5.1.33, MySQL has a new option --ignore_builtin_innodb for using the dynamic plugin. It is required to remove innodb_plugin_init() in the plugin. This patch removes innodb_plugin_init() as well as functions, variables used by innodb_plugin_init(). rb://98 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1578 committer: marko timestamp: Tue 2009-03-24 13:46:12 +0000 message: branches/zip: Note that buf_page_t::list and buf_page_t::in_flush_list are only protected by buf_pool_mutex, not by the block mutex. buf_page_release(): Remove the assertion on in_flush_list. The function is only holding block->mutex, not buf_pool_mutex. This was reported by Sunny. This was the only piece of code that accessed in_flush_list while not holding buf_pool_mutex. ------------------------------------------------------------ revno: 0.3.1577 committer: marko timestamp: Tue 2009-03-24 12:02:29 +0000 message: branches/zip: Remove references to UNIV_HOTBACKUP from files that are not used when building InnoDB Hot Backup. Declare innobase_invalidate_query_cache() in ha_prototypes.h. ------------------------------------------------------------ revno: 0.3.1576 committer: calvin timestamp: Mon 2009-03-23 21:15:33 +0000 message: branches/zip: adjust build files on Windows Adjust the patch positions based on the latest MySQL source. Also add the patches to the .bat files for vs9. ------------------------------------------------------------ revno: 0.3.1575 committer: marko timestamp: Mon 2009-03-23 14:21:34 +0000 message: branches/zip: Remove unneeded definitions and dependencies from UNIV_HOTBACKUP builds. ------------------------------------------------------------ revno: 0.3.1574 committer: marko timestamp: Mon 2009-03-23 12:57:45 +0000 message: branches/zip: recv_parse_or_apply_log_rec_body(): Add debug assertions ensuring that FIL_PAGE_TYPE makes sense when applying log records. ------------------------------------------------------------ revno: 0.3.1573 committer: marko timestamp: Mon 2009-03-23 12:05:18 +0000 message: branches/zip: Enclose recv_recovery_from_backup_on and recv_recovery_from_backup_is_on() in #ifdef UNIV_LOG_ARCHIVE. ------------------------------------------------------------ revno: 0.3.1572 committer: marko timestamp: Mon 2009-03-23 11:00:43 +0000 message: branches/zip: Remove the remaining references to hash_table_t::adapive from UNIV_HOTBACKUP builds. This should have been done in r4515. ------------------------------------------------------------ revno: 0.3.1571 committer: marko timestamp: Mon 2009-03-23 10:20:50 +0000 message: branches/zip: Exclude some operating system interface code from UNIV_HOTBACKUP builds. ------------------------------------------------------------ revno: 0.3.1570 committer: marko timestamp: Mon 2009-03-23 10:05:47 +0000 message: branches/zip: buf_page_print(): Clean up the code #ifdef UNIV_HOTBACKUP. ------------------------------------------------------------ revno: 0.3.1569 committer: marko timestamp: Mon 2009-03-23 09:07:20 +0000 message: branches/zip: Define and use PAGE_ZIP_MATCH. In UNIV_HOTBACKUP builds, assume fixed allocation. ------------------------------------------------------------ revno: 0.3.1568 committer: marko timestamp: Mon 2009-03-23 08:57:16 +0000 message: branches/zip: Define and use ASSERT_HASH_MUTEX_OWN. Make it a no-op in UNIV_HOTBACKUP builds. ------------------------------------------------------------ revno: 0.3.1567 committer: marko timestamp: Mon 2009-03-23 08:49:53 +0000 message: branches/zip: hash_table_t: adaptive: Remove from UNIV_HOTBACKUP builds. ------------------------------------------------------------ revno: 0.3.1566 committer: vasil timestamp: Fri 2009-03-20 14:50:41 +0000 message: branches/zip: Add any entry about the release of 1.0.3 in the ChangeLog. ------------------------------------------------------------ revno: 0.3.1565 committer: marko timestamp: Fri 2009-03-20 13:47:17 +0000 message: branches/zip: fil_init(): Add the parameter hash_size. ------------------------------------------------------------ revno: 0.3.1564 committer: marko timestamp: Fri 2009-03-20 13:10:25 +0000 message: branches/zip: recv_scan_log_recs(): Remove a compile-time constant parameter. ------------------------------------------------------------ revno: 0.3.1563 committer: marko timestamp: Fri 2009-03-20 13:08:05 +0000 message: branches/zip: Non-functional change: Add const qualifiers. log_block_checksum_is_ok_or_old_format(), recv_sys_add_to_parsing_buf(): The log block is read-only. Make it const. ------------------------------------------------------------ revno: 0.3.1562 committer: marko timestamp: Fri 2009-03-20 12:56:19 +0000 message: branches/zip: recv_sys_init(): Remove a compile-time constant parameter. ------------------------------------------------------------ revno: 0.3.1561 committer: marko timestamp: Fri 2009-03-20 12:48:26 +0000 message: branches/zip: recv_recover_page(): Remove compile-time constant parameters. ------------------------------------------------------------ revno: 0.3.1560 committer: marko timestamp: Fri 2009-03-20 12:15:52 +0000 message: branches/zip: innobase_get_at_most_n_mbchars(): Declare in ha_prototypes.h. ------------------------------------------------------------ revno: 0.3.1559 committer: marko timestamp: Fri 2009-03-20 11:51:35 +0000 message: branches/zip: fil0fil.c: Refer to fil_system directly, not via local vars. This eliminates some "unused variable" warnings when building InnoDB Hot Backup in such a way that all mutex operations are no-ops. ------------------------------------------------------------ revno: 0.3.1558 committer: marko timestamp: Fri 2009-03-20 11:24:06 +0000 message: branches/zip: Replace fil_get_space_for_id_low() with fil_space_get_by_id(). ------------------------------------------------------------ revno: 0.3.1557 committer: marko timestamp: Fri 2009-03-20 10:52:14 +0000 message: branches/zip: page_validate(): Always report the space id and the name of the index. In Hot Backup, do not invoke comparison functions, as MySQL collations will be unavailable. ------------------------------------------------------------ revno: 0.3.1556 committer: marko timestamp: Fri 2009-03-20 10:45:18 +0000 message: branches/zip: Add const qualifiers or in/out comments to some function parameters in log0log. ------------------------------------------------------------ revno: 0.3.1555 committer: marko timestamp: Fri 2009-03-20 10:33:33 +0000 message: branches/zip: Non-functional change for reducing dependencies in InnoDB Hot Backup: Replace srv_sys->dummy_ind1 and srv_sys->dummy_ind2 with dict_ind_redundant and dict_ind_compact, initialized in dict_init(). ------------------------------------------------------------ revno: 0.3.1554 committer: marko timestamp: Thu 2009-03-19 13:23:32 +0000 message: branches/zip: Merge revisions 4400:4481 from branches/5.1: ------------------------------------------------------------------------ r4481 | marko | 2009-03-19 15:01:48 +0200 (Thu, 19 Mar 2009) | 6 lines branches/5.1: row_unlock_for_mysql(): Do not unlock records that were modified by the current transaction. This bug was introduced or unmasked in r4400. rb://97 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1553 committer: marko timestamp: Wed 2009-03-18 12:32:13 +0000 message: branches/zip: buf_buddy_free_low(): Correct the function comment. ------------------------------------------------------------ revno: 0.3.1552 committer: marko timestamp: Wed 2009-03-18 10:43:54 +0000 message: branches/zip: buf_LRU_block_remove_hashed_page(): Add some debug assertions. ------------------------------------------------------------ revno: 0.3.1551 committer: vasil timestamp: Wed 2009-03-18 09:53:53 +0000 message: branches/zip: Remove mysql-test/patches/bug41893.diff because that bug has been fixed in the MySQL repository, see http://bugs.mysql.com/41893. ------------------------------------------------------------ revno: 0.3.1550 committer: vasil timestamp: Tue 2009-03-17 13:50:30 +0000 message: branches/zip: Increment the InnoDB Plugin version from 1.0.3 to 1.0.4 now that 1.0.3 has been released. ------------------------------------------------------------ revno: 0.3.1549 committer: marko timestamp: Tue 2009-03-17 10:34:19 +0000 message: branches/zip: buf0buddy.c: Add and adjust some debug assertions. ------------------------------------------------------------ revno: 0.3.1548 committer: vasil timestamp: Tue 2009-03-17 07:38:19 +0000 message: branches/zip: Remove mysql-test/patches/bug32625.diff because that bug was fixed in the mysql repository (1 year and 4 months after sending them the simple patch!). See http://bugs.mysql.com/32625 ------------------------------------------------------------ revno: 0.3.1547 committer: marko timestamp: Mon 2009-03-16 12:12:02 +0000 message: branches/zip: sync_thread_add_level(): Make the assertions about level == SYNC_BUF_BLOCK more readable. ------------------------------------------------------------ revno: 0.3.1546 committer: marko timestamp: Mon 2009-03-16 10:59:25 +0000 message: branches/zip: UT_LIST_VALIDATE(): Assert that the link is non-NULL before dereferencing it. In this way, ut_list_node_313 will be pointing to the last non-NULL list item at the time of the assertion failure. (gcc-4.3.2 -O3 seems to optimize the common subexpressions and make the variable NULL, though.) ------------------------------------------------------------ revno: 0.3.1545 committer: marko timestamp: Mon 2009-03-16 09:43:34 +0000 message: branches/zip: UT_LIST_VALIDATE(): Add the parameter ASSERTION and adjust all callers. ------------------------------------------------------------ revno: 0.3.1544 committer: marko timestamp: Thu 2009-03-12 08:26:40 +0000 message: branches/zip: Merge revisions 4359:4400 from branches/5.1: ------------------------------------------------------------------------ r4399 | marko | 2009-03-12 09:38:05 +0200 (Thu, 12 Mar 2009) | 2 lines branches/5.1: row_sel_get_clust_rec_for_mysql(): Store the cursor position also for unlock_row(). (Bug #39320) ------------------------------------------------------------------------ r4400 | marko | 2009-03-12 10:06:44 +0200 (Thu, 12 Mar 2009) | 5 lines branches/5.1: Fix a bug in multi-table semi-consistent reads. Remember the acquired record locks per table handle (row_prebuilt_t) rather than per transaction (trx_t), so that unlock_row should successfully unlock all non-matching rows in multi-table operations. This deficiency was found while investigating Bug #39320. ------------------------------------------------------------------------ These were submitted as rb://94 and rb://96 and approved by Heikki Tuuri. ------------------------------------------------------------ revno: 0.3.1543 committer: marko timestamp: Thu 2009-03-12 07:26:11 +0000 message: branches/zip: trx_sys_create_doublewrite_buf(): As the dummy change, initialize FIL_PAGE_TYPE. This will make it easier to write the debug assertions for ibbackup --apply-log. ------------------------------------------------------------ revno: 0.3.1542 committer: marko timestamp: Thu 2009-03-12 07:22:27 +0000 message: branches/zip: btr_store_big_rec_extern_fields(): Initialize FIL_PAGE_TYPE in a separate redo log entry. This will make ibbackup --apply-log debugging easier. ------------------------------------------------------------ revno: 0.3.1541 committer: calvin timestamp: Mon 2009-03-09 08:10:17 +0000 message: branches/zip: remove compile flag MYSQL_SERVER for dynamic plugin The dynamic plugin on Windows used to be built with MYSQL_SERVER compile flag, while it is not the case for other platforms. r3797 assumed MYSQL_SERVER was not defined for dynamic plugin, which introduced the engine crash during dropping a database. ------------------------------------------------------------ revno: 0.3.1540 committer: vasil timestamp: Thu 2009-03-05 20:31:37 +0000 message: branches/zip: Add ChangeLog entry for the bugfix in c4360. ------------------------------------------------------------ revno: 0.3.1539 committer: vasil timestamp: Thu 2009-03-05 20:29:07 +0000 message: branches/zip: Merge revision 4359 from branches/5.1: ------------------------------------------------------------------------ r4359 | vasil | 2009-03-05 21:42:01 +0200 (Thu, 05 Mar 2009) | 14 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2747 committer: Timothy Smith branch nick: 51 timestamp: Fri 2009-01-16 17:49:07 +0100 message: Add another cast to ignore int/ulong difference in error types, silence warning on Win64 modified: storage/innobase/handler/ha_innodb.cc ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1538 committer: vasil timestamp: Thu 2009-03-05 20:27:54 +0000 message: branches/zip: Merge revision 4358 from branches/5.1 (resolving a conflict): ------------------------------------------------------------------------ r4358 | vasil | 2009-03-05 21:21:10 +0200 (Thu, 05 Mar 2009) | 21 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2728.19.1 committer: Alfranio Correia branch nick: mysql-5.1-bugteam timestamp: Tue 2009-02-03 11:36:46 +0000 message: BUG#42445 Warning messages in innobase/handler/ha_innodb.cc There was a type casting problem in the storage/innobase/handler/ha_innodb.cc, (int ha_innobase::write_row(...)). Innobase uses has an internal error variable of type 'ulint' while mysql uses an 'int'. To fix the problem the function manipulates an error variable of type 'ulint' and only casts it into 'int' when needs to return the value. modified: storage/innobase/handler/ha_innodb.cc ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1537 committer: vasil timestamp: Thu 2009-03-05 20:23:17 +0000 message: branches/zip: Merge revisions 4287:4357 from branches/5.1: ------------------------------------------------------------------------ r4325 | sunny | 2009-03-02 02:28:52 +0200 (Mon, 02 Mar 2009) | 10 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Bug#43203: Overflow from auto incrementing causes server segv It was not a SIGSEGV but an assertion failure. The assertion was checking the invariant that *first_value passed in by MySQL doesn't contain a value that is greater than the max value for that type. The assertion has been changed to a check and if the value is greater than the max we report a generic AUTOINC failure. rb://93 Approved by Heikki ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1536 committer: vasil timestamp: Thu 2009-03-05 14:38:59 +0000 message: branches/zip: Implement a check whether pthread_t objects can be used by GCC atomic builtin functions. This check is implemented in plug.in and defines the macro HAVE_ATOMIC_PTHREAD_T. This macro is checked in univ.i and the relevant part of the code enabled (the one that uses GCC atomics against pthread_t objects). In addition to this, the same program that is compiled as part of the plug.in check is added in ut/ut0auxconf.c. In the InnoDB Plugin source archives that are shipped to the users, a generated Makefile.in is added. That Makefile.in will be modified to compile ut/ut0auxconf.c and define the macro HAVE_ATOMIC_PTHREAD_T if the compilation succeeds. I.e. Makefile.in will emulate the work that is done by plug.in. This is done in order to make the check happen and HAVE_ATOMIC_PTHREAD_T eventually defined without regenerating MySQL's ./configure from ./storage/innobase/plug.in. The point is not to ask users to install the autotools and regenerate ./configure. rb://95 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1535 committer: vasil timestamp: Thu 2009-03-05 11:49:51 +0000 message: branches/zip: Fix typo made in r4353. ------------------------------------------------------------ revno: 0.3.1534 committer: vasil timestamp: Thu 2009-03-05 07:27:29 +0000 message: branches/zip: As suggested by Ken, print a message that says that the Google SMP patch (GCC atomics) is disabled if it is. Also extend the message when the patch is partially enabled to make it clear that it is partially enabled. ------------------------------------------------------------ revno: 0.3.1533 committer: vasil timestamp: Fri 2009-02-27 11:27:18 +0000 message: branches/zip: Add FreeBSD to the list of the operating systems that have sizeof(pthread_t) == sizeof(void*) (i.e. word size). On FreeBSD pthread_t is defined like: /usr/include/sys/_pthreadtypes.h: typedef struct pthread *pthread_t; I did the following tests (per Inaam's recommendation): a) appropriate version of GCC is available on that platform (4.1.2 or higher for atomics to be available) On FreeBSD 6.x the default compiler is 3.4.6, on FreeBSD 7.x the default one is 4.2.1. One can always install the version of choice from the ports collection. If gcc 3.x is used then HAVE_GCC_ATOMIC_BUILTINS will not be defined and thus the change I am committing will make no difference. b) find out if sizeof(pthread_t) == sizeof(long) On 32 bit both are 4 bytes, on 64 bit both are 8 bytes. c) find out the compiler generated platform define (e.g.: __aix, __sunos__ etc.) The macro is __FreeBSD__. d) patch univ.i with the appropriate platform define e) build the mysql f) ensure it is using atomic builtins (look at the err.log message at system startup. It should say we are using atomics for both mutexes and rw-locks) g) do sanity testing (keeping in view the smp changes) I ran the mysql-test suite. All tests pass. ------------------------------------------------------------ revno: 0.3.1532 committer: inaam timestamp: Fri 2009-02-27 00:16:46 +0000 message: branches/zip This is a fix for issue#178. Instead of using UNIV_LINUX which is defined through CFLAGS we use compiler generated define __linux__ that is effective for both .c and .cc files. ------------------------------------------------------------ revno: 0.3.1531 committer: inaam timestamp: Fri 2009-02-27 00:13:19 +0000 message: branches/zip This is to revert the changes made to the plug.in (r4251) as a fix for issue# 178. Changes to plug.in will not propogate to a plugin installation unless autotools are rerun which is unacceptable. A fix for issue# 178 will be committed in a separate commit. ------------------------------------------------------------ revno: 0.3.1530 committer: marko timestamp: Thu 2009-02-26 21:27:51 +0000 message: branches/zip: btr_check_blob_fil_page_type(): Do not report FIL_PAGE_TYPE mismatch even when purging a BLOB. Heavy users may have large data files created with MySQL 5.0 or earlier, and they don not want to have the error log flooded with such messages. This fixes Issue #182. ------------------------------------------------------------ revno: 0.3.1529 committer: vasil timestamp: Thu 2009-02-26 07:21:20 +0000 message: branches/zip: Apply any necessary patches to the mysql tree at the end of setup.sh This step was previously done manually (and sometimes forgotten). ------------------------------------------------------------ revno: 0.3.1528 committer: vasil timestamp: Wed 2009-02-25 19:33:32 +0000 message: branches/zip: Do not output the commands that restore the environment because they depend on the state of the environment before the test starts executing. ------------------------------------------------------------ revno: 0.3.1527 committer: vasil timestamp: Wed 2009-02-25 15:19:19 +0000 message: branches/zip: White-space cleanup in the ChangeLog ------------------------------------------------------------ revno: 0.3.1526 committer: marko timestamp: Wed 2009-02-25 10:09:15 +0000 message: branches/zip: Correct the initialization of the memory subsystem once again, to finally put Issue #181 to rest. Revert some parts of r4274. It is best not to call ut_malloc() before srv_general_init(). mem_init(): Do not call ut_mem_init(). srv_general_init(): Initialize the memory subsystem in two phases: first ut_mem_init(), then mem_init(). This is because os_sync_init() and sync_init() depend on ut_mem_init() and mem_init() depends on os_sync_init() or sync_init(). srv_parse_data_file_paths_and_sizes(), srv_parse_log_group_home_dirs(): Remove the output parameters. Assign to the global variables directly. Allocate memory with malloc() instead of ut_malloc(), because these functions will be called before srv_general_init(). srv_free_paths_and_sizes(): New function, for cleaning up after srv_parse_data_file_paths_and_sizes() and srv_parse_log_group_home_dirs(). rb://92 approved by Sunny Bains ------------------------------------------------------------ revno: 0.3.1525 committer: vasil timestamp: Wed 2009-02-25 09:08:32 +0000 message: branches/zip: Fix Bug synopsis and remove explanation ------------------------------------------------------------ revno: 0.3.1524 committer: vasil timestamp: Wed 2009-02-25 09:05:44 +0000 message: branches/zip: Make ChangeLog entries for bugs in bugs.mysql.com in the form: Fix Bug#12345 bug title (for bugs after 1.0.2 was released and the ChangeLog published) There is no need to bloat the ChangeLog with information that is available via bugs.mysql.com. Discussed with: Marko ------------------------------------------------------------ revno: 0.3.1523 committer: vasil timestamp: Wed 2009-02-25 08:53:51 +0000 message: branches/zip: Add ChangeLog entry for the fix in r4288. ------------------------------------------------------------ revno: 0.3.1522 committer: vasil timestamp: Wed 2009-02-25 08:48:07 +0000 message: branches/zip: Merge revisions 4261:4287 from branches/5.1: ------------------------------------------------------------------------ r4287 | sunny | 2009-02-25 05:32:01 +0200 (Wed, 25 Feb 2009) | 10 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Fix Bug#42714 AUTO_INCREMENT errors in 5.1.31. There are two changes to the autoinc handling. 1. To fix the immediate problem from the bug report, we must ensure that the value written to the table is always less than the max value stored in dict_table_t. 2. The second related change is that according to MySQL documentation when the offset is greater than the increment, we should ignore the offset. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1521 committer: marko timestamp: Tue 2009-02-24 21:26:38 +0000 message: branches/zip: mem0mem.c: Remove unnecessary #include "mach0data.h". ------------------------------------------------------------ revno: 0.3.1520 committer: marko timestamp: Tue 2009-02-24 21:06:56 +0000 message: branches/zip: srv0start.c: Remove unnecessary #include "mem0pool.h". ------------------------------------------------------------ revno: 0.3.1519 committer: marko timestamp: Tue 2009-02-24 14:02:48 +0000 message: branches/zip: Remove the unused function dict_index_get_type(). ------------------------------------------------------------ revno: 0.3.1518 committer: marko timestamp: Tue 2009-02-24 13:14:59 +0000 message: branches/zip: Remove unused function os_mem_alloc_nocache(). ------------------------------------------------------------ revno: 0.3.1517 committer: marko timestamp: Mon 2009-02-23 22:14:38 +0000 message: branches/zip: Fix bugs in the fix of Issue #181. Tested inside and outside Valgrind, with innodb_use_sys_malloc set to 0 and 1. mem_init(): Invoke ut_mem_init() before mem_pool_create(), because the latter one will invoke ut_malloc(). srv_general_init(): Do not initialize the memory subsystem (mem_init()). innobase_init(): Initialize the memory subsystem (mem_init()) before calling srv_parse_data_file_paths_and_sizes(), which needs ut_malloc(). Call ut_free_all_mem() in error handling to clean up after the mem_init(). ------------------------------------------------------------ revno: 0.3.1516 committer: marko timestamp: Mon 2009-02-23 22:11:11 +0000 message: branches/zip: ut_mem_init(): Add the assertion !ut_mem_block_list_inited. ------------------------------------------------------------ revno: 0.3.1515 committer: marko timestamp: Mon 2009-02-23 21:10:18 +0000 message: branches/zip: Adjust the fix of Issue #182 in r4269 per Inaam's suggestion. btr_check_blob_fil_page_type(): Replace the parameter const char* op with ibool read. Do not print anything about page type mismatch when reading a BLOB page in Antelope format. Print space id before page number. ------------------------------------------------------------ revno: 0.3.1514 committer: marko timestamp: Mon 2009-02-23 13:09:49 +0000 message: branches/zip: When freeing an uncompressed BLOB page, tolerate garbage in FIL_PAGE_TYPE. (Bug #43043, Issue #182) btr_check_blob_fil_page_type(): New function. btr_free_externally_stored_field(), btr_copy_blob_prefix(): Call btr_check_blob_fil_page_type() to check FIL_PAGE_TYPE. ------------------------------------------------------------ revno: 0.3.1513 committer: marko timestamp: Mon 2009-02-23 10:43:51 +0000 message: branches/zip: Initialize ut_list_mutex at startup. Without this fix, ut_list_mutex would be used uninitialized when innodb_use_sys_malloc=1. This fix addresses Issue #181. ut_mem_block_list_init(): Rename to ut_mem_init() and make public. ut_malloc_low(), ut_free_all_mem(): Add ut_a(ut_mem_block_list_inited). mem_init(): Call ut_mem_init(). ------------------------------------------------------------ revno: 0.3.1512 committer: vasil timestamp: Fri 2009-02-20 21:29:32 +0000 message: branches/zip: Add a sentence at the top of COPYING.Google to clarify that this license does not apply to the whole InnoDB. Suggested by: Ken ------------------------------------------------------------ revno: 0.3.1511 committer: marko timestamp: Fri 2009-02-20 20:31:03 +0000 message: branches/zip: Make innodb_use_sys_malloc=ON the default. Replace srv_use_sys_malloc with UNIV_LIKELY(srv_use_sys_malloc) to improve branch prediction in the default case. Approved by Ken over the IM. ------------------------------------------------------------ revno: 0.3.1510 committer: vasil timestamp: Fri 2009-02-20 13:00:46 +0000 message: branches/zip: Add a ChangeLog entry for a change in r4262. ------------------------------------------------------------ revno: 0.3.1509 committer: vasil timestamp: Fri 2009-02-20 12:56:59 +0000 message: branches/zip: Merge revisions 4035:4261 from branches/5.1: ------------------------------------------------------------------------ r4065 | sunny | 2009-01-29 16:01:36 +0200 (Thu, 29 Jan 2009) | 8 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: In the last round of AUTOINC cleanup we assumed that AUTOINC is only defined for integer columns. This caused an assertion failure when we checked for the maximum value of a column type. We now calculate the max value for floating-point autoinc columns too. Fix Bug#42400 - InnoDB autoinc code can't handle floating-point columns rb://84 and Mantis issue://162 ------------------------------------------------------------------------ r4111 | sunny | 2009-02-03 22:06:52 +0200 (Tue, 03 Feb 2009) | 2 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Add the ULL suffix otherwise there is an overflow. ------------------------------------------------------------------------ r4128 | vasil | 2009-02-08 21:36:45 +0200 (Sun, 08 Feb 2009) | 18 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2709.20.31 committer: Timothy Smith branch nick: 51 timestamp: Fri 2008-12-19 01:28:51 +0100 message: Disable part of innodb-autoinc.test, because the MySQL server asserts when compiled --with-debug, due to bug 39828, "autoinc wraps around when offset and increment > 1". This change should be reverted when that bug is fixed (and a a few other minor changes to the test as described in comments). modified: mysql-test/r/innodb-autoinc.result mysql-test/t/innodb-autoinc.test ------------------------------------------------------------------------ r4129 | vasil | 2009-02-08 21:54:25 +0200 (Sun, 08 Feb 2009) | 310 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Merge a change from MySQL: [looks like the changes to innodb-autoinc.test were made as part of the following huge merge, but we are merging only changes to that file] ------------------------------------------------------------ revno: 2546.47.1 committer: Luis Soares branch nick: 5.1-rpl timestamp: Fri 2009-01-23 13:22:05 +0100 message: merge: 5.1 -> 5.1-rpl conflicts: Text conflict in client/mysqltest.cc Text conflict in mysql-test/include/wait_until_connected_again.inc Text conflict in mysql-test/lib/mtr_report.pm Text conflict in mysql-test/mysql-test-run.pl Text conflict in mysql-test/r/events_bugs.result Text conflict in mysql-test/r/log_state.result Text conflict in mysql-test/r/myisam_data_pointer_size_func.result Text conflict in mysql-test/r/mysqlcheck.result Text conflict in mysql-test/r/query_cache.result Text conflict in mysql-test/r/status.result Text conflict in mysql-test/suite/binlog/r/binlog_index.result Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result Text conflict in mysql-test/suite/rpl/r/rpl_packet.result Text conflict in mysql-test/suite/rpl/t/rpl_packet.test Text conflict in mysql-test/t/disabled.def Text conflict in mysql-test/t/events_bugs.test Text conflict in mysql-test/t/log_state.test Text conflict in mysql-test/t/myisam_data_pointer_size_func.test Text conflict in mysql-test/t/mysqlcheck.test Text conflict in mysql-test/t/query_cache.test Text conflict in mysql-test/t/rpl_init_slave_func.test Text conflict in mysql-test/t/status.test removed: mysql-test/suite/parts/r/partition_bit_ndb.result mysql-test/suite/parts/t/partition_bit_ndb.test mysql-test/suite/parts/t/partition_sessions.test mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test mysql-test/t/log_bin_trust_function_creators_func-master.opt mysql-test/t/rpl_init_slave_func-slave.opt added: mysql-test/include/check_events_off.inc mysql-test/include/cleanup_fake_relay_log.inc mysql-test/include/have_simple_parser.inc mysql-test/include/no_running_event_scheduler.inc mysql-test/include/no_running_events.inc mysql-test/include/running_event_scheduler.inc mysql-test/include/setup_fake_relay_log.inc mysql-test/include/wait_condition_sp.inc mysql-test/r/fulltext_plugin.result mysql-test/r/have_simple_parser.require mysql-test/r/innodb_bug38231.result mysql-test/r/innodb_bug39438.result mysql-test/r/innodb_mysql_rbk.result mysql-test/r/partition_innodb_semi_consistent.result mysql-test/r/query_cache_28249.result mysql-test/r/status2.result mysql-test/std_data/bug40482-bin.000001 mysql-test/suite/binlog/r/binlog_innodb_row.result mysql-test/suite/binlog/t/binlog_innodb_row.test mysql-test/suite/rpl/r/rpl_binlog_corruption.result mysql-test/suite/rpl/t/rpl_binlog_corruption-master.opt mysql-test/suite/rpl/t/rpl_binlog_corruption.test mysql-test/suite/sys_vars/r/tmp_table_size_basic.result mysql-test/suite/sys_vars/t/tmp_table_size_basic.test mysql-test/t/fulltext_plugin-master.opt mysql-test/t/fulltext_plugin.test mysql-test/t/innodb_bug38231.test mysql-test/t/innodb_bug39438-master.opt mysql-test/t/innodb_bug39438.test mysql-test/t/innodb_mysql_rbk-master.opt mysql-test/t/innodb_mysql_rbk.test mysql-test/t/partition_innodb_semi_consistent-master.opt mysql-test/t/partition_innodb_semi_consistent.test mysql-test/t/query_cache_28249.test mysql-test/t/status2.test renamed: mysql-test/suite/funcs_1/r/is_collation_character_set_applicability.result => mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result mysql-test/suite/funcs_1/t/is_collation_character_set_applicability.test => mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test modified: .bzr-mysql/default.conf CMakeLists.txt client/mysql.cc client/mysql_upgrade.c client/mysqlcheck.c client/mysqltest.cc configure.in extra/resolve_stack_dump.c extra/yassl/include/openssl/ssl.h include/config-win.h include/m_ctype.h include/my_global.h mysql-test/extra/binlog_tests/database.test mysql-test/extra/rpl_tests/rpl_auto_increment.test mysql-test/include/commit.inc mysql-test/include/have_32bit.inc mysql-test/include/have_64bit.inc mysql-test/include/index_merge1.inc mysql-test/include/linux_sys_vars.inc mysql-test/include/windows_sys_vars.inc mysql-test/lib/mtr_report.pm mysql-test/mysql-test-run.pl mysql-test/r/alter_table.result mysql-test/r/commit_1innodb.result mysql-test/r/create.result mysql-test/r/csv.result mysql-test/r/ctype_ucs.result mysql-test/r/date_formats.result mysql-test/r/events_bugs.result mysql-test/r/events_scheduling.result mysql-test/r/fulltext.result mysql-test/r/func_if.result mysql-test/r/func_in.result mysql-test/r/func_str.result mysql-test/r/func_time.result mysql-test/r/grant.result mysql-test/r/index_merge_myisam.result mysql-test/r/information_schema.result mysql-test/r/innodb-autoinc.result mysql-test/r/innodb.result mysql-test/r/innodb_mysql.result mysql-test/r/log_bin_trust_function_creators_func.result mysql-test/r/log_state.result mysql-test/r/myisampack.result mysql-test/r/mysql.result mysql-test/r/mysqlcheck.result mysql-test/r/partition_datatype.result mysql-test/r/partition_mgm.result mysql-test/r/partition_pruning.result mysql-test/r/query_cache.result mysql-test/r/read_buffer_size_basic.result mysql-test/r/read_rnd_buffer_size_basic.result mysql-test/r/rpl_init_slave_func.result mysql-test/r/select.result mysql-test/r/status.result mysql-test/r/strict.result mysql-test/r/temp_table.result mysql-test/r/type_bit.result mysql-test/r/type_date.result mysql-test/r/type_float.result mysql-test/r/warnings_engine_disabled.result mysql-test/r/xml.result mysql-test/suite/binlog/r/binlog_database.result mysql-test/suite/binlog/r/binlog_index.result mysql-test/suite/binlog/r/binlog_innodb.result mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result mysql-test/suite/binlog/t/binlog_innodb.test mysql-test/suite/funcs_1/r/is_columns_is.result mysql-test/suite/funcs_1/r/is_engines.result mysql-test/suite/funcs_1/r/storedproc.result mysql-test/suite/funcs_1/storedproc/param_check.inc mysql-test/suite/funcs_2/t/disabled.def mysql-test/suite/ndb/t/disabled.def mysql-test/suite/parts/r/partition_bit_innodb.result mysql-test/suite/parts/r/partition_bit_myisam.result mysql-test/suite/parts/r/partition_special_innodb.result mysql-test/suite/parts/t/disabled.def mysql-test/suite/parts/t/partition_special_innodb.test mysql-test/suite/parts/t/partition_value_innodb.test mysql-test/suite/parts/t/partition_value_myisam.test mysql-test/suite/parts/t/partition_value_ndb.test mysql-test/suite/rpl/r/rpl_auto_increment.result mysql-test/suite/rpl/r/rpl_packet.result mysql-test/suite/rpl/r/rpl_row_create_table.result mysql-test/suite/rpl/r/rpl_slave_skip.result mysql-test/suite/rpl/r/rpl_trigger.result mysql-test/suite/rpl/t/disabled.def mysql-test/suite/rpl/t/rpl_packet.test mysql-test/suite/rpl/t/rpl_row_create_table.test mysql-test/suite/rpl/t/rpl_slave_skip.test mysql-test/suite/rpl/t/rpl_trigger.test mysql-test/suite/rpl_ndb/t/disabled.def mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result mysql-test/t/alter_table.test mysql-test/t/create.test mysql-test/t/csv.test mysql-test/t/ctype_ucs.test mysql-test/t/date_formats.test mysql-test/t/disabled.def mysql-test/t/events_bugs.test mysql-test/t/events_scheduling.test mysql-test/t/fulltext.test mysql-test/t/func_if.test mysql-test/t/func_in.test mysql-test/t/func_str.test mysql-test/t/func_time.test mysql-test/t/grant.test mysql-test/t/information_schema.test mysql-test/t/innodb-autoinc.test mysql-test/t/innodb.test mysql-test/t/innodb_mysql.test mysql-test/t/log_bin_trust_function_creators_func.test mysql-test/t/log_state.test mysql-test/t/myisam_data_pointer_size_func.test mysql-test/t/myisampack.test mysql-test/t/mysql.test mysql-test/t/mysqlcheck.test mysql-test/t/partition_innodb_stmt.test mysql-test/t/partition_mgm.test mysql-test/t/partition_pruning.test mysql-test/t/query_cache.test mysql-test/t/rpl_init_slave_func.test mysql-test/t/select.test mysql-test/t/status.test mysql-test/t/strict.test mysql-test/t/temp_table.test mysql-test/t/type_bit.test mysql-test/t/type_date.test mysql-test/t/type_float.test mysql-test/t/warnings_engine_disabled.test mysql-test/t/xml.test mysys/my_getopt.c mysys/my_init.c scripts/mysql_install_db.sh sql-common/my_time.c sql/field.cc sql/field.h sql/filesort.cc sql/ha_partition.cc sql/ha_partition.h sql/item.cc sql/item_cmpfunc.cc sql/item_func.h sql/item_strfunc.cc sql/item_sum.cc sql/item_timefunc.cc sql/item_timefunc.h sql/log.cc sql/log.h sql/log_event.cc sql/log_event.h sql/mysql_priv.h sql/mysqld.cc sql/opt_range.cc sql/partition_info.cc sql/repl_failsafe.cc sql/rpl_constants.h sql/set_var.cc sql/slave.cc sql/spatial.h sql/sql_acl.cc sql/sql_base.cc sql/sql_binlog.cc sql/sql_class.h sql/sql_cursor.cc sql/sql_delete.cc sql/sql_lex.cc sql/sql_lex.h sql/sql_locale.cc sql/sql_parse.cc sql/sql_partition.cc sql/sql_plugin.cc sql/sql_plugin.h sql/sql_profile.cc sql/sql_repl.cc sql/sql_select.cc sql/sql_select.h sql/sql_show.cc sql/sql_table.cc sql/sql_trigger.cc sql/sql_trigger.h sql/table.cc sql/table.h sql/unireg.cc storage/csv/ha_tina.cc storage/federated/ha_federated.cc storage/heap/ha_heap.cc storage/innobase/Makefile.am storage/innobase/btr/btr0sea.c storage/innobase/buf/buf0lru.c storage/innobase/dict/dict0dict.c storage/innobase/dict/dict0mem.c storage/innobase/handler/ha_innodb.cc storage/innobase/handler/ha_innodb.h storage/innobase/include/btr0sea.h storage/innobase/include/dict0dict.h storage/innobase/include/dict0mem.h storage/innobase/include/ha_prototypes.h storage/innobase/include/lock0lock.h storage/innobase/include/row0mysql.h storage/innobase/include/sync0sync.ic storage/innobase/include/ut0ut.h storage/innobase/lock/lock0lock.c storage/innobase/os/os0file.c storage/innobase/plug.in storage/innobase/row/row0mysql.c storage/innobase/row/row0sel.c storage/innobase/srv/srv0srv.c storage/innobase/srv/srv0start.c storage/innobase/ut/ut0ut.c storage/myisam/ft_boolean_search.c strings/ctype.c strings/xml.c tests/mysql_client_test.c win/configure.js mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test ------------------------------------------------------------------------ r4165 | calvin | 2009-02-12 01:34:27 +0200 (Thu, 12 Feb 2009) | 1 line Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: minor non-functional changes. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1508 committer: vasil timestamp: Fri 2009-02-20 09:59:42 +0000 message: branches/zip: ChangeLog: Remove include/os0sync.ic from the entry about the google patch, this file was modified later to not include Google's code. ------------------------------------------------------------ revno: 0.3.1507 committer: vasil timestamp: Fri 2009-02-20 09:52:19 +0000 message: branches/zip: Cleanup in ChangeLog: * Wrap lines at 78 characters * Changed files are listed alphabetically * White-space cleanup ------------------------------------------------------------ revno: 0.3.1506 committer: inaam timestamp: Thu 2009-02-19 13:46:27 +0000 message: branches/zip: Issue #178 rb://91 Change plug.in to have same CXXFLAGS as CFLAGS. This is to ensure that both .c and .cc files get compiled with same flags. To fix the issue where UNIV_LINUX was defined only in .c files. Approved by: Marko ------------------------------------------------------------ revno: 0.3.1505 committer: marko timestamp: Thu 2009-02-19 09:52:39 +0000 message: branches/zip: page_zip_set_size(): Fix a g++ 4.3.2 warning about an empty body in a "for" statement. This closes Issue #176. ------------------------------------------------------------ revno: 0.3.1504 committer: marko timestamp: Wed 2009-02-18 15:25:45 +0000 message: branches/zip: Protect ut_total_allocated_memory with ut_list_mutex. Unprotected updates to ut_total_allocated_memory in os_mem_alloc_large() and os_mem_free_large(), called during fast index creation, may corrupt the variable and cause assertion failures. Also, add UNIV_MEM_ALLOC() and UNIV_MEM_FREE() instrumentation around os_mem_alloc_large() and os_mem_free_large(), so that Valgrind can detect more errors. rb://90 approved by Heikki Tuuri. This addresses Issue #177. ------------------------------------------------------------ revno: 0.3.1503 committer: marko timestamp: Wed 2009-02-18 15:04:03 +0000 message: branches/zip: buf_buddy_get_slot(): Fix a gcc 4.3.2 warning about an empty body of a "for" statement. This fixes part of Issue #176. ------------------------------------------------------------ revno: 0.3.1502 committer: marko timestamp: Wed 2009-02-18 15:01:09 +0000 message: branches/zip: UT_DBG_STOP: Use do{} while(0) to silence a g++-4.3.2 warning about a while(0); statement. This should fix (part of) Issue #176. ------------------------------------------------------------ revno: 0.3.1501 committer: marko timestamp: Tue 2009-02-17 12:59:54 +0000 message: branches/zip: When assigning lock->recursive = FALSE, also flag lock->writer_thread invalid, so that Valgrind will catch more errors. This is related to Issue #175. ------------------------------------------------------------ revno: 0.3.1500 committer: marko timestamp: Tue 2009-02-17 12:26:53 +0000 message: Minor cleanup of the Google SMP patch. sync_array_object_signalled(): Add a (void) cast to eliminate a gcc warning about the return value of os_atomic_increment() being ignored. rw_lock_create_func(): Properly indent the preprocessor directives. rw_lock_x_lock_low(), rw_lock_x_lock_func_nowait(): Split lines correctly. rw_lock_set_writer_id_and_recursion_flag(): Silence a Valgrind warning. Do not mix statements and variable declarations. ------------------------------------------------------------ revno: 0.3.1499 committer: vasil timestamp: Tue 2009-02-17 10:30:55 +0000 message: branches/zip: Add the copyright notice to the non C files. ------------------------------------------------------------ revno: 0.3.1498 committer: vasil timestamp: Tue 2009-02-17 10:14:04 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 28/28] ------------------------------------------------------------ revno: 0.3.1497 committer: vasil timestamp: Tue 2009-02-17 10:12:56 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 27/28] ------------------------------------------------------------ revno: 0.3.1496 committer: vasil timestamp: Tue 2009-02-17 10:09:16 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 26/28] ------------------------------------------------------------ revno: 0.3.1495 committer: vasil timestamp: Tue 2009-02-17 10:05:45 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 25/28] ------------------------------------------------------------ revno: 0.3.1494 committer: vasil timestamp: Tue 2009-02-17 10:01:41 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 24/28] ------------------------------------------------------------ revno: 0.3.1493 committer: vasil timestamp: Tue 2009-02-17 09:53:58 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 23/28] ------------------------------------------------------------ revno: 0.3.1492 committer: vasil timestamp: Tue 2009-02-17 09:50:12 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 22/28] ------------------------------------------------------------ revno: 0.3.1491 committer: vasil timestamp: Tue 2009-02-17 09:46:52 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 21/28] ------------------------------------------------------------ revno: 0.3.1490 committer: vasil timestamp: Tue 2009-02-17 09:43:50 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 20/28] ------------------------------------------------------------ revno: 0.3.1489 committer: vasil timestamp: Tue 2009-02-17 09:41:24 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 19/28] ------------------------------------------------------------ revno: 0.3.1488 committer: vasil timestamp: Tue 2009-02-17 09:39:11 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 18/28] ------------------------------------------------------------ revno: 0.3.1487 committer: vasil timestamp: Tue 2009-02-17 09:36:44 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 17/28] ------------------------------------------------------------ revno: 0.3.1486 committer: vasil timestamp: Tue 2009-02-17 09:33:38 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 16/28] ------------------------------------------------------------ revno: 0.3.1485 committer: vasil timestamp: Tue 2009-02-17 09:29:55 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 15/28] ------------------------------------------------------------ revno: 0.3.1484 committer: vasil timestamp: Tue 2009-02-17 09:27:31 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 13/28] ------------------------------------------------------------ revno: 0.3.1483 committer: vasil timestamp: Tue 2009-02-17 09:24:40 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 13/28] ------------------------------------------------------------ revno: 0.3.1482 committer: vasil timestamp: Tue 2009-02-17 09:18:35 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 12/28] ------------------------------------------------------------ revno: 0.3.1481 committer: vasil timestamp: Tue 2009-02-17 09:14:40 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 11/28] ------------------------------------------------------------ revno: 0.3.1480 committer: vasil timestamp: Tue 2009-02-17 09:12:41 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 10/28] ------------------------------------------------------------ revno: 0.3.1479 committer: vasil timestamp: Tue 2009-02-17 09:10:18 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 9/28] ------------------------------------------------------------ revno: 0.3.1478 committer: vasil timestamp: Tue 2009-02-17 09:06:49 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 8/28] ------------------------------------------------------------ revno: 0.3.1477 committer: vasil timestamp: Tue 2009-02-17 09:04:28 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 7/28] ------------------------------------------------------------ revno: 0.3.1476 committer: vasil timestamp: Tue 2009-02-17 09:02:27 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 6/28] ------------------------------------------------------------ revno: 0.3.1475 committer: vasil timestamp: Tue 2009-02-17 08:59:22 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 5/28] ------------------------------------------------------------ revno: 0.3.1474 committer: vasil timestamp: Tue 2009-02-17 08:55:41 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 4/28] ------------------------------------------------------------ revno: 0.3.1473 committer: vasil timestamp: Tue 2009-02-17 08:25:45 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 3/28] ------------------------------------------------------------ revno: 0.3.1472 committer: vasil timestamp: Tue 2009-02-17 08:15:06 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 2/28] ------------------------------------------------------------ revno: 0.3.1471 committer: vasil timestamp: Tue 2009-02-17 08:12:02 +0000 message: branches/zip: * Remove old Innobase copyright lines from C source files * Add a reference to the GPLv2 license as recommended by the lawyers at Oracle Legal [Step 1/28] ------------------------------------------------------------ revno: 0.3.1470 committer: vasil timestamp: Tue 2009-02-17 07:56:33 +0000 message: branches/zip: To the files touched by the Google patch from c4144 (excluding include/os0sync.ic because later we removed Google code from that file): * Remove the Google license * Remove old Innobase copyright lines * Add a reference to the Google license and to the GPLv2 license at the top, as recommended by the lawyers at Oracle Legal. ------------------------------------------------------------ revno: 0.3.1469 committer: vasil timestamp: Tue 2009-02-17 07:11:58 +0000 message: branches/zip: Add Google's license into COPYING.Google. ------------------------------------------------------------ revno: 0.3.1468 committer: vasil timestamp: Tue 2009-02-17 07:06:07 +0000 message: branches/zip: Add the full text of the GPLv2 license into the root directory of the plugin. In previous releases this file was copied from an external source (https://svn.innodb.com/svn/plugin/trunk/support/COPYING) "manually" when creating the source and binary archives. It is less confusing to have this present in the root directory of the SVN branch. ------------------------------------------------------------ revno: 0.3.1467 committer: vasil timestamp: Fri 2009-02-13 08:06:31 +0000 message: branches/zip: Fix the failing mysql-test partition_innodb, which failed only if run after innodb_trx_weight (or other test that would leave LATEST DEADLOCK ERROR into the output of SHOW ENGINE INNODB STATUS). Find further explanation for the failure at the top of the added patch partition_innodb.diff. ------------------------------------------------------------ revno: 0.3.1466 committer: vasil timestamp: Thu 2009-02-12 15:38:27 +0000 message: branches/zip: Fix pathname of the file to patch. ------------------------------------------------------------ revno: 0.3.1465 committer: calvin timestamp: Thu 2009-02-12 08:37:10 +0000 message: branches/zip: Adjust the result file of innodb_thread_concurrency_basic test. The default value of innodb_thread_concurrency is changed to 0 (from 8) via r4163. ------------------------------------------------------------ revno: 0.3.1464 committer: marko timestamp: Wed 2009-02-11 22:14:19 +0000 message: branches/zip: Make innodb_thread_concurrency=0 the default. The old default was 8. ------------------------------------------------------------ revno: 0.3.1463 committer: vasil timestamp: Tue 2009-02-10 20:58:17 +0000 message: branches/zip: (followup to r4145) Non-functional change: Change the os_atomic_increment() and os_compare_and_swap() functions to macros to avoid artificial limitations on the types of those functions' arguments. As a consequence typecasts from the source code can be removed. Also remove Google's copyright from os0sync.ic because that file no longer contains code from Google. Approved by: Marko (rb://88), also ok from Inaam via IM ------------------------------------------------------------ revno: 0.3.1462 committer: marko timestamp: Tue 2009-02-10 10:52:27 +0000 message: branches/zip: When innodb_use_sys_malloc is set, ignore innodb_additional_mem_pool_size, because nothing will be allocated from mem_comm_pool. mem_pool_create(): Remove the assertion about size. The function will work with any size. However, an assertion would fail in ut_malloc_low() when size==0. mem_init(): When srv_use_sys_malloc is set, pass size=1 to mem_pool_create(). mem0mem.c: Add #include "srv0srv.h" that is needed by mem0dbg.c. ------------------------------------------------------------ revno: 0.3.1461 committer: marko timestamp: Tue 2009-02-10 09:51:43 +0000 message: branches/zip: get_share(), free_share(): Make table locking case sensitive. If lower_case_table_names=1, MySQL will pass the table names in lower case. Thus, we can use a binary comparison (strcmp) in the hash table. rb://87 approved by Heikki Tuuri, to address Bug #41676 and Issue #167. ------------------------------------------------------------ revno: 0.3.1460 committer: marko timestamp: Tue 2009-02-10 09:09:15 +0000 message: branches/zip: ChangeLog: Document recent changes. ------------------------------------------------------------ revno: 0.3.1459 committer: marko timestamp: Tue 2009-02-10 08:38:41 +0000 message: branches/zip: Map ut_malloc(), ut_realloc(), ut_free() to malloc(), realloc(), free() when innodb_use_sys_malloc is set. ut_free_all_mem(): If innodb_use_sys_malloc is set, do nothing, because then ut_mem_block_list_inited will never be set. log_init(): Use mem_alloc() instead of ut_malloc(), so that the memory will be freed. (Tested with Valgrind, although it is not clear why the memory would be freed.) rb://86 approved by Heikki Tuuri and Ken Jacobs. This addresses Issue #168. ------------------------------------------------------------ revno: 0.3.1458 committer: vasil timestamp: Tue 2009-02-10 05:34:43 +0000 message: branches/zip: Non-functional change: Fix a compilation warning introduced in r4144: gcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -I../../include -I../../regex -I../../storage/innobase/include -I../../sql -I. -Werror -Wall -g -MT libinnobase_a-sync0arr.o -MD -MP -MF .deps/libinnobase_a-sync0arr.Tpo -c -o libinnobase_a-sync0arr.o `test -f 'sync/sync0arr.c' || echo './'`sync/sync0arr.c cc1: warnings being treated as errors sync/sync0arr.c: In function 'sync_array_object_signalled': sync/sync0arr.c:869: warning: pointer targets in passing argument 1 of 'os_atomic_increment' differ in signedness ------------------------------------------------------------ revno: 0.3.1457 committer: inaam timestamp: Mon 2009-02-09 23:36:25 +0000 message: branches/zip rb://30 This patch changes the innodb mutexes and rw_locks implementation. On supported platforms it uses GCC builtin atomics. These changes are based on the patch sent by Mark Callaghan of Google under BSD license. More technical discussion can be found at rb://30 Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1456 committer: marko timestamp: Mon 2009-02-09 13:35:50 +0000 message: branches/zip: fil_write_lsn_and_arch_no_to_file(): Plug a memory leak. ------------------------------------------------------------ revno: 0.3.1455 committer: vasil timestamp: Mon 2009-02-09 11:47:16 +0000 message: branches/zip: Remove mysql-test/patches/bug35261.diff because that bug has been fixed in the MySQL repository. ------------------------------------------------------------ revno: 0.3.1454 committer: marko timestamp: Wed 2009-02-04 14:09:24 +0000 message: branches/zip: buf_block_align(): Fix a bogus debug assertion that was introduced in r4036, to address Issue #161. ------------------------------------------------------------ revno: 0.3.1453 committer: marko timestamp: Tue 2009-02-03 07:52:45 +0000 message: branches/zip: mem_area_free(): Correct a bug that was introduced in r4088. free() is not the same as ut_free(). ut_free() pairs with ut_malloc(), not malloc(). free() pairs with malloc() and some other functions. ------------------------------------------------------------ revno: 0.3.1452 committer: calvin timestamp: Tue 2009-02-03 00:35:56 +0000 message: branches/zip: fix a compiler error and a warning Both are minor changes: 1) Compiler error introduced in r4072: double ';' at the end. 2) Warning introduced in r3613: \mem\mem0pool.c(481) : warning C4098: 'mem_area_free' : 'void' function returning a value Approved by: Sunny (IM) ------------------------------------------------------------ revno: 0.3.1451 committer: vasil timestamp: Mon 2009-02-02 16:33:20 +0000 message: branches/zip: Fix the failing innodb-zip test to restore the environment as it was before the test execution because a newly added feature in the mysql-test framework does check for this. ------------------------------------------------------------ revno: 0.3.1450 committer: vasil timestamp: Mon 2009-02-02 16:24:08 +0000 message: branches/zip: Fix a mysql-test failure in innodb-zip: main.innodb-zip [ fail ] Test ended at 2009-02-02 18:13:25 CURRENT_TEST: main.innodb-zip mysqltest: At line 160: Found line beginning with -- that didn't contain a valid mysqltest command, check your syntax or use # if you intended to write a comment ------------------------------------------------------------ revno: 0.3.1449 committer: marko timestamp: Mon 2009-02-02 12:28:17 +0000 message: branches/zip: Enclose some backup functions in #ifdef UNIV_HOTBACKUP. recv_read_cp_info_for_backup(), recv_scan_log_seg_for_backup(): These functions are only called by InnoDB Hot Backup. ------------------------------------------------------------ revno: 0.3.1448 committer: marko timestamp: Mon 2009-02-02 08:48:05 +0000 message: branches/zip: innobase_start_or_create_for_mysql(): Remove a factual error in the function comment. Parameters are not read from a file "srv_init". ------------------------------------------------------------ revno: 0.3.1447 committer: vasil timestamp: Mon 2009-02-02 07:32:04 +0000 message: branches/zip: Add ChangeLog entry for the change in r4072. ------------------------------------------------------------ revno: 0.3.1446 committer: vasil timestamp: Sat 2009-01-31 06:05:24 +0000 message: branches/zip: Adjust the failing patch patches/information_schema.diff. ------------------------------------------------------------ revno: 0.3.1445 committer: marko timestamp: Fri 2009-01-30 21:30:29 +0000 message: branches/zip: Make innodb_adaptive_hash_index settable. btr_search_disabled: Rename to btr_search_enabled and change the type to char, so that it can be directly linked to the MySQL parameters. Note that the variable is protected by btr_search_latch and btr_search_enabled_mutex, a new mutex introduced in this patch. btr_search_enabled_mutex: A new mutex, to protect btr_search_enabled together with btr_search_latch. buf_pool_drop_hash_index(): New function, to be called from btr_search_disable(). btr_search_disable(), btr_search_enable(): Fix bugs. These functions were previously unused. btr_search_guess_on_hash(), btr_search_build_page_hash_index(): Check btr_search_enabled once more, while holding btr_search_latch. btr_cur_search_to_nth_level(): Note that the reads of btr_search_enabled may be dirty and explain why it should not be a problem. innobase_adaptive_hash_index: Remove. The variable btr_search_enabled will be used directly instead. innodb_adaptive_hash_index_update(): New function, an update callback for innodb_adaptive_hash_index. This will call either btr_search_disable() or btr_search_enable() when the value is assigned. The functions will be called even if the value does not appear to be changed, e.g., when setting from TRUE to TRUE or FALSE to FALSE. rb://85 approved by Heikki Tuuri. This addresses Issue #163. ------------------------------------------------------------ revno: 0.3.1444 committer: marko timestamp: Fri 2009-01-30 10:58:56 +0000 message: branches/zip: ibuf_use_t: Add the constant IBUF_USE_COUNT, to eliminate a gcc warning about an assertion that trivially holds. The warning was introduced in r4061, in the merge of branches/innodb+ -r4053. ibuf_insert(): Let an assertion fail if ibuf_use is unknown. ------------------------------------------------------------ revno: 0.3.1443 committer: marko timestamp: Thu 2009-01-29 09:27:09 +0000 message: branches/zip: Port the applicable parts of r4053 from branches/innodb+: Implement the global variable innodb_change_buffering, with the following values: none - buffer nothing inserts - buffer inserts (the default) Approved by Ken Jacobs. ------------------------------------------------------------ revno: 0.3.1442 committer: marko timestamp: Thu 2009-01-29 07:39:04 +0000 message: branches/zip: btr0sea.c: Revert the inadvertent change made in r4056. ------------------------------------------------------------ revno: 0.3.1441 committer: calvin timestamp: Thu 2009-01-29 01:06:41 +0000 message: branches/zip: Merge revisions 4032:4035 from branches/5.1 All InnoDB related tests passed on Windows, except known failure in partition_innodb_semi_consistent. The inadvertent change to btr0sea.c in this commit is reverted in r4060. ------------------------------------------------------------------------ r4035 | vasil | 2009-01-26 09:26:25 -0600 (Mon, 26 Jan 2009) | 23 lines branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2646.161.4 committer: Tatiana A. Nurnberg branch nick: 51-31177v2 timestamp: Mon 2009-01-12 06:32:49 +0100 message: Bug#31177: Server variables can't be set to their current values Bounds-checks and blocksize corrections were applied to user-input, but constants in the server were trusted implicitly. If these values did not actually meet the requirements, the user could not set change a variable, then set it back to the (wonky) factory default or maximum by explicitly specifying it (SET = vs SET =DEFAULT). Now checks also apply to the server's presets. Wonky values and maxima get corrected at startup. Consequently all non-offsetted values the user sees are valid, and users can set the variable to that exact value if they so desire. ------------------------------------------------------------ revno: 0.3.1440 committer: marko timestamp: Wed 2009-01-28 13:21:45 +0000 message: branches/zip: Enclose some functions inside #ifdef UNIV_HOTBACKUP: ut_sprintf_timestamp_without_extra_chars(), ut_get_year_month_day(), log_reset_first_header_and_checkpoint(): These functions are only used in InnoDB Hot Backup. ------------------------------------------------------------ revno: 0.3.1439 committer: marko timestamp: Wed 2009-01-28 12:35:49 +0000 message: branches/zip: trx0sys.ic: Remove unnecessary #include . ------------------------------------------------------------ revno: 0.3.1438 committer: vasil timestamp: Wed 2009-01-28 06:21:44 +0000 message: branches/zip: Adjust the paths in innodb_lock_wait_timeout.diff with a recent rename of the test/result files in the MySQL tree. ------------------------------------------------------------ revno: 0.3.1437 committer: marko timestamp: Tue 2009-01-27 22:46:13 +0000 message: branches/zip: btr_search_validate(): Fix an assertion failure that was introduced in r4036. Do not call buf_block_get_space(), buf_block_get_page_no() unless the block state is BUF_BLOCK_FILE_PAGE. This bug was reported by Michael. ------------------------------------------------------------ revno: 0.3.1436 committer: marko timestamp: Tue 2009-01-27 22:33:20 +0000 message: branches/zip: Revert the change to univ.i that was accidentally committed in r4045. ------------------------------------------------------------ revno: 0.3.1435 committer: marko timestamp: Tue 2009-01-27 22:31:17 +0000 message: branches/zip: btr_search_validate(): Fix a bogus UNIV_DEBUG assertion failure that was accidentally introduced in r4036. Instead of calling buf_block_get_frame(), which asserts that the block must be buffer-fixed, access block->frame directly. That is safe, because changes of block->page.state are protected by the buffer pool mutex, which we are holding. This bug was reported by Michael. ------------------------------------------------------------ revno: 0.3.1434 committer: marko timestamp: Tue 2009-01-27 08:05:24 +0000 message: branches/zip: buf_LRU_invalidate_tablespace(): Fix a race condition: read zip_size while still holding block_mutex. ------------------------------------------------------------ revno: 0.3.1433 committer: vasil timestamp: Tue 2009-01-27 06:04:17 +0000 message: branches/zip: Adjust the paths in innodb_file_per_table.diff with a recent rename of the test/result files in the MySQL tree. ------------------------------------------------------------ revno: 0.3.1432 committer: marko timestamp: Mon 2009-01-26 20:33:20 +0000 message: branches/zip: In r988, the function buf_block_align() was enclosed within UNIV_DEBUG. The two remaining callers in non-debug builds, btr_search_guess_on_hash() and btr_search_validate(), were rewritten to call buf_page_hash_get(). To implement support for a resizeable buffer pool, the function buf_block_align() had been rewritten to perform a page hash lookup in the buffer pool. The caller was also made responsible for holding the buffer pool mutex. Because the page hash lookup is expensive and it has to be done while holding the buffer pool mutex, implement buf_block_align() by pointer arithmetics again, and make btr_search_guess_on_hash() call it. Note that this will have to be adjusted if the interface to the resizeable buffer pool is actually implemented. rb://83 approved by Heikki Tuuri, to address Issue #161. As a deviation from the approved patch, this patch also makes btr_search_validate() (invoked by CHECK TABLE) check that buf_pool->page_hash is consistent with buf_block_align(). ------------------------------------------------------------ revno: 0.3.1431 committer: marko timestamp: Mon 2009-01-26 14:16:39 +0000 message: branches/zip: buf_page_get_gen(): Fix a "possibly uninitialized" warning that was introduced in r4030. ------------------------------------------------------------ revno: 0.3.1430 committer: marko timestamp: Fri 2009-01-23 13:49:04 +0000 message: branches/zip: Merge revisions 4005:4032 from branches/5.1: ------------------------------------------------------------------------ r4032 | marko | 2009-01-23 15:43:51 +0200 (Fri, 23 Jan 2009) | 10 lines branches/5.1: Merge r4031 from branches/5.0: btr_search_drop_page_hash_when_freed(): Check if buf_page_get_gen() returns NULL. The page may have been evicted from the buffer pool between buf_page_peek_if_search_hashed() and buf_page_get_gen(), because the buffer pool mutex will be released between these two calls. (Bug #42279, Issue #160) rb://82 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1429 committer: marko timestamp: Fri 2009-01-23 13:31:36 +0000 message: branches/zip: buf_page_get_gen(): Remove the unused mode BUF_GET_NOWAIT. This was noticed while investigating Issue #160. ------------------------------------------------------------ revno: 0.3.1428 committer: marko timestamp: Fri 2009-01-23 12:07:38 +0000 message: branches/zip: Remove some redundant #include directives. ------------------------------------------------------------ revno: 0.3.1427 committer: marko timestamp: Fri 2009-01-23 09:26:10 +0000 message: branches/zip: Enclose some more unused code in #ifdef UNIV_LOG_ARCHIVE. This will help trim the dependencies of InnoDB Hot Backup. recv_recovery_from_checkpoint_start(): Rename to recv_recovery_from_checkpoint_start_func(), and remove the two first parameters unless UNIV_LOG_ARCHIVE is defined. Define and use the auxiliary macros TYPE_CHECKPOINT and LIMIT_LSN in the function. struct recv_sys_struct: Remove archive_group unless UNIV_LOG_ARCHIVE is defined. Do not define LOG_ARCHIVE unless UNIV_LOG_ARCHIVE is defined. ------------------------------------------------------------ revno: 0.3.1426 committer: marko timestamp: Fri 2009-01-23 09:04:49 +0000 message: branches/zip: Remove some redundant #include statements. ------------------------------------------------------------ revno: 0.3.1425 committer: vasil timestamp: Tue 2009-01-20 15:01:08 +0000 message: branches/zip: Add ChangeLog entries for the bugfixes in r4004 and r4005. ------------------------------------------------------------ revno: 0.3.1424 committer: marko timestamp: Tue 2009-01-20 14:29:22 +0000 message: branches/zip: Merge revisions 3930:4005 from branches/5.1: ------------------------------------------------------------------------ r4004 | marko | 2009-01-20 16:19:00 +0200 (Tue, 20 Jan 2009) | 12 lines branches/5.1: Merge r4003 from branches/5.0: rec_set_nth_field(): When the field already is SQL null, do nothing when it is being changed to SQL null. (Bug #41571) Normally, MySQL does not pass "do-nothing" updates to the storage engine. When it does and a column of an InnoDB table that is in ROW_FORMAT=COMPACT is being updated from NULL to NULL, the InnoDB buffer pool will be corrupted without this fix. rb://81 approved by Heikki Tuuri ------------------------------------------------------------------------ r4005 | marko | 2009-01-20 16:22:36 +0200 (Tue, 20 Jan 2009) | 8 lines branches/5.1: lock_is_table_exclusive(): Acquire kernel_mutex before accessing table->locks and release kernel_mutex before returning from the function. This fixes a portential race condition in the "commit every 10,000 rows" in ALTER TABLE, CREATE INDEX, DROP INDEX, and OPTIMIZE TABLE. (Bug #42152) rb://80 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1423 committer: marko timestamp: Fri 2009-01-16 12:53:40 +0000 message: branches/zip: Add assertions that the kernel_mutex is being held while accessing table->locks or un_member.tab_lock.locks. This is related to Issue #158. According to static analysis, the added debug assertions should always hold. lock_table_has_to_wait_in_queue(), lock_queue_iterator_reset(), lock_queue_iterator_get_prev(), add_trx_relevant_locks_to_cache(), fetch_data_into_cache(): Add ut_ad(mutex_own(&kernel_mutex)). ------------------------------------------------------------ revno: 0.3.1422 committer: vasil timestamp: Thu 2009-01-15 19:15:00 +0000 message: branches/zip: Add ChangeLog entries for the bug fixes in r3911 and r3930. ------------------------------------------------------------ revno: 0.3.1421 committer: marko timestamp: Thu 2009-01-15 08:37:51 +0000 message: branches/zip: buf0lru.c: Improve debug assertions. buf_LRU_block_free_non_file_page(): ut_ad(block) before dereferencing block. buf_LRU_block_remove_hashed_page(): Forbid buf_pool_mutex_exit() while calling buf_buddy_free(). Callers of buf_LRU_block_remove_hashed_page() assume that the buffer pool mutex will not be released and reacquired. ------------------------------------------------------------ revno: 0.3.1420 committer: marko timestamp: Thu 2009-01-15 08:28:23 +0000 message: branches/zip: buf_LRU_invalidate_tablespace(), buf_LRU_free_block(): Add comments and assertions that buf_LRU_block_remove_hashed_page() will release block_mutex when it returns BUF_BLOCK_ZIP_FREE. ------------------------------------------------------------ revno: 0.3.1419 committer: marko timestamp: Wed 2009-01-14 14:06:22 +0000 message: branches/zip: Merge revisions 3601:3930 from branches/5.1: ------------------------------------------------------------------------ r3911 | sunny | 2009-01-13 14:15:24 +0200 (Tue, 13 Jan 2009) | 13 lines branches/5.1: Fix Bug#38187 Error 153 when creating savepoints InnoDB previously treated savepoints as a stack e.g., SAVEPOINT a; SAVEPOINT b; SAVEPOINT c; SAVEPOINT b; <- This would delete b and c. This fix changes the behavior to: SAVEPOINT a; SAVEPOINT b; SAVEPOINT c; SAVEPOINT b; <- Does not delete savepoint c ------------------------------------------------------------------------ r3930 | marko | 2009-01-14 15:51:30 +0200 (Wed, 14 Jan 2009) | 4 lines branches/5.1: dict_load_table(): If dict_load_indexes() fails, invoke dict_table_remove_from_cache() instead of dict_mem_table_free(), so that the data dictionary will not point to freed data. (Bug #42075, Issue #153, rb://76 approved by Heikki Tuuri) ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1418 committer: marko timestamp: Tue 2009-01-13 19:46:22 +0000 message: branches/zip: In hash table lookups, assert that the traversed items satisfy some conditions when UNIV_DEBUG is defined. HASH_SEARCH(): New parameter: ASSERTION. All users will pass an appropriate ut_ad() or nothing. dict_table_add_to_columns(): Assert that the table being added to the data dictionary cache is not already being pointed to by the name_hash and id_hash tables. HASH_SEARCH_ALL(): New macro, for use in dict_table_add_to_columns(). dict_mem_table_free(): Set ut_d(table->cached = FALSE), so that we can check ut_ad(table->cached) when traversing the hash tables, as in HASH_SEARCH(name_hash, dict_sys->table_hash, ...) and HASH_SEARCH(id_hash, dict_sys->table_id_hash, ...). dict_table_get_low(), dict_table_get_on_id_low(): Assert ut_ad(!table || table->cached). fil_space_get_by_id(): Check ut_ad(space->magic_n == FIL_SPACE_MAGIC_N) in HASH_SEARCH(hash, fil_system->spaces, ...). fil_space_get_by_name(): Check ut_ad(space->magic_n == FIL_SPACE_MAGIC_N) in HASH_SEARCH(name_hash, fil_system->name_hash, ...). buf_buddy_block_free(): Check that the blocks are in valid state in HASH_SEARCH(hash, buf_pool->zip_hash, ...). buf_page_hash_get(): Check that the blocks are in valid state in HASH_SEARCH(hash, buf_pool->page_hash, ...). get_share(), free_share(): Check ut_ad(share->use_count > 0) in HASH_SEARCH(table_name_hash, innobase_open_tables, ...). This was posted as rb://75 for tracking down errors similar to Issue #153. ------------------------------------------------------------ revno: 0.3.1417 committer: marko timestamp: Tue 2009-01-13 10:34:32 +0000 message: branches/zip: Enable HASH_ASSERT_OWNED independently of UNIV_SYNC_DEBUG. ------------------------------------------------------------ revno: 0.3.1416 committer: marko timestamp: Tue 2009-01-13 09:54:01 +0000 message: branches/zip: row_merge_create_temporary_table(): On error, row_create_table_for_mysql() already frees new_table. Do not attempt to free it again. ------------------------------------------------------------ revno: 0.3.1415 committer: marko timestamp: Tue 2009-01-13 08:32:24 +0000 message: branches/zip: Fix some comments to say buf_pool_mutex. ------------------------------------------------------------ revno: 0.3.1414 committer: marko timestamp: Tue 2009-01-13 07:30:26 +0000 message: branches/zip: buf_flush_try_neighbors(): Fix a bug that was introduced in r3879 (rb://73). ------------------------------------------------------------ revno: 0.3.1413 committer: marko timestamp: Mon 2009-01-12 16:56:11 +0000 message: branches/zip: Non-functional change: Add some debug assertions and comments. buf_page_t: Note that the LRU fields are protected by buf_pool_mutex only, not block->mutex or buf_pool_zip_mutex. buf_page_get_freed_page_clock(): Note that this is sometimes invoked without mutex protection. buf_pool_get_oldest_modification(): Note that the result may be out of date. buf_page_get_LRU_position(), buf_page_is_old(): Assert that the buffer pool mutex is being held. buf_page_release(): Assert that dirty blocks are in the flush list. ------------------------------------------------------------ revno: 0.3.1412 committer: marko timestamp: Mon 2009-01-12 12:48:59 +0000 message: branches/zip: Non-functional change: Use ut_d when assigning to mtr->state. ------------------------------------------------------------ revno: 0.3.1411 committer: marko timestamp: Mon 2009-01-12 12:40:08 +0000 message: branches/zip: struct mtr_struct: Remove the unused field magic_n unless UNIV_DEBUG is defined. mtr->magic_n is only assigned to and checked in UNIV_DEBUG builds. ------------------------------------------------------------ revno: 0.3.1410 committer: marko timestamp: Mon 2009-01-12 12:25:22 +0000 message: branches/zip: buf_page_get_newest_modification(): Use the block mutex instead of the buffer pool mutex. This is related to Issue #157. ------------------------------------------------------------ revno: 0.3.1409 committer: marko timestamp: Mon 2009-01-12 11:24:37 +0000 message: branches/zip: buf_flush_page(): Fix a comment that should have been fixed in r3879. Spotted by Sunny. ------------------------------------------------------------ revno: 0.3.1408 committer: marko timestamp: Mon 2009-01-12 10:46:44 +0000 message: branches/zip: Simplify the flushing of dirty pages from the buffer pool. buf_flush_try_page(): Rename to buf_flush_page(), and change the return type to void. Replace the parameters space, offset with bpage, and remove the second page hash lookup. Note and assert that both buf_pool_mutex and block_mutex must now be held upon entering the function. They will still be released by this function. buf_flush_try_neighbors(): Replace buf_flush_try_page() with buf_flush_page(). Make the logic easier to follow by not negating the precondition of buf_flush_page(). rb://73 approved by Sunny Bains. This is related to Issue #157. ------------------------------------------------------------ revno: 0.3.1407 committer: marko timestamp: Fri 2009-01-09 21:15:12 +0000 message: branches/zip: Non-functional change: Tighten debug assertions and remove dead code. buf_flush_ready_for_flush(), buf_flush_try_page(): Assert that flush_type is one of BUF_FLUSH_LRU or BUF_FLUSH_LIST. The flush_type comes from buf_flush_batch(), which already asserts this. The assertion holds for all calls in the source code. buf_flush_try_page(): Remove the dead case BUF_FLUSH_SINGLE_PAGE of switch (flush_type). ------------------------------------------------------------ revno: 0.3.1406 committer: marko timestamp: Fri 2009-01-09 21:09:06 +0000 message: branches/zip: Add comments related to Issue #155. buf_flush_try_page(): Note why it is safe to access bpage without holding buf_pool_mutex or block_mutex. ------------------------------------------------------------ revno: 0.3.1405 committer: marko timestamp: Fri 2009-01-09 20:27:40 +0000 message: branches/zip: Some non-functional changes related to Issue #155. buf_page_struct: Note that space and offset are also protected by buf_pool_mutex. They are only assigned to by buf_block_set_file_page(). Thus, it suffices for buf_flush_batch() to hold just buf_pool_mutex when checking these fields. buf_flush_try_page(): Rename "locked" to "is_s_latched", per Heikki's request. buf_flush_batch(): Move the common statement mutex_exit(block_mutex) from all if-else if-else branches before the if block. Remove the redundant test (buf_pool->init_flush[flush_type] == FALSE) that was apparently copied from buf_flush_write_complete(). buf_flush_write_block_low(): Note why it is safe not to hold buf_pool_mutex or block_mutex. Enumerate the assumptions in debug assertions. ------------------------------------------------------------ revno: 0.3.1404 committer: marko timestamp: Fri 2009-01-09 13:40:11 +0000 message: branches/zip: buf_flush_insert_into_flush_list(), buf_flush_insert_sorted_into_flush_list(): Remove unused code. Change the parameter to buf_block_t* block and assert that block->state == BUF_BLOCK_FILE_PAGE. This is part of Issue #155. ------------------------------------------------------------ revno: 0.3.1403 committer: marko timestamp: Fri 2009-01-09 13:13:14 +0000 message: branches/zip: buf_flush_try_page(): Introduce the variable is_compressed for caching the result of buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE. ------------------------------------------------------------ revno: 0.3.1402 committer: marko timestamp: Fri 2009-01-09 13:09:51 +0000 message: branches/zip: buf_flush_try_page(): Move some common code from each switch case before the switch block. ------------------------------------------------------------ revno: 0.3.1401 committer: vasil timestamp: Thu 2009-01-08 20:10:10 +0000 message: branches/zip: Add ChangeLog entries for r3795 r3796 r3797 r3798. ------------------------------------------------------------ revno: 0.3.1400 committer: marko timestamp: Wed 2009-01-07 14:42:42 +0000 message: branches/zip: row_merge_drop_temp_indexes(): Do not lock the rows of SYS_INDEXES when looking for partially created indexes. Use the transaction isolation level READ UNCOMMITTED to avoid interfering with locks held by incomplete transactions that will be rolled back in a subsequent step in the recovery. (Issue #152) Approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1399 committer: marko timestamp: Wed 2009-01-07 14:22:18 +0000 message: branches/zip: Do not call trx_allocate_for_mysql() directly, but use helper functions that initialize some members of the transaction struct. (Bug #41680) innobase_trx_init(): New function: initialize some fields of a transaction struct from a MySQL THD object. innobase_trx_allocate(): New function: allocate and initialize a transaction struct. check_trx_exists(): Use the above two functions. ha_innobase::delete_table(), ha_innobase::rename_table(), ha_innobase::add_index(), ha_innobase::final_drop_index(): Use innobase_trx_allocate(). innobase_drop_database(): In the Windows plugin, initialize the trx_t specially, because the THD is not available. Otherwise, use innobase_trx_allocate(). rb://69 accepted by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1398 committer: marko timestamp: Wed 2009-01-07 14:19:32 +0000 message: branches/zip: Add the tests that were forgotten from r3795. ------------------------------------------------------------ revno: 0.3.1397 committer: marko timestamp: Wed 2009-01-07 14:17:47 +0000 message: branches/zip: row_merge_tuple_cmp(): Do not report a duplicate key value if any of the fields are NULL. While the tuples are equal in the sorting order, SQL NULL is defined to be logically inequal to anything else. (Bug #41904) rb://70 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1396 committer: vasil timestamp: Tue 2009-01-06 07:56:32 +0000 message: branches/zip: Add patch to fix the failing main.variables mysql-test. It started failing after the variable innodb_use_sys_malloc was added because it matches '%alloc%' and the test is badly written and expects that no new variables like that will ever be added. ------------------------------------------------------------ revno: 0.3.1395 committer: marko timestamp: Mon 2009-01-05 10:54:53 +0000 message: branches/zip: Merge revisions 3598:3601 from branches/5.1: ------------------------------------------------------------------------ r3601 | marko | 2008-12-22 16:05:19 +0200 (Mon, 22 Dec 2008) | 9 lines branches/5.1: Make SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED a true replacement of SET GLOBAL INNODB_LOCKS_UNSAFE_FOR_BINLOG=1. This fixes an error that was introduced in r370, causing semi-consistent read not to not unlock rows in READ COMMITTED mode. (Bug #41671, Issue #146) rb://67 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1394 committer: marko timestamp: Fri 2009-01-02 22:23:30 +0000 message: branches/zip: srv_suspend_mysql_thread(): Add some clarifying comments. ------------------------------------------------------------ revno: 0.3.1393 committer: marko timestamp: Fri 2009-01-02 13:57:51 +0000 message: branches/zip: ChangeLog: Clarify the impact of r3608. ------------------------------------------------------------ revno: 0.3.1392 committer: marko timestamp: Fri 2009-01-02 13:55:12 +0000 message: branches/zip: ChangeLog: Document r3608 and r3613. ------------------------------------------------------------ revno: 0.3.1391 committer: inaam timestamp: Fri 2009-01-02 13:10:50 +0000 message: branches/zip: Implement the parameter innodb_use_sys_malloc (false by default), for disabling InnoDB's internal memory allocator and using system malloc/free instead. rb://62 approved by Marko ------------------------------------------------------------ revno: 0.3.1390 committer: marko timestamp: Fri 2009-01-02 09:02:44 +0000 message: branches/zip: Merge c2998 from branches/6.0, so that the same InnoDB Plugin source tree will work both under 5.1 and 6.0. Do not add the test case innodb_ctype_ldml.test, because it would not work under MySQL 5.1. Refuse to create tables whose columns contain collation IDs above 255. This removes an assertion failure that was introduced in WL#4164 (Two-byte collation IDs). create_table_def(): Do not fail an assertion if a column contains a charset-collation ID greater than 256. Instead, issue an error and refuse to create the table. The original change (branches/6.0 r2998) was rb://51 approved by Calvin Sun. ------------------------------------------------------------ revno: 0.3.1389 committer: marko timestamp: Tue 2008-12-30 20:45:04 +0000 message: branches/zip: When setting the PAGE_LEVEL of a compressed B-tree page from or to 0, compress the page at the same time. This is necessary, because the column information stored on the compressed page will differ between leaf and non-leaf pages. Leaf pages are identified by PAGE_LEVEL=0. This bug was reported as Issue #150. Document the similarity between btr_page_create() and btr_page_empty(). Make the function signature of btr_page_empty() identical with btr_page_create(). (This will add the parameter "level".) btr_root_raise_and_insert(): Replace some code with a call to btr_page_empty(). btr_attach_half_pages(): Assert that the page level has already been set on both block and new_block. Do not set it again. btr_discard_only_page_on_level(): Document that this function is probably never called. Make it work on any height tree. (Tested on 2-high tree by disabling btr_lift_page_up().) rb://68 ------------------------------------------------------------ revno: 0.3.1388 committer: marko timestamp: Tue 2008-12-30 20:33:31 +0000 message: branches/zip: Remove the dependency on the MySQL HASH table implementation. Use the InnoDB hash table for keeping track of INNOBASE_SHARE objects. struct st_innobase_share: Make table_name const uchar*. Add the member table_name_hash. innobase_open_tables: Change the type from HASH to hash_table_t*. innobase_get_key(): Remove. innobase_fold_name(): New function, for computing the fold value for the InnoDB hash table. get_share(), free_share(): Use the InnoDB hash functions. innobase_end(): Free innobase_open_tables before shutting down InnoDB. Shutting down InnoDB will invalidate all memory allocated via InnoDB. rb://65 approved by Heikki Tuuri. This addresses Issue #104. ------------------------------------------------------------ revno: 0.3.1387 committer: marko timestamp: Mon 2008-12-22 14:40:17 +0000 message: branches/zip: page_cur_insert_rec_zip(): When allocating insert_buf from the free list, zero out the node pointer field of the deleted record if the new record would not overwrite it. This fixes a harmless content mismatch reported by page_zip_validate() that was reported as Issue #147. rb://66 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1386 committer: marko timestamp: Mon 2008-12-22 13:41:47 +0000 message: branches/zip: Merge revisions 3479:3598 from branches/5.1: ------------------------------------------------------------------------ r3588 | inaam | 2008-12-18 14:26:54 +0200 (Thu, 18 Dec 2008) | 8 lines branches/5.1 It is a bug in unused code. If we don't calculate the hash value when calculating the mutex number then two pages which map to same hash value can get two different mutex numbers. Approved by: Marko ------------------------------------------------------------------------ r3590 | marko | 2008-12-18 15:33:36 +0200 (Thu, 18 Dec 2008) | 11 lines branches/5.1: When converting a record to MySQL format, copy the default column values for columns that are SQL NULL. This addresses failures in row-based replication (Bug #39648). row_prebuilt_t: Add default_rec, for the default values of the columns in MySQL format. row_sel_store_mysql_rec(): Use prebuilt->default_rec instead of padding columns. rb://64 approved by Heikki Tuuri ------------------------------------------------------------------------ r3598 | marko | 2008-12-22 15:28:03 +0200 (Mon, 22 Dec 2008) | 6 lines branches/5.1: ibuf_delete_rec(): When the record cannot be found and the tablespace has been dropped, commit the mini-transaction, so that InnoDB will not hold the insert buffer tree latch in exclusive mode, causing a potential deadlock. This bug was introduced in the fix of Bug #27276 in r2924. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1385 committer: marko timestamp: Mon 2008-12-22 10:27:16 +0000 message: branches/zip: Pass the caller's file name and line number to row_mysql_lock_data_dictionary(), row_mysql_freeze_data_dictionary(), to better track down locking issues that involve dict_operation_lock. ------------------------------------------------------------ revno: 0.3.1384 committer: marko timestamp: Fri 2008-12-19 11:58:13 +0000 message: branches/zip: HASH_INSERT, HASH_DELETE: Add explicit type conversions, so that the macros will expand to valid C++. Unlike C++, C allows implicit type conversions from void* to other pointer types. ------------------------------------------------------------ revno: 0.3.1383 committer: marko timestamp: Thu 2008-12-18 13:24:44 +0000 message: branches/zip: ha_innodb.cc: Do not include some unnecessary MySQL header files. ------------------------------------------------------------ revno: 0.3.1382 committer: marko timestamp: Wed 2008-12-17 20:40:38 +0000 message: branches/zip: row_sel_try_search_shortcut(), row_sel(): Adjust two debug assertions that should have been adjusted in r3575. ------------------------------------------------------------ revno: 0.3.1381 committer: vasil timestamp: Wed 2008-12-17 12:58:26 +0000 message: branches/zip: Remove 2 entries from the ChangeLog about changes not big enough. Discussed with: Marko ------------------------------------------------------------ revno: 0.3.1380 committer: marko timestamp: Wed 2008-12-17 12:40:59 +0000 message: branches/zip: Remove update-in-place-in-select from the internal SQL interpreter. It was only used for updating the InnoDB internal data dictionary when renaming or dropping tables. It could have caused deadlocks after acquiring latches on insert buffer bitmap pages. This and r3544 should fix Issue #135. Furthermore, the update-in-place-in-select does not account for compression failure. That was not a problem yet, since the InnoDB SQL interpreter has so far assumed ROW_FORMAT=REDUNDANT. rb://63 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.3.1379 committer: marko timestamp: Wed 2008-12-17 10:44:31 +0000 message: branches/zip: ChangeLog: Document recent changes that were not included in InnoDB Plugin 1.0.2, except changes to source code comments. ------------------------------------------------------------ revno: 0.3.1378 committer: marko timestamp: Wed 2008-12-17 09:19:56 +0000 message: branches/zip: Introduce UNIV_AHI_DEBUG for debugging the adaptive hash index without enabling UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.1377 committer: marko timestamp: Tue 2008-12-16 13:52:36 +0000 message: branches/zip: Do not update the free bits in the insert buffer bitmap when inserting or deleting from the insert buffer B-tree. Assert that records in the insert buffer B-tree are never updated. This could cure Issue #135. btr_cur_optimistic_insert(): Do not update the insert buffer bitmap when inserting to the insert buffer tree. btr_cur_optimistic_delete(): Do not update the insert buffer bitmap when deleting from the insert buffer tree. This could be the cause of the assertion failure that was reported in Issue #135. btr_cur_update_alloc_zip(): Assert that the index is not the insert buffer. The insert buffer will never be stored in compressed format. btr_cur_update_in_place(), btr_cur_optimistic_update(), btr_cur_pessimistic_update(): Assert that these functions are never invoked on the insert buffer tree. The insert buffer only supports the insertion and deletion of records. ------------------------------------------------------------ revno: 0.3.1376 committer: marko timestamp: Tue 2008-12-16 10:14:58 +0000 message: branches/zip: btr_cur_optimistic_delete(): Note that no further pages must be latched before calling mtr_commit(mtr) if the function returns TRUE. ------------------------------------------------------------ revno: 0.3.1375 committer: marko timestamp: Tue 2008-12-16 10:13:31 +0000 message: branches/zip: buf_page_init_for_read(): Use common code for error exit. ------------------------------------------------------------ revno: 0.3.1374 committer: marko timestamp: Tue 2008-12-16 08:24:03 +0000 message: branches/zip: sync_thread_add_level(): Add a comment explaining the assertion about SYNC_BUF_POOL and SYNC_BUF_BLOCK. ------------------------------------------------------------ revno: 0.3.1373 committer: marko timestamp: Fri 2008-12-12 14:08:23 +0000 message: branches/zip: Clean up the insert buffer subsystem. Originally, there were provisions in InnoDB for multiple insert buffer B-trees, apparently one for each tablespace. When Heikki implemented innodb_file_per_table (multiple InnoDB tablespaces) in MySQL 4.1, he made the insert buffer live only in the system tablespace (space 0) but left the provisions in the code. When Osku Salerma implemented delete buffering, he also cleaned up the insert buffer subsystem so that only one insert buffer B-tree exists. This patch applies the clean-up to the InnoDB Plugin. Having a separate patch of the insert buffer clean-up should help us better compare the essential changes of the InnoDB Plugin and InnoDB+ and to track down bugs that are specific to InnoDB+. IBUF_SPACE_ID: New constant, defined as 0. ibuf_data_t: Remove. ibuf_t: Add the applicable fields from ibuf_data_t. There is only one insert buffer tree from now on. ibuf_page_low(), ibuf_page(): Merge to a single function ibuf_page(). fil_space_t: Remove ibuf_data. fil_space_get_ibuf_data(): Remove. There is only one ibuf_data, for space IBUF_SPACE_ID. fil_ibuf_init_at_db_start(): Remove. ibuf_init_at_db_start(): Fuse with ibuf_data_init_for_space(). ibuf_validate_low(): Remove. There is only one ibuf tree. ibuf_free_excess_pages(), ibuf_header_page_get(), ibuf_free_excess_pages(): Remove the parameter space, which was always 0. ibuf_tree_root_get(): Remove the parameters space and data. There is only one ibuf tree, for space IBUF_SPACE_ID. ibuf_data_sizes_update(): Rename to ibuf_size_update(), and remove the parameter data. There is only one ibuf data struct. ibuf_build_entry_pre_4_1_x(): New function, refactored from ibuf_build_entry_from_ibuf_rec(). ibuf_data_enough_free_for_insert(), ibuf_data_too_much_free(): Remove the parameter data. There is only one insert buffer tree. ibuf_add_free_page(), ibuf_remove_free_page(): Remove the parameters space and data. There is only one insert buffer tree. ibuf_get_merge_page_nos(): Add parenthesis, to reduce diffs to branches/innodb+. ibuf_contract_ext(): Do not pick an insert buffer tree at random. There is only one. ibuf_print(): Print the single insert buffer tree. rb://19 approved by Heikki on IM ------------------------------------------------------------ revno: 0.3.1372 committer: marko timestamp: Fri 2008-12-12 12:22:34 +0000 message: branches/zip: Improve code locality in btr_cur_search_to_nth_level(). Make the variables rw_latch and buf_mode local in the for loop. Initialize them at the beginning of each for loop round to reduce register spilling on register-starved platforms such as the x86. Move the assignment of rw_latch and buf_mode from the end of the loop to the beginning of the loop. These parameters will only be needed in the buf_page_get_gen() call at the start of the loop. Remove the second (redundant) call to ibuf_should_try(). ibuf_should_try(): Now that the successful calls to this function will be halved, halve the magic constant that ibuf_flush_count will be compared to, accordingly. rb://61 approved by Heikki over IM. ------------------------------------------------------------ revno: 0.3.1371 committer: marko timestamp: Fri 2008-12-12 11:39:40 +0000 message: branches/zip: btr_cur_search_to_nth_level(): Remove a duplicate check for (rw_latch != RW_NO_LATCH) around debug code. ------------------------------------------------------------ revno: 0.3.1370 committer: marko timestamp: Thu 2008-12-11 15:08:14 +0000 message: branches/zip: ibuf_merge_or_delete_for_page(): Restore the seemingly redundant checks for ibuf_fixed_addr_page() || fsp_descr_page() that were removed in r3432, and add a comment explaining why. Thanks to Michael for reporting this bug. ------------------------------------------------------------ revno: 0.3.1369 committer: calvin timestamp: Wed 2008-12-10 22:19:07 +0000 message: branches/zip: fix Mantis issue #138 InnoDB fails if innodb_buffer_pool_size >= 4096M on x64 Windows All three srv_buf_pool related variables are defined as ulong, which is 32-bit on 64-bit Windows. They are changed to 64-bit ulint. Also system_info.dwPageSize appears to be 32-bit only. Casting to 64-bit is required. Approved by: Marko (on IM) ------------------------------------------------------------ revno: 0.3.1368 committer: calvin timestamp: Wed 2008-12-10 22:01:20 +0000 message: branches/zip: change diff and result files eol-style to LF The patch utility takes LF style diff, and mysql-test-run also only takes LF style, even on Windows. ------------------------------------------------------------ revno: 0.3.1367 committer: calvin timestamp: Wed 2008-12-10 21:56:00 +0000 message: branches/zip: Merge r3458:3479 from branches/5.1: ------------------------------------------------------------------------ r3479 | calvin | 2008-12-10 15:30:05 -0600 (Wed, 10 Dec 2008) | 4 lines branches/5.1: change .result file eol-style to LF mysql-test-run only takes LF style even on Windows. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1366 committer: vasil timestamp: Tue 2008-12-09 09:49:03 +0000 message: branches/zip: Merge 2929:3458 from branches/5.1 (resolving conflict in c3257, note also that r3363 reverted r2933 so there are not changes in mysql-test/innodb-autoinc.result with the current merge): ------------------------------------------------------------------------ r2933 | calvin | 2008-10-30 02:57:31 +0200 (Thu, 30 Oct 2008) | 10 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result branches/5.1: correct the result file innodb-autoinc.result Change the followings: auto_increment_increment auto_increment_offset to auto-increment-increment auto-increment-offset ------------------------------------------------------------------------ r2981 | marko | 2008-11-07 14:54:10 +0200 (Fri, 07 Nov 2008) | 5 lines Changed paths: M /branches/5.1/row/row0mysql.c branches/5.0: row_mysql_store_col_in_innobase_format(): Correct a misleading comment. In the UTF-8 encoding, ASCII takes 1 byte per character, while the "latin1" character set (normally ISO-8859-1, but in MySQL it actually refers to the Windows Code Page 1252 a.k.a. CP1252, WinLatin1) takes 1 to 3 bytes (1 to 2 bytes for the ISO-8859-1 subset). ------------------------------------------------------------------------ r3114 | calvin | 2008-11-14 20:31:48 +0200 (Fri, 14 Nov 2008) | 8 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: fix bug#40386: Not flushing query cache after truncate ha_statistics.records can not be 0 unless the table is empty, set to 1 instead. The original problem of bug#29507 is fixed in the server. Additional test was done with the fix of bug#29507 in the server. Approved by: Heikki (on IM) ------------------------------------------------------------------------ r3257 | inaam | 2008-11-24 22:06:50 +0200 (Mon, 24 Nov 2008) | 13 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/srv/srv0srv.c M /branches/5.1/trx/trx0trx.c branches/5.1 bug#40760 The config param innodb_thread_concurrency is dynamically set and is read when a thread enters/exits innodb. If the value is changed between the enter and exit time the behaviour becomes erratic. The fix is not to use srv_thread_concurrency when exiting, instead use the flag trx->declared_to_be_inside_innodb. rb://57 Approved by: Marko ------------------------------------------------------------------------ r3363 | calvin | 2008-12-04 19:00:20 +0200 (Thu, 04 Dec 2008) | 13 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result branches/5.1: revert the changes in r2933 The changes in r2933 causes test failure on Linux. More investigation is needed for Windows. Change the followings in innodb-autoinc.result: auto-increment-increment auto-increment-offset back to: auto_increment_increment auto_increment_offset ------------------------------------------------------------------------ r3412 | vasil | 2008-12-05 10:46:18 +0200 (Fri, 05 Dec 2008) | 7 lines Changed paths: M /branches/5.1/trx/trx0undo.c branches/5.1: Add the traditional 2 spaces after the timestamp so the message does not look like: 070223 13:26:01InnoDB: Warning: canno.... ------------------------------------------------------------------------ r3458 | vasil | 2008-12-09 11:21:08 +0200 (Tue, 09 Dec 2008) | 51 lines Changed paths: M /branches/5.1/mysql-test/innodb_bug34300.test branches/5.1: Merge a change from MySQL to fix the failing innodb_bug34300 mysql-test: main.innodb_bug34300 [ fail ] mysqltest: At line 11: query 'SET @@max_allowed_packet=16777216' failed: 1621: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value Aborting: main.innodb_bug34300 failed in default mode. The changeset is this: ------------------------------------------------------------ revno: 2709.1.10 committer: Staale Smedseng branch nick: b22891-51-bugteam timestamp: Thu 2008-11-20 08:51:48 +0100 message: A fix for Bug#22891 "session level max_allowed_packet can be set but is ignored". This patch makes @@session.max_allowed_packed and @@session.net_buffer_length read-only as suggested in the bug report. The user will have to use SET GLOBAL (and reconnect) to alter the session values of these variables. The error string ER_VARIABLE_IS_READONLY is introduced. Tests are modified accordingly. modified: mysql-test/r/func_compress.result mysql-test/r/max_allowed_packet_basic.result mysql-test/r/max_allowed_packet_func.result mysql-test/r/net_buffer_length_basic.result mysql-test/r/packet.result mysql-test/r/union.result mysql-test/r/variables.result mysql-test/t/func_compress.test mysql-test/t/innodb_bug34300.test mysql-test/t/max_allowed_packet_basic.test mysql-test/t/max_allowed_packet_func.test mysql-test/t/net_buffer_length_basic.test mysql-test/t/packet.test mysql-test/t/union.test mysql-test/t/variables.test sql/set_var.cc sql/set_var.h sql/share/errmsg.txt ------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1365 committer: marko timestamp: Tue 2008-12-09 08:31:26 +0000 message: branches/zip: row_purge_remove_sec_if_poss_low(): Allocate mtr_vers from the stack, not with mem_alloc(). ------------------------------------------------------------ revno: 0.3.1364 committer: marko timestamp: Mon 2008-12-08 12:14:01 +0000 message: branches/zip: ibuf_merge_or_delete_for_page(): Remove the redundant checks for ibuf_fixed_addr_page() || fsp_descr_page(). The one at the beginning of the function is enough. ------------------------------------------------------------ revno: 0.3.1363 committer: marko timestamp: Fri 2008-12-05 08:02:54 +0000 message: branches/zip: row_undo_mod_del_mark_or_remove_sec_low(): Do not complain if the record is not found. Explain that this is possible when a deadlock occurs during an update. Heikki investigated this in Issue #134. ------------------------------------------------------------ revno: 0.3.1362 committer: vasil timestamp: Thu 2008-12-04 16:49:24 +0000 message: branches/zip: Revert our temporary fix for Bug#40360 Binlog related errors with binlog off This bug was fixed in MySQL code. Our fix went into r2944 and r2947, but this patch does not entirely revert those revisions because we want to leave the test case that was introduced and also r2944 itself reverted r2935 and r2936. So if we completely revert r2944 and r2947 then we would loose the test and will restore r2935 and r2936. This resolves Issue#108 We should remove ib_bin_log_is_engaged() once mysql add an equivallent, see Bug#40360 ------------------------------------------------------------ revno: 0.3.1361 committer: vasil timestamp: Thu 2008-12-04 16:10:08 +0000 message: branches/zip: Fix Mantis issue#103 mysql_addons.c depends on THD internals - please remove it Use MySQL's thd_get_thread_id() instead of our own ib_thd_get_thread_id() since MySQL implemented the former, see http://bugs.mysql.com/30930. Approved by: Marko (https://svn.innodb.com/rb/r/40, rb://40) ------------------------------------------------------------ revno: 0.3.1360 committer: vasil timestamp: Tue 2008-12-02 11:34:36 +0000 message: branches/zip: Resurrect a ChangeLog entry that I removed in c3331 with a fake date so it does not appear that it has been included in 1.0.2. ------------------------------------------------------------ revno: 0.3.1359 committer: vasil timestamp: Tue 2008-12-02 10:11:54 +0000 message: branches/zip: Now that 1.0.2 is out, the current tree is version 1.0.3. ------------------------------------------------------------ revno: 0.3.1358 committer: vasil timestamp: Tue 2008-12-02 10:09:20 +0000 message: branches/zip: Remove an entry from the ChnageLog for a change that was made before the release of 1.0.2 but was not included in that release. ------------------------------------------------------------ revno: 0.3.1357 committer: vasil timestamp: Tue 2008-12-02 10:03:17 +0000 message: branches/zip: Add entry in the ChangeLog for the release of 1.0.2. ------------------------------------------------------------ revno: 0.3.1356 committer: marko timestamp: Tue 2008-12-02 08:16:05 +0000 message: branches/zip: page_cur_insert_rec_zip(): When allocating insert_buf from the free list, zero out the DB_TRX_ID and DB_ROLL_PTR of the deleted record if the new record would not overwrite these fields. This fixes a harmless content mismatch reported by page_zip_validate() that was reported as Issue #111. rb://55 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.3.1355 committer: marko timestamp: Fri 2008-11-28 14:18:43 +0000 message: branches/zip: row_undo_mod_del_mark_or_remove_sec_low(): Complain if the secondary index entry cannot be found, and this is not an incomplete transaction that is being rolled back in crash recovery. The source code comments were suggested by Heikki. ------------------------------------------------------------ revno: 0.3.1354 committer: vasil timestamp: Thu 2008-11-27 21:33:48 +0000 message: branches/zip: Non-functional change in win-plugin/win-plugin.diff: fix the file name before the diff, this is irrelevant but it is nice to be the same as the file name on the following line. ------------------------------------------------------------ revno: 0.3.1353 committer: vasil timestamp: Thu 2008-11-27 21:31:18 +0000 message: branches/zip: * Remove a change from win-plugin/win-plugin.diff about time_t because MySQL has used VS2005 for building 5.1.30. * Adjust the line numbers so the patch applies cleanly without fuzz and offset messages. Submitted by: Calvin ------------------------------------------------------------ revno: 0.3.1352 committer: vasil timestamp: Thu 2008-11-27 21:26:39 +0000 message: branches/zip: Fix Mantis issue#130 wdl: does not handle 64-bit address - Change the call from strtoul() to strtoull() - Change "%16X" to "%16llx" when scanning preferred load address rb://58 Submitted by: Calvin Approved by: Marko ------------------------------------------------------------ revno: 0.3.1351 committer: marko timestamp: Wed 2008-11-26 08:00:28 +0000 message: branches/zip: row_merge_drop_temp_indexes(): Replace the WHILE 1 with WHILE 1=1 in the SQL procedure, so that the loop will actually be entered and temporary indexes be dropped during crash recovery. Thanks to Sunny Bains for pointing this out. Tested as follows: Set a breakpoint in row_merge_rename_indexes. CREATE TABLE t(a INT)ENGINE=InnoDB; CREATE INDEX a ON t(a); -- The breakpoint will be reached. Kill and restart mysqld. SHOW CREATE TABLE t; -- This shows the MySQL .frm file, without and index. CREATE TABLE innodb_table_monitor(a INT)ENGINE=InnoDB; -- This will dump the InnoDB dictionary to the error log, without the index. ------------------------------------------------------------ revno: 0.3.1350 committer: marko timestamp: Mon 2008-11-24 16:01:42 +0000 message: branches/zip: Note that it is legitimate for a secondary index record not to be found during purge. This tries to address Issue #129. The comments were supplied by Heikki. ------------------------------------------------------------ revno: 0.3.1349 committer: marko timestamp: Fri 2008-11-21 14:36:18 +0000 message: branches/zip: buf_LRU_free_block(): Do not assert on ibuf_count until after it has been determined that the block is not being I/O-fixed. This corrects the mistake that was made in r3177. ------------------------------------------------------------ revno: 0.3.1348 committer: marko timestamp: Fri 2008-11-21 14:24:31 +0000 message: branches/zip: buf_LRU_free_block(), buf_page_try_get_func(): Assert that there is nothing in the insert buffer for the page. This is for tracking down Issue #128. ------------------------------------------------------------ revno: 0.3.1347 committer: marko timestamp: Fri 2008-11-21 08:11:18 +0000 message: branches/zip: dtuple_print(): Dump each field in a separate line, so that the dumps can be read and compared more easily. This is related to the change to rec_print_old() and rec_print_comp() in r3148. ------------------------------------------------------------ revno: 0.3.1346 committer: marko timestamp: Thu 2008-11-20 11:27:27 +0000 message: branches/zip: rec_print_old(), rec_print_comp(): Dump each field in a separate line, so that the dumps can be read and compared more easily. ------------------------------------------------------------ revno: 0.3.1345 committer: marko timestamp: Thu 2008-11-20 10:22:40 +0000 message: branches/zip: Always check for "row too large" when executing SQL to create an index or table. We have to skip this check when loading table definitions from the data dictionary, because we could otherwise refuse to load old tables (even uncompressed ones). This addresses Issue #119. The first "row too large" check was implemented in MySQL 5.0.3 to address MySQL Bug #5682. In the InnoDB Plugin 1.0.2, a more accurate check was implemented in innodb_strict_mode. We now make the check unconditional. dict_create_index_step(): Pass strict=TRUE to dict_index_add_to_cache(). trx_is_strict(), thd_is_strict(): Remove. innodb-zip.test: Test in innodb_strict_mode=OFF. innodb_bug36169.test: Ensure that none of the tables can be created. rb://56 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.3.1344 committer: marko timestamp: Thu 2008-11-20 09:39:49 +0000 message: branches/zip: rec_get_nth_field_offs_old(): Add UNIV_UNLIKELY hints to assertion-like tests. ------------------------------------------------------------ revno: 0.3.1343 committer: marko timestamp: Wed 2008-11-19 14:39:55 +0000 message: branches/zip: buf_LRU_free_block(): Clarify the function comment. ------------------------------------------------------------ revno: 0.3.1342 committer: michael timestamp: Mon 2008-11-17 14:02:01 +0000 message: branches/zip: rb://53 Final version of rb://53, fixes the styling of a comment, makes the definition and the declaration of thd_supports_xa() identical commentwise. ------------------------------------------------------------ revno: 0.3.1341 committer: michael timestamp: Mon 2008-11-17 12:56:56 +0000 message: branches/zip: rb://53 Improve innodb_supports_xa system variable handling and reduces the number of retrievals of the value from MySQL. Approved by: Marko, over IM ------------------------------------------------------------ revno: 0.3.1340 committer: marko timestamp: Wed 2008-11-12 11:52:57 +0000 message: branches/zip: row_vers_impl_x_locked_off_kernel(): Remove compilation warnings about prev_trx_id and vers_del being possibly uninitialized, by handling the case prev_version == NULL in a single if block. rb://45 approved by Inaam Rana. ------------------------------------------------------------ revno: 0.3.1339 committer: marko timestamp: Wed 2008-11-12 10:34:30 +0000 message: branches/zip: dtuple_validate(): When UNIV_DEBUG_VALGRIND is defined, rely solely on the UNIV_MEM_ASSERT_RW() check and disable the for loop that would only cause additional noise. ------------------------------------------------------------ revno: 0.3.1338 committer: marko timestamp: Tue 2008-11-11 07:28:37 +0000 message: branches/zip: ha_innobase::create(): Remove the dependences on DICT_TF_ZSSIZE_MAX, so that the code can be compiled with a different uncompressed page size by redefining UNIV_PAGE_SIZE_SHIFT in univ.i. Currently, the allowed values are 12, 13, or 14 (4k, 8k, 16k). Make the default compressed page size half the uncompressed page size. The previous default was 8 kilobytes, which is the same when compiling with the default 16k uncompressed page size. rb://50 approved by Pekka Lampio and Sunny Bains. ------------------------------------------------------------ revno: 0.3.1337 committer: calvin timestamp: Tue 2008-11-04 10:43:14 +0000 message: branches/zip: windows plugin - fix references to array variables. This problem surfaced when running new test innodb_bug40360.test. Both tx_isolation_names and binlog_format_names are name arrays, and should be defined as wdl_tx_isolation_names and wdl_binlog_format_names, not *wdl_tx_isolation_names and *wdl_binlog_format_names. Another array variable is all_charsets, which is already correctly defined. Approved by: Marko (on IM) ------------------------------------------------------------ revno: 0.3.1336 committer: calvin timestamp: Tue 2008-11-04 07:15:26 +0000 message: branches/zip: ignore the failure when builtin_innobase_plugin is not available. External variable builtin_innobase_plugin is not available when mysqld does not have a builtin InnoDB. The init of the Windows plugin should not fail in this case. Approved by: Marko (on IM) ------------------------------------------------------------ revno: 0.3.1335 committer: marko timestamp: Fri 2008-10-31 12:21:43 +0000 message: branches/zip: scripts/install_innodb_plugins_win.sql: New script, for installing the InnoDB plugins in Windows. Copied from scripts/install_innodb_plugins.sql. ------------------------------------------------------------ revno: 0.3.1334 committer: vasil timestamp: Fri 2008-10-31 09:47:56 +0000 message: branches/zip: White-space cleanup in ChangeLog. ------------------------------------------------------------ revno: 0.3.1333 committer: vasil timestamp: Fri 2008-10-31 09:39:07 +0000 message: branches/zip: Fix Mantis issue#106 plugin init error:InnoDB: stats_on_metadata in static InnoDB (flags=0x2401) differs from stats_on_metadata in dynamic InnoDB (fl Ignore the NOSYSVAR flag in addition to ignoring the READONLY flag. Approved by: Marko (https://svn.innodb.com/rb/r/42/) ------------------------------------------------------------ revno: 0.3.1332 committer: calvin timestamp: Fri 2008-10-31 08:38:26 +0000 message: branches/zip: Windows plugin part of r2944 r2944 has reference to mysql_bin_log.is_open(), which is new in InnoDB. Add two new entries and remove one duplicate in mysqld.def & mysqld_x64.def. ------------------------------------------------------------ revno: 0.3.1331 committer: marko timestamp: Fri 2008-10-31 08:18:47 +0000 message: branches/zip: Revert the unintended change to univ.i that was made in r2943. ------------------------------------------------------------ revno: 0.3.1330 committer: sunny timestamp: Fri 2008-10-31 07:44:45 +0000 message: branches/zip: Update ChangeLog with r2943 info. ------------------------------------------------------------ revno: 0.3.1329 committer: vasil timestamp: Fri 2008-10-31 07:44:16 +0000 message: branches/zip: Revert our temporary fix for "Bug#40360 Binlog related errors with binlog off" (r2935, r2936) and deploy MySQL's one, but put the function mysql_bin_log_is_engaged() inside mysql_addons.cc instead of in mysql's log.cc and use a different name for it so there is no collision when MySQL adds this function in log.cc. [note from the future: the windows part of this patch went into r2947] Approved by: Marko (https://svn.innodb.com/rb/r/41/) ------------------------------------------------------------ revno: 0.3.1328 committer: sunny timestamp: Fri 2008-10-31 07:40:29 +0000 message: branches/zip: 1. We add a vector of locks to trx_t. This array contains the autoinc locks granted to a transaction. There is one per table. 2. We enforce releasing of these locks in the reverse order from the one in which they are acquired. The assumption is that since the AUTOINC locks are statement level locks. Nested statements introduced by triggers are stacked it should hold. There was some cleanup done to the vector code too by adding const and some new functions. Rename dict_table_t::auto_inc_lock to autoinc_lock. Fix Bug#26316 Triggers create duplicate entries on auto-increment columns rb://22 ------------------------------------------------------------ revno: 0.3.1327 committer: vasil timestamp: Thu 2008-10-30 17:34:27 +0000 message: branches/zip: Increment the InnoDB Plugin version from 1.0.1 to 1.0.2. ------------------------------------------------------------ revno: 0.3.1326 committer: marko timestamp: Thu 2008-10-30 10:46:21 +0000 message: branches/zip: ChangeLog, ha_innodb.def: Set svn:eol-style native ------------------------------------------------------------ revno: 0.3.1325 committer: marko timestamp: Thu 2008-10-30 10:38:18 +0000 message: branches/zip: Set svn:eol-style native on some recently added text files. ------------------------------------------------------------ revno: 0.3.1324 committer: vasil timestamp: Thu 2008-10-30 10:33:28 +0000 message: branches/zip: Non-functional change: convert handler/handler0vars.h and handler/win_delay_loader.cc from \r\n (dos) to \n (unix) line terminators. ------------------------------------------------------------ revno: 0.3.1323 committer: vasil timestamp: Thu 2008-10-30 10:28:47 +0000 message: branches/zip: Add ChangeLog entry for Bug#40360 Binlog related errors with binlog off ------------------------------------------------------------ revno: 0.3.1322 committer: vasil timestamp: Thu 2008-10-30 10:24:09 +0000 message: branches/zip: Followup to r2935: add the Windows Delay Loader stuff for the MySQL variable that we are accessing. If someday we have another solution for Bug#40360 Binlog related errors with binlog off then this should also be reverted. ------------------------------------------------------------ revno: 0.3.1321 committer: vasil timestamp: Thu 2008-10-30 10:17:23 +0000 message: branches/zip: Fix "Bug#40360 Binlog related errors with binlog off" in InnoDB code in order to have a Bug#40360-free InnoDB Plugin 1.0.2. The fix does check whether binary logging is enabled in MySQL by accessing the opt_bin_log global variable that is defined in sql/mysqld.cc. In case MySQL does develop another solution to this via Bug#40360 then we can revert this patch (except the mysql-tests). The windows-plugin part of this fix will be committed as a separate commit to ease eventual merge into branches/5.1 [note from the future: the separate commit went into r2936]. Approved by: Marko (https://svn.innodb.com/rb/r/39) ------------------------------------------------------------ revno: 0.3.1320 committer: vasil timestamp: Wed 2008-10-29 20:10:40 +0000 message: branches/zip: Add 2 ChangeLog entries for the 2 bugfixes that were merged from branches/5.1. ------------------------------------------------------------ revno: 0.3.1319 committer: marko timestamp: Wed 2008-10-29 19:39:24 +0000 message: branches/zip: Merge revisions 2854:2929 from branches/5.1, except r2924, which was merged from branches/zip r2866 to branches/5.1 and except r2879 which was merged separately by Calvin: ------------------------------------------------------------------------ r2902 | vasil | 2008-10-28 12:10:25 +0200 (Tue, 28 Oct 2008) | 10 lines branches/5.1: Fix Bug#38189 innodb_stats_on_metadata missing Make the variable innodb_stats_on_metadata visible to the users and also settable at runtime. Previously it was only "visible" as a command line startup option to mysqld. Approved by: Marko (https://svn.innodb.com/rb/r/36) ------------------------------------------------------------------------ r2929 | marko | 2008-10-29 21:26:14 +0200 (Wed, 29 Oct 2008) | 13 lines branches/5.1: dtype_get_sql_null_size(): return the correct storage size of a SQL NULL column. (Bug #40369) When MySQL Bug #20877 was fixed in r834, this function was accidentally modified to return 0 or 1. Apparently, the only impact of this bug is that fixed-length columns cannot be updated in-place from or to SQL NULL, even in ROW_FORMAT=REDUNDANT. After this fix, fixed-length columns in ROW_FORMAT=REDUNDANT will have a constant storage size as they should, no matter if NULL or non-NULL. The bug caused fixed-length NULL columns to occupy 1 byte. rb://37 approved by Heikki over IM. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1318 committer: michael timestamp: Wed 2008-10-29 17:20:10 +0000 message: Remove unnecessary assert Approved by: Heikki, over IM ------------------------------------------------------------ revno: 0.3.1317 committer: marko timestamp: Wed 2008-10-29 09:43:23 +0000 message: branches/zip: ha_innodb.cc: Make some functions static, so that they will not be compiled as weak global symbols. These functions must not be redirected to the built-in InnoDB. ------------------------------------------------------------ revno: 0.3.1316 committer: calvin timestamp: Wed 2008-10-29 08:09:41 +0000 message: branches/zip: change function names in sql/mysqld.def in order to work with 5.1.29-rc. In 5.1.29, the following function names are changed: _hash_init hash_free hash_search hash_delete changed to _my_hash_init my_hash_free my_hash_search my_hash_delete Approved by: Marko (on IM) ------------------------------------------------------------ revno: 0.3.1315 committer: marko timestamp: Wed 2008-10-29 07:52:30 +0000 message: branches/zip: ChangeLog: Mention Bug #27276. ------------------------------------------------------------ revno: 0.3.1314 committer: calvin timestamp: Wed 2008-10-29 06:29:01 +0000 message: branches/zip: fix issue #102 - Windows plugin: resolve dbug functions during run-time. Implement wrapper functions in the plugin. The plugin will get the function entries from mysqld.exe during the init, and invoke the corresponding functions (in mysqld.exe). The list of functions are: _db_pargs_ _db_doprnt_ _db_enter_ _db_return_ _db_dump_ rb://38 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1313 committer: calvin timestamp: Tue 2008-10-28 22:08:11 +0000 message: branches/zip: fix a problem introduced in r2917 - dyn is not initialized. Move the check into for(). ------------------------------------------------------------ revno: 0.3.1312 committer: marko timestamp: Tue 2008-10-28 21:53:23 +0000 message: branches/zip: innodb_plugin_init(): Do not copy session variables, even when the variable is a global variable in the built-in InnoDB. ------------------------------------------------------------ revno: 0.3.1311 committer: vasil timestamp: Tue 2008-10-28 06:40:45 +0000 message: branches/zip: ChangeLog: add entry for the Windows plugin. ------------------------------------------------------------ revno: 0.3.1310 committer: marko timestamp: Tue 2008-10-28 06:36:39 +0000 message: branches/zip: dict_str_starts_with_keyword(): Removed this unused function. Spotted by Sunny. ------------------------------------------------------------ revno: 0.3.1309 committer: calvin timestamp: Mon 2008-10-27 23:51:49 +0000 message: branches/zip: for building dynamic plugin on Windows, ha_innodb.dll, when INNODB_DYNAMIC_PLUGIN is specified. The changes are: CMakeLists.txt: add project ha_innodb for dynamic plugin on Windows. ha_innodb depends on project mysqld. ha_innodb.def: a new file with standard exports for a dynamic plugin. Two new files will be added: * sql/mysqld.def: .def file for 32-bit compiler * sql/mysqld_x64.def: .def file for x64 compiler It is also required to apply a patch to the MySQL source tree. The patch is described in win-plugin/README: win-plugin/win-plugin.diff - a patch to be applied to MySQL source tree. When applied, the following files will be modified: * CMakeLists.txt: add INNODB_DYNAMIC_PLUGIN and _USE_32BIT_TIME_T * sql/CMakeLists.txt: add mysqld.def or mysqld_x64.def for mysqld * win/configure.js: add INNODB_DYNAMIC_PLUGIN * win/build-vs71.bat: provide an option to specify CMAKE_BUILD_TYPE * win/build-vs8.bat: provide an option to specify CMAKE_BUILD_TYPE * win/build-vs8_x64.bat: provide an option to specify CMAKE_BUILD_TYPE ------------------------------------------------------------ revno: 0.3.1308 committer: calvin timestamp: Mon 2008-10-27 20:48:29 +0000 message: branches/zip: implement the delayloading of externals for the plugin on Windows, which includes: * Load mysqld.map and insert all symbol/address pairs into hash for quick access * Resolves all external data variables. The delayloading mechanism in MSVC does not support automatic imports of data variables. A workaround is to explicitly handle the data import using the delay loader during the initialization of the plugin. * Resolves all external functions during run-time, by implementing the delayed loading helper function delayLoadHelper2, which is called by run-time as well as HrLoadAllImportsForDll. The delay loader reuses the hash implementation in InnoDB. The normal hash_create (in hash0hash.c) creates hash tables in buffer pool. But the delay loader is invoked before the engine is initialized, and buffer pools are not ready yet. Instead, the delay loader has its own implementation of hash_create() and hash_table_free(), called wdl_hash_create() and wdl_hash_table_free(). This patch should be used with other two patches in order to build a dynamically linked plugin on Windows: * patch for tmpfile functions (r2886) * patch for "build" files (to be committed) The list of file changed: handler/handler0vars.h: new file, defines a list of external data variables (no external functions). handler/win_delay_loader.cc: new file, the implementation of the delay loader for Windows plugin. handler/ha_innodb.cc: add a header file, and changes for copying the system variables. handler/handler0alter.cc: add a header file handler/i_s.cc: add a header file rb://27 Reviewed by: Sunny, Marko Approved by: Sunny ------------------------------------------------------------ revno: 0.3.1307 committer: calvin timestamp: Mon 2008-10-27 20:39:11 +0000 message: branches/zip: This patch is to solve the issue that file handles can not cross DLL/EXE boundaries on Windows. In builtin InnoDB, it makes call to MySQL server for creating tmp files. innobase_mysql_tmpfile is now rewritten for the plugin. rb://5 Approved by: Marko ------------------------------------------------------------ revno: 0.3.1306 committer: vasil timestamp: Mon 2008-10-27 09:48:46 +0000 message: branches/zip: ChangeLog: Add entry for the fix of Bug#19424 InnoDB: Possibly a memory overrun of the buffer being freed (64-bit Visual C) ------------------------------------------------------------ revno: 0.3.1305 committer: calvin timestamp: Mon 2008-10-27 09:05:42 +0000 message: branches/zip: port the fix of Bug#19424 - InnoDB: Possibly a memory overrun of the buffer being freed with 64-bit Microsoft Visual C++. The changed file: CMakeLists.txt: Removing Win64 compiler optimizations for all innodb/mem/* files. ------------------------------------------------------------ revno: 0.3.1304 committer: vasil timestamp: Fri 2008-10-24 09:48:38 +0000 message: branches/zip: Adjust mysql-test/patches/innodb-index.diff after the change to mysql-test/innodb-index.(test|result) in r2870. ------------------------------------------------------------ revno: 0.3.1303 committer: vasil timestamp: Fri 2008-10-24 09:36:14 +0000 message: branches/zip: Remove a statement that causes the innodb-index test to fail. The change in behavior was introduced in MySQL BZR-r2738. Suggested by: Marko ------------------------------------------------------------ revno: 0.3.1302 committer: vasil timestamp: Fri 2008-10-24 07:14:16 +0000 message: branches/zip: White space cleanup in ChangeLog ------------------------------------------------------------ revno: 0.3.1301 committer: marko timestamp: Fri 2008-10-24 06:24:17 +0000 message: branches/zip: ChangeLog: Document r2763, r2794, r2683, r2799, r2809, r2866. ------------------------------------------------------------ revno: 0.3.1300 committer: marko timestamp: Thu 2008-10-23 19:25:43 +0000 message: branches/zip: ibuf_delete_rec(): When the cursor to the insert buffer record cannot be restored, do not complain if the tablespace does not exist. This fixes Issue #88. ------------------------------------------------------------ revno: 0.3.1299 committer: marko timestamp: Thu 2008-10-23 08:37:42 +0000 message: branches/zip: Non-functional changes: ibuf_get_volume_buffered(): Declare with static linkage. This function is private to ibuf0ibuf.c. btr_cur_pessimistic_delete(): Use the cached result of btr_cur_get_index(cursor). ------------------------------------------------------------ revno: 0.3.1298 committer: marko timestamp: Thu 2008-10-23 08:27:15 +0000 message: branches/zip: Clean up the file format stamping. trx_sys_file_format_max_upgrade(): Rename from trx_sys_file_format_max_update(). Improve the documentation. Add a const qualifier to the parameter "name". Replace the parameter "flags" with "format_id", because this function should deal with file format identifiers, not with table flags. trx_sys_file_format_max_write(), trx_sys_file_format_max_set(): Add a const qualifier to the parameter "name". ha_innodb.cc: Correct the spelling in some comments: "side effect". Remove redundant prototypes for some static callback functions. innodb_file_format_name_update(), innodb_file_format_check_update(): Correct the function signature. Use appropriate pointer type conversions. MYSQL_SYSVAR_STR(file_format), MYSQL_SYSVAR_STR(file_format_check): Remove the type conversions from the callback function pointers. When the function signatures match, no type conversion is needed. The type conversions would only prevent compilation warnings for any mismatch. Approved by Sunny in rb://25. ------------------------------------------------------------ revno: 0.3.1297 committer: vasil timestamp: Thu 2008-10-23 07:33:43 +0000 message: branches/zip: Update the ChangeLog ------------------------------------------------------------ revno: 0.3.1296 committer: sunny timestamp: Thu 2008-10-23 06:24:33 +0000 message: branches/zip: Merge revisions 2852:2854 from branches/5.1: ------------------------------------------------------------------------ r2854 | sunny | 2008-10-23 08:30:32 +0300 (Thu, 23 Oct 2008) | 13 lines Changed paths: M /branches/5.1/dict/dict0dict.c M /branches/5.1/dict/dict0mem.c M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/handler/ha_innodb.h M /branches/5.1/include/dict0dict.h M /branches/5.1/include/dict0mem.h M /branches/5.1/row/row0mysql.c branches/5.1: Backport changes from branches/zip r2725 Simplify the autoinc initialization code. This removes the non-determinism related to reading the table's autoinc value for the first time. This change has also reduced the sizeof dict_table_t by sizeof(ibool) bytes because we don't need the dict_table_t::autoinc_inited field anymore. Bug#39830 Table autoinc value not updated on first insert. Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info Bug#36411 Failed to read auto-increment value from storage engine" in 5.1.24 auto-inc rb://16 ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1295 committer: sunny timestamp: Thu 2008-10-23 06:07:05 +0000 message: Reverting test file changes from r2855 ------------------------------------------------------------ revno: 0.3.1294 committer: sunny timestamp: Thu 2008-10-23 05:29:46 +0000 message: branches/zip: Merge revisions 2837:2852 from branches/5.1: ------------------------------------------------------------------------ r2849 | sunny | 2008-10-22 12:01:18 +0300 (Wed, 22 Oct 2008) | 8 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/row0mysql.h M /branches/5.1/row/row0mysql.c branches/5.1: Return the actual error code encountered when allocating a new autoinc value. The change in behavior (bug) was introduced in 5.1.22 when we introduced the new AUTOINC locking model. rb://31 Bug#40224 New AUTOINC changes mask reporting of deadlock/timeout errors ------------------------------------------------------------------------ r2852 | sunny | 2008-10-23 01:42:24 +0300 (Thu, 23 Oct 2008) | 9 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/handler/ha_innodb.h branches/5.1: Backport r2724 from branches/zip Check column value against the col max value before updating the table's global autoinc counter value. This is part of simplifying the AUTOINC sub-system. We extract the type info from MySQL data structures at runtime. This fixes Bug#37788 InnoDB Plugin: AUTO_INCREMENT wrong for compressed tables ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1293 committer: sunny timestamp: Wed 2008-10-22 21:52:09 +0000 message: branches/zip: Add missing UNIV_INTERN. ------------------------------------------------------------ revno: 0.3.1292 committer: marko timestamp: Wed 2008-10-22 09:52:12 +0000 message: branches/zip: ibuf_insert_to_index_page(): Discard the local variable block. page_cur is always positioned on block, the function parameter. ------------------------------------------------------------ revno: 0.3.1291 committer: marko timestamp: Wed 2008-10-22 06:07:37 +0000 message: branches/zip: page_zip_rec_needs_ext(): Fix a bug that was introduced in the fix of Mantis issue #73. With key_block_size=16, we will also have to check the available space on the uncompressed page. Otherwise, the clustered index record can be almost 16 kilobytes in size, and the undo log record will not fit. ------------------------------------------------------------ revno: 0.3.1290 committer: vasil timestamp: Tue 2008-10-21 08:49:27 +0000 message: branches/zip: Merge 2744:2837 from branches/5.1 (skipping r2782 and r2826): ------------------------------------------------------------------------ r2832 | vasil | 2008-10-21 10:08:30 +0300 (Tue, 21 Oct 2008) | 10 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: In ha_innobase::info(): Replace sql_print_warning() which prints to mysqld error log with push_warning_printf() which sends the error message to the client. Suggested by: Marko, Sunny, Michael Objected by: Inaam ------------------------------------------------------------------------ r2837 | vasil | 2008-10-21 12:07:44 +0300 (Tue, 21 Oct 2008) | 32 lines Changed paths: M /branches/5.1/mysql-test/innodb-semi-consistent.result M /branches/5.1/mysql-test/innodb-semi-consistent.test M /branches/5.1/mysql-test/innodb.result M /branches/5.1/mysql-test/innodb.test branches/5.1: Merge a change from MySQL (this fixes the failing innodb and innodb-semi-consistent tests): revno: 2757 committer: Georgi Kodinov branch nick: B39812-5.1-5.1.29-rc timestamp: Fri 2008-10-03 15:24:19 +0300 message: Bug #39812: Make statement replication default for 5.1 (to match 5.0) Make STMT replication default for 5.1. Add a default of MIXED into the config files Fix the tests that needed MIXED replication mode. modified: mysql-test/include/mix1.inc mysql-test/r/innodb-semi-consistent.result mysql-test/r/innodb.result mysql-test/r/innodb_mysql.result mysql-test/r/tx_isolation_func.result mysql-test/t/innodb-semi-consistent.test mysql-test/t/innodb.test mysql-test/t/tx_isolation_func.test sql/mysqld.cc support-files/my-huge.cnf.sh support-files/my-innodb-heavy-4G.cnf.sh support-files/my-large.cnf.sh support-files/my-medium.cnf.sh support-files/my-small.cnf.sh ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1289 committer: marko timestamp: Tue 2008-10-21 07:04:06 +0000 message: branches/zip: ibuf_insert_low(): Simplify a comparison. ------------------------------------------------------------ revno: 0.3.1288 committer: marko timestamp: Tue 2008-10-21 06:18:57 +0000 message: branches/zip: ibuf_delete_rec(): Add debug assertions suggested by Heikki. ------------------------------------------------------------ revno: 0.3.1287 committer: marko timestamp: Tue 2008-10-21 06:16:45 +0000 message: branches/zip: ibuf_insert_low(): Avoid unnecessarily acquiring and releasing ibuf_mutex. ------------------------------------------------------------ revno: 0.3.1286 committer: vasil timestamp: Mon 2008-10-20 09:41:04 +0000 message: branches/zip: Print the table name via ut_print_name() and add two spaces before InnoDB. Suggested by: Marko ------------------------------------------------------------ revno: 0.3.1285 committer: marko timestamp: Mon 2008-10-20 05:58:01 +0000 message: branches/zip: rec_convert_dtuple_to_rec_comp(): Relax a too tight assertion. Spotted by Sunny. ------------------------------------------------------------ revno: 0.3.1284 committer: vasil timestamp: Thu 2008-10-16 15:57:58 +0000 message: branches/zip: Fix Mantis issue#61: In row_undo_ins_parse_undo_rec(): if we find that a table has no indexes (dict_table_get_first_index() returns NULL) do not try to call trx_undo_rec_get_row_ref() with a NULL pointer because that would lead to a crash. Instead, print a warning and set node->table to NULL just like it is done if the .ibd file is missing. Approved by: Heikki (via IM) ------------------------------------------------------------ revno: 0.3.1283 committer: marko timestamp: Thu 2008-10-16 05:41:13 +0000 message: branches/zip: Skip the undo log size check on REDUNDANT and COMPACT tables. In ROW_FORMAT=DYNAMIC and ROW_FORMAT=COMPRESSED, column prefix indexes require that prefixes of externally stored columns be written to the undo log. This may make the undo log record bigger than the record on the B-tree page. The maximum size of an undo log record is the page size. That must be checked for, in dict_index_add_to_cache(). dict_index_add_to_cache(): Skip the undo log size check for REDUNDANT and COMPACT tables. These tables store prefixes of externally stored columns locally within the clustered index record. There are no special considerations for the undo log record size. innodb-index.test: Ensure that the check exists for ROW_FORMAT=DYNAMIC, but not for ROW_FORMAT=COMPACT. This fixes issue #99. rb://28 approved by Sunny. ------------------------------------------------------------ revno: 0.3.1282 committer: marko timestamp: Wed 2008-10-15 10:27:42 +0000 message: branches/zip: When the server crashes while freeing an externally stored column of a compressed table, the BTR_EXTERN_LEN field in the BLOB pointer will be written as 0. Tolerate this in the functions that deal with externally stored columns. This fixes Issue #80 and was posted at rb://26. Note that the clustered index record is always deleted or purged last, after any secondary index records referring to it have been deleted. btr_free_externally_stored_field(): On an uncompressed table, zero out the BTR_EXTERN_LEN, so that half-deleted BLOBs can be detected after crash recovery. btr_copy_externally_stored_field_prefix(): Return 0 if the BLOB has been half-deleted. row_upd_ext_fetch(): Assert that the externally stored column exists. row_ext_cache_fill(): Allow btr_copy_externally_stored_field_prefix() to return 0. row_sel_sec_rec_is_for_blob(): Return FALSE if the BLOB has been half-deleted. This is correct, because the clustered index record would have been deleted or purged last, after any secondary index records referring to it had been deleted. ------------------------------------------------------------ revno: 0.3.1281 committer: marko timestamp: Wed 2008-10-15 09:21:54 +0000 message: branches/zip: Introduce UNIV_ZIP_COPY for invoking page_zip_copy_recs() more often in B-tree operations. ------------------------------------------------------------ revno: 0.3.1280 committer: marko timestamp: Wed 2008-10-15 06:32:40 +0000 message: branches/zip: When invoking page_zip_copy_recs(), update the lock table and the adaptive hash index. This should fix Issue #95 and Issue #87. page_zip_copy_recs(): Copy PAGE_MAX_TRX_ID as well, to have similar behavior to page_copy_rec_list_start() and page_copy_rec_list_end(). btr_root_raise_and_insert(), btr_page_split_and_insert(), btr_lift_page_up(): Update the lock table and the adaptive hash index. ------------------------------------------------------------ revno: 0.3.1279 committer: marko timestamp: Wed 2008-10-15 06:00:06 +0000 message: branches/zip: row_create_table_for_mysql(), row_create_index_for_mysql(): Note that the dictionary object will be freed. ------------------------------------------------------------ revno: 0.3.1278 committer: calvin timestamp: Tue 2008-10-14 15:19:41 +0000 message: branches/zip: fix compiler warning Change the definition of add_on from ulint to ullint, to eliminate the warning in .\btr\btr0cur.c: conversion from 'ullint' to 'ulint', possible loss of data Approved by: Heikki (on IM) ------------------------------------------------------------ revno: 0.3.1277 committer: calvin timestamp: Tue 2008-10-14 15:14:47 +0000 message: branches/zip: fix Mantis issue #96 Problem compiling ha_innodb.cc on 64-bit Windows Change the definition of srv_replication_delay from ulint to ulong. ulint is 64-bit on Win64. Approved by: Heikki (on IM) ------------------------------------------------------------ revno: 0.3.1276 committer: marko timestamp: Mon 2008-10-13 18:29:12 +0000 message: branches/zip: page_cur_delete_rec(): Remove the bogus page_zip_validate_low() assertion that was added in r2781 and explain why it was bogus. ------------------------------------------------------------ revno: 0.3.1275 committer: marko timestamp: Mon 2008-10-13 17:35:30 +0000 message: branches/zip: Add missing NULL check to the assertion added in r2781. ------------------------------------------------------------ revno: 0.3.1274 committer: vasil timestamp: Mon 2008-10-13 14:34:34 +0000 message: branches/zip: Remove mysql-test/patches/bug37312.diff because MySQL "fixed" Bug#37312 by removing the test. http://bugs.mysql.com/37312 http://lists.mysql.com/commits/54462 ------------------------------------------------------------ revno: 0.3.1273 committer: marko timestamp: Mon 2008-10-13 09:40:57 +0000 message: branches/zip: page_cur_delete_rec(): Call page_zip_validate_low(). ------------------------------------------------------------ revno: 0.3.1272 committer: marko timestamp: Sat 2008-10-11 18:58:47 +0000 message: branches/zip: row_merge_rename_indexes(): Add a missing semicolon that was forgotten when splitting a ut_ad() assertion in r2763. ------------------------------------------------------------ revno: 0.3.1271 committer: vasil timestamp: Sat 2008-10-11 18:19:04 +0000 message: branches/zip: Remove mysql-test/patches/bug31231.diff since this patch hit the MySQL repository. ------------------------------------------------------------ revno: 0.3.1270 committer: marko timestamp: Fri 2008-10-10 11:44:27 +0000 message: branches/zip: Fix some locking issues, mainly in fast index creation. This should hopefully address Issue #85. ha_innobase::add_index(): Lock the data dictionary before invoking row_merge_rename_indexes() or row_merge_drop_indexes(), because neither function will commit the transaction. ha_innobase::final_drop_index(): Commit the transactions before unlocking the data dictionary. row_merge_drop_index(), row_merge_drop_indexes(), row_merge_rename_tables(), row_merge_rename_indexes(): Note and assert that the data dictionary must have been exclusively locked by the caller, because the transaction will not be committed. row_drop_database_for_mysql(): Commit the transaction immediately after dropping each table. When MySQL is holding open handles to some tables, it can otherwise occur than the data dictionary is unlocked while the transaction has not been committed. This bug was introduced in r2739, which changed the semantics of row_drop_table_for_mysql(). row_drop_database_for_mysql(): Postpone mem_free(table_name), so that an error printout will not dereference freed memory. ------------------------------------------------------------ revno: 0.3.1269 committer: marko timestamp: Thu 2008-10-09 08:48:58 +0000 message: branches/zip: Merge revisions 2722:2744 from branches/5.1: ------------------------------------------------------------------------ r2742 | inaam | 2008-10-08 22:02:15 +0300 (Wed, 08 Oct 2008) | 11 lines branches/5.1: Fix Bug#39939 DROP TABLE/DISCARD TABLESPACE takes long time in buf_LRU_invalidate_tablespace() Improve implementation of buf_LRU_invalidate_tablespace by attempting hash index drop in batches instead of doing it one by one. Reviewed by: Heikki, Sunny, Marko Approved by: Heikki ------------------------------------------------------------------------ r2744 | marko | 2008-10-09 10:53:09 +0300 (Thu, 09 Oct 2008) | 5 lines branches/5.1: ha_innobase::delete_all_rows(): In response to a user asking why DELETE FROM t is not mapped to TRUNCATE TABLE t as it is in MyISAM, note in a comment that DELETE is transactional while TRUNCATE is not. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1268 committer: marko timestamp: Wed 2008-10-08 10:39:45 +0000 message: branches/zip: mysql-test/patches/innodb_file_per_table.diff: @@GLOBAL.innodb_file_per_table can be 0 or 1, while SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_file_per_table' can be 'OFF' or 'ON'. For some reason, MySQL evaluates (0 = 'OFF') to 1 and (1 = 'ON') to 0. Thus, the test would fail if innodb_file_per_table is set. ------------------------------------------------------------ revno: 0.3.1267 committer: marko timestamp: Wed 2008-10-08 09:55:48 +0000 message: branches/zip: page_copy_rec_list_end(): Remove the call page_zip_validate_low(new_page_zip, new_page, TRUE) because it would cause bogus failures in btr_compress(), as noted in Issue #79. ------------------------------------------------------------ revno: 0.3.1266 committer: marko timestamp: Wed 2008-10-08 08:54:16 +0000 message: branches/zip: Do not release the data dictionary latch while holding locks to the data dictionary records. This should fix Issue #83. row_drop_table_for_mysql_no_commit(): Rename back to row_drop_table_for_mysql(). Commit the transaction if the data dictionary was not locked when the function was called. Otherwise, neither commit the transaction nor unlock the data dictionary. row_merge_drop_table(): Let row_drop_table_for_mysql() take care of locking the data dictionary. dict_create_or_check_foreign_constraint_tables(), trx_rollback_active(), row_create_table_for_mysql(), row_create_index_for_mysql(), row_table_add_foreign_constraints(): Explicitly commit the transaction, because row_drop_table_for_mysql() would no longer commit it, given that the data dictionary will be locked during the calls. Approved by Sunny (over IM). rb://23 ------------------------------------------------------------ revno: 0.3.1265 committer: marko timestamp: Tue 2008-10-07 12:51:32 +0000 message: branches/zip: Improve page_zip_validate() instrumentation. btr_lift_page_up(): Invoke page_zip_validate() on every page whose level is adjusted. btr_compress(): Invoke page_zip_validate() on merge_page at the end. page_zip_copy_recs(): Relax the page_zip_validate(...) to page_zip_validate_low(..., sloppy = TRUE) to avoid bogus assertion failures. page_copy_rec_list_end(), page_delete_rec_list_start(): Invoke page_zip_validate_low(sloppy = TRUE). ------------------------------------------------------------ revno: 0.3.1264 committer: marko timestamp: Tue 2008-10-07 10:28:45 +0000 message: branches/zip: mysql-test/patches/information_schema.diff: Add patches to other mysql-test results that fail because of the added INFORMATION_SCHEMA tables: information_schema_db.result, mysqlshow.result. ------------------------------------------------------------ revno: 0.3.1263 committer: vasil timestamp: Tue 2008-10-07 08:41:42 +0000 message: branches/zip: Rename type_bit_innodb.diff to bug32625.diff since an equivalent patch has been submitted to MySQL as Bug#32625 Make test type_bit_innodb more robust. ------------------------------------------------------------ revno: 0.3.1262 committer: marko timestamp: Tue 2008-10-07 08:06:17 +0000 message: branches/zip: Add some more patches to mysql-test. type_bit_innodb.diff: Ignore the reported duplicate value. The reported value depends on the internal workings of the merge sort in fast index creation. In the built-in InnoDB of MySQL 5.1, the records are copied to a new temporary table in the order they were selected from the original table. information_schema.diff: Account for the INFORMATION_SCHEMA tables that were added in the InnoDB plugin. innodb_file_per_table.diff: In the InnoDB plugin, innodb_file_per_table is a settable global variable. ------------------------------------------------------------ revno: 0.3.1261 committer: marko timestamp: Tue 2008-10-07 07:24:33 +0000 message: branches/zip: Patch the mysql-test suite, so that it will not fail because innodb_lock_wait_timeout is a settable session variable as of r2716. mysql-test/patches/innodb_lock_wait_timeout.diff: New file. ------------------------------------------------------------ revno: 0.3.1260 committer: calvin timestamp: Tue 2008-10-07 06:16:39 +0000 message: Delete the recently added files from MySQL source tree, for Windows plugin. Instead, we will commit diff only. ------------------------------------------------------------ revno: 0.3.1259 committer: marko timestamp: Mon 2008-10-06 12:26:27 +0000 message: branches/zip: Improve the diagnostics of issue #79. page_zip_fail_func(): Display the timestamp. page_zip_validate_low(): Display information about ignored min_rec_flag differences. ------------------------------------------------------------ revno: 0.3.1258 committer: marko timestamp: Mon 2008-10-06 07:13:52 +0000 message: branches/zip: Relax the page_zip_validate() check during crash recovery: ignore intermittent differences in the "predefined minimum record" flag. page_zip_validate_low(): Renamed from page_zip_validate(), with an additional parameter: ibool sloppy. Ignore REC_INFO_MIN_REC_FLAG when sloppy == TRUE. page_zip_validate(): Wrapper for page_zip_validate_low(). Pass sloppy = recv_recovery_is_on(). recv_recover_page(): After applying the changes from the redo log to a compressed B-tree page, invoke page_zip_validate_low() in strict mode. ------------------------------------------------------------ revno: 0.3.1257 committer: vasil timestamp: Mon 2008-10-06 07:00:19 +0000 message: branches/zip: Add more ChangeLog entries from the merge of 2702:2722 from branches/5.1 (r2723). ------------------------------------------------------------ revno: 0.3.1256 committer: vasil timestamp: Mon 2008-10-06 06:52:37 +0000 message: branches/zip: Add entry for Bug#37788 InnoDB Plugin: AUTO_INCREMENT wrong for compressed tables in the ChangeLog ------------------------------------------------------------ revno: 0.3.1255 committer: vasil timestamp: Mon 2008-10-06 06:14:04 +0000 message: branches/zip: Add entry for Bug#39830 Table autoinc value not updated on first insert in the ChangeLog. ------------------------------------------------------------ revno: 0.3.1254 committer: sunny timestamp: Sun 2008-10-05 23:44:30 +0000 message: branches/zip: Check for autoinc next value overflow explicitly when offset is > 1. This is safer and easier to understand. ------------------------------------------------------------ revno: 0.3.1253 committer: sunny timestamp: Sat 2008-10-04 06:34:54 +0000 message: branches/zip: Fix the handler class method return type. Change ulong to ulint so that it conforms to InnoDB's internal error/return code type. ------------------------------------------------------------ revno: 0.3.1252 committer: sunny timestamp: Sat 2008-10-04 06:24:56 +0000 message: branches/zip: Simplify the autoinc initialization code. This removes the non-determinism related to reading the table's autoinc value for the first time. This change has also reduced the sizeof dict_table_t by sizeof(ibool) bytes because we don't need the dict_table_t::autoinc_inited field anymore. This also fixes Bug#39830 Table autoinc value not updated on first insert. rb://16 ------------------------------------------------------------ revno: 0.3.1251 committer: sunny timestamp: Sat 2008-10-04 03:47:18 +0000 message: branches/zip: Check column value against the col max value before updating the table's global autoinc counter value. This is part of simplifying the AUTOINC sub-system. We extract the type info from MySQL data structures at runtime. This fixes Bug#37788 InnoDB Plugin: AUTO_INCREMENT wrong for compressed tables ------------------------------------------------------------ revno: 0.3.1250 committer: sunny timestamp: Sat 2008-10-04 03:22:36 +0000 message: branches/zip: Merge revisions 2702:2722 from branches/5.1: ------------------------------------------------------------------------ r2702 | sunny | 2008-09-30 11:41:56 +0300 (Tue, 30 Sep 2008) | 13 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Since handler::get_auto_increment() doesn't allow us to return the cause of failure we have to inform MySQL using the sql_print_warning() function to return the cause for autoinc failure. Previously we simply printed the error code, this patch prints the text string representing the following two error codes: DB_LOCK_WAIT_TIMEOUT DB_DEADLOCK. Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info Approved by Marko. ------------------------------------------------------------------------ r2709 | vasil | 2008-10-01 10:13:13 +0300 (Wed, 01 Oct 2008) | 10 lines Changed paths: M /branches/5.1/include/lock0lock.h M /branches/5.1/lock/lock0lock.c A /branches/5.1/mysql-test/innodb_bug38231.result A /branches/5.1/mysql-test/innodb_bug38231.test M /branches/5.1/row/row0mysql.c branches/5.1: Fix Bug#38231 Innodb crash in lock_reset_all_on_table() on TRUNCATE + LOCK / UNLOCK In TRUNCATE TABLE and discard tablespace: do not remove table-level S and X locks and do not assert on such locks not being wait locks. Leave such locks alone. Approved by: Heikki (rb://14) ------------------------------------------------------------------------ r2710 | vasil | 2008-10-01 14:13:58 +0300 (Wed, 01 Oct 2008) | 6 lines Changed paths: M /branches/5.1/include/sync0sync.ic branches/5.1: Silence a compilation warning in UNIV_DEBUG. Approved by: Marko (via IM) ------------------------------------------------------------------------ r2719 | vasil | 2008-10-03 18:17:28 +0300 (Fri, 03 Oct 2008) | 49 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc A /branches/5.1/mysql-test/innodb_bug39438-master.opt A /branches/5.1/mysql-test/innodb_bug39438.result A /branches/5.1/mysql-test/innodb_bug39438.test branches/5.1: Fix Bug#39438 Testcase for Bug#39436 crashes on 5.1 in fil_space_get_latch In ha_innobase::info() - do not try to get the free space for a tablespace which has been discarded with ALTER TABLE ... DISCARD TABLESPACE or if the .ibd file is missing for some other reason. ibd_file_missing and tablespace_discarded are manipulated only in row_discard_tablespace_for_mysql() and in row_import_tablespace_for_mysql() and the manipulation is protected/surrounded by row_mysql_lock_data_dictionary()/row_mysql_unlock_data_dictionary() thus we do the same in ha_innobase::info() when checking the values of those members to avoid race conditions. I have tested the code-path with UNIV_DEBUG and UNIV_SYNC_DEBUG. Looks like it is not possible to avoid mysqld printing warnings in the mysql-test case and thus this test innodb_bug39438 must be added to the list of exceptional test cases that are allowed to print warnings. For this, the following patch must be applied to the mysql source tree: --- cut --- === modified file 'mysql-test/lib/mtr_report.pl' --- mysql-test/lib/mtr_report.pl 2008-08-12 10:26:23 +0000 +++ mysql-test/lib/mtr_report.pl 2008-10-01 11:57:41 +0000 @@ -412,7 +412,10 @@ # When trying to set lower_case_table_names = 2 # on a case sensitive file system. Bug#37402. - /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./ + /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./ or + + # this test is expected to print warnings + ($testname eq 'main.innodb_bug39438') ) { next; # Skip these lines --- cut --- The mysql-test is currently somewhat disabled (see inside innodb_bug39438.test), after the above patch has been applied to the mysql source tree, the test can be enabled. rb://20 Reviewed by: Inaam, Calvin Approved by: Heikki ------------------------------------------------------------------------ r2720 | vasil | 2008-10-03 19:52:39 +0300 (Fri, 03 Oct 2008) | 8 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Print a warning if an attempt is made to get the free space for a table whose .ibd file is missing or the tablespace has been discarded. This is a followup to r2719. Suggested by: Inaam ------------------------------------------------------------------------ r2721 | sunny | 2008-10-04 02:08:23 +0300 (Sat, 04 Oct 2008) | 6 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: We need to send the messages to the client because handler::get_auto_increment() doesn't allow a way to return the specific error for why it failed. rb://18 ------------------------------------------------------------------------ r2722 | sunny | 2008-10-04 02:48:04 +0300 (Sat, 04 Oct 2008) | 18 lines Changed paths: M /branches/5.1/dict/dict0mem.c M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/dict0mem.h M /branches/5.1/include/row0mysql.h M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test M /branches/5.1/row/row0mysql.c branches/5.1: This bug has always existed but was masked by other errors. The fix for bug# 38839 triggered this bug. When the offset and increment are > 1 we need to calculate the next value taking into consideration the two variables. Previously we simply assumed they were 1 particularly offset was never used. MySQL does its own calculation and that's probably why it seemed to work in the past. We would return what we thought was the correct next value and then MySQL would recalculate the actual value from that and return it to the caller (e.g., handler::write_row()). Several new tests have been added that try and catch some edge cases. The tests exposed a wrap around error in MySQL next value calculation which was filed as bug#39828. The tests will need to be updated once MySQL fix that bug. One good side effect of this fix is that dict_table_t size has been reduced by 8 bytes because we have moved the autoinc_increment field to the row_prebuilt_t structure. See review-board for a detailed discussion. rb://3 ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1249 committer: vasil timestamp: Fri 2008-10-03 10:31:53 +0000 message: branches/zip: ChangeLog: Use "Fix Bug#NNNNN bug summary text" for bugfixes, as for other entries in the file. ------------------------------------------------------------ revno: 0.3.1248 committer: marko timestamp: Fri 2008-10-03 09:43:35 +0000 message: branches/zip: innodb-index.test: Make the pattern for temporary table names more generic. The previous pattern could fail if other test cases were run before this one. Since r2716, the MySQL server is not restarted for this test. ------------------------------------------------------------ revno: 0.3.1247 committer: marko timestamp: Fri 2008-10-03 09:24:23 +0000 message: branches/zip: Make innodb_lock_wait_timeout a settable session variable (Bug #36285, rb://9). innodb-index.test, innodb-index.result: Set innodb_lock_wait_timeout as a session variable instead of relying on the global value. innodb-index-master.opt: Remove. innodb-timeout.test: Test that setting the innodb_lock_wait_timeout works as advertised. thd_lock_wait_timeout(): New function, to retrieve the lock wait timeout for a given MySQL client connection (thd), or the global value (thd==NULL). srv_lock_wait_timeout, innobase_lock_wait_timeout: Remove. Replace MYSQL_SYSVAR_LONG(lock_wait_timeout) with MYSQL_THDVAR_ULONG(lock_wait_timeout). ------------------------------------------------------------ revno: 0.3.1246 committer: marko timestamp: Wed 2008-10-01 19:04:44 +0000 message: branches/zip: page_mem_free(): Remove the obsolete remark that there should be space left in the modification log of the compressed page. Record deletion does not require any space in the modification log. ------------------------------------------------------------ revno: 0.3.1245 committer: marko timestamp: Wed 2008-10-01 19:03:45 +0000 message: branches/zip: page_zip_validate(): On page header mismatch, dump the data structures. This was forgotten in r2698. ------------------------------------------------------------ revno: 0.3.1244 committer: marko timestamp: Wed 2008-10-01 05:37:35 +0000 message: branches/zip: Merge revisions 2630:2702 from branches/5.1: ------------------------------------------------------------------------ r2702 | sunny | 2008-09-30 11:41:56 +0300 (Tue, 30 Sep 2008) | 13 lines branches/5.1: Since handler::get_auto_increment() doesn't allow us to return the cause of failure we have to inform MySQL using the sql_print_warning() function to return the cause for autoinc failure. Previously we simply printed the error code, this patch prints the text string representing the following two error codes: DB_LOCK_WAIT_TIMEOUT DB_DEADLOCK. Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info Approved by Marko. ------------------------------------------------------------------------ rb://18 ------------------------------------------------------------ revno: 0.3.1243 committer: vasil timestamp: Tue 2008-09-30 15:26:38 +0000 message: branches/zip: Change the patch to fix the failing mysql-test index_merge_innodb. The previous variant is inappropriate because myisam results are different (2 instead of 4) and then the index_merge_myisam test fails. ------------------------------------------------------------ revno: 0.3.1242 committer: marko timestamp: Mon 2008-09-29 10:26:41 +0000 message: branches/zip: page_zip_validate(): Explain how the v-bits can be viewed. ------------------------------------------------------------ revno: 0.3.1241 committer: marko timestamp: Mon 2008-09-29 08:26:42 +0000 message: branches/zip: page_zip_validate(): On failure, dump all data structures. page_zip_hexdump_func(): New function, to dump a block of data. ut_print_buf() would dump everything on a single line, which is hard to read. page_zip_hexdump(): Wrapper macro for page_zip_hexdump_func(). page_zip_validate(): dump page_zip, page_zip->data, page, temp_page if !valid. ------------------------------------------------------------ revno: 0.3.1240 committer: marko timestamp: Mon 2008-09-29 07:40:02 +0000 message: branches/zip: btr_cur_optimistic_insert(): Correct an error that was made in r2631. Include the node pointer field in the size calculation. rec_get_converted_size_comp_prefix(): New function, to compute the storage size of the prefix of an ordinary record in COMPACT format. rec_get_converted_size_comp(): Use rec_get_converted_size_comp_prefix(). ------------------------------------------------------------ revno: 0.3.1239 committer: vasil timestamp: Fri 2008-09-26 10:50:05 +0000 message: branches/zip: Add a patch to fix the failing mysql-test index_merge_innodb. The test started failing after an optimization, made in r2625, which results in a different number of rows being returned by EXPLAIN. ------------------------------------------------------------ revno: 0.3.1238 committer: vasil timestamp: Fri 2008-09-26 09:40:30 +0000 message: branches/zip: Fix typos in mysql-test/patches/README. ------------------------------------------------------------ revno: 0.3.1237 committer: marko timestamp: Fri 2008-09-26 09:09:43 +0000 message: branches/zip: fsp0fsp.c: Revert r2681 in a sense, by turning the ut_a() assertions into ut_ad() assertions. ------------------------------------------------------------ revno: 0.3.1236 committer: calvin timestamp: Fri 2008-09-26 06:42:48 +0000 message: branches/zip: add MySQL files that will be changed for Windows plugin. The following files are from MySQL source tree without any changes. They will be changed for building Windows plugin. The original files will be used as the base for diff purpose. * CMakeLists.txt * sql/CMakeLists.txt * win/configure.js ------------------------------------------------------------ revno: 0.3.1235 committer: marko timestamp: Thu 2008-09-25 12:17:52 +0000 message: branches/zip: Non-functional change: page_zip_copy_recs(): Rename from page_zip_copy(). Update the function comment. ------------------------------------------------------------ revno: 0.3.1234 committer: marko timestamp: Thu 2008-09-25 09:14:27 +0000 message: branches/zip: thd_is_strict(): Add missing UNIV_INTERN qualifier as well. ------------------------------------------------------------ revno: 0.3.1233 committer: marko timestamp: Thu 2008-09-25 08:15:18 +0000 message: branches/zip: thd_is_strict(): Add missing extern "C" qualifier. ------------------------------------------------------------ revno: 0.3.1232 committer: marko timestamp: Thu 2008-09-25 06:29:08 +0000 message: branches/zip: page_zip_copy(): Skip PAGE_MAX_TRX_ID, because page_copy_rec_list_end(), page_copy_rec_list_start() and friends do not copy it either. ------------------------------------------------------------ revno: 0.3.1231 committer: marko timestamp: Thu 2008-09-25 06:15:36 +0000 message: branches/zip: page_zip_copy(): Copy only those B-tree page header fields that are related to the records stored in the page. page_zip_copy() is a fall-back method in certain B-tree operations (tree compression, splitting or merging nodes). The contents of a page may fit in the compressed page frame when it has been modified in a certain sequence, but not when the page is recompressed. Sometimes, copying all or part of the records to an empty page could fail because of compression overflow. In such cases, we copy the compressed and uncompressed pages bit for bit and delete any unwanted records from the copy. (Deletion is guaranteed to succeed.) The method page_zip_copy() is invoked very rarely. In one case, page_zip_copy() was called in btr_lift_page_up() to move the records to the root page of the B-tree. Because page_zip_copy() copied all B-tree page header fields, it overwrote the file segment header fields PAGE_BTR_SEG_LEAF and PAGE_BTR_SEG_TOP. This is the probable cause of the corruption that was reported as Mantis issue #63 and others. ------------------------------------------------------------ revno: 0.3.1230 committer: marko timestamp: Wed 2008-09-24 18:29:19 +0000 message: branches/zip: fsp0fsp.c: Turn some ut_ad() assertions to ut_a() and add some ut_a() assertions to track down file space header corruption that is the probable cause of Mantis issue #63. ------------------------------------------------------------ revno: 0.3.1229 committer: marko timestamp: Wed 2008-09-24 10:47:45 +0000 message: branches/zip: row_undo_mod_del_unmark_sec_and_undo_update(): Return earlier when this function is called on an index that is being created. Luckily, mtr_start() does not allocate any resources. Thus, there was no memory leak. ------------------------------------------------------------ revno: 0.3.1228 committer: marko timestamp: Wed 2008-09-24 09:39:48 +0000 message: branches/zip: row_purge_remove_sec_if_poss_low(): Add a const qualifier. ------------------------------------------------------------ revno: 0.3.1227 committer: marko timestamp: Wed 2008-09-24 09:30:32 +0000 message: branches/zip: ibuf_merge_or_delete_for_page(): Check that the changes would be merged to a leaf page. ------------------------------------------------------------ revno: 0.3.1226 committer: marko timestamp: Wed 2008-09-24 08:31:29 +0000 message: branches/zip: Do not invoke btr_root_fseg_validate() on the insert buffer B-tree, because there are no file segment headers in the insert buffer B-tree root page. The function was introduced in r2627. ------------------------------------------------------------ revno: 0.3.1225 committer: calvin timestamp: Mon 2008-09-22 08:14:01 +0000 message: branches/zip: Update the ChangeLog with the fix of memory leak on Windows. ------------------------------------------------------------ revno: 0.3.1224 committer: marko timestamp: Mon 2008-09-22 06:59:58 +0000 message: branches/zip: Non-functional change: buf_block_dbg_add_level(block, level): Define as an empty macro when UNIV_SYNC_DEBUG is not defined. Remove #ifdef UNIV_SYNC_DEBUG around all invocations. ------------------------------------------------------------ revno: 0.3.1223 committer: marko timestamp: Mon 2008-09-22 06:43:28 +0000 message: branches/zip: fil_io(): Simplify an "else if" condition by reordering conditions. ------------------------------------------------------------ revno: 0.3.1222 committer: marko timestamp: Mon 2008-09-22 06:41:03 +0000 message: branches/zip: fil_io(): Remove an unnecessary #ifdef UNIV_SYNC_DEBUG around a debug assertion. ------------------------------------------------------------ revno: 0.3.1221 committer: calvin timestamp: Fri 2008-09-19 14:46:46 +0000 message: branches/zip: fix Mantis issue #74 Memory leak on Windows The memory leak was due to wrong parameters passed into VirtualFree() call. So, the call fails with Windows error 87. MEM_DECOMMIT can NOT be used along with MEM_RELEASE. And if the parameter is MEM_RELEASE, the size parameter must be 0. The function frees the entire region that is reserved in the initial allocation call to VirtualAlloc. This issue was introduced by r984. Approved by: Heikki (on IM) ------------------------------------------------------------ revno: 0.3.1220 committer: marko timestamp: Thu 2008-09-18 13:14:29 +0000 message: branches/zip: Map current_thd to NULL in the Windows plugin, and use ha_thd() whenever possible. EQ_CURRENT_THD(thd): New predicate, for use in assertions. innobase_drop_database(): Tolerate current_thd == NULL, so that the Windows plugin will work. In the Windows plugin, it will be impossible to skip foreign key checks in this function. However, DROP DATABASE will drop each table (that MySQL knows about) individually before calling this function. Thus, the foreign key checks can be disabled also in the Windows plugin, unless some .frm files are missing. ------------------------------------------------------------ revno: 0.3.1219 committer: marko timestamp: Thu 2008-09-18 12:31:17 +0000 message: branches/zip: When creating an index in innodb_strict_mode, check that the maximum record size will never exceed the B-tree page size limit. For uncompressed tables, there should always be enough space for two records in an empty B-tree page. For compressed tables, there should be enough space for storing two node pointer records or one data record in an empty page in uncompressed format. dict_build_table_def_step(): Remove the inaccurate check for table row size. dict_index_too_big_for_tree(): New function: check if the index records would be too big for a B-tree page. dict_index_add_to_cache(): Add the parameter "strict". Invoke dict_index_too_big_for_tree() if it is set. trx_is_strict(), thd_is_strict(): New functions, for determining if innodb_strict_mode is enabled for the current transaction. dict_create_index_step(): Pass the new parameter strict of dict_index_add_to_cache() as trx_is_strict(trx). All other callers pass it as FALSE. innodb.test: Enable innodb_strict_mode before attempting to create a table with a too big record size. innodb-zip.test: Remove the test of inserting random data. Add tests for checking that the maximum record lengths are enforced at table creation time. ------------------------------------------------------------ revno: 0.3.1218 committer: marko timestamp: Thu 2008-09-18 06:10:49 +0000 message: branches/zip: btr_cur_del_unmark_for_ibuf(): Correct the function comment. ------------------------------------------------------------ revno: 0.3.1217 committer: marko timestamp: Thu 2008-09-18 06:10:12 +0000 message: branches/zip: Apply some white-space changes from branches/innodb+. ------------------------------------------------------------ revno: 0.3.1216 committer: marko timestamp: Thu 2008-09-18 06:07:42 +0000 message: branches/zip: ChangeLog: Remove reference to Mantis. This file is for the general public, and Mantis is for our internal use only. Thanks to Vasil for pointing this out. ------------------------------------------------------------ revno: 0.3.1215 committer: marko timestamp: Wed 2008-09-17 10:54:28 +0000 message: branches/zip: Merge r2617:r2630 from branches/5.1: bug#39483 InnoDB hang on adaptive hash because of out of order ::open() call by MySQL Forward port of r2629 Under some conditions MySQL calls ::open with search_latch leading to a deadlock as we try to acquire dict_sys->mutex inside ::open breaking the latching order. The fix is to release search_latch. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.3.1214 committer: marko timestamp: Wed 2008-09-17 10:07:36 +0000 message: branches/zip: innobase_convert_from_id(), innobase_convert_from_table_id(): Add the parameter struct charset_info_st* cs, so that the call thd_charset(current_thd) can be avoided. The macro current_thd has no defined value in the Windows plugin. ------------------------------------------------------------ revno: 0.3.1213 committer: marko timestamp: Wed 2008-09-17 10:03:43 +0000 message: branches/zip: Non-functional change: Move the declarations of the functions innobase_convert_from_table_id(), innobase_convert_from_id(), innobase_casedn_str(), and innobase_get_charset() to ha_prototypes.h. ------------------------------------------------------------ revno: 0.3.1212 committer: marko timestamp: Wed 2008-09-17 09:50:28 +0000 message: branches/zip: HASH_INSERT: Add a type conversion that is needed to keep the Microsoft Visual C compiler happy. This fix was from Calvin. ------------------------------------------------------------ revno: 0.3.1211 committer: marko timestamp: Wed 2008-09-17 08:48:32 +0000 message: branches/zip: Add the ChangeLog entry for r2631. ------------------------------------------------------------ revno: 0.3.1210 committer: marko timestamp: Wed 2008-09-17 08:12:03 +0000 message: branches/zip: Add some tests for innodb_strict_mode. ha_innodb.cc: Declare strict_mode as PLUGIN_VAR_OPCMDARG, because we do want to be able to disable innodb_strict_mode. This is a non-functional change, because PLUGIN_VAR_NOCMDARG seems to accept an argument as well. innodb-zip.test: Do not store innodb_strict_mode. It is a session variable. Add a test case for innodb_strict_mode=off. ------------------------------------------------------------ revno: 0.3.1209 committer: marko timestamp: Wed 2008-09-17 06:23:52 +0000 message: branches/zip: Prevent infinite B-tree page splits by ensuring that there will always be enough space for two node pointer records in an empty B-tree page. This was reported as Mantis issue #73. page_zip_rec_needs_ext(): Add the parameter n_fields, for accurate estimation of the compressed size of the data dictionary information. Given that this function is only invoked for records on leaf pages, require that there be enough space for one record in the compressed page. We check elsewhere that there will be enough room for two node pointer records on higher-level pages. btr_cur_optimistic_insert(): Ensure that there will be enough room for two node pointer records on an empty non-leaf page. The rule for leaf-page records will be enforced by the callers of page_zip_rec_needs_ext(). btr_cur_pessimistic_insert(): Remove the insufficient check that the leaf page record should be compressible by itself. Instead, now we require that two node pointer records fit on a non-leaf page, and one record will fit in uncompressed form on the leaf page. page_zip_write_header(), page_zip_write_rec(): Re-enable the debug assertions that were violated by the insufficient check in btr_cur_pessimistic_insert(). innodb_bug36172.test: Use a larger compressed page size. ------------------------------------------------------------ revno: 0.3.1208 committer: marko timestamp: Tue 2008-09-16 13:16:36 +0000 message: branches/zip: Minor cleanup. btr_search_drop_page_hash_index(): Add const qualifiers to the local variables page, rec, and index, to ensure that they are not modified by this function. page_get_infimum_offset(), page_get_supremum_offset(): New functions. page_get_infimum_rec(), page_get_supremum_rec(): Replaced by const-preserving macros that invoke the accessor functions. ------------------------------------------------------------ revno: 0.3.1207 committer: marko timestamp: Tue 2008-09-16 13:12:52 +0000 message: branches/zip: btr0btr.c: Add more UNIV_BTR_DEBUG checks. This should help in tracking down issue #63 (memory corruption). UNIV_BTR_DEBUG is currently enabled in univ.i. btr_root_fseg_validate(): New function, for validating a file segment header on a B-tree root page. btr_root_block_get(), btr_free_but_not_root(), btr_root_raise_and_insert(), btr_discard_only_page_on_level(): Check PAGE_BTR_SEG_LEAF and PAGE_BTR_SEG_TOP on the root page with btr_root_fseg_validate(). btr_root_raise_and_insert(): Move the assertion dict_index_get_page(index) == page_get_page_no(root) inside UNIV_BTR_DEBUG. It was previously enabled by UNIV_DEBUG. btr_free_root(): Check PAGE_BTR_SEG_TOP on the root page with btr_root_fseg_validate(). ------------------------------------------------------------ revno: 0.3.1206 committer: vasil timestamp: Mon 2008-09-15 10:40:44 +0000 message: branches/zip: Add a test case to check that mysqld does not crash when running ANALYZE TABLE with different values for innodb_stats_sample_pages. Suggested by: Marko Approved by: Marko ------------------------------------------------------------ revno: 0.3.1205 committer: vasil timestamp: Mon 2008-09-15 10:39:13 +0000 message: branches/zip: Limit the number of the pages that are sampled so it is never greater than the total number of pages in the index. The parameter that specifies the number of pages to test is global for all tables. By limiting it this way we allow the user to set it "high" to suit "large" tables and to avoid unnecessary work for "small" tables (e.g. doing 100 dives in a table that has 5 pages, obviously testing some pages more than once). Suggested by: Ken Approved by: Marko ------------------------------------------------------------ revno: 0.3.1204 committer: inaam timestamp: Sat 2008-09-13 11:44:14 +0000 message: branches/zip Add missing semicolon. Introduced in r2602 which was obviously not compiled with UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.1203 committer: vasil timestamp: Fri 2008-09-12 12:02:03 +0000 message: branches/zip: Update the ChangeLog which has not been updated for a long time, phew! ------------------------------------------------------------ revno: 0.3.1202 committer: marko timestamp: Wed 2008-09-10 08:04:33 +0000 message: branches/zip: btr_cur_insert_if_possible(): Correct the function comment. ------------------------------------------------------------ revno: 0.3.1201 committer: vasil timestamp: Tue 2008-09-09 12:00:34 +0000 message: branches/zip: Merge 2605:2617 from branches/5.1: ------------------------------------------------------------------------ r2609 | sunny | 2008-08-24 01:19:05 +0300 (Sun, 24 Aug 2008) | 12 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Fix for MySQL Bug#38839. Reset the statement level last value field in prebuilt. This field tracks the last value in an autoincrement interval. We use this value to check whether we need to update a table's AUTOINC counter, if the value written to a table is less than this value then we avoid updating the table's AUTOINC value in order to reduce mutex contention. If it's not reset (e.g., after a DELETE statement) then there is the possibility of missing updates to the table's AUTOINC counter resulting in a subsequent duplicate row error message under certain conditions (see the test case for details). Bug #38839 - auto increment does not work properly with InnoDB after update ------------------------------------------------------------------------ r2617 | vasil | 2008-09-09 15:46:17 +0300 (Tue, 09 Sep 2008) | 47 lines Changed paths: M /branches/5.1/mysql-test/innodb.result branches/5.1: Merge a change from MySQL (fix the failing innodb test): ------------------------------------------------------------ revno: 2646.12.1 committer: Mattias Jonsson branch nick: wl4176_2-51-bugteam timestamp: Mon 2008-08-11 20:02:03 +0200 message: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION took another code path (over mysql_alter_table instead of mysql_admin_table) which differs in two ways: 1) alter table opens the tables in a different way than admin tables do resulting in returning with error before it tried the command 2) alter table does not start to send any diagnostic rows to the client which the lower admin functions continue to use -> resulting in assertion crash The fix: Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t. Adding check in mysql_admin_table to setup the partition list for which partitions that should be used. Partitioned tables will still not work with REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions to tables, REPAIR TABLE t USE_FRM, and check that the data still fulfills the partitioning function and then move the table back to being a partition. NOTE: I have removed the following functions from the handler interface: analyze_partitions, check_partitions, optimize_partitions, repair_partitions Since they are not longer needed. THIS ALTERS THE STORAGE ENGINE API I have verified that OPTIMIZE TABLE actually rebuilds the table and calls ANALYZE. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1200 committer: marko timestamp: Tue 2008-09-09 11:05:56 +0000 message: branches/zip: ha_innobase::prepare_drop_index(): When there is a foreign key constraint, find a truly equivalent index for it. If none is available, refuse to drop the index. MySQL can drop an index when creating a "stronger" index. This was reported as Mantis issue #70 and MySQL Bug #38786. innodb-index.test: Add a test case. dict_foreign_find_equiv_index(): New function, to replace the incorrectly written function dict_table_find_equivalent_index(). dict_table_replace_index_in_foreign_list(): Simplify the implementation. ------------------------------------------------------------ revno: 0.3.1199 committer: marko timestamp: Thu 2008-09-04 07:47:49 +0000 message: branches/zip: Write clarifying comments about the insert buffer and the "free" bits in the insert buffer bitmap in particular. ------------------------------------------------------------ revno: 0.3.1198 committer: marko timestamp: Fri 2008-08-29 09:13:16 +0000 message: branches/zip: Clean up: do not assign index->id as a special case in fast index creation. In r1399, we wrote undo log records about creating indexes. The special undo log records were deemed unnecessary later, but this special handling was not removed then. row_merge_create_index(): Do not assign index->id. dict_build_index_def_step(): Unconditionally assign index->id. ------------------------------------------------------------ revno: 0.3.1197 committer: marko timestamp: Wed 2008-08-27 06:23:59 +0000 message: branches/zip: page_zip_reorganize(): Compressed pages are always in compact format. Replace dict_table_is_comp(index->table) with TRUE. ------------------------------------------------------------ revno: 0.3.1196 committer: marko timestamp: Fri 2008-08-22 17:30:42 +0000 message: branches/zip: buf_LRU_get_free_block(): Add missing spaces to and correct the grammar of the warning message. ------------------------------------------------------------ revno: 0.3.1195 committer: marko timestamp: Thu 2008-08-21 14:59:44 +0000 message: branches/zip: thd_is_select(): Add the missing UNIV_INTERN to the definition. This function was introduced in r2606, when merging r2603 from branches/5.1. ------------------------------------------------------------ revno: 0.3.1194 committer: vasil timestamp: Thu 2008-08-21 14:23:46 +0000 message: branches/zip: Merge 2537:2605 from branches/5.1: ------------------------------------------------------------------------ r2545 | vasil | 2008-07-25 17:24:23 +0300 (Fri, 25 Jul 2008) | 37 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Fix Bug#38185 ha_innobase::info can hold locks even when called with HA_STATUS_NO_LOCK The fix is to call fsp_get_available_space_in_free_extents() from ha_innobase::info() only if HA_STATUS_NO_LOCK is not present in the flag *AND* change get_schema_tables_record() in MySQL's sql/sql_show.cc to call ::info() *without* HA_STATUS_NO_LOCK whenever a user issues SELECT FROM information_schema.tables; Without the change to sql/sql_show.cc this patch would lead to Bug#32440 resurfacing. I.e. delete_length would never be updated in ::info() and will remain 0 forever, resulting in the free space not being shown anywhere. This is the change to sql/sql_show.cc for reference, it needs to be committed to the MySQL repo before or at the same time with this change to ha_innodb.cc: --- patch begins here --- --- sql/sql_show.cc.orig 2008-07-23 09:32:14.000000000 +0300 +++ sql/sql_show.cc 2008-07-23 09:32:19.000000000 +0300 @@ -3549,8 +3549,7 @@ static int get_schema_tables_record(THD if(file) { - file->info(HA_STATUS_VARIABLE | HA_STATUS_TIME | HA_STATUS_AUTO | - HA_STATUS_NO_LOCK); + file->info(HA_STATUS_VARIABLE | HA_STATUS_TIME | HA_STATUS_AUTO); enum row_type row_type = file->get_row_type(); switch (row_type) { case ROW_TYPE_NOT_USED: --- patch ends here --- Approved by: Heikki ------------------------------------------------------------------------ r2603 | marko | 2008-08-21 16:25:05 +0300 (Thu, 21 Aug 2008) | 10 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/ha_prototypes.h M /branches/5.1/row/row0sel.c branches/5.1: Identify SELECT statements by thd_sql_command() == SQLCOM_SELECT instead of parsing the query string. This fixes MySQL Bug #37885 without us having to implement lexical analysis of SQL comments in yet another place. thd_is_select(): A new predicate. row_search_for_mysql(): Use thd_is_select(). Approved by Heikki. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1193 committer: marko timestamp: Thu 2008-08-21 10:56:01 +0000 message: branches/zip: Minor cleanup. dict_table_get_referenced_constraint(), dict_table_get_foreign_constraint(): Simplify the iteration loop. dict_table_find_equivalent_index(): Correct the function comment. ------------------------------------------------------------ revno: 0.3.1192 committer: marko timestamp: Wed 2008-08-20 11:53:11 +0000 message: branches/zip: Cleanup: make dict_scan_to() a static function. ------------------------------------------------------------ revno: 0.3.1191 committer: marko timestamp: Mon 2008-08-18 18:28:20 +0000 message: branches/zip: Introduce UNIV_LRU_DEBUG for debugging the LRU buffer pool cache, especially buf_pool->LRU_old and bpage->old. buf_LRU_old_adjust_len(), buf_LRU_remove_block(): Check that blocks in buf_pool->LRU_old have the "old" flag set and the blocks preceding buf_pool->LRU_old have the "old" flag clear. buf_LRU_add_block_low(), buf_relocate(): Check that buf_pool->LRU_old is the first block in the LRU list whose "old" flag is set. buf_LRU_free_block(): When replacing a control block in the LRU list with a control block for a compressed page, assert that the "old" flags in the neighboring LRU list entries grow monotonically. buf_page_set_old(): Assert that the "old" flags in the neighboring LRU list entries grow monotonically. ------------------------------------------------------------ revno: 0.3.1190 committer: marko timestamp: Mon 2008-08-18 18:06:33 +0000 message: branches/zip: buf_page_set_old(): Add the assertion ut_ad(bpage->in_LRU_list). Adjust the callers where necessary: buf_LRU_add_block_to_end_low() and buf_LRU_add_block_low(). ------------------------------------------------------------ revno: 0.3.1189 committer: marko timestamp: Mon 2008-08-18 06:56:52 +0000 message: branches/zip: flst_write_addr(), flst_read_addr(): Assert that no file list link is written or read below FIL_PAGE_DATA. This has helped diagnose issue#63. ------------------------------------------------------------ revno: 0.3.1188 committer: sunny timestamp: Sat 2008-08-09 00:53:28 +0000 message: branches/zip: Fix typo in comment. ------------------------------------------------------------ revno: 0.3.1187 committer: marko timestamp: Fri 2008-08-08 13:01:02 +0000 message: branches/zip: buf_LRU_free_block(): When buf_page_is_old(b), we incremented buf_pool->LRU_old_len. However, we forgot to check if buf_pool->LRU_old happens to point to b's successor in the LRU list. If it does, we must assign buf_pool->LRU_old = b. The following invariants hold: In the LRU list, the "old" flag should grow monotonically, i.e., it is 0 for the first few items and 1 from thereafter. If buf_pool->LRU_old != NULL, it must point to the first item with old=1 in the LRU list, and there must be buf_pool->LRU_old_len old items in the list. This should fix Mantis issue#50 and issue#68. ------------------------------------------------------------ revno: 0.3.1186 committer: vasil timestamp: Thu 2008-08-07 13:47:44 +0000 message: branches/zip: The cardinality of every index (the number of different key values) is calculated when the table is opened, at SHOW TABLE STATUS, ANALYZE TABLE and on other circumstances (like when the table has changed too much). Note that if the mysql client is running with the auto-rehash setting turned on (default) this causes all tables to be opened when it starts. Previously InnoDB sampled 8 random pages from the index to get an estimate of the cardinality. Now the number of sampled pages can be changed via the global parameter innodb_stats_sample_pages which can be tuned at runtime. The default value for this parameter is 8. If the value of this parameter is changed, there may be serious problems: - small values (say, 1) can cause an error in table stats; - values much larger than 8 (say, 100), can cause a big slowdown in table opening time, SHOW TABLE status, etc. - query plans may be different from the old ones. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1185 committer: vasil timestamp: Thu 2008-08-07 10:59:49 +0000 message: branches/zip: Fix Mantis issue#66. Do not try to dereference the MySQL thread object if it is NULL. Approved by: Sunny (via IM) ------------------------------------------------------------ revno: 0.3.1184 committer: marko timestamp: Wed 2008-08-06 12:45:35 +0000 message: branches/zip: Correct some typos in comments. ------------------------------------------------------------ revno: 0.3.1183 committer: marko timestamp: Wed 2008-08-06 08:59:28 +0000 message: branches/zip: Fix terminology that was introduced in r2569: replace rbmode and "rollback mode" with rb_ctx and "rollback context". Suggested by Sunny. ------------------------------------------------------------ revno: 0.3.1182 committer: marko timestamp: Wed 2008-08-06 08:48:34 +0000 message: branches/zip: In the rollback of incomplete transactions after crash recovery, tolerate clustered index records whose externally stored columns have not been written. This should remove the assertion failures that were reported as Mantis issue#58, issue#62, issue#64. trx_is_recv(): New function: TRUE if this transaction is rolling back an incomplete transaction in crash recovery. enum trx_rbmode: Rollback modes: no rollback, normal rollback, crash recovery. btr_cur_pessimistic_delete(), btr_free_externally_stored_field(), btr_rec_free_externally_stored_fields(): Replace the ibool parameter with enum trx_rbmode. btr_free_externally_stored_field(): If field_ref is zero, return but assert ut_a(rbmode == RB_RECOVERY). Unless InnoDB has crashed while inserting a clustered index record, field_ref should not be zero. btr_rec_free_updated_extern_fields(): Add the parameter enum trx_rbmode. btr_cur_pessimistic_update(): Pass the rbmode parameter to btr_rec_free_updated_extern_fields(). row_undo_ins(), row_undo_mod_upd_del_sec(): If row_build_index_entry() fails, assert trx_is_recv() and skip this secondary index. row_undo_mod_upd_del_sec(): Empty the heap at the end of each loop iteration in order to conserve memory and to reduce the number of low-level memory allocations. ------------------------------------------------------------ revno: 0.3.1181 committer: marko timestamp: Wed 2008-08-06 08:44:17 +0000 message: branches/zip: Improve the diagnostics for tracking down issue#63 and issue#65. buf_flush_init_for_writing(), buf_LRU_block_remove_hashed_page(): Dump the page frame featuring the incorrect FIL_PAGE_TYPE along with the page_zip->data that might contain an earlier version of the page. ------------------------------------------------------------ revno: 0.3.1180 committer: marko timestamp: Wed 2008-08-06 08:10:21 +0000 message: branches/zip: Always display a newline after ut_print_buf(stderr, ...). ------------------------------------------------------------ revno: 0.3.1179 committer: marko timestamp: Wed 2008-08-06 06:20:05 +0000 message: branches/zip: Disable two debug assertions that attempt to call buf_block_align() on a non-file page frame that was created in btr_cur_pessimistic_insert(), to see if a record fits on a compressed page by itself. These assertions caused an assertion failure in buf_block_align() in innodb_bug36172.test. page_zip_write_rec(), page_zip_write_header(): Remove the assertion that calls buf_frame_get_page_zip(). ------------------------------------------------------------ revno: 0.3.1178 committer: marko timestamp: Mon 2008-08-04 13:17:15 +0000 message: branches/zip: Simplify the interface to mem0pool.c. mem_heap_create_block(): Compute len and call mem_area_alloc() only once. mem_heap_block_free(): Call mem_area_free() only once. Approved by Heikki. ------------------------------------------------------------ revno: 0.3.1177 committer: marko timestamp: Mon 2008-08-04 08:52:09 +0000 message: branches/zip: Dump the compressed page when fil_page_get_type() returns an incorrect value. This is to track down Mantis issue#63 and issue#65. buf_LRU_block_remove_hashed_page(), buf_flush_init_for_writing(): dump the compressed page before ut_error. ------------------------------------------------------------ revno: 0.3.1176 committer: marko timestamp: Mon 2008-08-04 07:09:34 +0000 message: branches/zip: page_copy_rec_list_start(): Remove the bogus assertion that was added in r2554. When this function is called on an empty new_block, "ret" will always point to the page infimum. ------------------------------------------------------------ revno: 0.3.1175 committer: marko timestamp: Mon 2008-08-04 06:59:39 +0000 message: branches/zip: page_copy_rec_list_start(): Add the assertion ut_a(ret_pos > 0) that was added to page_copy_rec_list_end() in r2552, as suggested by Sunny in Mantis issue#52. ------------------------------------------------------------ revno: 0.3.1174 committer: vasil timestamp: Fri 2008-08-01 13:58:11 +0000 message: branches/zip: Fix typo in comment. ------------------------------------------------------------ revno: 0.3.1173 committer: marko timestamp: Fri 2008-08-01 13:02:46 +0000 message: branches/zip: page_copy_rec_list_end(): Add the assertion ut_a(ret_pos > 0) that was suggested by Sunny in Mantis issue#52. ------------------------------------------------------------ revno: 0.3.1172 committer: vasil timestamp: Fri 2008-08-01 08:39:37 +0000 message: branches/zip: Fix typo in comment. ------------------------------------------------------------ revno: 0.3.1171 committer: inaam timestamp: Wed 2008-07-30 12:36:35 +0000 message: branches/zip: issue#57 Fixes a race in recovery where the recovery thread recovering a PREPARED trx and the background rollback thread can both try to free the trx after its status is set to COMMITTED_IN_MEMORY. trx->is_recovered flag was introduced in r2040. Reviewed by: Sunny ------------------------------------------------------------ revno: 0.3.1170 committer: inaam timestamp: Tue 2008-07-29 17:06:18 +0000 message: branches/zip issue# 33 This fix makes two basic changes in blob handling: (The bug was introduced in r2252) 1) The blob prefixes are no longer stored in the undo if a) We are modifying a delete marked record and b) The record was delete marked by an already committed trx. 2) When building old row version to check if one of these versions can hold an implicit lock on the record we stop our probe if a) The version is delete marked and b) The delete marking is done by a trx which is different from the current active trx on the record. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.3.1169 committer: sunny timestamp: Mon 2008-07-21 08:43:54 +0000 message: branches/zip: The test for issue#36 assumed that AUTOCOMMIT=OFF. Add an explicit BEGIN. ------------------------------------------------------------ revno: 0.3.1168 committer: inaam timestamp: Tue 2008-07-15 19:28:29 +0000 message: branches/zip: Fixed a mistake in r2539 where I changed UNIV_INLINE to UNIV_INTERN for the wrong function in btr0sea.h ------------------------------------------------------------ revno: 0.3.1167 committer: inaam timestamp: Tue 2008-07-15 17:38:53 +0000 message: branches/zip: Merge 2524:2537 from branches/5.1: ------------------------------------------------------------------------ r2537 | inaam | 2008-07-15 20:46:03 +0300 (Tue, 15 Jul 2008) | 12 lines branches/5.1 issue# 4 Fixed a timing hole where a thread dropping an index can free the in-memory index struct while another thread is still using that structure to remove entries from adaptive hash index belonging to one of the pages that belongs to the index being dropped. The fix is to have a reference counter in the index struct and to wait for this counter to drop to zero beforing freeing the struct. Reviewed by: Heikki ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1166 committer: vasil timestamp: Fri 2008-07-04 12:53:10 +0000 message: branches/zip: Fix the failing innodb-index test by adjusting the result to a new MySQL behavior. The author of the behavioral change Davi Arnaut , BZR-r2667: http://bazaar.launchpad.net/~mysql/mysql-server/mysql-5.1/revision/davi%40mysql.com-20080617141221-8yre8ys9j4uw3xx5?start_revid=joerg%40mysql.com-20080630105418-7qoe5ehomgrcdb89 has been asked if this change is intended: http://lists.mysql.com/internals/35805 Regardless of the answer we need to adjust to the new behavior to get the test to succeed. If they switch back, then we will revert this commit. ------------------------------------------------------------ revno: 0.3.1165 committer: calvin timestamp: Thu 2008-07-03 06:41:16 +0000 message: branches/zip: Add a space in a warning message. No functional change to the code. The original message is "invalid innodb_file_format_checkvalue;...". The new one is "invalid innodb_file_format_check value;..." ------------------------------------------------------------ revno: 0.3.1164 committer: calvin timestamp: Thu 2008-07-03 06:34:51 +0000 message: branches/zip: Fixes issue# 51 - by removing the negative test cases that produce warnings. The warnings cause mysql-test-run to fail. Those negative test cases will be moved to separate test/result files. Approved by: Sunny ------------------------------------------------------------ revno: 0.3.1163 committer: vasil timestamp: Wed 2008-07-02 14:39:13 +0000 message: branches/zip: Disable part of innodb-index test because MySQL changed its behavior and is not calling ::add_index() anymore in the following ALTER TABLE: CREATE TABLE t (a INT) ENGINE=INNODB; INSERT INTO t VALUES (NULL); ALTER TABLE t ADD PRIMARY KEY (a); -- adding primary index on non-NULL column Previously, in ALTER TABLE, MySQL would call ::add_index() which would fail with a "primary key cannot contain NULL" error. The change occured in: mysql-5.1$ bzr log -v -r2667 ------------------------------------------------------------ revno: 2667 committer: Davi Arnaut branch nick: 33873-5.1 timestamp: Tue 2008-06-17 11:12:21 -0300 message: Bug#33873: Fast ALTER TABLE doesn't work with multibyte character sets The problem was that when comparing tables for a possible fast alter table, the comparison was being performed using the parsed information and not the final definition. The solution is to use the possible final table layout to compare if a fast alter is possible or not. modified: mysql-test/include/mix1.inc mysql-test/r/alter_table.result mysql-test/r/innodb_mysql.result mysql-test/t/alter_table.test sql/sql_table.cc mysql-5.1$ ------------------------------------------------------------ revno: 0.3.1162 committer: vasil timestamp: Tue 2008-07-01 06:53:40 +0000 message: branches/zip: Merge 2489:2524 from branches/5.1: ------------------------------------------------------------------------ r2519 | sunny | 2008-06-26 16:55:43 +0300 (Thu, 26 Jun 2008) | 5 lines branches/5.1: Add test cases and fix a bug where the last AUTOINC cached value was not reset to 0 when the table was truncated. Bug #37531 : After truncate, auto_increment behaves incorrectly for InnoDB ------------------------------------------------------------------------ r2520 | vasil | 2008-06-26 17:38:02 +0300 (Thu, 26 Jun 2008) | 7 lines branches/5.1: Fix Bug#36941 Performance problem in ha_print_info (SHOW INNODB STATUS) by disabling some of the code in ha_print_info() in production builds. Approved by: Heikki (via IM) ------------------------------------------------------------------------ r2521 | vasil | 2008-06-26 17:39:01 +0300 (Thu, 26 Jun 2008) | 8 lines branches/5.1: Fix Bug#36942 Performance problem in lock_get_n_rec_locks (SHOW INNODB STATUS) by not calling lock_get_n_rec_locks() from lock_print_info_summary() on production builds. Approved by: Heikki (via IM) ------------------------------------------------------------------------ r2524 | vasil | 2008-07-01 10:37:34 +0300 (Tue, 01 Jul 2008) | 29 lines branches/5.1: Merge a change from MySQL (this fixes the failing innodb-replace test): revno: 2659 committer: Mattias Jonsson branch nick: b31210-51-bugteam timestamp: Tue 2008-06-03 13:25:41 +0200 message: Bug#31210: INSERT DELAYED crashes server when used on partitioned tables Problem was an unclear error message since it could suggest that MyISAM did not support INSERT DELAYED. Changed the error message to say that DELAYED is not supported by the table, instead of the table's storage engine. The confusion is that a partitioned table is in somewhat sense using the partitioning storage engine, which in turn uses the ordinary storage engine. By saying that the table does not support DELAYED we do not give any extra informantion about the storage engine or if it is partitioned. modified: mysql-test/r/innodb-replace.result mysql-test/t/innodb-replace.test mysql-test/t/merge.test mysql-test/t/partition_hash.test sql/share/errmsg.txt sql/sql_insert.cc ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1161 committer: sunny timestamp: Thu 2008-06-26 07:24:23 +0000 message: branches/zip: Function doesn't exist, remove declaration. ------------------------------------------------------------ revno: 0.3.1160 committer: vasil timestamp: Thu 2008-06-19 14:24:45 +0000 message: branches/zip: Rewrite the function innodb_plugin_init() to support parameters in different order (in static and dynamic InnoDB) and to support more parameters in the static InnoDB. The previous implementation traversed both lists at the same time, skipping parameters in the dynamic list that do not exist in the static list. E.g. both lists were allowed to be static=(a, b, c), dynamic=(a, b, c) or static=(a, b, c), dynamic=(a, b, x, c). With the new implementation they are allowed to be static=(a, b, c), dynamic=(b, a, c) or static=(a, b, x, c), dynamic=(b, a, c) in addition. The new implementation has complexity O(N^2) while the old one was O(N), but this is acceptable sacrifice provided that innodb_plugin_init() is called once per InnoDB lifetime and that N=39 currently, and N is not going to increase much in the future, N=number of the InnoDB parameters. Suggested by: Sunny Approved by: Sunny ------------------------------------------------------------ revno: 0.3.1159 committer: vasil timestamp: Thu 2008-06-19 14:19:04 +0000 message: branches/zip: Fix the rpl_ddl mysql-test that produces a warnings: master.err: rpl.rpl_ddl: 080611 16:27:01 [Warning] MySQL is closing a connection that has an active InnoDB transaction. 13 row modifications will roll back. the bug was introduced in r2256, which adds "prebuilt->trx->active_trans = 1;" in ::add_index() and ::final_drop_index() but never calls innobase_commit() or innobase_rollback() to set back active_trans to 0. Also, per Heikki's suggestion we remove the calls to trans_register_ha() from ::add_index() and ::final_drop_index(). Following is the IM discussion that took place about this: --- cut --- (17:59:05) vasil: unsigned active_trans:2; /* 1 - if a transaction in MySQL is active. 2 - if prepare_commit_mutex was taken */ (17:59:13) vasil: what about 0? (17:59:26) Heikki: Hmm (17:59:42) Heikki: Maybe in the other cases :) (18:01:00) vasil: 2 1369 handler/ha_innodb.cc <<>> if (trx->active_trans == 0) { 3 1372 handler/ha_innodb.cc <<>> trx->active_trans = 1; (18:01:05) vasil: yes, it can be 0 (18:01:38) Heikki: Maybe no active transaction => the value is 0 (18:02:03) vasil: probably yes (18:09:09) vasil: /* The flag trx->active_trans is set to 1 in 1. ::external_lock(), 2. ::start_stmt(), 3. innobase_query_caching_of_table_permitted(), 4. innobase_savepoint(), 5. ::init_table_handle_for_HANDLER(), 6. innobase_start_trx_and_assign_read_view(), 7. ::transactional_table_lock() and it is only set to 0 in a commit or a rollback. (18:09:14) vasil: this is no longer true (18:09:35) vasil: it is also set to 1 in ::final_drop_index (18:09:56) vasil: and in ::add_index() (18:12:31) Heikki: Please correct the comment :( (18:13:01) vasil: it is not only the comment, I am trying to understand what's wrong (18:13:28) Heikki: What is the symptom? (18:14:37) vasil: can you find this email and the subsequent one: From: Vasil Dimov To: InnoDB Dev Subject: Re: innodb - marko - r2256 - in branches/zip: handler include lock trx Date: Wed, 11 Jun 2008 16:33:47 +0300 (18:15:02) vasil: the symptom is master.err: rpl.rpl_ddl: 080611 16:27:01 [Warning] MySQL is closing a connection that has +an active InnoDB transaction. 13 row modifications will roll back. (18:16:22) vasil: My understanding till now is that active_trans is set to 1 in ::add_index() and forgotten like this, never set to 0; I wonder if it should be set to 0 somewhere at the end or not set to 1 at all... or there is more... (18:16:31) Heikki: Vasil, ok the problem is that Marko forgets to commit the transaction (18:16:55) Heikki: An active transaction has to be committed or rolled back (18:17:09) vasil: but i can find this in ::add_index(): /* Commit the data dictionary transaction in order to release the table locks on the system tables. Unfortunately, this means that if MySQL crashes while creating a new primary key inside row_merge_build_indexes(), indexed_table will not be dropped on crash recovery. Thus, it will become orphaned. */ trx_commit_for_mysql(trx); (18:17:27) vasil: but this function does not set active_trans to 0 (18:17:43) Heikki: Let me look (18:19:20) vasil: it is only set to 0 in innobase_commit() and in innobase_rollback() (18:20:10) Heikki: Ok (18:20:59) Heikki: Hmm... (18:21:08) vasil: innobase_commit() calls innobase_commit_low() calls trx_commit_for_mysql() innobase_commit() sets active_trans=0 (18:21:26) Heikki: active_trans is strictly a ha_innodb.cc variable (18:21:53) Heikki: It is intended to be used in transactions visible to MySQL (18:22:25) Heikki: I think Marko should call innobase_commit() (18:23:51) vasil: but still set active_trans=1 inside :add_index() inside handler/handler0alter.cc? (18:24:12) Heikki: Hmm (18:24:56) Heikki: I think the transaction is NOT really visible to MySQL (18:24:57) vasil: > Author: marko > Date: 2008-01-25 16:26:07 +0200 (Fri, 25 Jan 2008) > New Revision: 2256 > > Log: > branches/zip: Fast index creation: Release locks on system tables before > creating indexes. Lock the user table inside the user transaction. > > enum trx_dict_op: Remove TRX_OP_INDEX_MAY_WAIT. > > ha_innobase::add_index(): Lock the user tables within prebuilt->trx. > Commit the data dictionary transaction before creating indexes. > > ha_innobase::final_drop_index(): Lock the user table within prebuilt->trx. (18:26:41) Heikki: Let me look at the old ::create_table() (18:27:25) Heikki: Ok, in the old code, the transactions are internal to InnoDB, not visible to MySQL (18:27:46) Heikki: I think it is an error to set active_trans=1 inside :add_index() i (18:28:11) Heikki: MySQL is not really interested in HOW the engine adds the index. In a transaction or not. (18:28:26) vasil: this is the change inside drop_index(), that is supposed to "Lock the user table within prebuilt->trx": (18:28:37) vasil: @@ -1093,27 +1101,25 @@ ha_innobase::final_drop_index( /* Create a background transaction for the operations on the data dictionary tables. */ trx = trx_allocate_for_mysql(); trx_start_if_not_started(trx); trans_register_ha(user_thd, FALSE, ht); + prebuilt->trx->active_trans = 1; trx->mysql_thd = user_thd; trx->mysql_query_str = thd_query(user_thd); /* Flag this transaction as a dictionary operation, so that - the data dictionary will be locked in crash recovery. Prevent - warnings if row_merge_lock_table() results in a lock wait, - i.e., when another transaction is holding a conflicting lock - on the table, e.g., because of SELECT ... FOR UPDATE. */ - trx_set_dict_operation(trx, TRX_DICT_OP_INDEX_MAY_WAIT); + the data dictionary will be locked in crash recovery. */ + trx_set_dict_operation(trx, TRX_DICT_OP_INDEX); /* Lock the table exclusively, to ensure that no active transaction depends on an index that is being dropped. */ err = convert_error_code_to_mysql( - row_merge_lock_table(trx, prebuilt->table, LOCK_X), + row_merge_lock_table(prebuilt->trx, prebuilt->table, LOCK_X), user_thd); if (UNIV_UNLIKELY(err)) { /* Unmark the indexes to be dropped. */ row_mysql_lock_data_dictionary(trx); @@ -1125,14 +1131,12 @@ ha_innobase::final_drop_index( } row_mysql_unlock_data_dictionary(trx); goto func_exit; } - trx_set_dict_operation(trx, TRX_DICT_OP_INDEX); - /* Drop indexes marked to be dropped */ row_mysql_lock_data_dictionary(trx); index = dict_table_get_first_index(prebuilt->table); @@ -1159,12 +1163,13 @@ ha_innobase::final_drop_index( dict_table_check_for_dup_indexes(prebuilt->table); #endif row_mysql_unlock_data_dictionary(trx); func_exit: trx_commit_for_mysql(trx); + trx_commit_for_mysql(prebuilt->trx); /* Flush the log to reduce probability that the .frm files and the InnoDB data dictionary get out-of-sync if the user runs with innodb_flush_log_at_trx_commit = 0 */ log_buffer_flush_to_disk(); (18:28:43) Heikki: Let me look (18:29:05) vasil: this is the change inside drop_index(), that is supposed to "Lock the user table within prebuilt->trx" (18:29:26) Heikki: trans_register_ha(user_thd, FALSE, ht); + prebuilt->trx->active_trans = 1; (18:29:34) Heikki: I think the above code should be removed (18:29:53) Heikki: MySQL is not interested in InnoDB's transaction in this case (18:30:33) Heikki: Alternatively, we should use innobase_commit() instead of trx_commit_... (18:31:01) vasil: but there are many places in ::add_index() where it could return before reaching the trx_commit... (18:31:12) vasil: leaving active_traans=1 (18:31:56) Heikki: Does Marko handle the errors with trx_rollback()? (18:32:08) vasil: let me see.. (18:32:30) Heikki: It is risky to leave error handling to MySQL :( (18:32:35) vasil: 651 if (UNIV_UNLIKELY(error)) { 652 err_exit: 653 mem_heap_free(heap); 654 trx_general_rollback_for_mysql(trx, FALSE, NULL); 655 trx_free_for_mysql(trx); 656 trx_commit_for_mysql(prebuilt->trx); 657 DBUG_RETURN(error); 658 } (18:32:43) Heikki: Ok (18:33:25) Heikki: Please remove the ha_register... and active_trx =1 .... (18:33:42) Heikki: Then check if it prints something (18:34:08) Heikki: I believe MySQL is not interested in how the engine does the index build (18:34:11) vasil: why remove ha_register? (18:34:28) Heikki: Because there is no transaction visible to MySQL (18:34:53) vasil: the ha_register call was there from before (18:35:09) Heikki: Registers that InnoDB takes part in an SQL statement, so that MySQL knows to roll back the statement if the statement results in an error. This MUST be called for every SQL statement that may be rolled back by MySQL. Calling this several times to register the same statement is allowed, too. (18:36:01) Heikki: Hmm (18:36:17) Heikki: Obviously, MySQL does NOT call commit at the end (18:36:36) Heikki: Because then innobase_commit() would set active_trx=0! (18:37:00) Heikki: Ok, maybe MySQL thinks CREATE INDEX is NOT a transactional statement (18:37:21) Heikki: Then, .._register_.. should be removed (18:37:51) Heikki: It is logical this way. If it also passes test, even better (18:38:21) vasil: ha_registrer in add_index() was added in r1845 and in drop_index() in r2128, let me read the comments.. (18:38:55) vasil: ------------------------------------------------------------------------ r1845 | marko | 2007-09-13 13:31:54 +0300 (Thu, 13 Sep 2007) | 3 lines branches/zip: Move the code related to fast index creation (smart ALTER TABLE) from ha_innodb.cc to a separate module, handler0alter.cc. (18:39:05) Heikki: One thing you must check is that MySQL does write the CREATE INDEX in the binlog, even if we remove the _register_ (18:39:41) Heikki: I assume Marko did not know if MySQL thinks CREATE INDEX is transactional or not (18:39:49) Heikki: He thought it is transactional (18:39:53) vasil: ------------------------------------------------------------------------ r2128 | marko | 2007-11-29 12:34:55 +0200 (Thu, 29 Nov 2007) | 5 lines branches/zip: ha_innobase::final_drop_index(): Allocate a separate transaction for dropping the index trees, and set the dictionary operation flag, similar to what ha_innobase::add_index() does. This should ensure correct crash recovery. (18:40:10) Heikki: Ok (18:40:17) vasil: how do you know CREATE INDEX is not transactional? (18:40:33) Heikki: You cannot roll it back (18:40:44) vasil: ok (18:41:03) Heikki: MySQL devs probably thought this way (18:44:15) vasil: hmm (18:44:21) vasil: about r1845 (18:45:00) vasil: the comments says "move the code" but it is actually "move and change the code" (18:45:28) Heikki: Well (18:45:29) vasil: the code that is deleted from ha_innodb is this: (18:45:32) vasil: - update_thd(ha_thd()); - - heap = mem_heap_create(1024); - - /* In case MySQL calls this in the middle of a SELECT query, release - possible adaptive hash latch to avoid deadlocks of threads. */ - trx_search_latch_release_if_reserved(check_trx_exists(user_thd)); - - trx = trx_allocate_for_mysql(); - trx_start_if_not_started(trx); - - innobase_register_stmt(ht, user_thd); - - trx->mysql_thd = user_thd; (18:45:38) vasil: (in add_index) (18:45:48) inaam left the room. (18:45:52) vasil: but the new one in handler0alter is this: (18:46:16) vasil: + update_thd(ha_thd()); + + heap = mem_heap_create(1024); + + /* In case MySQL calls this in the middle of a SELECT query, release + possible adaptive hash latch to avoid deadlocks of threads. */ + trx_search_latch_release_if_reserved(check_trx_exists(user_thd)); + + trx = trx_allocate_for_mysql(); + trx_start_if_not_started(trx); + + trans_register_ha(user_thd, FALSE, ht); + + trx->mysql_thd = user_thd; (18:46:48) vasil: innobase_register_stmt(ht, user_thd); was substituted with trans_register_ha(user_thd, FALSE, ht); during the move (18:46:49) Heikki: I do not see how MySQL could call it in the middle of a SELECT query! (18:46:59) Heikki: Yes (18:47:21) Heikki: Did Marko change innobase_register_stmt() code too? (18:48:05) vasil: not in this commit r1845 (18:48:54) Heikki: Anyway, please test a version where you remove the register thing (18:49:08) vasil: and active_trans=1? (18:49:15) Heikki: Remove that, too (18:49:35) Heikki: innobase_register_stmt( /*===================*/ handlerton* hton, /* in: Innobase hton */ THD* thd) /* in: MySQL thd (connection) object */ { DBUG_ASSERT(hton == innodb_hton_ptr); /* Register the statement */ trans_register_ha(thd, FALSE, hton); } (18:50:23) Heikki: looks pretty much the same as what Marko has in the later version (18:50:43) vasil: innobase_register_stmt() was added in add_index() in r1584 (18:50:47) vasil: r1584 | marko | 2007-06-18 15:46:42 +0300 (Mon, 18 Jun 2007) | 12 lines branches/zip: ha_innobase::add_index(): Split some assertions. Remove the variable parent_trx. Call innobase_register_stmt() in order to work around a MySQL bug in mysql_alter_table(), which, as of ChangeSet@1.2482.61.2, 2007-06-07 16:37:15+02:00, joerg@trift2. +8 -0 commits the transaction before calling ha_innobase::add_index(). Without re-registering the statement, the ha_commit_stmt(thd) in mysql_alter_table() would not invoke innobase_commit. (18:51:56) Heikki: But it does not seem to invoke it now, because active_trans is left 1! (18:54:15) Heikki: Apparently, there has been confusion also among MySQL devs whether CREATE INDEX is transactional or not (18:54:45) vasil: :-( (18:54:53) Heikki: The most robust way is to handle all commits and rollbacks internally inside InnoDB and not tell MySQL anything about InnoDB's internal transactions (18:55:01) Heikki: That is my idea (18:55:20) Heikki: Then MySQL cannot spoil the logic of the code (18:55:59) vasil: mysql_alter_table() is ~1100 lines (18:56:08) vasil: and you suggest what? (18:56:43) Heikki: I suggest removing the ..._register_... thing and active_trans = 1 (18:57:08) Heikki: Those things tell MySQL that there is a transaction going on (18:57:14) Heikki: Better not to tell (18:57:29) vasil: and possibly ignoring the above comment in r1584, "Call innobase_register_stmt() in order to work around a MySQL bug in mysql_alter_table()........." (18:57:32) vasil: ? (18:57:36) Heikki: Yes (18:57:38) vasil: ok (18:57:44) vasil: same for drop_index? (18:57:48) Heikki: Yes (18:58:51) vasil: testing Index: handler/handler0alter.cc =================================================================== --- handler/handler0alter.cc (revision 2498) +++ handler/handler0alter.cc (working copy) @@ -632,14 +632,14 @@ ha_innobase::add_index( /* Create a background transaction for the operations on the data dictionary tables. */ trx = trx_allocate_for_mysql(); trx_start_if_not_started(trx); - trans_register_ha(user_thd, FALSE, ht); - prebuilt->trx->active_trans = 1; + //trans_register_ha(user_thd, FALSE, ht); + //prebuilt->trx->active_trans = 1; trx->mysql_thd = user_thd; trx->mysql_query_str = thd_query(user_thd); innodb_table = indexed_table = dict_table_get(prebuilt->table->name, FALSE); @@ -1081,14 +1081,14 @@ ha_innobase::final_drop_index( /* Create a background transaction for the operations on the data dictionary tables. */ trx = trx_allocate_for_mysql(); trx_start_if_not_started(trx); - trans_register_ha(user_thd, FALSE, ht); - prebuilt->trx->active_trans = 1; + //trans_register_ha(user_thd, FALSE, ht); + //prebuilt->trx->active_trans = 1; trx->mysql_thd = user_thd; trx->mysql_query_str = thd_query(user_thd); /* Flag this transaction as a dictionary operation, so that the data dictionary will be locked in crash recovery. */ (18:59:07) vasil: not warnings (18:59:22) Heikki: Did it create the indexes (18:59:36) vasil: I did test only removing active_trans=1 and it removed the warnings too (18:59:38) vasil: dunno (18:59:54) Heikki: That is the most important thing to check :) (19:00:10) vasil: :) (19:00:38) vasil: it is some mysqltest that is 610 lines (19:00:48) vasil: and it happens at the end (19:01:02) vasil: lets see how may add index statements... (19:01:11) vasil: 0 (19:01:26) Heikki: Mostly I am concerned that MySQL might work wrong without that _register_ thing (19:03:28) vasil: could be (19:03:49) Heikki: You need to check it still calls ::add_index() (19:05:15) vasil: well, the change we made is inside ::add_index() how could it result in mysql stopping to call ::add_index()? (19:05:39) vasil: if it calls it twice... (19:05:43) Heikki: :-D (19:08:34) vasil: I guess it must have created the index, because the test is doing SHOW INDEX after CREATE INDEX and after DROP INDEX (19:08:43) vasil: the test would have failed if the index was not created (19:09:10) Heikki: You need to check that a query using that index will have the right EXPLAIN and result (19:15:04) vasil: this is with the patch: +CREATE TABLE t (a INT) ENGINE=innodb; +CREATE INDEX ti ON t(a); +INSERT INTO t VALUES (1), (2), (3); +EXPLAIN SELECT * FROM t WHERE a=2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t ref ti ti 5 const 1 Using where; Using index +SELECT * FROM t WHERE a=2; +a +2 (19:15:15) Heikki: :) (19:15:46) vasil: this is with the original code: +CREATE TABLE t (a INT) ENGINE=innodb; +CREATE INDEX ti ON t(a); +INSERT INTO t VALUES (1), (2), (3); +EXPLAIN SELECT * FROM t WHERE a=2; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t ref ti ti 5 const 1 Using where; Using index +SELECT * FROM t WHERE a=2; +a +2 (19:15:59) vasil: it is the same (19:16:06) vasil: do you think this is sufficient? (19:16:20) Heikki: No, you need to do some manual tests, too (19:16:28) vasil: this is manual test (19:16:37) Heikki: Several of them (19:16:46) vasil: what should they do? (19:17:13) Heikki: Test tables of different sizes, different indexes (19:17:27) Heikki: CREATE several indexes at a time (19:19:14) Heikki: Dinner time --> --- cut --- Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1158 committer: vasil timestamp: Thu 2008-06-19 06:59:36 +0000 message: branches/zip: Add the patches that are needed to make autotest.sh succeed. ------------------------------------------------------------ revno: 0.3.1157 committer: inaam timestamp: Wed 2008-06-18 22:20:53 +0000 message: branches/zip: fixes issue# 36 Fixed the issue where an unchanged blob column that is part of the primary key as well is lost if it is externally stored. The fix is provided by Marko. Reviewed by: Sunny ------------------------------------------------------------ revno: 0.3.1156 committer: inaam timestamp: Wed 2008-06-18 15:45:34 +0000 message: branches/zip: internal mantis issue#49 This is to fix an unintended side effect of file_format_check changes. We were reading the trx system page (TRX_SYS_PAGE_NO) before starting recovery and that resulted in redo logs not being applied to the page. The fix is to force a reread by calling buf_pool_invalidate(). This, however, made necessary that any writes to page are deferred to until after the redo log application. Reviewed by: Sunny ------------------------------------------------------------ revno: 0.3.1155 committer: sunny timestamp: Tue 2008-06-17 19:32:18 +0000 message: branches/zip: Add a clarifying comment to the insert buffer mutex/lock order check in sync0sync.c. ------------------------------------------------------------ revno: 0.3.1154 committer: sunny timestamp: Tue 2008-06-17 19:15:37 +0000 message: branches/zip: Cover the diagnostic print statement with a suitable lock. It caused an assertion failure during testing. ------------------------------------------------------------ revno: 0.3.1153 committer: sunny timestamp: Tue 2008-06-17 19:12:07 +0000 message: branches/zip: A small buffer pool size (currently defined as 5M) in a debug build leads to deadlocks. Print a warning at startup. See issue:43 ------------------------------------------------------------ revno: 0.3.1152 committer: vasil timestamp: Mon 2008-06-09 10:27:39 +0000 message: branches/zip: Update the ChangeLog. ------------------------------------------------------------ revno: 0.3.1151 committer: vasil timestamp: Mon 2008-06-09 10:25:09 +0000 message: branches/zip: Merge 2485:2489 from branches/5.1: ------------------------------------------------------------------------ r2488 | vasil | 2008-06-09 13:53:12 +0300 (Mon, 09 Jun 2008) | 15 lines Changed paths: M /branches/5.1/mysql-test/innodb.result branches/5.1: Merge change from MySQL (this almost fixes the failing innodb test): ChangeSet@1.2613, 2008-05-07 09:58:21+04:00, sergefp@mysql.com +5 -0 BUG#35850 "Performance regression in 5.1.23/5.1.24" - Disable the "prefer full scan on clustered primary key over full scan of any secondary key" rule introduced by BUG#35850. - Update test results accordingly (bk trigger: file this for BUG#35850) mysql-test/r/innodb.result@1.214, 2008-05-07 09:57:31+04:00, sergefp@mysql.com +15 -15 BUG#35850 "Performance regression in 5.1.23/5.1.24" - Update test results ------------------------------------------------------------------------ r2489 | vasil | 2008-06-09 14:16:51 +0300 (Mon, 09 Jun 2008) | 20 lines Changed paths: M /branches/5.1/mysql-test/innodb.result branches/5.1: Merge change from MySQL (this fixes the failing innodb test): ChangeSet@1.2628 2008-05-13 17:01:02+05:00 gshchepa@host.loc Merge host.loc:/work/bugs/5.0-bugteam-30059 into host.loc:/work/bk/5.1-bugteam NOTE: the diff for mysql-test/r/innodb.result in this ChangeSet looks empty but the line: Data truncated for column 'c' at row 1 is present in annotated mysql-test/r/innodb.result@1.215 [1] and not present in annotated mysql-test/r/innodb.result@1.216 [2] so it must have been deleted in the above ChangeSet. [1] http://mysql.bkbits.net:8080/mysql-5.1/mysql-test/r/innodb.result?PAGE=anno&REV=4825e033JNz_463Ha9pwInSjqLvIQg [2] http://mysql.bkbits.net:8080/mysql-5.1/mysql-test/r/innodb.result?PAGE=anno&REV=482982fcUoskWjhU2xMH2BZ4Gyukfg ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1150 committer: vasil timestamp: Fri 2008-06-06 15:34:17 +0000 message: branches/zip: Update the ChangeLog. ------------------------------------------------------------ revno: 0.3.1149 committer: vasil timestamp: Fri 2008-06-06 15:24:58 +0000 message: branches/zip: Merge 2437:2485 from branches/5.1: (r2478 was skipped for the obvious reason) ------------------------------------------------------------------------ r2464 | vasil | 2008-05-19 17:59:42 +0300 (Mon, 19 May 2008) | 9 lines branches/5.1: Fix Bug#36600 SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number by removing the Innodb_buffer_pool_pages_latched variable from SHOW STATUS output in non-UNIV_DEBUG compilation. Approved by: Heikki ------------------------------------------------------------------------ r2466 | calvin | 2008-05-20 01:37:14 +0300 (Tue, 20 May 2008) | 12 lines branches/5.1: Fix Bug#11894 innodb_file_per_table crashes w/ Windows .sym symbolic link hack The crash was due to un-handled error 3 (path not found). In the case of file per table, change the call to os_file_handle_error_no_exit() from os_file_handle_error(). Also, checks for full path pattern during table create (Windows only), which is used in symbolic link and temp table creation. Approved by: Heikki ------------------------------------------------------------------------ r2478 | sunny | 2008-05-23 08:29:08 +0300 (Fri, 23 May 2008) | 3 lines branches/5.1: Fix for bug# 36793. This is a back port from branches/zip. This code has been tested on a big-endian machine too. ------------------------------------------------------------------------ r2480 | vasil | 2008-05-27 11:40:07 +0300 (Tue, 27 May 2008) | 11 lines branches/5.1: Fix Bug#36819 ut_usectime does not handle errors from gettimeofday by retrying gettimeofday() several times if it fails in ut_usectime(). If it fails on all calls then return error to the caller to be handled at higher level. Update the variable innodb_row_lock_time_max in SHOW STATUS output only if ut_usectime() was successful. ------------------------------------------------------------------------ r2482 | sunny | 2008-05-28 12:18:35 +0300 (Wed, 28 May 2008) | 5 lines branches/5.1: Fix for Bug#35602, "Failed to read auto-increment value from storage engine". The test for REPLACE was an error of ommission since it's classified as a simple INSERT. For REPLACE statements we don't acquire the special AUTOINC lock for AUTOINC_NEW_STYLE_LOCKING with this fix. ------------------------------------------------------------------------ r2485 | vasil | 2008-05-28 16:01:14 +0300 (Wed, 28 May 2008) | 9 lines branches/5.1: Fix Bug#36149 Read buffer overflow in srv0start.c found during "make test" Use strncmp(3) instead of memcmp(3) to avoid reading past end of the string if it is empty (*str == '\0'). This bug is _not_ a buffer overflow. Discussed with: Sunny (via IM) ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1148 committer: vasil timestamp: Wed 2008-05-21 06:29:55 +0000 message: branches/zip: Update the ChangeLog ------------------------------------------------------------ revno: 0.3.1147 committer: vasil timestamp: Mon 2008-05-19 08:35:38 +0000 message: branches/zip: Non-functional change - conform to our coding style and make more readbale (hopefully) by not using variables with names "v" and "w". ------------------------------------------------------------ revno: 0.3.1146 committer: inaam timestamp: Sat 2008-05-17 22:31:11 +0000 message: branches/zip: Fixed compilation warning introduced during POSIX AIO clean up patch. Spotted by: Sunny and Vasil ------------------------------------------------------------ revno: 0.3.1145 committer: inaam timestamp: Fri 2008-05-16 14:41:18 +0000 message: branches/zip: Clean up the POSIX_ASYNC_IO code which is currently not used and is unlikely to be ever used. ------------------------------------------------------------ revno: 0.3.1144 committer: sunny timestamp: Wed 2008-05-14 04:37:24 +0000 message: branches/zip: Fix bug introduced in r2453. ------------------------------------------------------------ revno: 0.3.1143 committer: sunny timestamp: Thu 2008-05-08 10:08:09 +0000 message: branches/zip: Fix bug# 36172. The zip code changes a precondition that a page must be big enough to store two records, this is done because compression later may very well result in two records residing on the same page. This change handles the case where only one record fits on a page. We don't split the page in the middle by default if there is only record on the page. We only split the page if the tuple to be inserted is less than existing record. That way the existing record is copied over to the right page during the split and the new tuple is inserted to the left. ------------------------------------------------------------ revno: 0.3.1142 committer: sunny timestamp: Thu 2008-05-08 00:06:46 +0000 message: branches/zip: Non functional change. ------------------------------------------------------------ revno: 0.3.1141 committer: vasil timestamp: Wed 2008-05-07 14:01:33 +0000 message: branches/zip: Add a ChangeLog entry for Bug#36222 ------------------------------------------------------------ revno: 0.3.1140 committer: vasil timestamp: Wed 2008-05-07 11:20:37 +0000 message: branches/zip: Add new entries to the ChangeLog ------------------------------------------------------------ revno: 0.3.1139 committer: vasil timestamp: Wed 2008-05-07 11:01:18 +0000 message: branches/zip: Remove too detailed entry from ChangeLog. Best to have only user-visible changes there. ------------------------------------------------------------ revno: 0.3.1138 committer: sunny timestamp: Tue 2008-05-06 22:29:53 +0000 message: branches/zip: Non functional change to error message. ------------------------------------------------------------ revno: 0.3.1137 committer: calvin timestamp: Tue 2008-05-06 15:00:25 +0000 message: branches/zip: Implement the system tablespace tagging described on the wiki: https://svn.innodb.com/innobase/InnoDB_version_and_feature_compatibility A brief description of the changes: * The file format tag will be saved in the trx system page, starting at (UNIV_PAGE_SIZE - 16) for 8 bytes. * The configuration parameter innodb_file_format_check is introduced. This variable can be set to on/off and any of the supported file formats in the configuration file, but can only be set to any of the supported file formats during runtime. The default is on. * During table create/open, check the current file format against the max in file_format_max. If the current file format is newer, update file_format_max and tag the system tablespace with the newer one in a normal mtr. * During startup, write the tag to the error log and check it against DICT_TF_FORMAT_MAX. Refuse to start with error, if -- DICT_TF_FORMAT_MAX < the tag, and -- innodb_file_format_check is ON Print out a warning , if -- DICT_TF_FORMAT_MAX < the tag, but -- innodb_file_format_check is off * The system tablespace tag is re-settable using: set innodb_file_format_check = Approved by: Sunny ------------------------------------------------------------ revno: 0.3.1136 committer: vasil timestamp: Tue 2008-05-06 11:10:09 +0000 message: branches/zip: Add InnoDB version in these places: * In INFORMATION_SCHEMA.PLUGINS.PLUGIN_VERSION, only 1.2 out of 1.2.3 because MySQL supports only one dot there * At startup: "080501 12:28:06 InnoDB Plugin 1.0.1 started; log sequence number 46509" * In a server variable innodb_version; mysql> select @@innodb_version; +------------------+ | @@innodb_version | +------------------+ | 1.0.1 | +------------------+ Approved by: Sunny ------------------------------------------------------------ revno: 0.3.1135 committer: vasil timestamp: Tue 2008-05-06 10:01:41 +0000 message: branches/zip: Allow InnoDB I_S plugins to be installed when InnoDB storage engine is not installed but show empty tables when SELECTing from them in this case. Set srv_was_started to FALSE at the end of innobase_shutdown_for_mysql() so the I_S plugins can detect if InnoDB is uninstalled. This is needed to workaround the MySQL Bug#36399 Double free bug when INFORMATION_SCHEMA plugin init function fails and is more flexible as it allows I_S plugins to be installed before the InnoDB plugin and detects if the latter is uninstalled after this. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1134 committer: sunny timestamp: Mon 2008-05-05 22:56:01 +0000 message: branches/zip: Fix a bug in the sync debug code where a lock with level SYNC_LEVEL_VARYING would cause an assertion failure when a thread tried to release it. We still have to check because it's a varying lock and could have been added later, so if the lookup fails then we simply ignore it and return TRUE. ------------------------------------------------------------ revno: 0.3.1133 committer: sunny timestamp: Sun 2008-05-04 09:39:30 +0000 message: branches/zip: Drop the tables that were created in the test. ------------------------------------------------------------ revno: 0.3.1132 committer: vasil timestamp: Sun 2008-05-04 07:06:59 +0000 message: branches/zip: Change an error message. Suggested by: Ken ------------------------------------------------------------ revno: 0.3.1131 committer: vasil timestamp: Wed 2008-04-30 16:59:16 +0000 message: branches/zip: Merge 2423:2437 from branches/5.1: ------------------------------------------------------------------------ r2429 | vasil | 2008-04-30 11:19:06 +0300 (Wed, 30 Apr 2008) | 10 lines branches/5.1: * Use INNODB_CFLAGS insead of cluttering CFLAGS with InnoDB specific flags. CFLAGS are used to compile every file in the MySQL source tree. * Add INNODB_DYNAMIC_CFLAGS to the flags of the dynamic plugin and use -prefer-non-pic to make the dynamic plugin faster on i386. Approved by: Sunny ------------------------------------------------------------------------ r2430 | vasil | 2008-04-30 11:48:35 +0300 (Wed, 30 Apr 2008) | 8 lines branches/5.1: Use CFLAGS instead of INNODB_CFLAGS to avoid having incompatible flags inserted in CFLAGS and INNODB_CFLAGS and to avoid compiling mysql and innodb with different flags. Discussed with: Sunny ------------------------------------------------------------------------ r2431 | vasil | 2008-04-30 11:54:49 +0300 (Wed, 30 Apr 2008) | 4 lines branches/5.1: Fix r2430, it should be CFLAGS="$CFLAGS ..." not CFLAGS="..." ------------------------------------------------------------------------ r2432 | vasil | 2008-04-30 11:58:38 +0300 (Wed, 30 Apr 2008) | 4 lines branches/5.1: Non-functional change: use tabs for indentation in plug.in. ------------------------------------------------------------------------ r2433 | vasil | 2008-04-30 12:02:35 +0300 (Wed, 30 Apr 2008) | 5 lines branches/5.1: Add vim modeline to hint it that plug.in is a config file so it can be colorized. ------------------------------------------------------------------------ r2434 | vasil | 2008-04-30 18:45:44 +0300 (Wed, 30 Apr 2008) | 17 lines branches/5.1: Merge changes from MySQL: ChangeSet@1.2645, 2007-12-19 13:24:43+00:00, jperkin@chorlton.adsl.perkin.org.uk +14 -0 Add new pkgplugindir handling to seperate plugins from libraries, and allow override for binary distributions. Extend mysql_config to print compiled-in plugin location for third-party plugins to use. Resolves bug#31736. and ChangeSet@1.2646, 2008-01-02 13:00:46+00:00, jperkin@chorlton.adsl.perkin.org.uk +11 -0 Use pkglibdir to simplify pkgplugindir, and fix the path in a couple of Makefiles. Continuation of the fix for bug#31736. ------------------------------------------------------------------------ r2435 | vasil | 2008-04-30 19:04:36 +0300 (Wed, 30 Apr 2008) | 10 lines branches/5.1: Merge change from MySQL: ChangeSet@1.2563, 2008-03-18 19:42:04+04:00, gluh@mysql.com +1 -0 Bug#35406 5.1-opt crashes on select from I_S.REFERENTIAL_CONSTRAINTS added intialization of f_key_info.referenced_key_name for the case when referenced table is dropped ------------------------------------------------------------------------ r2436 | vasil | 2008-04-30 19:15:46 +0300 (Wed, 30 Apr 2008) | 7 lines branches/5.1: Non-functional white space change in Makefile.am: Use tabs for indentation and be consistent about spaces around the equal sign. ------------------------------------------------------------------------ r2437 | vasil | 2008-04-30 20:36:11 +0300 (Wed, 30 Apr 2008) | 8 lines branches/5.1: Fix Bug#36434 ha_innodb.so is installed in the wrong directory Change pkglib_LTLIBRARIES with pkgplugin_LTLIBRARIES which has been forgotten in this commit: http://lists.mysql.com/commits/40206 ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1130 committer: vasil timestamp: Wed 2008-04-30 07:02:16 +0000 message: Rename install_dynamic.sql to install_innodb_plugins.sql Suggested by: Ken ------------------------------------------------------------ revno: 0.3.1129 committer: vasil timestamp: Wed 2008-04-30 06:31:25 +0000 message: Add SQL script to install InnoDB if it is built as a dynamic plugin Suggested by: Ken ------------------------------------------------------------ revno: 0.3.1128 committer: vasil timestamp: Wed 2008-04-30 06:24:23 +0000 message: Remove README from branches/zip. This file is added by https://svn.innodb.com/svn/plugin/trunk/build/source_release.sh which takes it from https://svn.innodb.com/svn/plugin/trunk/support/README-source ------------------------------------------------------------ revno: 0.3.1127 committer: vasil timestamp: Wed 2008-04-30 06:20:52 +0000 message: Add ChangeLog. Formatted in compliance with many GNU tools, roughly described in http://www.gnu.org/software/guile/changelogs/guile-changelogs_toc.html ------------------------------------------------------------ revno: 0.3.1126 committer: vasil timestamp: Wed 2008-04-30 05:42:56 +0000 message: branches/zip: Merge 2384:2423 from branches/5.1: ------------------------------------------------------------------------ r2386 | vasil | 2008-03-27 07:45:02 +0200 (Thu, 27 Mar 2008) | 22 lines branches/5.1: Merge change from MySQL (this fixes the failing innodb test): ChangeSet@1.1810.3601.4, 2008-02-07 02:33:21+04:00, gshchepa@host.loc +9 -0 Fixed bug#30059. Server handles truncation for assignment of too-long values into CHAR/VARCHAR/TEXT columns in a different ways when the truncated characters are spaces: 1. CHAR(N) columns silently ignore end-space truncation; 2. TEXT columns post a truncation warning/error in the non-strict/strict mode. 3. VARCHAR columns always post a truncation note in any mode. Space truncation processing has been synchronised over CHAR/VARCHAR/TEXT columns: current behavior of VARCHAR columns has been propagated as standard. Binary-encoded string/BLOB columns are not affected. ------------------------------------------------------------------------ r2387 | vasil | 2008-03-27 08:49:05 +0200 (Thu, 27 Mar 2008) | 8 lines branches/5.1: Check whether *trx->mysql_query_str is != NULL in addition to trx->mysql_query_str. This adds more safety. This may or may not fix Bug#35226 RBR event crashes slave. ------------------------------------------------------------------------ r2388 | vasil | 2008-03-27 14:02:34 +0200 (Thu, 27 Mar 2008) | 7 lines branches/5.1: Swap the order in which mysql_thd, mysql_query_str and *mysql_query_str are checked for non-NULL. Suggested by: Marko ------------------------------------------------------------------------ r2419 | vasil | 2008-04-23 19:08:06 +0300 (Wed, 23 Apr 2008) | 9 lines branches/5.1: Change the fix for Bug#32440 to show bytes instead of kilobytes in INFORMATION_SCHEMA.TABLES.DATA_FREE. Suggested by: Domas Mituzas Approved by: Heikki ------------------------------------------------------------------------ r2420 | calvin | 2008-04-24 15:25:30 +0300 (Thu, 24 Apr 2008) | 4 lines branches/5.1: Fix bug#29507 TRUNCATE shows to many rows effected In InnoDB, the row count is only a rough estimate used by SQL optimization. InnoDB is now return row count 0 for TRUNCATE operation. ------------------------------------------------------------------------ r2421 | calvin | 2008-04-24 15:32:30 +0300 (Thu, 24 Apr 2008) | 6 lines branches/5.1: Fix bug#35537 - Innodb doesn't increment handler_update and handler_delete Add the calls to ha_statistic_increment() in ha_innobase::delete_row() and ha_innobase::update_row(). ------------------------------------------------------------------------ r2422 | vasil | 2008-04-24 16:00:30 +0300 (Thu, 24 Apr 2008) | 11 lines branches/5.1: Fix Bug#36169 create innodb compressed table with too large row size crashed Sometimes it is possible that row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in row_create_index_for_mysql() when the index object is freed so copy the table name to a safe place beforehand and use the copy. Approved by: Sunny ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.3.1125 committer: vasil timestamp: Tue 2008-04-29 14:57:06 +0000 message: branches/zip: Fix Mantis issue#34 https://svn.innodb.com/mantis/view.php?id=34 "I_S plugins should refuse to load if the storage engine plugin is not loaded" and MySQL Bug#36310 http://bugs.mysql.com/36310 "InnoDB plugin crash" * Make srv_was_started public * Set srv_was_started at the end of innobase_start_or_create_for_mysql() so it is not set to TRUE if innodb encounters some startup error * Refuse to start any of the I_S plugins if srv_was_started is not TRUE Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1124 committer: vasil timestamp: Wed 2008-04-23 05:45:19 +0000 message: branches/zip: Fix Bug#36169 create innodb compressed table with too large row size crashed Sometimes it is possible that row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in row_create_index_for_mysql() when the index object is freed, so copy the table name to a safe place beforehand and use the copy. Approved by: Sunny ------------------------------------------------------------ revno: 0.3.1123 committer: sunny timestamp: Sat 2008-04-12 10:04:28 +0000 message: branches/zip: The block can't be in io fix state WRITE and we check for that in the fix but the earlier check fails because it tries to be too strict and assumes that if the block is on the clean list then it can only be in state io fix NONE. ------------------------------------------------------------ revno: 0.3.1122 committer: sunny timestamp: Fri 2008-04-11 09:58:17 +0000 message: branches/zip: Remove spaces and fix an uninitialized variable compiler warning. ------------------------------------------------------------ revno: 0.3.1121 committer: vasil timestamp: Fri 2008-04-11 06:51:16 +0000 message: Remove the aux build script as they are now in the plugin/ repo. ------------------------------------------------------------ revno: 0.3.1120 committer: vasil timestamp: Fri 2008-04-11 06:42:35 +0000 message: Sync with the latest changes. ------------------------------------------------------------ revno: 0.3.1119 committer: calvin timestamp: Thu 2008-04-10 11:02:16 +0000 message: branches/zip: Implementation of using animal names for innodb_file_format, described in Mantis#30. Specifically: - Allow innodb_file_format to take string arguments - Make innodb_file_format system variable a string instead of a number - Implement the callback functions - Update warning messages Three new functions are implemented: file_format_name_lookup(): Validate the file format name and return its corresponding id. innodb_file_format_check(): Check if it is a valid file format. This function is registered as a callback with MySQL. innodb_file_format_update(): Update the global variable using the "saved" value. This functions is registered as a callback with MySQL. ------------------------------------------------------------ revno: 0.3.1118 committer: sunny timestamp: Thu 2008-04-10 08:51:26 +0000 message: branches/zip: Handle rename of variables. If the statically linked in engine has a config variable that has since been renamed, we use a mapping table to check for matches. ------------------------------------------------------------ revno: 0.3.1117 committer: vasil timestamp: Wed 2008-04-09 13:39:33 +0000 message: Sync the comment with the actual name of the source archive. ------------------------------------------------------------ revno: 0.3.1116 committer: sunny timestamp: Wed 2008-04-09 09:24:04 +0000 message: branches/zip: Add an additional target architecture parameter to make_binary_release.sh which is passed to dynconfig. If the target architecture is i[3456]86 then we disable the --with-pic flag. ------------------------------------------------------------ revno: 0.3.1115 committer: inaam timestamp: Wed 2008-04-09 04:25:35 +0000 message: branches/zip: Introduced a new session level config param innodb_strict_mode. If it is set we do extra checking at time of table creation and fail if any invalid combination of KEY_BLOCK_SIZE or ROW_FORMAT is specified. Reviewed by: Sunny ------------------------------------------------------------ revno: 0.3.1114 committer: vasil timestamp: Mon 2008-04-07 07:14:23 +0000 message: Do not calculate MD5 sums of the archives. Not necessary in this simple script. Keep it simple. ------------------------------------------------------------ revno: 0.3.1113 committer: vasil timestamp: Mon 2008-04-07 07:12:48 +0000 message: Put InnoDB version before MySQL version in the name of the archive. ------------------------------------------------------------ revno: 0.3.1112 committer: vasil timestamp: Fri 2008-04-04 11:32:41 +0000 message: Hack the autotools' files so users can compile without having autotools installed. ------------------------------------------------------------ revno: 0.3.1111 committer: vasil timestamp: Fri 2008-04-04 07:04:21 +0000 message: branches/zip: Reflect the rename of build-plugin.sh. ------------------------------------------------------------ revno: 0.3.1110 committer: vasil timestamp: Fri 2008-04-04 07:03:05 +0000 message: branches/zip: Rename build-plugin.sh to make_binary_release.sh. ------------------------------------------------------------ revno: 0.3.1109 committer: vasil timestamp: Fri 2008-04-04 07:01:43 +0000 message: branches/zip: Add an aux script for preparing the source archives of the plugin that we are going to ship. ------------------------------------------------------------ revno: 0.3.1108 committer: vasil timestamp: Fri 2008-04-04 06:59:48 +0000 message: branches/zip: Add a README file containing simple instructions how to build the plugin from source. ------------------------------------------------------------ revno: 0.3.1107 committer: marko timestamp: Fri 2008-03-28 10:51:11 +0000 message: branches/zip: i_s_cmpmem_fill_low(): Do not reset all buddy allocator statistics, but only the cumulated count and duration of relocation operations. ------------------------------------------------------------ revno: 0.3.1106 committer: marko timestamp: Fri 2008-03-28 10:37:40 +0000 message: branches/zip: Minor change to the formatting of integer fields in INFORMATION_SCHEMA.INNODB_CMP*. i_s_cmp_fields_info, i_s_cmpmem_fields_info: Define the field lengths as MY_INT32_NUM_DECIMAL_DIGITS or MY_INT64_NUM_DECIMAL_DIGITS. i_s_cmpmem_fields_info: Define "relocation_ops" as MYSQL_TYPE_LONGLONG. ------------------------------------------------------------ revno: 0.3.1105 committer: marko timestamp: Fri 2008-03-28 10:31:24 +0000 message: branches/zip: Rename the compression-related INFORMATION_SCHEMA tables and columns as suggested by Ken. INNODB_COMPRESSION, INNODB_COMPRESSION_RESET: Rename to INNODB_CMP, INNODB_CMP_RESET, with the following columns: page_size compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time INNODB_COMPRESSION_BUDDY, INNODB_COMPRESSION_BUDDY_RESET: Rename to INNODB_CMPMEM, INNODB_CMPMEM_RESET, with the following columns: page_size pages_used pages_free relocation_ops relocation_time ------------------------------------------------------------ revno: 0.3.1104 committer: marko timestamp: Fri 2008-03-28 10:03:58 +0000 message: branches/zip: Implement the INFORMATION_SCHEMA tables INNODB_COMPRESSION_BUDDY and INNODB_COMPRESSION_BUDDY_RESET. buf_buddy_stat_struct, buf_buddy_stat_t, buf_buddy_stat[]: Statistics of the buddy system grouped by block size. i_s_innodb_compression_buddy, i_s_innodb_compression_buddy_reset: New INFORMATION_SCHEMA plugins. i_s_compression_buddy_fields_info[]: Define the fields: size, used, free, relocated, relocated_sec. i_s_compression_buddy_fill_low(), i_s_compression_buddy_fill(), i_s_compression_buddy_reset_fill(): Fill the fields. i_s_compression_buddy_init(), i_s_compression_buddy_reset_init(): Initialize the tables. ------------------------------------------------------------ revno: 0.3.1103 committer: marko timestamp: Fri 2008-03-28 09:59:07 +0000 message: branches/zip: Correct minor mistakes made in r2390. i_s_compression_fill_low(): Do not acquire or release the buffer pool mutex. The page_zip_stat[] is not protected by any mutex. i_s_innodb_compression, i_s_innodb_compression_reset: Change the description to say "compression" instead of "compressed buffer pool". ------------------------------------------------------------ revno: 0.3.1102 committer: marko timestamp: Fri 2008-03-28 09:28:54 +0000 message: branches/zip: Rename the INFORMATION_SCHEMA tables INNODB_ZIP and INNODB_ZIP_RESET to INNODB_COMPRESSION and INNODB_COMPRESSION_RESET, and remove the statistics of the buddy system. This change was discussed with Ken. It makes the tables shorter and easier to understand. The removed data will be represented in the tables INNODB_COMPRESSION_BUDDY and INNODB_COMPRESSION_BUDDY_RESET that will be added later. i_s_innodb_zip, i_s_innodb_zip_reset, i_s_zip_fields_info[], i_s_zip_fill_low(), i_s_zip_fill(), i_s_zip_reset_fill(), i_s_zip_init(), i_s_zip_reset_init(): Replace "zip" with "compression". i_s_compression_fields_info[]: Remove "used", "free", "relocated", "relocated_usec". In "compressed_usec" and "decompressed_usec", replace microseconds with seconds ("usec" with "sec"). page_zip_decompress(): Correct a typo in the function comment. PAGE_ZIP_SSIZE_BITS, PAGE_ZIP_NUM_SSIZE: New constants. page_zip_stat_t, page_zip_stat: Statistics of the compression, grouped by page size. page_zip_simple_validate(): Assert that page_zip->ssize is reasonable. ------------------------------------------------------------ revno: 0.3.1101 committer: vasil timestamp: Thu 2008-03-27 18:55:45 +0000 message: branches/zip: Add the prototype of check_global_access() if MySQL version is less than 5.1.24 to make zip compile with 5.1.23. This was removed when MySQL added the prototype in their code in 5.1.24 but we still need zip to compile with older versions. ------------------------------------------------------------ revno: 0.3.1100 committer: marko timestamp: Wed 2008-03-26 17:14:00 +0000 message: branches/zip: Merge 2367:2384 from branches/5.1. ------------------------------------------------------------ revno: 0.3.1099 committer: marko timestamp: Wed 2008-03-19 08:47:24 +0000 message: branches/zip: Remove innodb.patch. This patch tries to enable resizeable buffer pool by polling the configuration parameter for the buffer pool size, which is not a good solution. The right way could be to have an update function callback of a settable MySQL variable to send an event to the master thread. It could also make sense to expose the buffer pool chunks to the user. The first chunk would never be freed. Other chunks than the first one would only be used for allocating page frames (uncompressed or compressed) and block descriptors of of compressed pages (buf_page_t). That is, other users of the buffer pool, such as mem_heap_create_block() and the lock table, would be restricted to the first chunk. This would allow other chunks to be freed by simply flushing any dirty blocks that they contain. It might also be worthwhile to create multiple chunks initially, based on the initial buffer pool size and the HugeTLB page size. In that way, the buffer pool could be reduced from the initial configuration at runtime. ------------------------------------------------------------ revno: 0.3.1098 committer: marko timestamp: Tue 2008-03-18 10:10:51 +0000 message: branches/zip: Pass the tablespace flags correctly when creating or opening single-table tablespaces. This bug was reported by Sunny as Mantis issue #26. fil_space_create(), fil_create_new_single_table_tablespace(), fil_open_single_table_tablespace(), fsp_header_init_fields(): Add ut_a(flags != DICT_TF_COMPACT). dict_build_table_def_step(), row_import_tablespace_for_mysql(), row_truncate_table_for_mysql(): Pass correct flags to fil_create_new_single_table_tablespace() or fil_open_single_table_tablespace(). ------------------------------------------------------------ revno: 0.3.1097 committer: marko timestamp: Tue 2008-03-18 10:03:51 +0000 message: branches/zip: dict_load_table(): Remove a redundant check for !flags. The function dict_sys_tables_get_flags() already ensures that the table flags are 0 unless ROW_FORMAT=COMPACT. ------------------------------------------------------------ revno: 0.3.1096 committer: marko timestamp: Mon 2008-03-17 14:19:04 +0000 message: branches/zip: Rename ib_ulonglong to ib_uint64_t and ib_longlong to ib_int64_t. ------------------------------------------------------------ revno: 0.3.1095 committer: marko timestamp: Mon 2008-03-17 14:09:44 +0000 message: branches/zip: Merge 2295:2367 from branches/5.1. ------------------------------------------------------------ revno: 0.3.1094 committer: marko timestamp: Mon 2008-03-17 14:07:11 +0000 message: branches/zip: innodb-zip.result: Adjust to the change made in r2368. ------------------------------------------------------------ revno: 0.3.1093 committer: marko timestamp: Mon 2008-03-17 11:30:23 +0000 message: branches/zip: innodb-zip.test: Add a test for inserting a record that does not fit by itself on the compressed page. ------------------------------------------------------------ revno: 0.3.1092 committer: marko timestamp: Mon 2008-03-17 11:28:17 +0000 message: branches/zip: Always translate DB_TOO_BIG_RECORD into my_error(ER_TOO_BIG_ROWSIZE, ...). Otherwise, MySQL can report "Got error 139 from storage engine" instead of the appropriate error message. ha_innobase::index_read(), ha_innobase::general_fetch(): Replace if-else if-else with switch-case. Pass table->flags to convert_error_code_to_mysql(). innodb_check_for_record_too_big_error(). Remove. This code belongs to convert_error_code_to_mysql(). convert_error_code_to_mysql(): Add the parameter "flags", for table flags. Translate DB_TOO_BIG_RECORD into ER_TOO_BIG_ROWSIZE. create_index(): Add the parameter "flags". create_clustered_index_when_no_primary(): Replace the parameter "comp" with "flags". innobase_drop_database(): Remove the #ifdef'd-out call to convert_error_code_to_mysql(). ------------------------------------------------------------ revno: 0.3.1091 committer: marko timestamp: Mon 2008-03-17 11:22:52 +0000 message: branches/zip: ha_innobase::create(): Say innodb_row_format=1 instead of innodb_row_format>0. ------------------------------------------------------------ revno: 0.3.1090 committer: marko timestamp: Fri 2008-03-14 11:07:39 +0000 message: branches/zip: innodb-zip.test: Add tests for warnings about ROW_FORMAT=COMPRESSED when neither innodb_file_per_table nor innodb_file_format are set. ------------------------------------------------------------ revno: 0.3.1089 committer: marko timestamp: Thu 2008-03-13 17:25:53 +0000 message: branches/zip: Implement ROW_FORMAT=COMPRESSED and ROW_FORMAT=DYNAMIC. Throw warnings, not errors for wrong ROW_FORMAT or KEY_BLOCK_SIZE, so that any table dump can be loaded. As of this change, InnoDB supports the following table formats: ROW_FORMAT=REDUNDANT the only format before MySQL/InnoDB 5.0.3 ROW_FORMAT=COMPACT the new default format of MySQL/InnoDB 5.0.3 ROW_FORMAT=DYNAMIC uncompressed, no prefix in the clustered index record for BLOBs ROW_FORMAT=COMPRESSED like ROW_FORMAT=DYNAMIC, but zlib compressed B-trees and BLOBs; the compressed page size is specified by KEY_BLOCK_SIZE in kilobytes (1, 2, 4, 8, or 16; default 8) KEY_BLOCK_SIZE=1, 2, 4, 8, or 16: implies ROW_FORMAT=COMPRESSED; ignored if ROW_FORMAT is not COMPRESSED KEY_BLOCK_SIZE=anything else: ignored The InnoDB row format is displayed in the 4th column (Row_format) of the output of SHOW TABLE STATUS. The Create_options column may show ROW_FORMAT= and KEY_BLOCK_SIZE=, but they do not necessarily have anything to do with InnoDB. The table format can also be queried like this: SELECT table_schema, table_name, row_format FROM information_schema.tables WHERE engine='innodb' and row_format in ('Compressed','Dynamic'); When Row_format='Compressed', KEY_BLOCK_SIZE should usually correspond to the compressed page size. But the .frm file could be manipulated to show any KEY_BLOCK_SIZE. For some reason, INFORMATION_SCHEMA.TABLES.CREATE_OPTIONS does not include KEY_BLOCK_SIZE. It does include row_format (spelled in lowercase). This looks like a MySQL bug, because the table INFORMATION_SCHEMA.TABLES probably tries to replace SHOW TABLE STATUS. I reported this as Bug #35275 . ha_innobase::get_row_type(): Add ROW_TYPE_COMPRESSED, ROW_TYPE_DYNAMIC. ha_innobase::create(): Implement ROW_FORMAT=COMPRESSED and ROW_FORMAT=DYNAMIC. Do not throw errors for wrong ROW_FORMAT or KEY_BLOCK_SIZE, but issue warnings instead. ha_innobase::check_if_incompatible_data(): Return COMPATIBLE_DATA_NO if KEY_BLOCK_SIZE has been specified. innodb.result: Adjust the result for the warning issued for ROW_FORMAT=FIXED. innodb-zip.test: Add tests. Query INFORMATION_SCHEMA.TABLES for ROW_FORMAT. ------------------------------------------------------------ revno: 0.3.1088 committer: marko timestamp: Thu 2008-03-13 13:26:23 +0000 message: branches/zip: row_upd_index_replace_new_col_val(): Fix the function parameters that were somehow wrong in r2363. ------------------------------------------------------------ revno: 0.3.1087 committer: marko timestamp: Thu 2008-03-13 12:49:34 +0000 message: branches/zip: Fix a bug in the retrieval of old versions of records containing externally stored columns. innodb-zip.test: Correct the test case. Without the fixes, the test would fail, because the BLOB would be prepended with a 768-byte prefix of the data. row_upd_index_replace_new_col_vals_index_pos(), row_upd_index_replace_new_col_vals(): Use only one "heap" parameter that must be non-NULL. When fetching externally stored columns, use upd_field_t::orig_len. upd_get_field_by_field_no(): New accessor function, for retrieving an field from an update vector by field_no. row_upd_index_replace_new_col_val(): New function, for replacing the value from an update vector. This used to be duplicated code in row_upd_index_replace_new_col_vals_index_pos() and row_upd_index_replace_new_col_vals(). ------------------------------------------------------------ revno: 0.3.1086 committer: marko timestamp: Thu 2008-03-13 09:29:22 +0000 message: branches/zip: Non-functional change: Add some missing const qualifiers. btr_index_rec_validate_report(), btr_index_rec_validate(): Add const qualifiers to page, rec, index. row_vers_old_has_index_entry(), row_vers_build_for_consistent_read(): Add const qualifier to rec. row_vers_build_for_semi_consistent_read(): Add const qualifier to rec and old_vers. row_sel_store_row_id_to_prebuilt(): Add const qualifiers to index_rec, index, offsets. row_sel_build_prev_vers_for_mysql(): Add const qualifier to rec. row_sel_get_clust_rec_for_mysql(): Add const qualifier to rec and out_rec. row_sel_try_search_shortcut_for_mysql(): Add const qualifier to out_rec. ------------------------------------------------------------ revno: 0.3.1085 committer: marko timestamp: Tue 2008-03-11 08:57:25 +0000 message: branches/zip: dict_table_print_low(): Print table->flags, so that users can create the table innodb_table_monitor and see in the error log which tables are incompatible with older versions of InnoDB. ------------------------------------------------------------ revno: 0.3.1084 committer: marko timestamp: Mon 2008-03-10 11:05:32 +0000 message: branches/zip: Implement the configuration parameter and settable global variable innodb_file_format. Implement file format version stamping of *.ibd files and SYS_TABLES.TYPE. This change breaks introduces an incompatible change for for compressed tables. We can do this, as we have not released yet. innodb-zip.test: Add tests for stricter KEY_BLOCK_SIZE and ROW_FORMAT checks. DICT_TF_COMPRESSED_MASK, DICT_TF_COMPRESSED_SHIFT: Replace with DICT_TF_ZSSIZE_MASK, DICT_TF_ZSSIZE_SHIFT. DICT_TF_FORMAT_MASK, DICT_TF_FORMAT_SHIFT, DICT_TF_FORMAT_51, DICT_TF_FORMAT_ZIP: File format version, stored in table->flags, in the .ibd file header, and in SYS_TABLES.TYPE. dict_create_sys_tables_tuple(): Write the table flags to SYS_TABLES.TYPE if the format is at least DICT_TF_FORMAT_ZIP. For old formats (DICT_TF_FORMAT_51), write DICT_TABLE_ORDINARY as the table type. DB_TABLE_ZIP_NO_IBD: Remove the error code. The error handling is done in ha_innodb.cc; as a failsafe measure, dict_build_table_def_step() will silently clear the compression and format flags instead of returning this error. dict_mem_table_create(): Assert that no extra bits are set in the flags. dict_sys_tables_get_zip_size(): Rename to dict_sys_tables_get_flags(). Check all flag bits, and return ULINT_UNDEFINED if the combination is unsupported. dict_boot(): Document the SYS_TABLES columns N_COLS and TYPE. dict_table_get_format(), dict_table_set_format(), dict_table_flags_to_zip_size(): New accessors to table->flags. dtuple_convert_big_rec(): Introduce the auxiliary variables local_len, local_prefix_len. Store a 768-byte prefix locally if the file format is less than DICT_TF_FORMAT_ZIP. dtuple_convert_back_big_rec(): Restore the columns. srv_file_format: New variable: innodb_file_format. fil_create_new_single_table_tablespace(): Replace the parameter zip_size with table->flags. fil_open_single_table_tablespace(): Replace the parameter zip_size_in_k with table->flags. Check the flags. fil_space_struct, fil_space_create(), fil_op_write_log(): Replace zip_size with flags. fil_node_open_file(): Note a TODO item for InnoDB Hot Backup. Check that the tablespace flags match. fil_space_get_zip_size(): Rename to fil_space_get_flags(). Add a wrapper for fil_space_get_zip_size(). fsp_header_get_flags(): New function. fsp_header_init_fields(): Replace zip_size with flags. FSP_SPACE_FLAGS: New name for the tablespace flags. This field used to be called FSP_PAGE_ZIP_SIZE, or FSP_LOWEST_NO_WRITE. It has always been written as 0 in MySQL/InnoDB versions 4.1 to 5.1. MLOG_ZIP_FILE_CREATE: Rename to MLOG_FILE_CREATE2. Add a 32-bit parameter for the tablespace flags. ha_innobase::create(): Check the table attributes ROW_FORMAT and KEY_BLOCK_SIZE. Issue errors if they are inappropriate, or warnings if the inherited attributes (in ALTER TABLE) will be ignored. PAGE_ZIP_MIN_SIZE_SHIFT: New constant: the 2-logarithm of PAGE_ZIP_MIN_SIZE. ------------------------------------------------------------ revno: 0.3.1083 committer: marko timestamp: Fri 2008-03-07 14:10:08 +0000 message: innodb-zip.test: Now that innodb_file_per_table is a settable variable as of r2355, remove the special startup options innodb-zip-master.opt and set the variable in innodb-zip.test instead. ------------------------------------------------------------ revno: 0.3.1082 committer: marko timestamp: Fri 2008-03-07 12:56:52 +0000 message: branches/zip: Make innodb_file_per_table a settable global variable. There is one consideration: fil_init() chooses the tablespace hash size based on the initial value of srv_file_per_table. However, this is nothing new: InnoDB could be started with innodb_file_per_table=0 even though *.ibd files exist. srv_file_per_table: Declare as my_bool instead of ibool, because MYSQL_SYSVAR_BOOL() expects a pointer to my_bool. Document the variable also in srv0srv.h. innobase_start_or_create_for_mysql(): Note why it is OK to temporarily clear srv_file_per_table. innobase_file_per_table: Remove. ------------------------------------------------------------ revno: 0.3.1081 committer: marko timestamp: Thu 2008-03-06 12:29:16 +0000 message: branches/zip: fseg_print(): Enclose inside #ifdef UNIV_BTR_PRINT. ------------------------------------------------------------ revno: 0.3.1080 committer: marko timestamp: Wed 2008-03-05 13:17:13 +0000 message: branches/zip: Implement ut_calc_align() and ut_calc_align_down() as type-independent macros. ------------------------------------------------------------ revno: 0.3.1079 committer: marko timestamp: Wed 2008-03-05 12:40:29 +0000 message: branches/zip: fsp_header_get_free_limit(), fsp_header_get_tablespace_size(): Remove the redundant parameter "space". ------------------------------------------------------------ revno: 0.3.1078 committer: marko timestamp: Wed 2008-03-05 09:54:48 +0000 message: branches/zip: Fix two more bogus MSVC C4090 warnings on constness differences (Warning C4090 is incorrectly issued when using Visual C++ .NET 2003, bug 101661, http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=101661) dict_table_find_equivalent_index(): Cast away constness in the mem_free() call. MSVC seems to think that an array of pointers to const data is const itself. UT_SORT_FUNCTION_BODY(): Cast away constness in the memcpy() call. MSVC seems to think that an array of pointers to const data is const itself. ------------------------------------------------------------ revno: 0.3.1077 committer: marko timestamp: Wed 2008-03-05 09:41:51 +0000 message: branches/zip: ut_is_2pow(), ut_2pow_round(), ut_2pow_remainder(): Define as type-independent macros instead of functions. Because ut_2pow_round() and ut_2pow_remainder() no longer assert ut_is_2pow(m), add the assertions to callers when needed. Also add parentheses to assist the compiler in common subexpression elimination. ------------------------------------------------------------ revno: 0.3.1076 committer: marko timestamp: Wed 2008-03-05 09:16:40 +0000 message: branches/zip: buf_read_ahead_random(), buf_read_ahead_linear(): Compute BUF_READ_AHEAD_RANDOM_AREA and BUF_READ_AHEAD_LINEAR_AREA only once. The definition of BUF_READ_AHEAD_AREA depends on buf_pool->curr_size, which could change while this code is running. ------------------------------------------------------------ revno: 0.3.1075 committer: marko timestamp: Wed 2008-03-05 08:36:16 +0000 message: branches/zip: buf_flush_try_neighbors(): Compute buf_flush_area only once and assign it to an auxiliary variable. ------------------------------------------------------------ revno: 0.3.1074 committer: marko timestamp: Tue 2008-03-04 08:57:07 +0000 message: branches/zip: Fix most MSVC (Windows) compilation warnings. lock_get_table(), locks_row_eq_lock(), buf_page_get_mutex(): Add return after ut_error. On Windows, ut_error is not declared as "noreturn". Add explicit type casts when assigning ulint to byte to get rid of "possible loss of precision" warnings. struct i_s_table_cache_struct: Declare rows_used, rows_allocd as ulint instead of ullint. 32 bits should be enough. fill_innodb_trx_from_cache(), i_s_zip_fill_low(): Cast 64-bit unsigned integers to longlong when calling Field::store(longlong, bool is_unsigned). Otherwise, the compiler would implicitly convert them to double and invoke Field::store(double) instead. recv_truncate_group(), recv_copy_group(), recv_calc_lsn_on_data_add(): Cast ib_uint64_t expressions to ulint to get rid of "possible loss of precision" warnings. (There should not be any loss of precision in these cases.) log_close(), log_checkpoint_margin(): Declare some variables as ib_uint64_t instead of ulint, so that there won't be any potential loss of precision. mach_write_ull(): Cast the second argument of mach_write_to_4() to ulint. OS_FILE_FROM_FD(): Cast the return value of _get_osfhandle() to HANDLE. row_merge_dict_table_get_index(): Cast the parameter of mem_free() to (void*) in order to get rid of the bogus MSVC warning C4090, which has been reported as MSVC bug 101661: row_mysql_read_blob_ref(): To get rid of a bogus MSVC warning C4090, drop a const qualifier. ------------------------------------------------------------ revno: 0.3.1073 committer: marko timestamp: Mon 2008-03-03 12:48:38 +0000 message: branches/zip: Improve the LRU algorithm with a separate unzip_LRU list of blocks that contains uncompressed and compressed frames. This patch was designed by Heikki and Inaam, implemented by Inaam, and refined and reviewed by Marko and Sunny. buf_buddy_n_frames, buf_buddy_min_n_frames, buf_buddy_max_n_frames: Remove. buf_page_belongs_to_unzip_LRU(): New predicate: bpage->zip.data && buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE. buf_pool_t, buf_block_t: Add the linked list unzip_LRU. A block in the regular LRU list is in unzip_LRU iff buf_page_belongs_to_unzip_LRU() holds. buf_LRU_free_block(): Add a third return value to refine the case "cannot free the block". buf_LRU_search_and_free_block(): Update the documentation to reflect the implementation. buf_LRU_stat_t, buf_LRU_stat_cur, buf_LRU_stat_sum, buf_LRU_stat_arr[]: Statistics for the unzip_LRU algorithm. buf_LRU_stat_update(): New function: Update the statistics. Called once per second by srv_error_monitor_thread(). buf_LRU_validate(): Validate the unzip_LRU list as well. buf_LRU_evict_from_unzip_LRU(): New predicate: Use the unzip_LRU before falling back to the regular LRU? buf_LRU_free_from_unzip_LRU_list(), buf_LRU_free_from_common_LRU_list(): Subfunctions of buf_LRU_search_and_free_block(). buf_LRU_search_and_free_block(): Reimplement. Try to evict an uncompressed page from the unzip_LRU list before falling back to evicting an entire block from the common LRU list. buf_unzip_LRU_remove_block_if_needed(): New function. buf_unzip_LRU_add_block(): New function: Add a block to the unzip_LRU list. ------------------------------------------------------------ revno: 0.3.1072 committer: calvin timestamp: Fri 2008-02-29 23:37:15 +0000 message: branches/zip: row_raw_format_str_convert(): Rename to innobase_raw_format(), move the definition from row0row.c to ha_innodb.cc. After this change, row0row.c no longer references system_charset_info (Mantis issue #17). Patch prepared by Vasil, tested by Calvin, and reviewed by Marko. ------------------------------------------------------------ revno: 0.3.1071 committer: calvin timestamp: Fri 2008-02-29 23:32:00 +0000 message: branches/zip: Fix the compile errors in btr/btr0cur.c for Windows build. It is part of Mantis issue#18. Reviewed by Marko. ------------------------------------------------------------ revno: 0.3.1070 committer: calvin timestamp: Fri 2008-02-29 23:24:27 +0000 message: branches/zip: Remove PAGE_WRITECOMBINE from VirtualAlloc() in os_mem_alloc_large(). Otherwise the allocation fails during startup with error code 87 - invalid parameter. Reviewed by Marko. ------------------------------------------------------------ revno: 0.3.1069 committer: calvin timestamp: Fri 2008-02-29 23:18:46 +0000 message: branches/zip: Exclude mman.h on Windows since it is not supported on Windows. Reviewed by Marko. ------------------------------------------------------------ revno: 0.3.1068 committer: marko timestamp: Fri 2008-02-29 21:45:22 +0000 message: branches/zip: Update CMakeLists.txt to correspond to Makefile.am. Add CMake-generated files and directories to svn:ignore. This patch is from Calvin Sun, who couldn't commit it properly on Windows. Do "svn propset svn:eol-style native" on every text file, to fix line format problems on Windows. ------------------------------------------------------------ revno: 0.3.1067 committer: marko timestamp: Fri 2008-02-29 12:30:41 +0000 message: branches/zip: buf_buddy_alloc(), buf_buddy_alloc_low(): Correct a mistake in the function comment. There is no value BUF_BUDDY_USE_LRU. The mistake was made in r1290. ------------------------------------------------------------ revno: 0.3.1066 committer: marko timestamp: Fri 2008-02-29 08:32:14 +0000 message: branches/zip: buf_buddy_alloc_clean(): Remove, as it violates the LRU policy. ------------------------------------------------------------ revno: 0.3.1065 committer: marko timestamp: Fri 2008-02-29 08:20:17 +0000 message: branches/zip: buf_relocate(): Document and assert that bpage must be in one of the states BUF_BLOCK_ZIP_DIRTY or BUF_BLOCK_ZIP_PAGE. Note that the caller will have to relocate bpage->list. ------------------------------------------------------------ revno: 0.3.1064 committer: marko timestamp: Fri 2008-02-29 08:13:55 +0000 message: branches/zip: Replace __attribute with __attribute. ------------------------------------------------------------ revno: 0.3.1063 committer: marko timestamp: Thu 2008-02-28 11:49:37 +0000 message: branches/zip: row_create_table_for_mysql(): Always roll back the transaction when creating the table fails. ------------------------------------------------------------ revno: 0.3.1062 committer: marko timestamp: Thu 2008-02-28 11:46:51 +0000 message: branches/zip: ha_innobase::add_index(): Always commit prebuilt->trx, also when row_merge_create_temporary_table() fails. Otherwise, an assertion would fail when the client connection is closed, because prebuilt->trx would still be holding a table lock on innodb_table. ------------------------------------------------------------ revno: 0.3.1061 committer: marko timestamp: Thu 2008-02-28 10:28:56 +0000 message: branches/zip: os_file_set_nocache(): Clean up the function comment. Add the function prototype to os0file.h. ------------------------------------------------------------ revno: 0.3.1060 committer: marko timestamp: Thu 2008-02-28 08:33:19 +0000 message: branches/zip: dict0dict.c: Add the #include "ha_prototypes.h" that should have been added in r2327. ------------------------------------------------------------ revno: 0.3.1059 committer: vasil timestamp: Wed 2008-02-27 16:53:56 +0000 message: branches/zip: Use innobase_strcasecmp() insteaed of strcasecmp() in i_s.cc and get rid of strings.h (that file is not present on Windows). Move the prototype of innobase_strcasecmp() from ha_innodb.cc and dict0dict.c to ha_prototypes.h. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.1058 committer: marko timestamp: Wed 2008-02-27 14:34:44 +0000 message: branches/zip: Add duration statistics to INFORMATION_SCHEMA.INNODB_ZIP. buf_buddy_relocated_duration[], page_zip_compress_duration[] page_zip_decompress_duration[]: Record the total duration of the operations. buf_buddy_relocate(), page_zip_compress(), page_zip_decompress(): Add ut_time_us() instrumentation. i_s_zip_fields_info[], i_s_zip_fill_low(): Move the columns containing cumulated statistics last. Add relocated_usec, compressed_usec, and decompressed_usec. ------------------------------------------------------------ revno: 0.3.1057 committer: marko timestamp: Mon 2008-02-25 14:01:15 +0000 message: branches/zip: ibuf_update_free_bits_zip(): When after==0, call buf_page_make_young(), like ibuf_update_free_bits_if_full() does. This difference was pointed out by Sunny. ------------------------------------------------------------ revno: 0.3.1056 committer: marko timestamp: Mon 2008-02-25 12:41:54 +0000 message: branches/zip: enum db_err: Use the same InnoDB error numbers as the #defines in earlier versions of InnoDB. ------------------------------------------------------------ revno: 0.3.1055 committer: marko timestamp: Fri 2008-02-22 21:03:31 +0000 message: Do not enable page_zip_compress_log by default. This was accidentally set in r2318. ------------------------------------------------------------ revno: 0.3.1054 committer: marko timestamp: Thu 2008-02-21 13:43:40 +0000 message: branches/zip: Add the column "free" to INNODB_ZIP and INNODB_ZIP_RESET to display the external fragmentation within the buddy allocator. ------------------------------------------------------------ revno: 0.3.1053 committer: marko timestamp: Tue 2008-02-19 14:42:52 +0000 message: branches/zip: Enable excessive binary logging of page_zip_compress(), for the purpose of comparing different compression algorithms. PAGE_ZIP_COMPRESS_DBG: New preprocessor condition, to see if deflate() is wrapped. page_zip_compress_log: Log file counter. If set to nonzero, logging is enabled. page_zip_compress_deflate(): Add the parameter logfile. FILE_LOGFILE, LOGFILE: Macros for declaring and passing the parameter logfile. page_zip_compress(): Open and close the logfile if needed. Write the uncompressed page and the size of the compressed data. The data passed to deflate() is written by the wrapper page_zip_compress_deflate(). ------------------------------------------------------------ revno: 0.3.1052 committer: marko timestamp: Mon 2008-02-18 20:09:03 +0000 message: branches/zip: Merge 2263:2295 from branches/5.1. ------------------------------------------------------------ revno: 0.3.1051 committer: marko timestamp: Mon 2008-02-18 19:14:09 +0000 message: branches/zip: Remove the unused function os_thread_join(). ------------------------------------------------------------ revno: 0.3.1050 committer: marko timestamp: Mon 2008-02-18 18:57:24 +0000 message: branches/zip: trx_undo_prev_version_build(): Remove the unnecessary and incorrect "BLOB bug fix" that was suggested by Heikki. Explain in a comment why no such fix is needed. ------------------------------------------------------------ revno: 0.3.1049 committer: marko timestamp: Mon 2008-02-18 18:38:33 +0000 message: branches/zip: Add a UNIV_INTERN qualifier to every global function declaration in *.h files, so that the function signatures in the *.h and *.c files fully match each other. ut_dulint_sort(): Add a UNIV_INTERN qualifier also to the function definition. ------------------------------------------------------------ revno: 0.3.1048 committer: marko timestamp: Mon 2008-02-18 15:45:17 +0000 message: branches/zip: Minor fixes. lock_rec_restore_from_page_infimum(): Correct the comment of the parameter rec. lock_sec_rec_read_check_and_lock(): Add the debug assertion ut_ad(mode == LOCK_X || mode == LOCK_S). ------------------------------------------------------------ revno: 0.3.1047 committer: marko timestamp: Mon 2008-02-18 15:43:16 +0000 message: branches/zip: Minor fixes. buf_LRU_old_adjust_len(): Replace a constant ut_ad() with a preprocessor check. buf_LRU_free_block(): Remove the check for the unlikely case buf_pool->LRU_old == prev_b in order to simplify the function. The check was implemented as part of r2306. ------------------------------------------------------------ revno: 0.3.1046 committer: marko timestamp: Mon 2008-02-18 15:35:00 +0000 message: branches/zip: trx_undo_prev_version_build(): Remove the fix that was suggested by Heikki, because it breaks row_vers_impl_x_locked_off_kernel(); see Mantis issue #10. However, now that Heikki's fix has been removed, the code may break elsewhere when it tries to dereference half-freed or completely freed externally stored columns. ------------------------------------------------------------ revno: 0.3.1045 committer: marko timestamp: Mon 2008-02-18 09:53:08 +0000 message: branches/zip: Minor improvements. lock_update_delete(): Add the debug assertion ut_ad(page == page_align(rec)). lock_rec_insert_check_and_lock(): Determine next_rec_heap_no before acquiring the kernel mutex. Require the table to be at least S-locked in fast index creation. ------------------------------------------------------------ revno: 0.3.1044 committer: marko timestamp: Sat 2008-02-16 10:33:15 +0000 message: branches/zip: buf_LRU_free_block(): When freeing the uncompressed page corresponding to a compressed page, do not flag the block as recently used, but maintain the position of the control block on the LRU list. ------------------------------------------------------------ revno: 0.3.1043 committer: marko timestamp: Fri 2008-02-15 14:16:27 +0000 message: branches/zip: lock0lock.c: Minor cleanup. lock_rec_get_first(): Use a simple for loop. lock_rec_copy(): Use mem_heap_dup(). lock_rec_find_similar_on_page(): Add const qualifier to trx. lock_move_rec_list_end(), lock_move_rec_list_start(): Simplify the memcmp() assertion on ROW_FORMAT=REDUNDANT records. ------------------------------------------------------------ revno: 0.3.1042 committer: marko timestamp: Fri 2008-02-15 13:03:12 +0000 message: branches/zip: lock_rec_other_has_expl_req(): Minor cleanup: add const qualifier to parameter, and fix the formatting of a comment. ------------------------------------------------------------ revno: 0.3.1041 committer: marko timestamp: Fri 2008-02-15 11:45:37 +0000 message: branches/zip: buf0lru.c: Minor cleanup. Use ut_d() in assignments to bpage->in_LRU_list instead of #ifdef UNIV_DEBUG. buf_LRU_remove_block(): Move an assertion to a more appropriate place. ------------------------------------------------------------ revno: 0.3.1040 committer: marko timestamp: Fri 2008-02-15 11:38:21 +0000 message: branches/zip: lock_rec_add_to_queue(): Improve the debug diagnostics. Make it easier to display the violating lock request in a debugger. ------------------------------------------------------------ revno: 0.3.1039 committer: marko timestamp: Fri 2008-02-15 10:07:42 +0000 message: branches/zip: buf_buddy_alloc_from(): Relax a debug assertion that fails on i==j==BUF_BUDDY_SIZES. ------------------------------------------------------------ revno: 0.3.1038 committer: marko timestamp: Wed 2008-02-13 20:18:00 +0000 message: branches/zip: Minor cleanup of fast index creation diagnostics. innobase_check_index_keys(): Remove unused parameters. Use sql_print_error() for error message output. ha_innobase::add_index(): When row_merge_rename_tables() fails, do not allow row_merge_drop_table() to alter the error code returned to MySQL. ------------------------------------------------------------ revno: 0.3.1037 committer: marko timestamp: Tue 2008-02-12 22:05:01 +0000 message: branches/zip: Pass -prefer-non-pic only on IA-32 (x86) when building the dynamic InnoDB plugin, ha_innodb.so. This libtool option cannot be used on every target platform. For instance, the AMD64 (x86_64) ABI mandates position-independent code (PIC) in dynamic shared objects. Makefile.am: Use $(INNODB_CFLAGS) and $(INNODB_DYNAMIC_CFLAGS) in target-specific CFLAGS and CXXFLAGS variable definitions. plug.in: Instead of appending to the MySQL-wide CFLAGS, introduce the variables INNODB_CFLAGS and INNODB_DYNAMIC_CFLAGS. Depending on $target_cpu, append -prefer-non-pic to INNODB_DYNAMIC_CFLAGS. ------------------------------------------------------------ revno: 0.3.1036 committer: marko timestamp: Mon 2008-02-11 10:31:55 +0000 message: branches/zip: Makefile.am: Disable the generation of position-independent code in the compilation of ha_innodb.so. ha_innodb_la_CXXFLAGS, ha_innodb_la_CFLAGS: Add -prefer-non-pic. This flag is interpreted by the ../../libtool script that acts as a front-end to the compiler and linker. ------------------------------------------------------------ revno: 0.3.1035 committer: marko timestamp: Fri 2008-02-08 13:50:28 +0000 message: branches/zip: Add the necessary #include "univ.i" that was removed in the unapproved change r2290. ------------------------------------------------------------ revno: 0.3.1034 committer: vasil timestamp: Fri 2008-02-08 13:19:56 +0000 message: branches/zip: Do not include univ.i in mysql_addons.h, it was included for the sole purpose of innodb_redefine.h to work and now innodb_redefine.h has been removed. See r2251 and r2288. ------------------------------------------------------------ revno: 0.3.1033 committer: marko timestamp: Fri 2008-02-08 12:31:13 +0000 message: branches/zip: scripts/dynconfig: Correct misleading usage message. At present, the script only accepts one command line parameter. Append newline to some die messages, so that the Perl interpreter will not print the file name and line number of the failing statement. ------------------------------------------------------------ revno: 0.3.1032 committer: marko timestamp: Fri 2008-02-08 12:23:17 +0000 message: branches/zip: Remove innodb_redefine.h and all references to it. The file has been redundant since r2278. include/innodb_redefine.h: Remove. include/sync0sync.h: Remove the definition of mutex_free that was added because of innodb_redefine.h. include/univ.i: Remove references to innodb_redefine.h. Explain why the C++ classes need to be renamed. scripts/build-plugin.sh: Build InnoDB only once. The file innodb_redefine.h is no longer needed. ------------------------------------------------------------ revno: 0.3.1031 committer: marko timestamp: Fri 2008-02-08 12:18:06 +0000 message: branches/zip: scripts/dynconfig: Minor cleanup (spelling and formatting). ------------------------------------------------------------ revno: 0.3.1030 committer: marko timestamp: Fri 2008-02-08 10:22:47 +0000 message: branches/zip: trx_sys_doublewrite_init_or_restore_pages(): Print out the space identifier in the corruption message. ------------------------------------------------------------ revno: 0.3.1029 committer: inaam timestamp: Thu 2008-02-07 20:12:11 +0000 message: branches/zip: srv_log_file_size is misspelled as srv_log_filen_size in r2276 reviewed by: non-functional change. ------------------------------------------------------------ revno: 0.3.1028 committer: marko timestamp: Thu 2008-02-07 10:03:54 +0000 message: branches/zip: make_flex.sh, lexyy.c: Remove some GCC warnings about unused static symbol definitions. yy_scan_buffer, yy_scan_string, yy_scan_bytes: Leave these unused extern function declarations alone. yypush_buffer_state, yypop_buffer_state, yyswitch_to_buffer, yyget*, yyset*, yylex_destroy: Add __attribute__((unused)). This closes Mantis issue #8. ------------------------------------------------------------ revno: 0.3.1027 committer: marko timestamp: Thu 2008-02-07 09:08:28 +0000 message: branches/zip: trx_undo_prev_version_build(): Remove a bogus warning about undo_rec possibly being uninitialized. When trx_undo_get_undo_rec() leaves undo_rec uninitialized, both functions will return DB_MISSING_HISTORY without dereferencing undo_rec. This closes Mantis issue #7. ------------------------------------------------------------ revno: 0.3.1026 committer: marko timestamp: Wed 2008-02-06 16:11:46 +0000 message: branches/zip: Hide some global variables that were accidentally not hidden in r2276. Now the following symbols will be exported when InnoDB is built as a dynamic plugin: * the virtual method pointer table of class ha_innodb * the three variables that MySQL will reference when linking at runtime: _mysql_plugin_declarations_ _mysql_plugin_interface_version_ _mysql_sizeof_struct_st_plugin_ Furthermore, the following symbols are weak globals, to allow us to access the built-in InnoDB in the mysqld executable, in case it contains a statically linked InnoDB: builtin_innobase_plugin innodb_hton_ptr ------------------------------------------------------------ revno: 0.3.1025 committer: marko timestamp: Wed 2008-02-06 16:01:57 +0000 message: branches/zip: Make the changes to pars0grm.c that were promised in r2276. pars/pars0grm.h: Remove. The primary file is include/pars0grm.h. pars/make_bison.sh: Add from trunk. Somehow, this file was not merged at the same time with make_flex.sh. Add sed magic for replacing the file name and for hiding yychars, yynerrs, yylval, and yyparse. pars/pars0grm.c: Apply the changes made by make_bison.sh. ------------------------------------------------------------ revno: 0.3.1024 committer: marko timestamp: Wed 2008-02-06 14:17:36 +0000 message: branches/zip: Introduce UNIV_INTERN, a linkage specifier for InnoDB-global symbols. Use it for all definitions of non-static variables and functions. lexyy.c, make_flex.sh: Declare yylex as UNIV_INTERN, not static. It is referenced from pars0grm.c. Actually, according to nm .libs/ha_innodb.so|grep -w '[ABCE-TVXYZ]' the following symbols are still global: * The vtable for class ha_innodb * pars0grm.c: The function yyparse() and the variables yychar, yylval, yynerrs The required changes to the Bison-generated file pars0grm.c will be addressed in a separate commit, which will add a script similar to make_flex.sh. The class ha_innodb is renamed from class ha_innobase by a #define. Thus, there will be no clash with the builtin InnoDB. However, there will be some overhead for invoking virtual methods of class ha_innodb. Ideas for making the vtable hidden are welcome. -fvisibility=hidden is not available in GCC 3. ------------------------------------------------------------ revno: 0.3.1023 committer: marko timestamp: Wed 2008-02-06 13:14:42 +0000 message: branches/zip: Make static all declarations in the Flex-generated lexical analyzer of the InnoDB SQL parser. ------------------------------------------------------------ revno: 0.3.1022 committer: marko timestamp: Wed 2008-02-06 08:19:56 +0000 message: branches/zip: Remove unused definitions from include/trx0xa.h. ------------------------------------------------------------ revno: 0.3.1021 committer: marko timestamp: Mon 2008-02-04 12:47:00 +0000 message: branches/zip: Apply some fixes suggested by Heikki. btr_cur_pessimistic_update(): Note why the externally stored columns of a record on a latched page cannot have been purged. trx_undo_get_undo_rec(): Clarify that the stack of versions is locked all the way down to the purge view. trx_undo_prev_version_build(): Set *old_vers = NULL also when the record could have been purged already. Add some clarifying comments. ------------------------------------------------------------ revno: 0.3.1020 committer: marko timestamp: Wed 2008-01-30 21:15:41 +0000 message: row_merge_buf_add(): Add a missing const qualifier to "ext". ------------------------------------------------------------ revno: 0.3.1019 committer: vasil timestamp: Tue 2008-01-29 09:54:46 +0000 message: branches/zip: Require PROCESS privileges instead of SUPER to view INFORMATION_SCHEMA tables. Suggested by: Sergei Golubchik (in a private email, pointed http://bugs.mysql.com/32710) ------------------------------------------------------------ revno: 0.3.1018 committer: marko timestamp: Mon 2008-01-28 15:54:46 +0000 message: branches/zip: Merge 2236:2263 from branches/5.1. ------------------------------------------------------------ revno: 0.3.1017 committer: marko timestamp: Fri 2008-01-25 14:37:11 +0000 message: branches/zip: Assert in the adaptive hash that the insert buffer B-tree is not indexed. btr_search_update_hash_ref(), btr_search_drop_page_hash_index(), btr_search_build_page_hash_index(), btr_search_update_hash_on_delete(), btr_search_update_hash_node_on_insert(), btr_search_update_hash_on_insert(), btr_search_validate(): Assert that hashed blocks do not belong to the insert buffer tree. btr_search_move_or_delete_hash_entries(): When invoked on the insert buffer tree, assert that neither block is hashed. ------------------------------------------------------------ revno: 0.3.1016 committer: marko timestamp: Fri 2008-01-25 14:26:07 +0000 message: branches/zip: Fast index creation: Release locks on system tables before creating indexes. Lock the user table inside the user transaction. enum trx_dict_op: Remove TRX_OP_INDEX_MAY_WAIT. ha_innobase::add_index(): Lock the user tables within prebuilt->trx. Commit the data dictionary transaction before creating indexes. ha_innobase::final_drop_index(): Lock the user table within prebuilt->trx. ------------------------------------------------------------ revno: 0.3.1015 committer: marko timestamp: Fri 2008-01-25 08:13:12 +0000 message: branches/zip: Introduce the accessor function dict_index_is_ibuf() for determining if an index is the insert buffer B-tree. ------------------------------------------------------------ revno: 0.3.1014 committer: marko timestamp: Thu 2008-01-24 09:58:03 +0000 message: branches/zip: row_sel_sec_rec_is_for_clust_rec(): If the record in the clustered index is delete-marked, return FALSE without comparing any columns. ------------------------------------------------------------ revno: 0.3.1013 committer: marko timestamp: Thu 2008-01-24 08:12:02 +0000 message: branches/zip: Introduce the page type code FIL_PAGE_TYPE_ZBLOB2 for continuation pages containing compressed BLOBs. The first compressed BLOB page will be of type FIL_PAGE_TYPE_ZBLOB. ------------------------------------------------------------ revno: 0.3.1012 committer: marko timestamp: Wed 2008-01-23 13:46:45 +0000 message: branches/zip: When storing a longer prefix of an externally stored column to the undo log, also store the original length of the column, so that the changes will be correctly undone in transaction rollback or when fetching previous versions of the row. innodb-zip.test: New file, for tests of the compression. upd_field_t: Add orig_len, the original length of new_val. btr_push_update_extern_fields(): Restore the original prefix of the column. Add the parameter heap where memory will be allocated if necessary. trx_undo_rec_get_col_val(): Add the output parameter orig_len. trx_undo_page_report_modify_ext(): New function: Write an externally stored column to the undo log. This is only called from trx_undo_page_report_modify(), and this is the only caller of trx_undo_page_fetch_ext(). trx_undo_update_rec_get_update(): Read the original length of the column prefix to upd_field->orig_len. ------------------------------------------------------------ revno: 0.3.1011 committer: vasil timestamp: Wed 2008-01-23 09:38:23 +0000 message: branches/zip: Include univ.i in mysql_addons.h because univ.i includes innodb_redefine.h which is needed to rename the functions in this file with ibd_ prefix in the dynamic InnoDB plugin. Aka the renaming magic, required for the dynamic plugin to work. Approved by: Marko ------------------------------------------------------------ revno: 0.3.1010 committer: inaam timestamp: Tue 2008-01-22 18:50:44 +0000 message: branches/zip: Cast to ib_uint64_t the mask for align down before doing the '~' operation on it. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.3.1009 committer: marko timestamp: Mon 2008-01-21 09:51:40 +0000 message: branches/zip: row_sel_get_clust_rec_for_mysql(): Similar to the function row_sel_get_clust_rec(), return if a previous version of the clustered index record does not exist in the read view. This bug was made and found by Heikki. It was harmless as long as the clustered index record contained a long enough local prefix of externally stored columns, to allow secondary index records to be built without fetching BLOBs. InnoDB transactions should never look at a clustered index record whose transaction identifier (DB_TRX_ID) is not visible in the transaction's read view. ------------------------------------------------------------ revno: 0.3.1008 committer: marko timestamp: Thu 2008-01-17 12:29:03 +0000 message: branches/zip: Avoid infinite page splits on compressed tables. btr_page_get_sure_split_rec(): Remove the check if insert_size exceeds free_space. btr_page_split_and_insert(): If a compressed page has already been split, avoid further splits by inserting the record to an empty page. As a performance optimization, avoid invoking btr_page_insert_fits() on compressed tables. ------------------------------------------------------------ revno: 0.3.1007 committer: marko timestamp: Wed 2008-01-16 14:14:36 +0000 message: branches/zip: btr_page_get_sure_split_rec(): Return NULL when the record is not guaranteed to fit on a compressed page, instead of letting an assertion fail. ------------------------------------------------------------ revno: 0.3.1006 committer: marko timestamp: Wed 2008-01-16 12:45:27 +0000 message: branches/zip: os_mem_alloc_large(), os_mem_free_large(): Update ut_total_allocated_memory. ------------------------------------------------------------ revno: 0.3.1005 committer: marko timestamp: Wed 2008-01-16 12:44:44 +0000 message: branches/zip: Free the buffer pool at shutdown. buf_pool_free(): New function: Free all chunks of the buffer pool. innobase_shutdown_for_mysql(): Call buf_pool_free() right before ut_free_all_mem(). ------------------------------------------------------------ revno: 0.3.1004 committer: marko timestamp: Wed 2008-01-16 10:45:14 +0000 message: branches/zip: Add comments about the lock and latch protection of externally stored columns (BLOBs). btr_copy_blob_prefix(), btr_copy_zblob_prefix(), btr_copy_externally_stored_field_prefix_low(), btr_copy_externally_stored_field_prefix(), btr_copy_externally_stored_field(), btr_rec_copy_externally_stored_field(): Note that the page containing the clustered index record that points to the BLOB must be latched. btr_copy_zblob_prefix(): Note that there is no latch on the page, and thus all accesses to a given page via this function must be covered by the same set of locks or latches. btr_copy_zblob_prefix(): Note that the block acquired by buf_page_get_zip() is protected by an exclusive table lock or or by a latch on the clustered index record. ------------------------------------------------------------ revno: 0.3.1003 committer: marko timestamp: Wed 2008-01-16 10:10:32 +0000 message: branches/zip: Fetch externally stored columns only when the clustered index record is protected by a latch or a lock. dtuple_copy(): New function: Copy a data tuple. row_upd_replace(): New function: Apply on a row an update vector that was built for the clustered index. Set up a cache of externally stored column prefixes if needed. undo_node_t: Add the fields undo_row, undo_ext. row_undo_search_clust_to_pcur(): Initialize undo_row and undo_ext. row_undo_mod_upd_exist_sec(): Instead of fetching prefixes of externally stored columns, use the undo_row and undo_ext that were initialized in row_undo_search_clust_to_pcur(). upd_node_t: Remove the field n_ext. Add the fields upd_row and upd_ext. row_upd_store_row(): Initialize the upd_row and upd_ext fields of upd_node_t. row_upd_sec_index_entry(), row_upd_clust_rec_by_insert(): Instead of fetching prefixes of externally stored columns, use the upd_row and upd_ext that were initialized in row_upd_store_row(). ------------------------------------------------------------ revno: 0.3.1002 committer: marko timestamp: Wed 2008-01-16 09:45:22 +0000 message: branches/zip: row_undo_ins_parse_undo_rec(): Initialize node->update so that it will not be uninitialized when the undo record is being processed. ------------------------------------------------------------ revno: 0.3.1001 committer: vasil timestamp: Wed 2008-01-16 06:45:16 +0000 message: branches/zip: Move the column trx_weight near the end in the information_schema.innodb_trx table. Suggested by: Ken Approved by: Marko ------------------------------------------------------------ revno: 0.3.1000 committer: marko timestamp: Tue 2008-01-15 09:43:14 +0000 message: branches/zip: buf_pool_init(): Initialize buf_pool_zip_mutex before acquiring buf_pool_mutex. This avoids triggering the debug assertion that was added in r2227. ------------------------------------------------------------ revno: 0.3.999 committer: inaam timestamp: Tue 2008-01-15 04:27:03 +0000 message: branches/zip: Merge r2213:2236 from branches/5.1. Forward port of r2236 Introduce retry/sleep logic as a workaround for a transient bug where ::open fails for partitioned tables randomly if we are using one file per table. (Bug #33349) Reviewed by: Heikki ------------------------------------------------------------ revno: 0.3.998 committer: marko timestamp: Mon 2008-01-14 14:18:21 +0000 message: branches/zip: row_undo_mod(): Eliminate a local variable. ------------------------------------------------------------ revno: 0.3.997 committer: marko timestamp: Mon 2008-01-14 14:13:11 +0000 message: branches/zip: row_upd_clust_rec_by_insert(): Do not release the latch on the clustered index record before calling row_upd_index_replace_new_col_vals(). ------------------------------------------------------------ revno: 0.3.996 committer: marko timestamp: Mon 2008-01-14 10:04:45 +0000 message: branches/zip: Add comments that clarify why the remaining calls to row_build(), row_upd_index_replace_new_col_vals_index_pos(), and row_upd_index_replace_new_col_vals() are safe. btr_cur_optimistic_update(), btr_cur_pessimistic_update(): Note that the B-tree page of the clustered index record is latched in mtr. trx_undo_prev_version_build(): Add const qualifiers to index_rec and rec. Note that the page of index_rec is latched in index_mtr. row_vers_impl_x_locked_off_kernel(), row_vers_old_has_index_entry(): Note that the stack of versions is locked by mtr and thus it is safe to call row_build(). ------------------------------------------------------------ revno: 0.3.995 committer: marko timestamp: Fri 2008-01-11 19:59:47 +0000 message: branches/zip: Clarify why certain calls of btr_rec_copy_externally_stored_field() are safe. row_merge_copy_blobs(): Note that the table is locked during index creation. Therefore, none of its BLOBs can be freed. row_sel_fetch_columns(): Note that rec must be protected by a page latch. Add const qualifier to rec. row_sel_get_clust_rec(): Note that the clustered index record is protected by a page latch that was acquired when the persistent cursor was positioned and that the latch will be freed by mini-transaction commit. row_sel_try_search_shortcut(): Check the delete-mark flag before fetching the columns. Note that the clustered index record is protected by a page latch that was acquired when the persistent cursor was positioned and that the latch will be freed by mini-transaction commit. row_sel(), row_search_for_mysql(): Note that the clustered index record is protected by a page latch that was acquired when the persistent cursor was positioned and that the latch will be freed by mini-transaction commit. row_sel_field_store_in_mysql_format(): Add const qualifier to data. row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql(): Add const qualifier to rec. Note that rec must be protected by a page latch. ------------------------------------------------------------ revno: 0.3.994 committer: marko timestamp: Fri 2008-01-11 19:51:19 +0000 message: branches/zip: eval_node_copy_and_alloc_val(): Add const qualifier. ------------------------------------------------------------ revno: 0.3.993 committer: marko timestamp: Fri 2008-01-11 12:19:59 +0000 message: branches/zip: Add clarifying comments that the clustered index record must be protected from being deleted while any externally stored columns are being fetched. row_ext_create(), row_upd_index_replace_new_col_vals(), row_upd_index_replace_new_col_vals_index_pos(), row_sel_sec_rec_is_for_blob(), row_sel_sec_rec_is_for_clust_rec(): Note that the clustered index record must be covered by a lock or a page latch. row_upd_sec_index_entry(), row_upd_clust_rec_by_insert(), row_undo_mod_upd_exist_sec(): Note that these functions probably do not obtain an appropriate lock on the clustered index record before fetching any externally stored columns. ------------------------------------------------------------ revno: 0.3.992 committer: marko timestamp: Thu 2008-01-10 12:34:25 +0000 message: branches/zip: buf_LRU_search_and_free_block(): Do not forbid the release of the buffer pool mutex. Apparently, it is temporarily released also in older versions of MySQL/InnoDB for the duration of the btr_search_drop_page_hash_index() call [in buf_LRU_free_block()]. ------------------------------------------------------------ revno: 0.3.991 committer: marko timestamp: Thu 2008-01-10 11:06:01 +0000 message: branches/zip: btr_copy_zblob_prefix(): Print d_stream->msg on decompression failure. ------------------------------------------------------------ revno: 0.3.990 committer: marko timestamp: Thu 2008-01-10 09:51:57 +0000 message: branches/zip: Add instrumentation for prohibiting the release of the buffer pool mutex. The instrumentation can be activated by defining UNIV_DEBUG or UNIV_BUF_DEBUG at compilation time. buf_pool_mutex_exit_forbidden: New variable. When this is nonzero, an assertion will fail in buf_pool_mutex_exit(). buf_pool_mutex_exit_forbid(): Macro for declaring that the buffer pool mutex must not be released. Calls may be nested. buf_pool_mutex_exit_allow(): Macro for declaring that the buffer pool mutex may be released. Calls may be nested. buf_LRU_search_and_free_block(): Prohibit buf_pool_mutex_exit() in the scope of the function. buf_LRU_free_block(): Prohibit buf_pool_mutex_exit() in buf_buddy_alloc() and buf_buddy_free(). buf_LRU_block_remove_hashed_page(): Prohibit buf_pool_mutex_exit() in buf_buddy_free(). ------------------------------------------------------------ revno: 0.3.989 committer: marko timestamp: Thu 2008-01-10 09:37:13 +0000 message: branches/zip: Implement wrappers for all operations on the buffer pool mutex. buf_pool->mutex: Rename to buf_pool_mutex, so that the wrappers will have to be used when changes are merged from other source trees. buf_pool->zip_mutex: Rename to buf_pool_zip_mutex. buf_pool_mutex_own(), buf_pool_mutex_enter(), buf_pool_mutex_exit(): Wrappers for buf_pool_mutex. ------------------------------------------------------------ revno: 0.3.988 committer: marko timestamp: Wed 2008-01-09 13:03:51 +0000 message: branches/zip: Clean up index->to_be_dropped after a failed DROP INDEX. ha_innobase::final_drop_index(): If row_merge_drop_table() fails, clear the to_be_dropped flags. This was the error fixed in this commit; the rest is just additional safety. ha_innobase::final_drop_index(): After dropping the flagged indexes, assert that none of the remaining indexes are flagged to_be_dropped. ha_innobase::prepare_drop_index(): Assert that no index has been flagged for deletion. When checking foreign key constraints, simply traverse the list of indexes and check if any of the indexes that were just flagged to_be_dropped. On error, clear the to_be_dropped flags with simple list traversal. ------------------------------------------------------------ revno: 0.3.987 committer: marko timestamp: Mon 2008-01-07 13:40:12 +0000 message: branches/zip: page_zip_reorganize(): Drop the adaptive search index before attempting to reorganize the page, not after the reorganization has succeeded. ------------------------------------------------------------ revno: 0.3.986 committer: marko timestamp: Mon 2008-01-07 09:15:25 +0000 message: branches/zip: Merge 2155:2213 from branches/5.1. (Revisions 2146:2155 were already merged.) ------------------------------------------------------------ revno: 0.3.985 committer: marko timestamp: Fri 2008-01-04 15:25:59 +0000 message: branches/zip: innodb-index.test: Test duplicate key failures for different indexes. ------------------------------------------------------------ revno: 0.3.984 committer: marko timestamp: Fri 2008-01-04 14:08:41 +0000 message: branches/zip: Split the source-only configuration parameter buf_buddy_min_n_frames into two, also buf_buddy_max_n_frames. Set the default values in such a way that a strict LRU policy will apply for replacing compressed or uncompressed page frames in the buffer pool. These parameters have not yet been exposed to the MySQL layer. ------------------------------------------------------------ revno: 0.3.983 committer: marko timestamp: Fri 2008-01-04 14:01:45 +0000 message: branches/zip: btr_cur_mark_extern_inherited_fields(): Add a call to rec_offs_any_extern() as an optimization. ------------------------------------------------------------ revno: 0.3.982 committer: marko timestamp: Fri 2008-01-04 07:57:13 +0000 message: branches/zip: innodb-index.test: Drop all created tables at the end. ------------------------------------------------------------ revno: 0.3.981 committer: marko timestamp: Thu 2008-01-03 12:45:17 +0000 message: branches/zip: innodb-index.test: Work around MySQL bugs and bug fixes. ------------------------------------------------------------ revno: 0.3.980 committer: marko timestamp: Thu 2008-01-03 10:13:11 +0000 message: branches/zip: page0zip.c: Add page_zip_fail() diagnostics to hopefully all decompression failures. page_zip_fields_decode(): Add page_zip_fail() diagnostics. page_zip_apply_log(): Remove double space in page_zip_fail() printout. page_zip_decompress_node_ptrs(), page_zip_decompress_sec(), page_zip_decompress_clust_ext(), page_zip_decompress_clust(), page_zip_decompress(): Add page_zip_fail() diagnostics for inflate() failures and other errors. ------------------------------------------------------------ revno: 0.3.979 committer: marko timestamp: Thu 2007-12-20 22:09:22 +0000 message: branches/zip: Allow a build with UNIV_PAGE_SIZE set to 4096. TRX_RSEG_N_SLOTS: Make the definition dependent of UNIV_PAGE_SIZE. FSP_EXTENT_SIZE: Define as 1 megabyte, as assumed by the code elsewhere. fseg_create_general(): Add a debug assertion against page overflow. ------------------------------------------------------------ revno: 0.3.978 committer: marko timestamp: Thu 2007-12-20 21:36:45 +0000 message: branches/zip: Fix some things to allow InnoDB to be built with smaller UNIV_PAGE_SIZE than the default 16384. MEM_BLOCK_STANDARD_SIZE: Cap to MEM_MAX_ALLOC_IN_BUF when UNIV_PAGE_SIZE is less than 16384. ha_create_func(): Invoke mem_heap_create_in_btr_search() with ut_min(4096, MEM_MAX_ALLOC_IN_BUF) instead of 4096. The memory will be allocated from the buffer pool, and with UNIV_PAGE_SIZE defined to 4096, there would not be any space for the mem_heap data structure overhead. ------------------------------------------------------------ revno: 0.3.977 committer: vasil timestamp: Thu 2007-12-20 14:24:57 +0000 message: branches/zip: Change the format of TRX_IDs in INFORMATION_SCHEMA tables from DEC to HEX. The current TRX_IDs are hard to remember and track down: 426355, 428466, 428566, etc. In HEX: * there are less "digits", the strings are shorter; * since there are 16 instead of 10 "digits", the chance of having repeating ones are smaller. The above look like 68173, 689B2, 68A16 in HEX. Discussed with: Ken Approved by: Heikki (via IM) ------------------------------------------------------------ revno: 0.3.976 committer: vasil timestamp: Thu 2007-12-20 14:08:16 +0000 message: branches/zip: Change the output format of transaction ids from 2 32bit numbers separated by space to a single hex number. Suggested by: Heikki Approved by: Heikki ------------------------------------------------------------ revno: 0.3.975 committer: marko timestamp: Thu 2007-12-20 13:37:03 +0000 message: branches/zip: trx0sys.h: Add a compile-time check that UNIV_PAGE_SIZE is at least 4 kilobytes. ------------------------------------------------------------ revno: 0.3.974 committer: marko timestamp: Thu 2007-12-20 13:23:23 +0000 message: branches/zip: Allow the uncompressed page size to be settable by setting just one parameter: UNIV_PAGE_SIZE_SHIFT. UNIV_PAGE_SIZE, BUF_BUDDY_SIZES: Define in terms of UNIV_PAGE_SIZE_SHIFT. BUF_BUDDY_LOW_SHIFT: New macro, to simplify the definition of BUF_BUDDY_LOW and BUF_BUDDY_SIZES. PAGE_ZIP_DIR_SLOT_MASK: Relax the compile-time check. This bitmask must be one less than a power of two, and at least UNIV_PAGE_SIZE - 1. ------------------------------------------------------------ revno: 0.3.973 committer: marko timestamp: Thu 2007-12-20 09:10:42 +0000 message: branches/zip: Add some clarifying comments. btr_copy_blob_prefix(), btr_copy_externally_stored_field_prefix_low(): Document the return value as "number of bytes written", not "bytes written". trx_undo_page_fetch_ext(): Explain the assertion ut_a(ext_len). row_build_index_entry(): Explain the assertion ut_a(!ext). ------------------------------------------------------------ revno: 0.3.972 committer: marko timestamp: Wed 2007-12-19 15:05:13 +0000 message: branches/zip: Minor cleanup. row_create_index_graph_for_mysql(): Move from row0mysql.c to row0merge.c and rename to row_merge_create_index_graph(). Also change the function comment to say that the function will create and execute the query graph for creating the index. row_merge_create_index(): Remove redundant assignment to trx->error_state. ------------------------------------------------------------ revno: 0.3.971 committer: marko timestamp: Wed 2007-12-19 14:26:01 +0000 message: branches/zip: Fast index creation: Lock the data dictionary only after acquiring the table lock. The data dictionary should not be locked for long periods. Before this change, in the worst case, the dictionary would be locked until the expiration of innodb_lock_wait_timeout. Virtually, transaction-level locks (locks on database objects, such as records and tables) have a latching order level of SYNC_USER_TRX_LOCK, which is above any InnoDB rw-locks or mutexes. However, the latching order of SYNC_USER_TRX_LOCK is never checked, not even by UNIV_SYNC_DEBUG. ha_innobase::add_index(), ha_innobase::final_drop_index(): Invoke row_mysql_lock_data_dictionary(trx) only after row_merge_lock_table(). ------------------------------------------------------------ revno: 0.3.970 committer: marko timestamp: Wed 2007-12-19 14:03:39 +0000 message: branches/zip: Implement a limit for the size of undo log records. innodb-index.test: Add a test with a large number of externally stored columns. Check that there may not be prefix indexes on too many columns. dict_index_too_big_for_undo(): New function: Check if the undo log may overflow. dict_index_add_to_cache(): Return DB_SUCCESS or DB_TOO_BIG_RECORD. Postpone the creation and linking of some data structures, so that when dict_index_too_big_for_undo() holds, it will be easier to clean up. Check the return status in all callers. ------------------------------------------------------------ revno: 0.3.969 committer: marko timestamp: Wed 2007-12-19 11:58:46 +0000 message: branches/zip: dict0dict.c: Minor cleanup. dict_index_copy(): Remove the prototype, because this static function will be defined before its first use. Add const qualifier to "table". dict_index_build_internal_clust(), dict_index_build_internal_non_clust(): Add const qualifier to "table". Correct the comment about setting indexed[]. ------------------------------------------------------------ revno: 0.3.968 committer: vasil timestamp: Tue 2007-12-18 09:44:03 +0000 message: branches/zip: Non-functional change: Do not include the terminating '\0' in TRX_I_S_LOCK_ID_MAX_LEN. ------------------------------------------------------------ revno: 0.3.967 committer: marko timestamp: Mon 2007-12-17 23:00:55 +0000 message: branches/zip: Fast index creation: Clarify why lock waits may occur in row_merge_lock_table(). ha_innobase::final_drop_index(): Set the dictionary operation mode to TRX_DICT_OP_INDEX_MAY_WAIT for the duration of the row_merge_lock_table() call. ------------------------------------------------------------ revno: 0.3.966 committer: marko timestamp: Mon 2007-12-17 20:51:34 +0000 message: branches/zip: row_merge_lock_table(): Set a more informative trx->op_info. ------------------------------------------------------------ revno: 0.3.965 committer: marko timestamp: Mon 2007-12-17 15:49:59 +0000 message: branches/zip: Fast index creation: Remove the ROW_PREBUILT_OBSOLETE nonsense. Active transactions must not switch table or index definitions on the fly, for several reasons, including the following: * copied indexes do not carry any history or locking information; that is, rollbacks, read views, and record locking would be broken * huge potential for race conditions, inconsistent reads and writes, loss of data, and corruption Instead of trying to track down if the table was changed during a transaction, acquire appropriate locks that protect the creation and dropping of indexes. innodb-index.test: Test the locking of CREATE INDEX and DROP INDEX. Test that consistent reads work across dropped indexes. lock_rec_insert_check_and_lock(): Relax the lock_table_has() assertion. When inserting a record into an index, the table must be at least IX-locked. However, when an index is being created, an IS-lock on the table is sufficient. row_merge_lock_table(): Add the parameter enum lock_mode mode, which must be LOCK_X or LOCK_S. row_merge_drop_table(): Assert that n_mysql_handles_opened == 0. Unconditionally drop the table. ha_innobase::add_index(): Acquire an X or S lock on the table, as appropriate. After acquiring an X lock, assert that n_mysql_handles_opened == 1. Remove the comments about dropping tables in the background. ha_innobase::final_drop_index(): Acquire an X lock on the table. dict_table_t: Remove version_number, to_be_dropped, and prebuilts. ins_node_t: Remove table_version_number. enum lock_mode: Move the definition from lock0lock.h to lock0types.h. ROW_PREBUILT_OBSOLETE, row_update_prebuilt(), row_prebuilt_table_obsolete(): Remove. row_prebuilt_t: Remove the declaration from row0types.h. row_drop_table_for_mysql_no_commit(): Always print a warning if a table was added to the background drop queue. ------------------------------------------------------------ revno: 0.3.964 committer: marko timestamp: Mon 2007-12-17 14:11:19 +0000 message: branches/zip: lock_rec_insert_check_and_lock(): Use the cached value of thr_get_trx(thr). ------------------------------------------------------------ revno: 0.3.963 committer: marko timestamp: Mon 2007-12-17 14:06:59 +0000 message: branches/zip: innobase_mysql_end_print_arbitrary_thd(): Note that kernel_mutex must be released before calling this function. innobase_mysql_end_print_arbitrary_thd(), innobase_mysql_prepare_print_arbitrary_thd(): Assert that the kernel_mutex is not being held by the current thread. ------------------------------------------------------------ revno: 0.3.962 committer: vasil timestamp: Mon 2007-12-17 10:10:39 +0000 message: branches/zip: Bugfix: Lock the MySQL mutex LOCK_thread_count before accessing trx->mysql_query_str to avoid race conditions where MySQL sets it to NULL after we have checked that it is not NULL and before we access it. Approved by: Marko ------------------------------------------------------------ revno: 0.3.961 committer: vasil timestamp: Mon 2007-12-17 10:03:15 +0000 message: branches/zip: Non-functional change: add "out:" comment for the return value. ------------------------------------------------------------ revno: 0.3.960 committer: vasil timestamp: Sun 2007-12-16 16:13:53 +0000 message: branches/zip: Non-functional change: Move the prototypes of innobase_mysql_prepare_print_arbitrary_thd() and innobase_mysql_end_print_arbitrary_thd() from lock0lock.c to ha_prototypes.h Suggested by: Marko Approved by: Marko ------------------------------------------------------------ revno: 0.3.959 committer: marko timestamp: Thu 2007-12-13 13:12:20 +0000 message: branches/zip: page_zip_decompress(): Implement a proper check if there is an overlap between BLOB pointers and the modification log or the zlib stream. page_zip_decompress_clust_ext(): Remove the improper check. The d_stream->avail_in cannot be decremented here, because we do not know at this point if the record is deleted. No space is reserved for the BLOB pointers in deleted records. page_zip_decompress_clust(): Check for the overlap here, right before copying the BLOB pointers. page_zip_decompress_clust(): Also check that the target column is long enough, and return FALSE instead of ut_ad() failure. ------------------------------------------------------------ revno: 0.3.958 committer: vasil timestamp: Thu 2007-12-13 13:04:47 +0000 message: branches/zip: Add some clarification to a comment. ------------------------------------------------------------ revno: 0.3.957 committer: marko timestamp: Thu 2007-12-13 12:45:43 +0000 message: branches/zip: page_zip_decompress_node_ptrs(): Remove the local variable is_clust, to avoid a warning about unused variable when the definition of page_zip_fail() is empty. ------------------------------------------------------------ revno: 0.3.956 committer: marko timestamp: Thu 2007-12-13 11:32:11 +0000 message: branches/zip: page0zip.c: Add more page_zip_fail() diagnostics to some decompression functions. page_zip_apply_log_ext(), page_zip_apply_log(): Call page_zip_fail() with appropriate diagnostics before returning NULL. page_zip_decompress_node_ptrs(), page_zip_decompress_sec(), page_zip_decompress_clust(): When detecting that the zlib stream followed by the modification log overlaps the trailer, do not let an assertion fail, but invoke page_zip_fail() and return FALSE. Corrupt data should never lead into assertion failures in decompression functions. ------------------------------------------------------------ revno: 0.3.955 committer: marko timestamp: Thu 2007-12-13 10:57:30 +0000 message: branches/zip: page0zip.c: Define and use the auxiliary macros ASSERT_ZERO() and ASSERT_ZERO_BLOB() for asserting that certain blocks of memory are filled with zero. ------------------------------------------------------------ revno: 0.3.954 committer: marko timestamp: Wed 2007-12-12 14:12:52 +0000 message: branches/zip: Clarify that buf_buddy_alloc() should only be used for allocating compressed page frames or their control blocks. Also note that if buf_buddy_alloc() is used for allocating a control block, it must be initialized before releasing buf_pool->mutex. buf_page_init_for_read(): When the page hash check fails after buf_buddy_alloc(), free the uninitialized control block before freeing the compressed page frame. This fixes a potential error in buf_buddy_relocate_block(). ------------------------------------------------------------ revno: 0.3.953 committer: marko timestamp: Wed 2007-12-12 13:42:03 +0000 message: branches/zip: Document how the data structures of the buddy allocator are interfaced with the buffer pool. ------------------------------------------------------------ revno: 0.3.952 committer: marko timestamp: Mon 2007-12-10 12:54:53 +0000 message: branches/zip: buf_page_get_gen(): Check the return status of buf_zip_decompress() and return NULL on decompression failure. ------------------------------------------------------------ revno: 0.3.951 committer: marko timestamp: Mon 2007-12-10 10:10:21 +0000 message: branches/zip: Correct an off-by-one error in the debug assertion that was supposed to be fixed in r2163. ------------------------------------------------------------ revno: 0.3.950 committer: marko timestamp: Mon 2007-12-10 09:48:28 +0000 message: branches/zip: buf_buddy_alloc(): Assign *lru = TRUE whenever the buffer pool mutex is temporarily released. buf_LRU_free_block(), buf_buddy_alloc_clean(): Add an output parameter that will be assigned TRUE when the buffer pool mutex is released. This bug was spotted by and fix provided by Sunny. ------------------------------------------------------------ revno: 0.3.949 committer: marko timestamp: Fri 2007-12-07 09:47:53 +0000 message: branches/zip: rec_convert_dtuple_to_rec_comp(): Allow externally stored columns to be up to REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE bytes in a debug assertion. This assertion could fail since r2159 in trx_undo_prev_version_build(), because the undo log records for updates and deletes would contain longer prefixes of externally stored columns. The assertion failure was reported by Sunny. ------------------------------------------------------------ revno: 0.3.948 committer: marko timestamp: Fri 2007-12-07 09:12:57 +0000 message: branches/zip: dict_table_copy_types(): Initialize all fields to the SQL NULL value. Document this change in behaviour, and make all callers invoke the function right after dtuple_create(). dict_create_sys_fields_tuple(): Add a missing "break" statement to the loop that checks if there are any column prefixes in the index. row_get_prebuilt_insert_row(): Do not set the fields to the SQL NULL value, now that dict_table_copy_types() takes care of it. ------------------------------------------------------------ revno: 0.3.947 committer: marko timestamp: Wed 2007-12-05 14:10:15 +0000 message: branches/zip: When logging updates or deletes in the undo log, store long enough prefixes of externally stored columns, so that purge will not have to dereference any BLOB pointers, which may be invalid. This will not be necessary for logging inserts, because inserts are no-ops in purge, and the record will remain locked during transaction rollback. TODO: in dict_build_table_def_step() or dict_build_index_def_step(), prevent the creation of tables with too many columns for which a prefix index is defined. This is because there is a size limit of undo log records, and for each prefix-indexed column, the log must store REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE bytes. trx_undo_page_report_insert(): Assert that the index is clustered. trx_undo_page_fetch_ext(): New function, for fetching the BLOB prefix in trx_undo_page_report_modify(). trx_undo_page_report_modify(): Write long enough prefixes of the externally stored columns to the undo log. trx_undo_rec_get_partial_row(): Remove the parameter "ext". Assert that the undo log contains long enough prefixes of the externally stored columns. purge_node_t: Remove the field "ext". ------------------------------------------------------------ revno: 0.3.946 committer: marko timestamp: Wed 2007-12-05 13:26:06 +0000 message: branches/zip: row_build_index_entry(): Add assertions that prevent improper prefix indexes from being built on externally stored columns. ------------------------------------------------------------ revno: 0.3.945 committer: marko timestamp: Wed 2007-12-05 09:49:09 +0000 message: branches/zip: btr_cur_pessimistic_update(), btr_cur_pessimistic_delete(): Use rec_offs_any_extern() as a condition for freeing externally stored columns. This is only a performance optimization. ------------------------------------------------------------ revno: 0.3.944 committer: marko timestamp: Tue 2007-12-04 08:37:43 +0000 message: branches/zip: Merge r2154 from trunk: innodb.result, innodb.test: Revert the changes in r2145. The tests that were removed by MySQL ChangeSet@1.2598.2.6 2007-11-06 15:42:58-07:00 tsmith@hindu.god were moved to a new test, innodb_autoinc_lock_mode_zero, which is kept in the MySQL BitKeeper tree. ------------------------------------------------------------ revno: 0.3.943 committer: marko timestamp: Mon 2007-12-03 12:16:07 +0000 message: branches/zip: Fix a bug in fast index creation that was introduced in r2131 when row_build() was changed to prefetch all externally stored column prefixes that occur in ordering fields of an index. row_build(): Add the parameter col_table for determining which externally stored columns need to be fetched. row_merge_read_clustered_index(): Pass new_table as the said parameter, so that newly added indexes containing column prefix indexes of externally stored columns will work. ------------------------------------------------------------ revno: 0.3.942 committer: marko timestamp: Mon 2007-12-03 10:25:20 +0000 message: branches/zip: btr_store_big_rec_extern_fields(): Note that the page number of the record containing the field reference may change. ------------------------------------------------------------ revno: 0.3.941 committer: marko timestamp: Fri 2007-11-30 15:32:36 +0000 message: branches/zip: row_ext_cache_fill(): Add a missing "else" that should have been added in r2131. ------------------------------------------------------------ revno: 0.3.940 committer: marko timestamp: Fri 2007-11-30 12:30:21 +0000 message: branches/zip: Merge 2116:2146 from trunk. ------------------------------------------------------------ revno: 0.3.939 committer: marko timestamp: Fri 2007-11-30 08:48:36 +0000 message: branches/zip: row_ext_cache_fill(): Add an assertion that some BLOB data was actually fetched. ext->len[i] == 0 is reserved to mean an uninitialized BLOB pointer. ------------------------------------------------------------ revno: 0.3.938 committer: vasil timestamp: Thu 2007-11-29 13:47:09 +0000 message: branches/zip: * Change terminology: wait lock -> requested lock waited lock -> blocking lock new: requesting transaction (the trx what owns the requested lock) new: blocking transaction (the trx that owns the blocking lock) * Add transaction ids to INFORMATION_SCHEMA.INNODB_LOCK_WAITS. This is somewhat redundant because transaction ids can be found in INNODB_LOCKS (which can be joined with INNODB_LOCK_WAITS) but would help users to write shorter joins (one table less) in some cases where they want to find which transaction is blocking which. Suggested by: Ken Approved by: Heikki ------------------------------------------------------------ revno: 0.3.937 committer: marko timestamp: Thu 2007-11-29 12:54:43 +0000 message: branches/zip: row_ext_create(): Remove unused variables that were added in r2131. ------------------------------------------------------------ revno: 0.3.936 committer: marko timestamp: Thu 2007-11-29 12:52:49 +0000 message: branches/zip: row_ext_create(): Remove the UNIV_INLINE that should have been removed in r2131. ------------------------------------------------------------ revno: 0.3.935 committer: marko timestamp: Thu 2007-11-29 12:47:18 +0000 message: branches/zip: row_ext: Fetch the BLOB prefixes already at row_ext_create(). Only add indexed BLOBs to row_ext. trx_undo_rec_get_partial_row(): Move the BLOB fetching to row_ext_create(). row_build(): Pass only those BLOBs to row_ext_create() that are referenced by ordering columns of some indexes, similar to trx_undo_rec_get_partial_row(). row_ext_create(): Add the parameter "tuple". Move the implementation from row0ext.ic to row0ext.c. row_ext_lookup_ith(), row_ext_lookup(): Return a const pointer. Remove the parameters "field" and "f_len". Make the row_ext_t* parameter const. row_ext_t: Remove the field zip_size. field_ref_zero[]: Declare in btr0types.h instead of btr0cur.h. row_ext_lookup_low(): Rename to row_ext_cache_fill() and change the signature. ------------------------------------------------------------ revno: 0.3.934 committer: marko timestamp: Thu 2007-11-29 12:36:53 +0000 message: branches/zip: Clean up after r2129: univ.i: Do not define UNIV_DEBUG, UNIV_ZIP_DEBUG. btr_cur_del_unmark_for_ibuf(): Use the same comment in both btr0cur.c and btr0cur.h. Wrap long lines. ------------------------------------------------------------ revno: 0.3.933 committer: sunny timestamp: Thu 2007-11-29 12:23:48 +0000 message: branches/zip: Fix a bug where the zipped page and the uncompressed page contents end up with conflicting versions of a record's state. The zipped page record was not being marked as "(un)deleted" because we were not passing the zipped page contents to the (un)delete function, which first (un)delete marks the uncompressed version and then based on whether page_zip is NULL or not (un)delete marks the record in the compressed page. ------------------------------------------------------------ revno: 0.3.932 committer: marko timestamp: Thu 2007-11-29 10:34:55 +0000 message: branches/zip: ha_innobase::final_drop_index(): Allocate a separate transaction for dropping the index trees, and set the dictionary operation flag, similar to what ha_innobase::add_index() does. This should ensure correct crash recovery. ------------------------------------------------------------ revno: 0.3.931 committer: marko timestamp: Thu 2007-11-29 10:07:47 +0000 message: branches/zip: trx_undo_rec_get_partial_row(): Set up the row_ext cache only for those externally stored columns that occur in the ordering columns of indexes. Prefetch the prefixes of those columns, because the clustered index record and the BLOBs may have been deleted by the time when the purge thread needs to read the BLOB prefixes. row_ext_create(): Add the debug assertion ut_ad(ut_is_2pow(zip_size)). ------------------------------------------------------------ revno: 0.3.930 committer: marko timestamp: Thu 2007-11-29 09:04:42 +0000 message: branches/zip: Remove the warnings about pointer targets differing in signedness that were introduced in r2114. row_upd_index_replace_new_col_vals_index_pos(), row_upd_index_replace_new_col_vals(): Declare "data" as const byte* instead of const char*, and add casts to the dtype_get_at_most_n_mbchars() calls. ------------------------------------------------------------ revno: 0.3.929 committer: marko timestamp: Wed 2007-11-28 13:45:22 +0000 message: branches/zip: Fix a bug that was introduced in r2123. buf_block_is_uncompressed(): Check that the pointer is aligned. Use the C modulus operator % instead of ut_align_offset(), because sizeof(buf_block_t) is not guaranteed to be a power of 2. ------------------------------------------------------------ revno: 0.3.928 committer: marko timestamp: Wed 2007-11-28 13:09:50 +0000 message: branches/zip: row_vers_impl_x_locked_off_kernel(): In follow-up to r2119, assert ut_a(entry) instead of playing it safe. ------------------------------------------------------------ revno: 0.3.927 committer: marko timestamp: Wed 2007-11-28 11:31:12 +0000 message: branches/zip: buf_page_get_gen(): Note that the guessed block may also point to a buffer pool chunk that has been released when resizing the buffer pool. buf_block_is_uncompressed(): Check that the pointer is aligned. Thanks to this check, it is safe to pass an arbitrary pointer as a guess to buf_page_get_gen(). ------------------------------------------------------------ revno: 0.3.926 committer: marko timestamp: Wed 2007-11-28 11:22:25 +0000 message: branches/zip: Minor cleanup. buf_page_get_release_on_io(): Removed this unused function. ibuf_build_entry_from_ibuf_rec(): Justify why it is not necessary to add system columns to the dummy table pointed to by the dummy secondary index. page_zip_rec_set_deleted(): Add a page_zip_validate() assertion. ------------------------------------------------------------ revno: 0.3.925 committer: vasil timestamp: Wed 2007-11-28 07:07:23 +0000 message: branches/zip: Add the transaction's weight to information_schema.innodb_trx table. Suggested by: Ken Approved by: Heikki ------------------------------------------------------------ revno: 0.3.924 committer: marko timestamp: Tue 2007-11-27 09:20:40 +0000 message: branches/zip: lock_sec_rec_some_has_impl_off_kernel(): Make the function static. It is only called from lock0lock.c. ------------------------------------------------------------ revno: 0.3.923 committer: marko timestamp: Tue 2007-11-27 09:11:45 +0000 message: branches/zip: In purge, avoid dereferencing unset BLOB pointers of freshly inserted, uncommitted clustered index records when determining if a secondary index record that contains a column prefix of an externally stored column is referencing the clustered index record. field_ref_zero[]: A BLOB pointer full of zero, for use in comparisons. btr_copy_externally_stored_field_prefix(): Assert that the BLOB pointer is set. row_ext_lookup_ith(), row_ext_lookup(), row_ext_lookup_low(): Document that field_ref_zero is returned when the BLOB cannot be fetched. row_ext_lookup_low(): Return field_ref_zero and *len = 0 when the BLOB pointer is unset. row_build_index_entry(): Return NULL when a needed BLOB pointer cannot be dereferenced (row_ext_lookup returns field_ref_zero). Check the return value for NULL in callers. row_vers_impl_x_locked_off_kernel(): Avoid comparisons when row_build_index_entry() returns NULL. row_vers_old_has_index_entry(): Ignore records for which row_build_index_entry() returns NULL. The entry should never be NULL in rollback, but it may be NULL in purge. row_merge_buf_add(): Assert that row_ext_lookup() does not return field_ref_zero. The table will be locked during index creation. ------------------------------------------------------------ revno: 0.3.922 committer: marko timestamp: Tue 2007-11-27 07:57:03 +0000 message: branches/zip: btr_cur_pessimistic_insert(): When calling btr_cur_optimistic_insert(), pass big_rec to it, so that the field references of externally stored columns (BLOB pointers) will not be left uninitialized after a successful optimistic insert. This bug was spotted by Sunny. ------------------------------------------------------------ revno: 0.3.921 committer: vasil timestamp: Fri 2007-11-23 17:12:35 +0000 message: branches/zip: Merge 2093:2116 from trunk. ------------------------------------------------------------ revno: 0.3.920 committer: marko timestamp: Fri 2007-11-23 12:51:29 +0000 message: branches/zip: Correct mistakes made in r2114. row_upd_index_replace_new_col_vals(): Declare fetch_ext. row_upd_index_replace_new_col_vals_index_pos(): Add a type conversion to the initialization expression of fetch_ext, to avoid a warning about comparison between signed and unsigned. ------------------------------------------------------------ revno: 0.3.919 committer: marko timestamp: Fri 2007-11-23 12:40:19 +0000 message: branches/zip: Fix a bug in the updates of index records that contain a column prefix of an externally stored column. row_upd_ext_fetch(): New function. row_upd_index_replace_new_col_vals(), row_upd_index_replace_new_col_vals_index_pos(): Fetch prefixes of externally stored columns when they are needed for column prefix indexes. For memory allocation, add the parameter ext_heap. Avoid repeating the inner loop after finding a matching upd_field->field_no. ------------------------------------------------------------ revno: 0.3.918 committer: marko timestamp: Thu 2007-11-22 14:09:19 +0000 message: branches/zip: row_ext_create(), row_ext_lookup(): Clarify that the column numbers are relative to the InnoDB table object, or numbers returned by dict_col_get_no(). This will have to be ensured in all calling code. ------------------------------------------------------------ revno: 0.3.917 committer: marko timestamp: Thu 2007-11-22 10:29:02 +0000 message: branches/zip: dict_col_get_clust_pos(): Split a debug assertion, and make use of dict_index_is_clust(). ------------------------------------------------------------ revno: 0.3.916 committer: marko timestamp: Thu 2007-11-22 10:22:44 +0000 message: branches/zip: row_ext_create(), row_ext_lookup(): Clarify that the column numbers are relative to the clustered index record. ------------------------------------------------------------ revno: 0.3.915 committer: marko timestamp: Thu 2007-11-22 10:02:50 +0000 message: branches/zip: btr_store_big_rec_extern_fields(), btr_free_externally_stored_field(): Add some page type assertions that were suggested by Sunny. ------------------------------------------------------------ revno: 0.3.914 committer: vasil timestamp: Wed 2007-11-21 17:15:27 +0000 message: branches/zip: Fix the size of the static buffer for lock_table and lock_index. I was not realizing that NAME_LEN contains the mbmaxlen multiplier and thus a quote, when converted to 2 quotes, will take 2 bytes while there are 3 bytes reserved. Spotted by: Marko Pointyhat to: Vasil ------------------------------------------------------------ revno: 0.3.913 committer: vasil timestamp: Wed 2007-11-21 17:02:46 +0000 message: branches/zip: Add C test for innobase_convert_name() in addition to the mysql-test one. ------------------------------------------------------------ revno: 0.3.912 committer: marko timestamp: Wed 2007-11-21 13:08:15 +0000 message: branches/zip: When writing an externally stored column to the undo log, set the "external storage" flag. When parsing the undo log, do not misinterpret a SQL NULL column for externally stored. These bugs were spotted by Heikki and Sunny. trx_undo_page_report_modify(): Set the UNIV_EXTERN_STORAGE_FIELD flag when needed. trx_undo_rec_get_partial_row(): Check for len == UNIV_SQL_NULL. ------------------------------------------------------------ revno: 0.3.911 committer: vasil timestamp: Wed 2007-11-21 12:11:04 +0000 message: branches/zip: Fix a bug where the static buffer for innodb_locks.lock_table may not have enough space. Pointyhat to: Marko ------------------------------------------------------------ revno: 0.3.910 committer: vasil timestamp: Wed 2007-11-21 12:01:36 +0000 message: branches/zip: Bugfix1: Set innodb_locks.lock_index to NOT NULL. If a column in INFORMATION_SCHEMA table has the flag MY_I_S_MAYBE_NULL and it is not explicitly marked as NOT NULL with the method ::set_notnull() then it is always rendered as NULL by MySQL. Bugfix2: Avoid crashes if lock_index is NULL. It is NULL for table level locks. Pointyhat to: Marko ------------------------------------------------------------ revno: 0.3.909 committer: vasil timestamp: Wed 2007-11-21 11:44:36 +0000 message: branches/zip: Non-functional change: Fix consistency of the sizeof() operator with the rest of i_s.cc Pointyhat to: Marko ------------------------------------------------------------ revno: 0.3.908 committer: vasil timestamp: Wed 2007-11-21 11:23:05 +0000 message: branches/zip: Move test that depends on ucs2 to a separate file that is disabled if ucs2 is not compiled in. ------------------------------------------------------------ revno: 0.3.907 committer: vasil timestamp: Wed 2007-11-21 10:47:08 +0000 message: branches/zip: Move common SQL commands to an .inc file. ------------------------------------------------------------ revno: 0.3.906 committer: vasil timestamp: Wed 2007-11-21 10:18:22 +0000 message: branches/zip: Synchronize the utf8 and ucs2 tests. ------------------------------------------------------------ revno: 0.3.905 committer: marko timestamp: Wed 2007-11-21 08:46:11 +0000 message: branches/zip: INFORMATION_SCHEMA.INNODB_LOCKS: Quote lock_table, lock_index. innodb_information_schema.test. Add tests that display most columns from INFORMATION_SCHEMA.INNODB_LOCKS. Test that quoting of table names works and respects SQL_MODE='ANSI_QUOTES'. innobase_print_identifier(): Remove. innobase_convert_identifier(): New function, based on innobase_print_identifier(). innobase_convert_name(): New function, similar to ut_print_namel(), but using a memory buffer. ut_print_namel(): Use innobase_convert_name(). fill_innodb_locks_from_cache(): Convert lock_table and lock_index by calling innobase_convert_name(). ------------------------------------------------------------ revno: 0.3.904 committer: marko timestamp: Wed 2007-11-21 08:00:14 +0000 message: branches/zip: ut_fold_binary(): Adjust a bogus debug assertion. ------------------------------------------------------------ revno: 0.3.903 committer: vasil timestamp: Wed 2007-11-21 07:38:56 +0000 message: branches/zip: Convert INFORMATION_SCHEMA tables' names to upper case so that they are consistent with other INFORMATION_SCHEMA tables. mysql> show tables; +---------------------------------------+ | Tables_in_information_schema | +---------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES | | ENGINES | | EVENTS | | FILES | | GLOBAL_STATUS | | GLOBAL_VARIABLES | | KEY_COLUMN_USAGE | | PARTITIONS | | PLUGINS | | PROCESSLIST | | REFERENTIAL_CONSTRAINTS | | ROUTINES | | SCHEMATA | | SCHEMA_PRIVILEGES | | SESSION_STATUS | | SESSION_VARIABLES | | STATISTICS | | TABLES | | TABLE_CONSTRAINTS | | TABLE_PRIVILEGES | | TRIGGERS | | USER_PRIVILEGES | | VIEWS | | innodb_zip_reset | | innodb_trx | | innodb_locks | | innodb_lock_waits | | innodb_zip | +---------------------------------------+ ------------------------------------------------------------ revno: 0.3.902 committer: marko timestamp: Fri 2007-11-16 15:50:36 +0000 message: branches/zip: trx_undo_rec_get_partial_row(): When reading an externally stored column, subtract UNIV_EXTERN_STORAGE_FIELD from the length of the field. ------------------------------------------------------------ revno: 0.3.901 committer: marko timestamp: Fri 2007-11-16 13:57:27 +0000 message: branches/zip: Merge 2015:2093 from trunk. ------------------------------------------------------------ revno: 0.3.900 committer: vasil timestamp: Fri 2007-11-16 13:12:13 +0000 message: branches/zip: Implement a limit on the memory used by the INNODB_TRX, INNODB_LOCKS and INNODB_LOCK_WAITS tables. The maximum allowed memory is defined with the macro TRX_I_S_MEM_LIMIT. Approved by: Marko (via IM) ------------------------------------------------------------ revno: 0.3.899 committer: marko timestamp: Thu 2007-11-15 10:56:34 +0000 message: branches/zip: Introduce the function page_zip_fail_func() and the wrapper macro page_zip_fail() for displaying error messages. When the error output is enabled (at compile-time), a breakpoint may be set in page_zip_fail_func to easily debug all decompression errors in the context where they occur. ------------------------------------------------------------ revno: 0.3.898 committer: vasil timestamp: Tue 2007-11-13 09:31:54 +0000 message: branches/zip: Remove unnecessary code. Environment variables are passed to children anyway, no need to export them. Approved by: Sunny (via IM) ------------------------------------------------------------ revno: 0.3.897 committer: vasil timestamp: Tue 2007-11-13 07:41:34 +0000 message: branches/zip: Fix typos in comment. ------------------------------------------------------------ revno: 0.3.896 committer: sunny timestamp: Mon 2007-11-12 23:40:36 +0000 message: branches/zip: Minor fix, remove the constant, calculate the length of string dynamically. ------------------------------------------------------------ revno: 0.3.895 committer: sunny timestamp: Mon 2007-11-12 23:28:59 +0000 message: branches/zip: Change directory to one level up if export.sh script run from within the scripts/ directory, so that the relative paths work. This change was required because the script was moved from the top-level directory to its sub-directory scripts/. ------------------------------------------------------------ revno: 0.3.894 committer: sunny timestamp: Mon 2007-11-12 23:19:06 +0000 message: branches/zip: Add plugin build scripts, move export.sh to the scripts/ directory ------------------------------------------------------------ revno: 0.3.893 committer: marko timestamp: Fri 2007-11-09 15:38:48 +0000 message: branches/zip: btr_cur_pessimistic_insert(): For clarity, use return(DB_...) instead of assigning err = DB_... when possible. ------------------------------------------------------------ revno: 0.3.892 committer: marko timestamp: Fri 2007-11-09 15:32:37 +0000 message: branches/zip: Undo r2079 and fix the cause of uninitialized data bytes in page_zip_decompress(). page_zip_decompress_clust(), page_zip_decompress_clust_ext(): Zero-fill the columns DB_TRX_ID and DB_ROLL_PTR on the uncompressed page. ------------------------------------------------------------ revno: 0.3.891 committer: marko timestamp: Fri 2007-11-09 12:09:29 +0000 message: branches/zip: page_zip_decompress(): Note that the uncompressed page may contain uninitialized bytes when the space of a deleted record is reused by a shorter record. ------------------------------------------------------------ revno: 0.3.890 committer: marko timestamp: Fri 2007-11-09 09:41:21 +0000 message: branches/zip: Remove __attribute__((warn_unused_result)), because it does not work in GCC 3.3. It was useful during the development of zip compression, when some placeholder code ignored the return values of some functions. ------------------------------------------------------------ revno: 0.3.889 committer: vasil timestamp: Wed 2007-11-07 20:38:07 +0000 message: branches/zip: Add the query in information_schema.innodb_trx.trx_query. Add it even though it is available in information_schema.processlist.info to make inconsistencies between those two tables obvious. It is rather confusting to see a transaction shown in innodb_trx and innodb_locks that holds a lock on one table and the corresponding query in processlist executing INSERT on another table. We do not want users to contact us asking to explain that. It is caused by the fact that the data for innodb_* tables and processlist is fetched at different time. Approved by: Marko ------------------------------------------------------------ revno: 0.3.888 committer: vasil timestamp: Wed 2007-11-07 16:17:52 +0000 message: branches/zip: Fix comment: sync variable name in comment with the actual variable name. ------------------------------------------------------------ revno: 0.3.887 committer: vasil timestamp: Wed 2007-11-07 16:06:29 +0000 message: branches/zip: Add mysql_addons.(cc|h) to Makefile.am, forgotten in r2072. Pointyhat to: Vasil ------------------------------------------------------------ revno: 0.3.886 committer: marko timestamp: Wed 2007-11-07 15:58:39 +0000 message: branches/zip: Improve Valgrind instrumentation. page_zip_get_trailer_len(), page_zip_write_header(): Correct the UNIV_MEM_ASSERT_RW() assertions. page_zip_validate(): Read the validity bits of page, page_zip, and page_zip->data. ------------------------------------------------------------ revno: 0.3.885 committer: marko timestamp: Wed 2007-11-07 14:14:47 +0000 message: branches/zip: Improve Valgrind instrumentation. page_zip_decompress(): Assert that the uncompressed page is completely defined. page_zip_validate(): Assert that the compressed and uncompressed pages are completely defined. Fetch the "valid" bits, so that they can be examined when run under valgrind --db-attach=yes. ------------------------------------------------------------ revno: 0.3.884 committer: vasil timestamp: Wed 2007-11-07 14:14:33 +0000 message: branches/zip: Introduce a generic soultion to the common problem that MySQL do not add functions needed by us in a reasonable time. Start with a function that retrieves THD::thread_id, this is needed for the information_schema.innodb_trx.mysql_thread_id column. Approved by: Marko ------------------------------------------------------------ revno: 0.3.883 committer: marko timestamp: Wed 2007-11-07 13:52:52 +0000 message: branches/zip: row_insert_for_mysql(), row_update_for_mysql(), row_prebuilt_free(): Add UNIV_UNLIKELY hints around tests for ROW_PREBUILT_OBSOLETE and some other tests. ------------------------------------------------------------ revno: 0.3.882 committer: marko timestamp: Wed 2007-11-07 13:50:53 +0000 message: branches/zip: page_zip_apply_log(): Write the status bits of the record before invoking rec_get_offsets(). ------------------------------------------------------------ revno: 0.3.881 committer: marko timestamp: Wed 2007-11-07 11:03:13 +0000 message: branches/zip: Return a meaningful error message when refusing to create a compressed table in the system tablespace. db0err.h: Introduce the error code DB_TABLE_ZIP_NO_IBD. Replace the #define directives with an enum, to ease future code merges. These error codes are never written out to files or displayed to the user. Thus they need not remain constant. dict_build_table_def_step(): Return DB_TABLE_ZIP_NO_IBD instead of DB_ERROR. create_table_def(): Report ER_ILLEGAL_HA_CREATE_OPTION "KEY_BLOCK_SIZE" when the table creation fails with DB_TABLE_ZIP_NO_IBD. ------------------------------------------------------------ revno: 0.3.880 committer: marko timestamp: Wed 2007-11-07 08:44:07 +0000 message: branches/zip: Deny non-superuser access to the INFORMATION_SCHEMA tables INNODB_ZIP and INNODB_ZIP_RESET. ------------------------------------------------------------ revno: 0.3.879 committer: vasil timestamp: Tue 2007-11-06 16:39:51 +0000 message: branches/zip: Bugfix: In row_raw_format() - fix the return value when printing in hex; do not forget to count the 2 extra characters "0x" that we wrote at the beginning of the output. ------------------------------------------------------------ revno: 0.3.878 committer: vasil timestamp: Mon 2007-11-05 14:17:07 +0000 message: branches/zip: Deny access to TRX INFORMATION_SCHEMA tables to non-superusers. Approved by: Marko ------------------------------------------------------------ revno: 0.3.877 committer: marko timestamp: Mon 2007-11-05 14:08:18 +0000 message: branches/zip: btr_cur_pessimistic_update(): After btr_cur_pessimistic_insert(), update page_zip, because rec may be on a different page. ------------------------------------------------------------ revno: 0.3.876 committer: marko timestamp: Mon 2007-11-05 13:14:11 +0000 message: branches/zip: btr_free_externally_stored_field(): Clear rec_zip_size when rec == NULL. ------------------------------------------------------------ revno: 0.3.875 committer: marko timestamp: Mon 2007-11-05 12:12:28 +0000 message: branches/zip: page_zip_compress(): Do not call deflate(&c_stream, Z_FULL_FLUSH) unless more than 6 bytes are available for the output. This should remove the possibility that deflate() returns Z_OK without consuming all input. ------------------------------------------------------------ revno: 0.3.874 committer: marko timestamp: Mon 2007-11-05 10:31:41 +0000 message: branches/zip: buf_page_get_gen(): Ignore "guess" if it does not point to buf_pool->chunks[]->blocks[]. buf_block_is_uncompressed(): New function, to detect if a block points to buf_pool->chunks[]->blocks[]. ------------------------------------------------------------ revno: 0.3.873 committer: marko timestamp: Mon 2007-11-05 10:17:38 +0000 message: branches/zip: buf_page_hash_get(): Fix a debug assertion that was accidentally negated in r2043. ------------------------------------------------------------ revno: 0.3.872 committer: marko timestamp: Fri 2007-11-02 12:53:06 +0000 message: branches/zip: trx_rollback_or_clean_all_recovered(): Acquire the kernel_mutex in the beginning of each loop, as was the case until r2040. The bug was spotted by Heikki. ------------------------------------------------------------ revno: 0.3.871 committer: marko timestamp: Thu 2007-11-01 20:36:51 +0000 message: branches/zip: sync0sync.h: Define mutex_free as mutex0_free, because symbols defined in innodb_redefine.h must not be undefined. After this change, innodb_redefine.h will define mutex0_free instead of mutex_free, and everything is fine. ------------------------------------------------------------ revno: 0.3.870 committer: marko timestamp: Thu 2007-11-01 15:00:44 +0000 message: branches/zip: Allow the symbols in the dynamic InnoDB plugin to be redefined so that the dynamic plugin can replace the builtin InnoDB in MySQL 5.1. ha_innodb.cc, handler0alter.cc: #include "univ.i" before any other InnoDB header files or before defining any symbols innodb_redefine.h: New file, to contain a mapping of symbols. The idea is that this file will be replaced in the build process; because this is a large file that can be generated automatically, it does not make sense to keep it under version control. univ.i: #include "innodb_redefine.h" and #define ha_innobase ha_innodb Makefile.am (ha_innodb_la_CXXFLAGS): Remove -Dha_innobase=ha_innodb NOTE: there are still some issues in the source code. One known issue is the #undef mutex_free in sync0sync.h, which will cause the plugin to call the function mutex_free in the builtin InnoDB. The preprocessor symbols defined in innodb_redefine.h must not be undefined or redefined anywhere in the code. ------------------------------------------------------------ revno: 0.3.869 committer: marko timestamp: Thu 2007-11-01 13:25:48 +0000 message: branches/zip: Remove the parameter innodb_dynamic, and always call the plugin "InnoDB", not "InnoDBzip". We can disable the builtin InnoDB by mysqld --skip-innodb. If the builtin InnoDB is not disabled, installing the InnoDB plugin by the same name will not work. innodb_plugin_init(): Ignore differences in the PLUGIN_VAR_READONLY flag. ------------------------------------------------------------ revno: 0.3.868 committer: marko timestamp: Thu 2007-11-01 11:44:49 +0000 message: branches/zip: Remove warnings for BUILD/compile-... --warning-mode=pedantic. ha_innobase::write_row(): The printf format %p expects const void*. STRUCT_FLD: Do not use the GCC extension when __STRICT_ANSI__ is defined. row_merge_read_clustered_index(): Compound initializers must not contain variables. Assign to struct fields instead. ------------------------------------------------------------ revno: 0.3.867 committer: marko timestamp: Wed 2007-10-31 22:02:23 +0000 message: branches/zip: buf_page_init_low(): Initialize also flush_type. ------------------------------------------------------------ revno: 0.3.866 committer: marko timestamp: Wed 2007-10-31 20:49:16 +0000 message: branches/zip: page_zip_compress(): Flag the compressed stream completely initialized, although Valgrind believes that some bits in the 7th or 8th bytes from the end are uninitialized. (They might be, but the decompressor should not care about those bits after encountering the end-of-stream marker in the compressed bit stream.) ------------------------------------------------------------ revno: 0.3.865 committer: marko timestamp: Wed 2007-10-31 16:14:18 +0000 message: branches/zip: Check that page_zip->data is defined, not page_zip itself. ------------------------------------------------------------ revno: 0.3.864 committer: marko timestamp: Wed 2007-10-31 14:27:59 +0000 message: branches/zip: Improve Valgrind instrumentation. btr_cur_optimistic_insert(): On compressed tablespaces, check that both the compressed and the uncompressed page are completely initialized in the beginning of the function. page_zip_compress(): After successful compression, check that the compressed page is completely initialized. ------------------------------------------------------------ revno: 0.3.863 committer: marko timestamp: Wed 2007-10-31 13:19:38 +0000 message: branches/zip: Add some more Valgrind instrumentation. page_zip_write_rec(), page_zip_write_blob_ptr(), page_zip_write_node_ptr(), page_zip_write_trx_id_and_roll_ptr(), page_zip_clear_rec(), page_zip_rec_set_deleted(), page_zip_rec_set_owned(), page_zip_dir_insert(), page_zip_dir_delete(), page_zip_dir_add_slot(), page_zip_reorganize(), page_zip_copy(), page_zip_get_trailer_len(), page_zip_write_header(): Assert that the complete contents of the compressed page is defined. ------------------------------------------------------------ revno: 0.3.862 committer: marko timestamp: Wed 2007-10-31 12:42:38 +0000 message: branches/zip: Improve Valgrind instrumentation. page_zip_compress(): Assert that the contents of the uncompressed page is entirely initialized. page_zip_decompress(): Assert that the contents of the compressed page is entirely initialized. Assert that the uncompressed page is entirely writeable. Flag the uncompressed page uninitialized in the beginning. ------------------------------------------------------------ revno: 0.3.861 committer: marko timestamp: Wed 2007-10-31 12:23:03 +0000 message: branches/zip: buf_block_align(): Add missing type conversion. ------------------------------------------------------------ revno: 0.3.860 committer: marko timestamp: Wed 2007-10-31 10:44:15 +0000 message: branches/zip: Correct the Valgrind instrumentation of r2041. Use UNIV_MEM_ASSERT_RW() instead of UNIV_MEM_VALID(). The latter flags memory defined; the former checks that it is defined. ------------------------------------------------------------ revno: 0.3.859 committer: marko timestamp: Wed 2007-10-31 10:40:41 +0000 message: branches/zip: buf_LRU_block_remove_hashed_page(): Add some Valgrind instrumentation. ------------------------------------------------------------ revno: 0.3.858 committer: marko timestamp: Wed 2007-10-31 10:40:09 +0000 message: branches/zip: buf_buddy_relocate(): The src block may be partially freed. Remove the Valgrind check about it. ------------------------------------------------------------ revno: 0.3.857 committer: marko timestamp: Wed 2007-10-31 09:00:08 +0000 message: branches/zip: Improve Valgrind instrumentation. buf_buddy_relocate(): Allow the source block to contain uninitialized data. buf0buddy.c: Replace the remaining VALGRIND_CHECK_ macros with the wrappers defined in univ.i. ------------------------------------------------------------ revno: 0.3.856 committer: marko timestamp: Tue 2007-10-30 09:27:09 +0000 message: branches/zip: Improve Valgrind instrumentation. buf_LRU_free_block(): Check that the block descriptor contains valid data. buf_buddy_relocate(): Check that the source block contains valid data. buf_page_get_gen(): Do not dereference bpage after calling buf_relocate(). This avoids a bogus Valgrind warning; the memory itself was valid. buf_page_hash_get(): Check that the returned block descriptor contains valid data. ------------------------------------------------------------ revno: 0.3.855 committer: marko timestamp: Tue 2007-10-30 08:25:01 +0000 message: branches/zip: trx_rollback_or_clean_all_without_sess(): Rename to trx_rollback_or_clean_all_recovered(). ------------------------------------------------------------ revno: 0.3.854 committer: marko timestamp: Tue 2007-10-30 08:19:48 +0000 message: branches/zip: page0zip.c: Add some Valgrind instrumentation. ------------------------------------------------------------ revno: 0.3.853 committer: marko timestamp: Mon 2007-10-29 15:32:19 +0000 message: branches/zip: trx_rollback_or_clean_all_without_sess(): Distinguish recovered transactions from new ones. Until r1594, they were distinguished by trx->sess == NULL. trx_t: Add the bitfield is_recovered. trx_lists_init_at_db_start(): Set trx->is_recovered. trx_create(): Initialize trx->is_recovered = 0. trx_print(): Display information about trx->is_recovered. trx_rollback_or_clean_all_without_sess(): Skip new transactions. Protect all accesses of trx_sys->trx_list with kernel_mutex. trx_roll_crash_recv_trx, trx_roll_max_undo_no, trx_roll_progress_printed_pct: Made these variables static. ------------------------------------------------------------ revno: 0.3.852 committer: marko timestamp: Mon 2007-10-29 15:25:46 +0000 message: branches/zip: row_merge_drop_temp_indexes(): Use COMMIT WORK instead of trx_commit_for_mysql(). ------------------------------------------------------------ revno: 0.3.851 committer: marko timestamp: Mon 2007-10-29 14:03:57 +0000 message: branches/zip: buf_block_get_frame(): Add missing parenthesis. ------------------------------------------------------------ revno: 0.3.850 committer: vasil timestamp: Mon 2007-10-29 13:03:53 +0000 message: branches/zip: Add innodb_locks.lock_data column and some relevant tests. For record locks this column represents the ordering fields of the locked row in a human readable, SQL-valid, format. Approved by: Marko ------------------------------------------------------------ revno: 0.3.849 committer: marko timestamp: Fri 2007-10-26 14:05:54 +0000 message: branches/zip: Minor performance tuning based on measurement data on mispredicted branches: opcontrol --event=BR_CND_MISSP_EXEC:45000 UT_SORT_FUNCTION_BODY(): Copy the array with memcpy(3). cmp_dtuple_rec_with_match(), cmp_rec_rec_with_match(), cmp_debug_dtuple_rec_with_match(): Add UNIV_UNLIKELY hints around tests for REC_INFO_MIN_REC_FLAG. ------------------------------------------------------------ revno: 0.3.848 committer: marko timestamp: Fri 2007-10-26 12:34:53 +0000 message: branches/zip: Reduce WAIT_FOR_READ from 20 to 5 milliseconds, to correspond to the time in which modern disks can serve a random disk read. ------------------------------------------------------------ revno: 0.3.847 committer: marko timestamp: Fri 2007-10-26 12:31:48 +0000 message: branches/zip: Add UNIV_UNLIKELY hints to help branch prediction. ------------------------------------------------------------ revno: 0.3.846 committer: marko timestamp: Fri 2007-10-26 08:53:36 +0000 message: branches/zip: buf_pool_t: Add n_pend_unzip. Display it in buf_print(). ------------------------------------------------------------ revno: 0.3.845 committer: marko timestamp: Fri 2007-10-26 08:48:01 +0000 message: branches/zip: buf_page_get_gen(): Improve the comments about wait_until_unfixed. ------------------------------------------------------------ revno: 0.3.844 committer: marko timestamp: Thu 2007-10-25 12:54:18 +0000 message: branches/zip: buf_pool_init(): Allocate buf_pool with mem_zalloc(). ------------------------------------------------------------ revno: 0.3.843 committer: marko timestamp: Thu 2007-10-25 12:51:18 +0000 message: branches/zip: buf_page_get_gen(): Reinitialize guess when re-entering the loop. ------------------------------------------------------------ revno: 0.3.842 committer: vasil timestamp: Thu 2007-10-25 11:45:11 +0000 message: branches/zip: Change mach_read_int_type() to return an integer type (ullint) instead of array of bytes that later needs to be converted to an appropriate integer type. Approved by: Sunny ------------------------------------------------------------ revno: 0.3.841 committer: vasil timestamp: Thu 2007-10-25 11:21:11 +0000 message: branches/zip: Make lock_get_type_str() to also indicate if it is a gap lock. Suggested by: Heikki Approved by: Marko ------------------------------------------------------------ revno: 0.3.840 committer: marko timestamp: Thu 2007-10-25 07:19:43 +0000 message: branches/zip: Add the function dtype_is_utf8(). ------------------------------------------------------------ revno: 0.3.839 committer: marko timestamp: Thu 2007-10-25 07:07:25 +0000 message: branches/zip: Minor cleanup. log_block_calc_checksum(), log_block_get_checksum(): Add const qualifiers. log_block_calc_checksum(): Split a long expression to more readable chunks. Some compilers might optimize this better. ------------------------------------------------------------ revno: 0.3.838 committer: marko timestamp: Thu 2007-10-25 07:03:02 +0000 message: branches/zip: Cast void* pointers to byte* when doing pointer arithmetics. ------------------------------------------------------------ revno: 0.3.837 committer: marko timestamp: Wed 2007-10-24 10:59:54 +0000 message: branches/zip: Merge 1937:2015 from trunk. ------------------------------------------------------------ revno: 0.3.836 committer: marko timestamp: Wed 2007-10-24 07:12:11 +0000 message: branches/zip: Remove some unnecessary memory references in the master thread. srv_print_thread_releases, srv_print_lock_waits, srv_print_buf_io, srv_print_log_io, srv_print_latch_waits: Define these variables as constants (FALSE), unless UNIV_DEBUG is defined. These variables are never assigned to, and they are initialized to FALSE. It could be useful to set them when debugging InnoDB. srv_slot_t: Fuse the fields type, in_use, suspended to a single machine word. srv_meter[], srv_meter_low_water[], srv_meter_high_water[], srv_meter_high_water2[], srv_meter_foreground[]: Enclose these arrays inside #if 0. The arrays are essentially constants that do not affect the control flow. enum srv_thread_type: New enum, to replace the #defines SRV_COM, ... Enclose the unused values SRV_BUFFER, SRV_RECOVERY, SRV_INSERT inside #if 0, so that some arrays and loops can be reduced. ------------------------------------------------------------ revno: 0.3.835 committer: marko timestamp: Wed 2007-10-24 06:59:01 +0000 message: branches/zip: row_build_index_entry(): Correct a typo made in r2012. ------------------------------------------------------------ revno: 0.3.834 committer: marko timestamp: Tue 2007-10-23 06:46:12 +0000 message: branches/zip: Do not access the fields of dfield_t directly. dfield_dup(): New function for duplicating the data pointed to by dfield_t. dfield_set_len(), dfield_set_data(): Add Valgrind instrumentation. ------------------------------------------------------------ revno: 0.3.833 committer: marko timestamp: Mon 2007-10-22 10:23:13 +0000 message: branches/zip: row_rec_to_index_entry_low(): Remove a bogus assertion. ------------------------------------------------------------ revno: 0.3.832 committer: marko timestamp: Mon 2007-10-22 09:57:43 +0000 message: branches/zip: Fix bugs that were introduced in r1591. row_upd_rec_in_place(): Correct a debug assertion. row_upd_index_parse(): Initialize new_val with dfield_set_data() or dfield_set_null(). This ensures that new_val->ext is initialized. ------------------------------------------------------------ revno: 0.3.831 committer: marko timestamp: Mon 2007-10-22 08:34:12 +0000 message: branches/zip: When seeking to a different B-tree page, update the cached value of the block that the cursor points to. row_ins_check_foreign_constraint(): Call btr_pcur_get_block() after row_ins_foreign_check_on_constraint(), as it may reposition the cursor on a different page. row_ins_scan_sec_index_for_duplicate(): Call btr_pcur_get_block() on every iteration of the loop. Use do ... while instead of for (;;). ------------------------------------------------------------ revno: 0.3.830 committer: marko timestamp: Mon 2007-10-22 08:16:35 +0000 message: branches/zip: Minor cleanup of B-tree cursor operations. btr_pcur_get_rel_pos(): Add a const qualifier. btr_pcur_get_btr_cur(), btr_pcur_get_page_cur(): btr_cur_get_page_cur(): Define as const-preserving macros. btr_pcur_is_on_user_rec(), btr_pcur_is_after_last_on_page(), btr_pcur_is_before_first_on_page(): Remove the unused parameter mtr. Add a const qualifier. btr_pcur_move_to_next_on_page(), btr_pcur_move_to_prev_on_page(): Remove the unused parameter mtr. page_cur_search(): Add const qualifiers. page_cur_get_page(), page_cur_is_before_first(), page_cur_is_after_last(): Add debug assertions. ------------------------------------------------------------ revno: 0.3.829 committer: marko timestamp: Mon 2007-10-22 08:10:13 +0000 message: branches/zip: trx_set_dict_operation(): Allow a transition from TRX_DICT_OP_TABLE to TRX_DICT_OP_TABLE. ------------------------------------------------------------ revno: 0.3.828 committer: marko timestamp: Mon 2007-10-22 07:49:54 +0000 message: branches/zip: lock_sec_rec_read_check_and_lock(): Correct a typo in comment. ------------------------------------------------------------ revno: 0.3.827 committer: marko timestamp: Mon 2007-10-22 07:02:02 +0000 message: branches/zip: trx_create(): Set trx->dict_operation directly, because the assertion in trx_set_dict_operation() would read uninitialized data. This mistake was made in r1998. ------------------------------------------------------------ revno: 0.3.826 committer: marko timestamp: Fri 2007-10-19 13:38:49 +0000 message: branches/zip: dict_truncate_index_tree(): When the index is not found in the data dictionary cache, do not create the index tree. ------------------------------------------------------------ revno: 0.3.825 committer: marko timestamp: Fri 2007-10-19 10:52:25 +0000 message: branches/zip: Introduce two new dictionary operation modes for transactions. enum trx_dict_op: dictionary operation modes trx_get_dict_operation(), trx_set_dict_operation(): Accessors for trx->dict_operation. lock_table_enqueue_waiting(), lock_rec_enqueue_waiting(): Do not complain about lock waits if the dictionary mode is TRX_DICT_OP_INDEX_MAY_WAIT. row_merge_lock_table(): Remove the work-around for avoiding the warning in lock_table_enqueue_waiting(). trx_undo_mark_as_dict_operation(): Do not write trx->table_id to the undo log unless the dict_operation is TRX_DICT_OP_TABLE. ha_innobase::add_index(): Set the dict_operation mode initially to TRX_DICT_OP_INDEX_MAY_WAIT, then lock the table exclusively, and set the mode to TRX_DICT_OP_INDEX, and optionally to TRX_DICT_OP_TABLE when creating a temporary table. ------------------------------------------------------------ revno: 0.3.824 committer: marko timestamp: Fri 2007-10-19 10:30:34 +0000 message: branches/zip: srv_suspend_mysql_thread(): Allow the transaction to hold an X-latch to the data dictionary, to avoid an assertion failure when a lock wait occurs in row_merge_lock_table(). ------------------------------------------------------------ revno: 0.3.823 committer: marko timestamp: Thu 2007-10-18 12:46:14 +0000 message: branches/zip: ha_innobase::add_index(): Lock the table before creating any indexes. Before this fix, other transactions could see the empty indexes before we acquired the table lock. ------------------------------------------------------------ revno: 0.3.822 committer: marko timestamp: Thu 2007-10-18 09:18:18 +0000 message: branches/zip: row_merge_lock_table(): Clear the trx->dict_operation flag for the duration of the lock_table() call in order to avoid a bogus warning. ------------------------------------------------------------ revno: 0.3.821 committer: marko timestamp: Thu 2007-10-18 07:12:05 +0000 message: branches/zip: Remove const warnings reported by GCC 4.2.1. page_cur_set_before_first(), page_cur_set_after_last(), page_cur_position(): Add const qualifiers to buf_block_t and rec. A better solution would be to define a const_page_cur_t and a set of accessors, but it would lead to severe code duplication. page_rec_get_n_recs_before(): Add const qualifiers. page_dir_get_nth_slot(): Define as a const-preserving macro. page_dir_slot_get_rec(), page_dir_slot_get_n_owned(), page_dir_find_owner_slot(), page_check_dir(): Add const qualifiers. page_rec_get_next_low(): Add const qualifiers. page_rec_get_next_const(), page_rec_get_prev_const(): New functions, based on the const-less page_rec_get_next() and page_rec_get_prev(). page_cur_get_page(), page_cur_get_block(), page_cur_get_page_zip(), page_cur_get_rec(): Define as const-preserving macros. page_cur_try_search_shortcut(), page_cur_search_with_match(): Add const qualifiers. buf_page_get_mutex(): Add a const qualifier to buf_page_t*. rec_get_next_ptr_const(): Const variant of rec_get_next_ptr(). ------------------------------------------------------------ revno: 0.3.820 committer: marko timestamp: Thu 2007-10-18 06:58:39 +0000 message: innodb-test: Allow Innodb_buffer_pool_pages_total to be 511 or 512. The size of the buffer pool can be one page smaller than the requested size when os_mem_alloc_large() returns something that is not aligned by UNIV_PAGE_SIZE. This test may still fail on systems with a big os_large_page_size. ------------------------------------------------------------ revno: 0.3.819 committer: vasil timestamp: Wed 2007-10-17 12:30:22 +0000 message: branches/zip: Fix typo in comment. ------------------------------------------------------------ revno: 0.3.818 committer: marko timestamp: Wed 2007-10-17 12:19:35 +0000 message: branches/zip: row_scan_and_check_index(): Remove the compiler warning that tmp_heap is possibly uninitialized. This was introduced in r1990. ------------------------------------------------------------ revno: 0.3.817 committer: marko timestamp: Wed 2007-10-17 12:13:29 +0000 message: branches/zip: Initialize dfield_t::ext as soon as possible. This should fix the bugs introduced in r1591. row_rec_to_index_entry_low(): Clear "n_ext". Do not allow it to be NULL. Add const qualifier to dict_index_t*. row_rec_to_index_entry(): Add the parameters "offsets" and "n_ext". btr_cur_optimistic_update(): Add an assertion that there are no externally stored columns. Remove the unreachable call to btr_cur_unmark_extern_fields() and the preceding unnecessary call to rec_get_offsets(). btr_push_update_extern_fields(): Remove the parameters index, offsets. Only report the additional externally stored columns of the update vector. row_build(), trx_undo_rec_get_partial_row(): Flag externally stored columns also with dfield_set_ext(). rec_copy_prefix_to_dtuple(): Assert that there are no externally stored columns in the prefix. row_build_row_ref(): Note and assert that the index is a secondary index, and assert that there are no externally stored columns. row_build_row_ref_fast(): Assert that there are no externally stored columns. rec_offs_get_n_alloc(): Expose the function. row_build_row_ref_in_tuple(): Assert that there are no externally stored columns in a record of a secondary index. row_build_row_ref_from_row(): Assert that there are no externally stored columns. row_upd_check_references_constraints(): Add the parameter offsets, to avoid a redundant call to rec_get_offsets(). row_upd_del_mark_clust_rec(): Add the parameter offsets. Remove duplicated code. row_ins_index_entry_set_vals(): Copy the external storage flag. sel_pop_prefetched_row(): Assert that there are no externally stored columns. row_scan_and_check_index(): Copy offsets to a temporary heap across the invocation of row_rec_to_index_entry(). ------------------------------------------------------------ revno: 0.3.816 committer: marko timestamp: Tue 2007-10-16 07:25:58 +0000 message: branches/zip: btr_push_update_extern_fields(): Add parameter "index" and use it for flagging externally stored columns in the data tuple. The data tuple contains the same columns as the clustered index record, but in a different order. This error was introduced in r1591. TODO: the assertion ut_ad(!dfield_is_ext()) may fail in btr_cur_pessimistic_update(). ------------------------------------------------------------ revno: 0.3.815 committer: marko timestamp: Tue 2007-10-16 06:05:09 +0000 message: branches/zip: btr_cur_mark_dtuple_inherited_extern(): Fix the loop condition that was broken in r1591. Spotted by Heikki and Vasil. ------------------------------------------------------------ revno: 0.3.814 committer: marko timestamp: Mon 2007-10-15 11:30:38 +0000 message: branches/zip: plug.in: Remove the check for aio.h and -lrt, which were never used. Combine the three AC_CHECK_FUNCS tests. ------------------------------------------------------------ revno: 0.3.813 committer: marko timestamp: Mon 2007-10-15 11:26:58 +0000 message: branches/zip: buf_chunk_init(): Note that the function does not always return the requested amount of memory. ------------------------------------------------------------ revno: 0.3.812 committer: marko timestamp: Mon 2007-10-15 11:05:40 +0000 message: branches/zip: Allow a dynamically loaded InnoDB storage engine plugin to replace a built-in instance of InnoDB in mysqld. This is work in progress, with several limitations: * Other plugins defined in the builtin InnoDB are not disabled. However, InnoDB in MySQL 5.1 only defines the storage engine plugin, no INFORMATION_SCHEMA plugins. * The global C symbols in ha_innodb.so except innodb_hton_ptr and builtin_innobase_plugin will have to be redefined, e.g., by objcopy. * The storage engine cannot be called "InnoDB" to avoid a conflict with the builtin name. Here we call it InnoDBzip. innobase_hton_name[]: Rename to "InnoDBzip" when building a dynamic plugin. innodb_plugin_init(): New function for the dynamic plugin, to copy and redirect configuration parameters from the builtin InnoDB. innodb_dynamic: New configuration parameter. This has to be added to the builtin InnoDB in MySQL 5.1. Also, innodb_hton_ptr must be made global there. innobase_init(): Interpret the parameter innodb_dynamic. Makefile.am: Redefine class ha_innobase to ha_innodb by a preprocessor define. Apparently, C++ classes cannot be easily renamed by objcopy. ------------------------------------------------------------ revno: 0.3.811 committer: marko timestamp: Mon 2007-10-15 08:42:35 +0000 message: branches/zip: innodb-index.test: Add FORCE INDEX directives and remove those SELECTs whose ORDER BY cannot possibly make use of an index. ------------------------------------------------------------ revno: 0.3.810 committer: marko timestamp: Fri 2007-10-12 13:25:12 +0000 message: branches/zip: On compressed pages, always update the insert buffer bitmap. Do not assume anything about the contents of the bitmap. ibuf_update_free_bits_low(): Use this function only for uncompressed pages. Remove the parameter zip_size. This function avoids latching the bitmap page and updating the bitmap when the bits do not change. ibuf_update_free_bits_zip(): New function based on ibuf_update_free_bits_low(), for use on compressed pages. Remove the parameter max_insert_size that was used for computing the before image of the free bits. Always update the bitmap. ibuf_index_page_calc_free_zip(): New function, factored out from ibuf_index_page_calc_free(). ibuf_update_free_bits_if_full(): Document that this function must only be invoked on uncompressed pages. Add a debug assertion about this. ------------------------------------------------------------ revno: 0.3.809 committer: vasil timestamp: Fri 2007-10-12 11:20:13 +0000 message: branches/zip: Add the proper macros for checking the correct latching order in trx information_schema code. Approved by: Marko ------------------------------------------------------------ revno: 0.3.808 committer: marko timestamp: Fri 2007-10-12 11:16:20 +0000 message: branches/zip: page_zip_max_ins_size(): Correct the comment of the return value. ------------------------------------------------------------ revno: 0.3.807 committer: marko timestamp: Fri 2007-10-12 10:48:35 +0000 message: branches/zip: ibuf_insert_low(): Add the parameter entry_size in order to avoid repeated invocation of the costly function rec_get_converted_size(). ------------------------------------------------------------ revno: 0.3.806 committer: marko timestamp: Fri 2007-10-12 10:45:41 +0000 message: branches/zip: ibuf_index_page_calc_free(): Add const qualifiers. ------------------------------------------------------------ revno: 0.3.805 committer: vasil timestamp: Fri 2007-10-12 10:20:01 +0000 message: branches/zip: Fix off-by-one error in ut_raw_to_hex(). ------------------------------------------------------------ revno: 0.3.804 committer: marko timestamp: Fri 2007-10-12 08:38:49 +0000 message: branches/zip: Improve diagnostic output in ibuf_insert_to_index_page() and add some debug assertions. ------------------------------------------------------------ revno: 0.3.803 committer: marko timestamp: Fri 2007-10-12 08:37:27 +0000 message: branches/zip: ut_raw_to_hex(): Fix a compiler warning that was introduced in r1960. ------------------------------------------------------------ revno: 0.3.802 committer: vasil timestamp: Fri 2007-10-12 07:58:28 +0000 message: branches/zip: Non-functional change: add a missed space in the output message. ------------------------------------------------------------ revno: 0.3.801 committer: vasil timestamp: Thu 2007-10-11 11:54:51 +0000 message: branches/zip: Non-functional change: fix compiler warning: buf0buf.ic:637: warning: assignment discards qualifiers from pointer target type ------------------------------------------------------------ revno: 0.3.800 committer: vasil timestamp: Thu 2007-10-11 10:45:57 +0000 message: branches/zip: Non-functional change to improve readability. ------------------------------------------------------------ revno: 0.3.799 committer: vasil timestamp: Wed 2007-10-10 16:35:05 +0000 message: branches/zip: Add ut_raw_to_hex() function to convert a raw binary strings to hex. This is a monstrous, fine-tuned implementation. Approved by: Marko ------------------------------------------------------------ revno: 0.3.798 committer: marko timestamp: Wed 2007-10-10 11:39:26 +0000 message: branches/zip: row_ins_foreign_report_add_err(): Note that the dtuple_print() call may display uninitialized values of DB_TRX_ID and DB_ROLL_PTR. ------------------------------------------------------------ revno: 0.3.797 committer: marko timestamp: Mon 2007-10-08 12:16:32 +0000 message: branches/zip: innodb-index.result: Adapt the results to a patch from MySQL. Unfortunately, the patch seems to prevent MySQL from utilizing secondary indexes in the ORDER BY clauses. Thus, the test no longer checks if newly created indexes are well-formed. ChangeSet@1.2528.98.1 2007-08-02 12:45:56-07:00 igor@mysql.com Fixed bug#28404. This patch adds cost estimation for the queries with ORDER BY / GROUP BY and LIMIT. If there was a ref/range access to the table whose rows were required to be ordered in the result set the optimizer always employed this access though a scan by a different index that was compatible with the required order could be cheaper to produce the first L rows of the result set. Now for such queries the optimizer makes a choice between the cheapest ref/range accesses not compatible with the given order and index scans compatible with it. ------------------------------------------------------------ revno: 0.3.796 committer: vasil timestamp: Mon 2007-10-08 10:46:26 +0000 message: branches/zip: Add diagnostic function ha_storage_get_size() to retrieve the amount of memory used by a ha_storage_t object. Approved by: Marko ------------------------------------------------------------ revno: 0.3.795 committer: marko timestamp: Fri 2007-10-05 11:33:19 +0000 message: branches/zip: page_mem_alloc_free(): Fix the debug assertion that was accidentally broken in r1939. It failed when next_rec == NULL. ------------------------------------------------------------ revno: 0.3.794 committer: marko timestamp: Fri 2007-10-05 11:22:23 +0000 message: branches/zip: Correct the Valgrind instrumentation that was added in r1947. ------------------------------------------------------------ revno: 0.3.793 committer: marko timestamp: Fri 2007-10-05 10:59:34 +0000 message: branches/zip: i_s.cc: Add missing #include "buf0buf.h" that should have been added in r1943. This is needed for building a noninlined version. ------------------------------------------------------------ revno: 0.3.792 committer: marko timestamp: Fri 2007-10-05 09:58:24 +0000 message: branches/zip: dtuple_convert_big_rec(): Do not flag the extern field references uninitialized, because it causes bogus warnings since r1947. ------------------------------------------------------------ revno: 0.3.791 committer: marko timestamp: Fri 2007-10-05 08:53:28 +0000 message: branches/zip: Add some Valgrind instrumentation. dtuple_validate(): Detect uninitialized data. page_cur_insert_rec_low(), page_cur_insert_rec_zip(): Assert that the record being inserted is valid before and after insertion. ------------------------------------------------------------ revno: 0.3.790 committer: marko timestamp: Fri 2007-10-05 08:39:35 +0000 message: branches/zip: innodb.test: Fix the result, now that fast index creation reports duplicate key values. The reported value may depend on the size of the main-memory merge sort buffer (row_merge_block_t). ------------------------------------------------------------ revno: 0.3.789 committer: marko timestamp: Fri 2007-10-05 06:23:37 +0000 message: branches/zip: Use static linkage for row_ins(). ------------------------------------------------------------ revno: 0.3.788 committer: marko timestamp: Thu 2007-10-04 08:33:25 +0000 message: branches/zip: Add DBUG_ASSERT(hton == innodb_hton_ptr) to various functions. ------------------------------------------------------------ revno: 0.3.787 committer: marko timestamp: Wed 2007-10-03 14:00:54 +0000 message: branches/zip: Move the implementation of the INFORMATION_SCHEMA tables INNODB_ZIP and INNODB_ZIP_RESET from ha_innodb.cc to i_s.cc. plugin_author, END_OF_ST_FIELD_INFO, i_s_info: New common constants. trx_i_s_common_deinit(): Renamed to i_s_common_deinit(). ------------------------------------------------------------ revno: 0.3.786 committer: marko timestamp: Wed 2007-10-03 13:48:17 +0000 message: branches/zip: Initialize also the newly added field open_method in ST_FIELD_INFO. ------------------------------------------------------------ revno: 0.3.785 committer: marko timestamp: Wed 2007-10-03 12:36:59 +0000 message: branches/zip: Silence some more GCC 4.2.1 warnings. ------------------------------------------------------------ revno: 0.3.784 committer: marko timestamp: Wed 2007-10-03 12:27:06 +0000 message: branches/zip: page_rec_get_next_low(): Fix a bug that was made in r952. ------------------------------------------------------------ revno: 0.3.783 committer: marko timestamp: Wed 2007-10-03 12:22:29 +0000 message: branches/zip: Silence most GCC 4.2.1 warnings about const pointers. For some reason, GCC 4.2.1 ignores casts (for removing constness) in calls to inline functions. page_align(), ut_align_down(): Make the parameter const void*, but still return a non-const pointer. This is ugly, but these functions cannot be replaced with a const-preserving macro in a portable way, given that the pointer argument is not always pointing to bytes. buf_block_get_page_zip(): Implement as a const-preserving macro. buf_frame_get_page_zip(), buf_block_align(): Add const qualifiers. lock_rec_get_prev(): Silence GCC 4.2.1 warnings. mlog_write_initial_log_record(), mlog_write_initial_log_record_fast(), mtr_memo_contains(): Add const qualifier to the pointer. page_header_get_ptr(): Rewrite as page_header_get_offs(), and implement as a macro that calls this function. ------------------------------------------------------------ revno: 0.3.782 committer: marko timestamp: Wed 2007-10-03 08:44:50 +0000 message: branches/zip: Merge 1918:1937 from trunk. ------------------------------------------------------------ revno: 0.3.781 committer: marko timestamp: Mon 2007-10-01 08:00:24 +0000 message: branches/zip: dict_index_copy_rec_order_prefix(): Add const qualifiers. ------------------------------------------------------------ revno: 0.3.780 committer: marko timestamp: Mon 2007-10-01 07:45:02 +0000 message: branches/zip: btr_search_validate(): Use buf_block_hash_get(). ------------------------------------------------------------ revno: 0.3.779 committer: marko timestamp: Mon 2007-10-01 07:32:45 +0000 message: branches/zip: Optimize buf_page_try_get_func(). buf_block_hash_get(): New function, similar to buf_page_hash_get(). buf_page_get_block(): Remove the const qualifiers. This is a low-level function, and the operations on block->mutex are non-const. buf_page_try_get_func(): Implement with lower-level predicates, somewhat similar to buf_page_get_known_nowait(). lock_rec_print(): Remove the unused variable zip_size and the call to fil_space_get_zip_size(). Adapt to buf_page_try_get() returning a const pointer. ------------------------------------------------------------ revno: 0.3.778 committer: marko timestamp: Mon 2007-10-01 07:25:02 +0000 message: branches/zip: Introduce the function buf_block_fix_dec(), similar to buf_block_fix_inc(), and use it. ------------------------------------------------------------ revno: 0.3.777 committer: vasil timestamp: Fri 2007-09-28 14:07:02 +0000 message: branches/zip: Remove bogus comment from ha_storage_empty(). ------------------------------------------------------------ revno: 0.3.776 committer: vasil timestamp: Fri 2007-09-28 13:40:12 +0000 message: branches/zip: Add const qualifier to the value returned by ha_storage_put(). It must not be changed as this will invalidate the hash. ------------------------------------------------------------ revno: 0.3.775 committer: marko timestamp: Fri 2007-09-28 12:04:04 +0000 message: branches/zip: Add the function buf_page_get_block(), for converting from buf_page_t* to buf_block_t*. buf_page_can_relocate(): Replace the incorrect __attribute__((const)) with __attribute__((pure)). ------------------------------------------------------------ revno: 0.3.774 committer: marko timestamp: Fri 2007-09-28 10:44:20 +0000 message: branches/zip: Fix some link errors. ha_innobase::update_thd(void): New function, to call the inline function ha_innobase::update_thd(THD*). check_trx_exists(): Make static. handler0alter.cc does not need to call this function. ------------------------------------------------------------ revno: 0.3.773 committer: marko timestamp: Fri 2007-09-28 07:05:57 +0000 message: branches/zip: Define the macro rec_offs_init() and use it for initializing offsets_[] arrays, as suggested by Vasil. rec_offs_set_n_alloc(): Declare as a public function. Assert that n_alloc > REC_OFFS_HEADER_SIZE. rec_offs_get_n_alloc(): Assert that n_alloc > REC_OFFS_HEADER_SIZE. ------------------------------------------------------------ revno: 0.3.772 committer: marko timestamp: Fri 2007-09-28 06:55:26 +0000 message: branches/zip: sync_thread_add_level(): Reduce code duplication in the sync_thread_levels_g() check, so that it will be easier to add new sync levels. ------------------------------------------------------------ revno: 0.3.771 committer: marko timestamp: Fri 2007-09-28 06:26:21 +0000 message: branches/zip: Define buf_block_get_frame() as a const-preserving macro. ------------------------------------------------------------ revno: 0.3.770 committer: marko timestamp: Fri 2007-09-28 06:16:20 +0000 message: branches/zip: Merge 1894:1918 from trunk. ------------------------------------------------------------ revno: 0.3.769 committer: vasil timestamp: Fri 2007-09-28 04:58:16 +0000 message: branches/zip: Fix compilation warning: can_cache_be_updated(): Remove const qualifier because this function needs to call rw_lock_own(). ------------------------------------------------------------ revno: 0.3.768 committer: marko timestamp: Thu 2007-09-27 18:16:39 +0000 message: branches/zip: innobase_col_to_mysql(): Replace the undefined variable "templ" with "col" in two debug assertions. This mistake was made in r1910. ------------------------------------------------------------ revno: 0.3.767 committer: vasil timestamp: Thu 2007-09-27 15:15:51 +0000 message: branches/zip: Fix a warning produced when UNIV_DEBUG is defined. ------------------------------------------------------------ revno: 0.3.766 committer: vasil timestamp: Thu 2007-09-27 14:35:18 +0000 message: branches/zip: Move part of the code from lock_rec_print() in a separate function buf_page_try_get() because the same functionality is needed in INFORMATION SCHEMA code. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.765 committer: vasil timestamp: Thu 2007-09-27 13:54:21 +0000 message: branches/zip: Add auxiliary function lock_rec_get_index() to retrieve the index on which the lock is. Approved by: Heikki ------------------------------------------------------------ revno: 0.3.764 committer: vasil timestamp: Thu 2007-09-27 13:52:47 +0000 message: branches/zip: Fix a bug where the condition (prtype & DATA_ROW_ID) is unexpectedly always false becasue DATA_ROW_ID is 0. Use a switch instead of if-else in order to avoid repeating (prtype & DATA_SYS_PRTYPE_MASK). Approved by: Heikki ------------------------------------------------------------ revno: 0.3.763 committer: marko timestamp: Thu 2007-09-27 11:17:45 +0000 message: branches/zip: Merge 1862:1894 from trunk, except 1866. ------------------------------------------------------------ revno: 0.3.762 committer: marko timestamp: Thu 2007-09-27 11:03:36 +0000 message: branches/zip: Correctly convert InnoDB records to MySQL table->record[0]. innobase_col_to_mysql(): New function, adapted from row_sel_field_store_in_mysql_format(). innobase_rec_to_mysql(): Correct the function comment, which was still saying "clustered index record", although we can convert any record. Make use of innobase_col_to_mysql(). Always call field->reset(), so that innobase_col_to_mysql() will not have to pad anything. ------------------------------------------------------------ revno: 0.3.761 committer: marko timestamp: Thu 2007-09-27 10:59:54 +0000 message: branches/zip: row_mysql_store_blob_ref(): Change the type of the parameter "data" from byte* to const void*. ------------------------------------------------------------ revno: 0.3.760 committer: marko timestamp: Thu 2007-09-27 09:05:05 +0000 message: branches/zip: row_sel_field_store_in_mysql_format(): Replace if-else with switch. ------------------------------------------------------------ revno: 0.3.759 committer: marko timestamp: Thu 2007-09-27 08:56:33 +0000 message: branches/zip: Remove the unused variable row_mysql_identically_false. ------------------------------------------------------------ revno: 0.3.758 committer: marko timestamp: Thu 2007-09-27 08:28:25 +0000 message: branches/zip: Simplify the reporting of duplicate key values. Since r1905, innobase_rec_to_mysql() does not require a clustered index record. row_merge_dup_t: Remove old_table. row_merge_dup_report(): Do not fetch the clustered index record. Simply convert the tuple by innobase_rec_to_mysql(). row_merge_blocks(), row_merge(), row_merge_sort(): Add a TABLE* parameter for reporting duplicate key values during file sort. row_merge_read_clustered_index(): Replace UNIV_PAGE_SIZE with the more appropriate sizeof(mrec_buf_t). ------------------------------------------------------------ revno: 0.3.757 committer: marko timestamp: Thu 2007-09-27 08:19:38 +0000 message: branches/zip: innobase_rec_to_mysql(): Allow "index" to be any index, clustered or secondary. Remove the rec_offs_validate() assertion, because the function may be passed a mrec_t* that would fail the check. ------------------------------------------------------------ revno: 0.3.756 committer: marko timestamp: Thu 2007-09-27 06:13:33 +0000 message: branches/zip: Double the size of mrec_buf_t to UNIV_PAGE_SIZE. This should have been done in r1903, where the minimum size of row_merge_block_t was noted to be UNIV_PAGE_SIZE. ------------------------------------------------------------ revno: 0.3.755 committer: marko timestamp: Wed 2007-09-26 13:52:08 +0000 message: branches/zip: Document the minimum size of row_merge_block_t as UNIV_PAGE_SIZE. row_merge_buf_add(): Add ut_ad(data_size < sizeof(row_merge_block_t)) and document why it may fail if sizeof row_merge_block_t < UNIV_PAGE_SIZE. ------------------------------------------------------------ revno: 0.3.754 committer: marko timestamp: Wed 2007-09-26 13:47:32 +0000 message: branches/zip: row_merge_build_indexes(): Call innobase_rec_reset() only once. row_merge_dup_report(): Do not call innobase_rec_reset(). ------------------------------------------------------------ revno: 0.3.753 committer: marko timestamp: Wed 2007-09-26 12:07:07 +0000 message: branches/zip: Clean up some non-inlined functions. dtuple_create_for_mysql(), dtuple_free_for_mysql(): Remove. ha_innobase::records_in_range(): Use mem_heap_create(), mem_heap_free(), and dtuple_create() instead of the removed functions above. Since r1587, InnoDB C++ functions can invoke inlined C functions. ------------------------------------------------------------ revno: 0.3.752 committer: marko timestamp: Wed 2007-09-26 11:56:26 +0000 message: branches/zip: Implement the reporting of duplicate key values to MySQL. innobase_rec_to_mysql(): New function, for converting an InnoDB clustered index record to MySQL table->record[0]. TODO: convert integer fields. Currently, integer fields are in big-endian byte order instead of host byte order, and signed integer fields are offset by 0x80000000. innobase_rec_reset(): New function, for resetting table->record[0]. row_merge_build_indexes(): Add the parameter TABLE* table (the MySQL table handle) for reporting duplicate key values. dtuple_from_fields(): New function, to convert an array of dfield_t* to dtuple_t. dtuple_get_n_ext(): New function, to compute the number of externally stored fields. row_merge_dup_t: Structure for counting and reporting duplicate records. row_merge_dup_report(): Function for counting and reporting duplicate records. row_merge_tuple_cmp(), row_merge_tuple_sort(): Replace the ulint* n_dup parameter with row_merge_dup_t* dup. row_merge_buf_sort(): Add the parameter row_merge_dup_t* dup, which is NULL when sorting a non-unique index. row_merge_buf_write(), row_merge_heap_create(), row_merge_read_rec(), row_merge_cmp(), row_merge_read_clustered_index(), row_merge_blocks(), row_merge(), row_merge_sort(): Add const qualifiers. row_merge_read_clustered_index(): Use a common error handling branch err_exit. Invoke row_merge_buf_sort() differently on unique indexes. row_merge_blocks(): note TODO: We could invoke innobase_rec_to_mysql() to report duplicate key values when creating a clustered index. ------------------------------------------------------------ revno: 0.3.751 committer: marko timestamp: Wed 2007-09-26 09:59:17 +0000 message: branches/zip: Minor cleanup. dict_find_index_by_max_id(): Rename this static function to its only caller, dict_table_get_index_by_max_id(). dict_table_get_index_by_max_id(): Copy the function comment from dict_find_index_by_max_id(). ------------------------------------------------------------ revno: 0.3.750 committer: marko timestamp: Wed 2007-09-26 09:12:23 +0000 message: branches/zip: Add some const qualifiers to input parameters. rec_get_converted_size_comp(), rec_convert_dtuple_to_rec_comp(), rec_convert_dtuple_to_rec_new(), rec_convert_dtuple_to_rec(): Add a const qualifier to dict_index_t*. row_search_on_row_ref(): Add const qualifiers to the dict_table_t* and dtuple_t* parameters. Note that pcur is an "out" parameter and mtr is "in/out". ------------------------------------------------------------ revno: 0.3.749 committer: marko timestamp: Wed 2007-09-26 07:45:08 +0000 message: branches/zip: Minor cleanup. row_build_row_ref_fast(): Note that "ref" is an in/out parameter. row_build_row_ref_from_row(): Add const qualifiers to all "in" parameters. ------------------------------------------------------------ revno: 0.3.748 committer: marko timestamp: Wed 2007-09-26 06:37:17 +0000 message: branches/zip: Minor cleanup. dtuple_create(): Simplify a pointer expression. Flag the fields uninitialized after initializing them in the debug version. dtuple_t: Only declare magic_n if UNIV_DEBUG is defined. The field is not assigned to nor tested unless UNIV_DEBUG is defined. ------------------------------------------------------------ revno: 0.3.747 committer: marko timestamp: Tue 2007-09-25 07:20:56 +0000 message: branches/zip: row_build_row_ref_in_tuple(): Add the parameter "offsets", to avoid a rec_get_offsets() call. Add some const qualifiers. row_sel_get_clust_rec_for_mysql(): Note that "offsets" will also be an input parameter. ------------------------------------------------------------ revno: 0.3.746 committer: marko timestamp: Mon 2007-09-24 13:29:18 +0000 message: branches/zip: Add some const qualifiers or in/out comments to the dict_index_t* and dict_table_t* parameters of some functions. ------------------------------------------------------------ revno: 0.3.745 committer: vasil timestamp: Mon 2007-09-24 12:25:06 +0000 message: branches/zip: Copy any data (currently table name and table index) that may be destroyed after releasing the kernel mutex into internal cache's storage. This is done in efficient manner using ha_storage type and a given string is copied only once into the cache's storage. Later additions of the same string use the already stored string, thus allocating memory only once per unique string. Approved by: Marko ------------------------------------------------------------ revno: 0.3.744 committer: vasil timestamp: Mon 2007-09-24 12:21:29 +0000 message: branches/zip: Add a type that stores chunks of data in its own storage and avoids duplicates. Supported methods: ha_storage_create() Allocates new storage object. ha_storage_put() Copies a given data chunk into the storage and returns pointer to the copy. If the data chunk is already present, a pointer to the existing object is returned and the given data chunk is not copied. ha_storage_empty() Clears (empties) the storage from all data chunks that are stored in it. ha_storage_free() Destroys a storage object. Opposite to ha_storage_create(). Approved by: Marko ------------------------------------------------------------ revno: 0.3.743 committer: marko timestamp: Mon 2007-09-24 11:58:07 +0000 message: branches/zip: Add const qualifiers to the dict_index_t* parameters of rec_get_n_fields(), rec_offs_validate(), and rec_offs_make_valid(). ------------------------------------------------------------ revno: 0.3.742 committer: marko timestamp: Mon 2007-09-24 08:52:15 +0000 message: branches/zip: Restore the size of row_merge_block_t to 1048576 bytes. This was inadvertently reduced to 16384 bytes in r1861. For testing, this can be set as low as UNIV_PAGE_SIZE. ------------------------------------------------------------ revno: 0.3.741 committer: marko timestamp: Mon 2007-09-24 08:46:13 +0000 message: branches/zip: Correct the bug mentioned in r1872. row_merge(): Add the assertion ut_ad(half > 0). row_merge_sort(): Compute the half of the merge file correctly. The previous implementation used truncating division, which may result in loss of records when the file size in blocks is not a power of 2. ------------------------------------------------------------ revno: 0.3.740 committer: vasil timestamp: Sat 2007-09-22 09:18:59 +0000 message: branches/zip: Non-functional: put the code that clears the IS cache into a separate function. ------------------------------------------------------------ revno: 0.3.739 committer: vasil timestamp: Sat 2007-09-22 09:03:29 +0000 message: branches/zip: Cosmetic: initialize the members of the cache in the same order as they are defined in the structure. ------------------------------------------------------------ revno: 0.3.738 committer: vasil timestamp: Sat 2007-09-22 08:36:59 +0000 message: branches/zip: Make comment more clear (hopefully). ------------------------------------------------------------ revno: 0.3.737 committer: vasil timestamp: Sat 2007-09-22 08:34:26 +0000 message: branches/zip: Use the newly introduced mem_alloc2() to use the memory that has been allocated in addition to the requested memory. This is done in order to avoid wasting memory. Do not calculate the sizes and offsets of the chunks in advance in table_cache_init() because it is unknown how much bytes will actually be allocated by mem_alloc2(). Rather calculate these on the run: after each chunk is allocated set its size and the offset of the next chunk. Similar patch approved by: Marko ------------------------------------------------------------ revno: 0.3.736 committer: marko timestamp: Fri 2007-09-21 14:33:49 +0000 message: branches/zip: row_merge_read_clustered_index(): After writing out the merge buffer, write the next record to the beginning of the emptied buffer. This fixes one of the bugs mentioned in r1872. ------------------------------------------------------------ revno: 0.3.735 committer: marko timestamp: Fri 2007-09-21 13:05:51 +0000 message: branches/zip: Fix a bug in the merge sort in fast index creation. Some bug still remains, because innodb-index.test will lose some records from the clustered index after add primary key (a,b(255),c(255)) when row_merge_block_t is reduced to 8192 bytes. row_merge(): Add the parameter "half". Add some Valgrind instrumentation. Note that either stream can end before the other one. row_merge_sort(): Calculate "half" for row_merge(). ------------------------------------------------------------ revno: 0.3.734 committer: marko timestamp: Fri 2007-09-21 12:45:46 +0000 message: branches/zip: Reduce internal memory fragmentation. mem_alloc2(): New macro. This is a variant of mem_alloc() that returns the allocated size, which is equal to or greater than the requested size. mem_alloc_func(): Add the output parameter *size for the allocated size. When it is set, adjust the parameter passed to mem_heap_alloc(). rec_copy_prefix_to_buf_old(), rec_copy_prefix_to_buf(): Use mem_alloc2() instead of mem_alloc(). ------------------------------------------------------------ revno: 0.3.733 committer: marko timestamp: Fri 2007-09-21 11:44:57 +0000 message: branches/zip: Add more details to the debug printout enabled by row_merge_print_read and row_merge_print_write. ------------------------------------------------------------ revno: 0.3.732 committer: marko timestamp: Fri 2007-09-21 10:22:58 +0000 message: branches/zip: When creating a memory heap, set the block size to what was actually obtained from the buddy allocator. This should avoid some internal memory fragmentation in mem_heap_create() and mem_heap_alloc(). mem_area_alloc(): Change the in parameter size to an in/out parameter. Adjust the size based on what was obtained from pool->free_list[]. mem_heap_create_block(): Adjust block->len to what was obtained from mem_area_alloc(). ------------------------------------------------------------ revno: 0.3.731 committer: marko timestamp: Fri 2007-09-21 10:00:00 +0000 message: branches/zip: innodb-index.test: Add yet another CHECK TABLE and add the column d to two SELECT FROM t1. ------------------------------------------------------------ revno: 0.3.730 committer: marko timestamp: Fri 2007-09-21 08:07:58 +0000 message: branches/zip: Add diagnostic printout. rec_print_comp(): New function, sliced from rec_print_new(). rec_print_old(), rec_print_comp(): Print the untruncated length of the column. row_merge_print_read, row_merge_print_write, row_merge_print_cmp: New flags, to enable debug printout in UNIV_DEBUG builds. row_merge_tuple_print(): New function for UNIV_DEBUG builds. row_merge_read_rec(): Obey row_merge_print_read. row_merge_buf_write(), row_merge_write_rec_low(), row_merge_write_eof(): Obey row_merge_print_write. row_merge_cmp(): Obey row_merge_print_cmp. ------------------------------------------------------------ revno: 0.3.729 committer: marko timestamp: Thu 2007-09-20 12:20:17 +0000 message: branches/zip: Improve Valgrind instrumentation of the file-based merge sort in fast index creation. row_merge_write_eof(), row_merge_buf_write(): When UNIV_DEBUG_VALGRIND is defined, fill the rest of the block (after the end-of-block marker) with 0xff. ------------------------------------------------------------ revno: 0.3.728 committer: vasil timestamp: Thu 2007-09-20 11:23:44 +0000 message: Implement INFORMATION_SCHEMA tables innodb_trx, innodb_locks, innodb_lock_waits. See https://svn.innodb.com/innobase/InformationSchema/TransactionsAndLocks for design notes. Things that need to be resolved before this goes live: * MySQL must add thd_get_thread_id() function to their code http://bugs.mysql.com/30930 * Allocate memory from mem_heap instead of using mem_alloc() * Copy table name and index name into the cache because they may be freed later which will result in referencing freed memory Approved by: Marko ------------------------------------------------------------ revno: 0.3.727 committer: marko timestamp: Thu 2007-09-20 08:36:22 +0000 message: branches/zip: Merge 1830:1862 from trunk. ------------------------------------------------------------ revno: 0.3.726 committer: marko timestamp: Wed 2007-09-19 13:52:43 +0000 message: branches/zip: Improve Valgrind instrumentation in the merge block I/O of fast index creation. ------------------------------------------------------------ revno: 0.3.725 committer: marko timestamp: Wed 2007-09-19 11:40:51 +0000 message: branches/zip: Fix some bugs in file-based merge sort. row_merge_read_rec(): Correct a typo in a comment. Fix error in arithmetics when the record spans two blocks. row_merge_write_rec_low(): Add a "size" parameter. Add debug assertions about extra_size and size. row_merge_write_rec(): After writing a record, properly advance the buffer pointer. ------------------------------------------------------------ revno: 0.3.724 committer: marko timestamp: Wed 2007-09-19 11:31:00 +0000 message: branches/zip: cmp_rec_rec_simple(): Compare n_uniq columns instead of all columns present in offsets. Add a const qualifier to the dict_index_t* parameter. ------------------------------------------------------------ revno: 0.3.723 committer: marko timestamp: Wed 2007-09-19 09:49:58 +0000 message: branches/zip: dict_index_get_n_unique_in_tree(), dict_index_get_n_unique(): Add const qualifiers. ------------------------------------------------------------ revno: 0.3.722 committer: marko timestamp: Wed 2007-09-19 09:37:09 +0000 message: branches/zip: innodb-index.test: Add more columns and rows, to ensure that row_merge_blocks() will have some work to do when row_merge_block_t is shrunk to 8192 bytes. Currently, this will cause a debug assertion failure, because row_merge_cmp() is considering all columns, not just the unique ones. ------------------------------------------------------------ revno: 0.3.721 committer: marko timestamp: Wed 2007-09-19 09:05:16 +0000 message: branches/zip: rec_init_offsets(): Fix a bug that was introduced in r1518: Correctly handle node pointer records containing variable-length columns with two-byte length. ------------------------------------------------------------ revno: 0.3.720 committer: marko timestamp: Wed 2007-09-19 07:14:36 +0000 message: branches/zip: row_merge_buf_add(): Correct the processing of column prefixes in clustered indexes. innodb-index.test: Add test cases for creating primary keys containing column prefixes. ------------------------------------------------------------ revno: 0.3.719 committer: marko timestamp: Wed 2007-09-19 07:11:13 +0000 message: branches/zip: row_ext_lookup_ith(): New function, sliced from row_ext_lookup(). ------------------------------------------------------------ revno: 0.3.718 committer: marko timestamp: Mon 2007-09-17 10:43:51 +0000 message: branches/zip: ha_innobase::add_index(): Translate DB_TOO_BIG_RECORD via my_error(). Add a test case to innodb-index.test. ------------------------------------------------------------ revno: 0.3.717 committer: marko timestamp: Mon 2007-09-17 08:42:10 +0000 message: branches/zip: innodb-index.test: Make the column b much longer, to hit the 65,535-byte VARCHAR length limit of MySQL. ------------------------------------------------------------ revno: 0.3.716 committer: marko timestamp: Thu 2007-09-13 09:31:54 +0000 message: branches/zip: Move the code related to fast index creation (smart ALTER TABLE) from ha_innodb.cc to a separate module, handler0alter.cc. ------------------------------------------------------------ revno: 0.3.715 committer: marko timestamp: Wed 2007-09-12 19:13:18 +0000 message: branches/zip: innodb-index.test: Remove a bogus comment that should have been removed in r1808. ------------------------------------------------------------ revno: 0.3.714 committer: marko timestamp: Wed 2007-09-12 10:44:53 +0000 message: branches/zip: ha_node_t: Enclose the field buf_block_t* block inside #ifdef UNIV_DEBUG. This should have been done in r1014. ------------------------------------------------------------ revno: 0.3.713 committer: marko timestamp: Wed 2007-09-12 07:27:42 +0000 message: branches/zip: row_merge_create_temporary_table(): On error, free the data dictionary object new_table. This fixes a memory leak. ------------------------------------------------------------ revno: 0.3.712 committer: marko timestamp: Tue 2007-09-11 06:20:19 +0000 message: branches/zip: ha_innobase::add_index(): Fix a race condition that existed before the fast-index-creation code was merged, in r1414. Do not call row_prebuilt_table_obsolete(innodb_table) until after the table has been renamed to a temporary name. Otherwise, the following could happen when creating a clustered index on table T: (a1) copy T to T#1 (a2) mark T obsolete (b1) add the name of T to the background drop list (a3) rename T to T#2 and T#1 to T (b2) drop the table on the background These steps are executed by two threads, a and b. If b1 is executed after a3, all is fine: the name T#2 will be added to the background drop list. If b1 is executed before a3, the name T will be added, and T#2 will survive. ------------------------------------------------------------ revno: 0.3.711 committer: marko timestamp: Tue 2007-09-11 05:09:19 +0000 message: branches/zip: Minor cleanup. row_add_table_to_background_drop_list(): Replace the dict_table_t* parameter with const char* (the table name). row_check_table_for_mysql(): Replace prebuilt->table with table. ------------------------------------------------------------ revno: 0.3.710 committer: inaam timestamp: Tue 2007-09-11 00:41:02 +0000 message: branches/zip: Undo changes commited in r1832. These should have gone to branches/fts. Spotted by: Marko and Ken ------------------------------------------------------------ revno: 0.3.709 committer: inaam timestamp: Tue 2007-09-11 00:38:13 +0000 message: branches/zip: undo changes made in r1763. These should have gone in branches/fts Spotted by: Marko and Ken ------------------------------------------------------------ revno: 0.3.708 committer: inaam timestamp: Mon 2007-09-10 17:06:44 +0000 message: branches/zip: Enabled group commit functionality with XA. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.3.707 committer: marko timestamp: Mon 2007-09-10 10:09:01 +0000 message: branches/zip: Merge 1809:1830 from trunk. ------------------------------------------------------------ revno: 0.3.706 committer: marko timestamp: Fri 2007-09-07 12:39:36 +0000 message: branches/zip: UNIV_MEM_ASSERT_AND_FREE(): Use UNIV_MEM_ASSERT_W() instead of UNIV_MEM_ASSERT_RW(). The memory area need not be initialized. This mistake was made in r1815. ------------------------------------------------------------ revno: 0.3.705 committer: marko timestamp: Fri 2007-09-07 09:05:52 +0000 message: branches/zip: Decode table names when displaying error messages in fast index creation. innobase_convert_tablename(): New function, to remove the filename encoding of a database and table name. ha_innobase::add_index(): Invoke innobase_convert_tablename() before calling my_error(). innodb-index.result: Update the error messages. ------------------------------------------------------------ revno: 0.3.704 committer: marko timestamp: Thu 2007-09-06 12:43:29 +0000 message: branches/zip: ha_innobase::add_index(): Allocate a new transaction for the dictionary operations. TODO: ha_innobase::final_drop_index() should do the same, and set trx->dict_operation as well. ------------------------------------------------------------ revno: 0.3.703 committer: marko timestamp: Thu 2007-09-06 12:25:38 +0000 message: branches/zip: mem_init_buf(), mem_erase_buf(): Add UNIV_MEM_ASSERT_W(). ------------------------------------------------------------ revno: 0.3.702 committer: marko timestamp: Thu 2007-09-06 11:44:00 +0000 message: branches/zip: univ.i: Remove the duplicate UNIV_MEM_DEBUG that was accidentally added in r1815. ------------------------------------------------------------ revno: 0.3.701 committer: marko timestamp: Thu 2007-09-06 11:36:35 +0000 message: branches/zip: Improve Valgrind instrumentation. UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory area is defined. UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable. UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE() in many places. mem_init_buf(): Declare the memory undefined. mem_erase_buf(): Declare the memory freed. ------------------------------------------------------------ revno: 0.3.700 committer: marko timestamp: Thu 2007-09-06 07:12:12 +0000 message: branches/zip: Merge 1792:1809 from trunk. ------------------------------------------------------------ revno: 0.3.699 committer: marko timestamp: Wed 2007-09-05 11:27:41 +0000 message: branches/zip: ha_innobase:add_index(): Report HA_ERR_TABLE_EXIST when the temporary table cannot be created or renamed. innodb-index.test,result: Add test cases where a temporary table already exists. ------------------------------------------------------------ revno: 0.3.698 committer: marko timestamp: Wed 2007-09-05 10:18:03 +0000 message: branches/zip: Simplify crash recovery in fast index creation. trx_t: Remove dict_undo_list and dict_redo_list. innobase_create_temporary_tablename(): Replace TEMP_TABLE_PREFIX with a table name suffix "#1" or "#2". In this way, the user can restore precious data, should anything go wrong. It is possible to reach an inconsistent state, because the creation, deletion and renaming of single-table tablespaces are not transactional. ut_print_namel(), fil_make_ibd_name(), innobase_rename_table(): Remove the special treatment of TEMP_TABLE_PREFIX. Introduce TEMP_INDEX_PREFIX == 0xff for temporary indexes. This byte cannot occur in index names since MySQL 4.1. However, it might have been possible to use this byte in MySQL 4.0. recv_recovery_from_checkpoint_finish(): Call the new function row_merge_drop_temp_indexes(), to drop all indexes whose name starts with the byte 0xff. row_merge_rename_indexes(): Renamed from row_merge_rename_index(). Remove the parameter "index". row_drop_table_for_mysql(): Unconditionally call trx_commit_for_mysql(). row_drop_table_for_mysql_no_commit(): Correct the function commit, based on the corrected comment of row_drop_table_for_mysql(). Rely on table->to_be_dropped instead of TEMP_TABLE_PREFIX. ha_innobase::add_index(): Simplify the control flow. ------------------------------------------------------------ revno: 0.3.697 committer: marko timestamp: Wed 2007-09-05 08:57:59 +0000 message: branches/zip: lock_rec_enqueue_waiting(): When a record lock wait occurs in a dictionary operation, display also the name of the index. ------------------------------------------------------------ revno: 0.3.696 committer: vasil timestamp: Tue 2007-09-04 07:54:29 +0000 message: lock_get_type() needs to be accessed outside of the lock module, but it is inline and accesses lock_t members. As advised by Marko rename lock_get_type() to lock_get_type_low() and create a public non-inline function lock_get_type() which calls lock_get_type_low(). Approved by: Marko ------------------------------------------------------------ revno: 0.3.695 committer: vasil timestamp: Tue 2007-09-04 07:29:59 +0000 message: Use MAP_ANON if MAP_ANONYMOUS is not defined, if neither of both is defined, fall back to using malloc/free. Approved by: Marko ------------------------------------------------------------ revno: 0.3.694 committer: vasil timestamp: Mon 2007-09-03 12:16:11 +0000 message: Add functions that retrieve some lock_t characteristics, needed in INFORMATION_SCHEMA implementation: lock_get_trx_id() lock_get_mode_str() lock_get_type_str() lock_get_table_id() lock_get_table_name() lock_rec_get_index_name() lock_rec_get_space_id() lock_rec_get_page_no() Approved by: Marko ------------------------------------------------------------ revno: 0.3.693 committer: marko timestamp: Mon 2007-09-03 10:34:25 +0000 message: branches/zip: row_merge_drop_table(): Replace the row_drop_table_for_mysql() call with a call to row_drop_table_for_mysql_no_commit(). The last parameter of the function is ibool drop_db, not ibool do_commit. Also, since r1790 of trunk it is not necessary to copy table->name. ------------------------------------------------------------ revno: 0.3.692 committer: vasil timestamp: Mon 2007-09-03 09:08:25 +0000 message: branches/zip: Move lock_rec_find_set_bit() from lock0priv.h to lock0lock.h. This function is needed in the INFORMATION_SCHEMA implementation which currently resides in trx/ Approved by: Marko ------------------------------------------------------------ revno: 0.3.691 committer: marko timestamp: Mon 2007-09-03 08:44:39 +0000 message: branches/zip: Merge 1783:1792 from trunk. ------------------------------------------------------------ revno: 0.3.690 committer: marko timestamp: Mon 2007-09-03 07:13:59 +0000 message: branches/zip: Enclose the definition of dict_index_t::trx_id in #ifdef ROW_MERGE_IS_INDEX_USABLE, to avoid growing the memory footprint until MySQL implements and calls the virtual method handler::is_index_available() or something equivalent. ------------------------------------------------------------ revno: 0.3.689 committer: marko timestamp: Fri 2007-08-31 09:58:22 +0000 message: branches/zip: Introduce TEMP_INDEX_PREFIX == 0xff for indexes being populated in fast index creation. The prefix was previously TEMP_TABLE_PREFIX == '/', which may occur in index names. ut_print_namel(): Do not assume that all '/' are separators between database and table names. ------------------------------------------------------------ revno: 0.3.688 committer: marko timestamp: Thu 2007-08-30 09:21:25 +0000 message: branches/zip: Merge 1664:1783 from trunk. ------------------------------------------------------------ revno: 0.3.687 committer: marko timestamp: Thu 2007-08-30 06:43:27 +0000 message: branches/zip: Add const qualifiers to some XID* parameters. ------------------------------------------------------------ revno: 0.3.686 committer: marko timestamp: Wed 2007-08-29 09:54:11 +0000 message: branches/zip: Relax the string type check of some built-in functions of the InnoDB SQL parser. pars_is_string_type(): New function. Returns TRUE iff mtype equals DATA_VARCHAR, DATA_CHAR, DATA_FIXBINARY, or DATA_BINARY. pars_resolve_func_data_type(): Replace checks for DATA_VARCHAR with pars_is_string_type(). For example, the NAME column of SYS_INDEXES, SYS_TABLES, and SYS_COLUMNS is of DATA_BINARY type, although it contains a UTF-8 character string. This affects the functions TO_NUMBER, BINARY_TO_NUMBER, LENGTH, INSTR, and SUBSTR. ------------------------------------------------------------ revno: 0.3.685 committer: marko timestamp: Wed 2007-08-29 09:40:18 +0000 message: branches/zip: pars_func_get_class(), pars_resolve_func_data_type(): Replace if-else with switch-case. ------------------------------------------------------------ revno: 0.3.684 committer: marko timestamp: Wed 2007-08-29 08:53:29 +0000 message: branches/zip: ha_innobase::add_index(): Remove a remark about row0mysql.c in a comment about latching the data dictionary. The data dictionary may be latched elsewhere too. ------------------------------------------------------------ revno: 0.3.683 committer: marko timestamp: Wed 2007-08-29 08:45:34 +0000 message: branches/zip: Remove some checks if an index or a table is a temporary one created in fast index creation. dict_load_indexes(): Always complain if the first index is not clustered. lock_table_enqueue_waiting(): Always complain about lock waits in a dictionary operation. row_merge_rename_tables(): Add an assertion that dict_sys->mutex is being held. row_undo_mod_del_unmark_sec_and_undo_update(): Make the test about temporary indexes more readable. row_create_table_for_mysql(): Do not retry creating a temporary table in fast index creation. Orphaned temporary tables will have to be dropped in crash recovery. ------------------------------------------------------------ revno: 0.3.682 committer: marko timestamp: Wed 2007-08-29 06:36:10 +0000 message: branches/zip: Simplify the locking of the data dictionary. row_upd_index_is_referenced(), row_upd_check_references_constraints(), row_purge_parse_undo_rec(): Remove duplicated code that calls row_mysql_unfreeze_data_dictionary(). row_undo_ins_remove_clust_rec(): Assert that the data dictionary is X-latched. Do not attempt to re-latch the data dictionary, because doing so introduces race conditions. This re-latching was probably made unnecessary already in r1676, which keeps the data dictionary X-latched in ha_innobase::add_index() for the complete duration of the data dictionary operations. row_undo_ins_parse_undo_rec(): Do not attempt to acquire the data dictionary latch. The data dictionary should be already X-latched when a transaction that modifies system tables is rolled back. This also holds in the rollback during crash recovery: trx_rollback_active() will X-latch the data dictionary when needed. ------------------------------------------------------------ revno: 0.3.681 committer: marko timestamp: Wed 2007-08-29 05:48:37 +0000 message: branches/zip: hash_create(): Remove two unused variables. They should have been removed in r1752. ------------------------------------------------------------ revno: 0.3.680 committer: inaam timestamp: Mon 2007-08-27 19:41:56 +0000 message: branches/zip: The freed_page_clock for both buf_pool and block starts ticking only after the buffer_cache has warmed up. During the initial warmup phase these values are set to zero. We should recommend to move the block to the start of the LRU in this case. Also added some comments to buf0buf.c about the LRU logic. reviewed by: Sunny ------------------------------------------------------------ revno: 0.3.679 committer: vasil timestamp: Thu 2007-08-23 09:29:28 +0000 message: branches/zip: Add trx_get_id() and trx_get_que_state_str() functions to retrieve trx_t's properties that will be exported in INFORMATION_SCHEMA tables. Approved by: Marko ------------------------------------------------------------ revno: 0.3.678 committer: vasil timestamp: Thu 2007-08-23 07:01:24 +0000 message: branches/zip: Use hash_table_clear() to initialize the array instead of for()-loop. Suggested by: Sunny Approved by: Marko ------------------------------------------------------------ revno: 0.3.677 committer: marko timestamp: Wed 2007-08-22 18:31:24 +0000 message: branches/zip: row_merge_create_temporary_table(): On failure, row_create_table_for_mysql() will free new_table. Thus, remove the call dict_mem_table_free(new_table). ------------------------------------------------------------ revno: 0.3.676 committer: vasil timestamp: Wed 2007-08-22 09:43:45 +0000 message: branches/zip: Add a hash_table_clear() function to drop all elements that have been added to it. Approved by: Marko ------------------------------------------------------------ revno: 0.3.675 committer: marko timestamp: Tue 2007-08-21 12:36:13 +0000 message: branches/zip: Remove trx->sync_cb. Call dict_rename_indexes() directly from ha_innobase::add_index(). dict_rename_indexes(): Remove the redundant parameter commit_flag. ------------------------------------------------------------ revno: 0.3.674 committer: marko timestamp: Tue 2007-08-21 12:10:14 +0000 message: branches/zip: Fix a memory leak in fast index creation. ha_innobase::add_index(): Add assertions about !trx->sync_cb and !trx->dict_redo_list. Remove a bogus comment. Replace row_lock_table_for_merge() with row_merge_lock_table(). row_merge_lock_table(): Renamed from row_lock_table_for_merge() and moved from row0mysql.c to row0merge.c. Always lock the table in the mode LOCK_X. Call que_graph_free() in order not to leak memory. ------------------------------------------------------------ revno: 0.3.673 committer: marko timestamp: Tue 2007-08-21 09:48:33 +0000 message: branches/zip: mem_heap_free_heap_top(): Declare the memory freed with UNIV_MEM_FREE(). Before this change, the memory freed by mem_heap_empty() was not completely flagged free in UNIV_DEBUG_VALGRIND builds. After this change, Valgrind will hopefully catch all errors caught by UNIV_MEM_DEBUG. ------------------------------------------------------------ revno: 0.3.672 committer: marko timestamp: Tue 2007-08-21 09:42:20 +0000 message: branches/zip: ha_innobase::add_index(): Remove the mem_heap_empty() call. The index[] array that is allocated from the heap is still live. ------------------------------------------------------------ revno: 0.3.671 committer: marko timestamp: Tue 2007-08-21 08:34:50 +0000 message: branches/zip: dict_foreign_eval_sql(): Print foreign->id as a table name (in the database.id format). This should have been changed in r1570. ------------------------------------------------------------ revno: 0.3.670 committer: marko timestamp: Tue 2007-08-21 06:40:46 +0000 message: branches/zip: innodb-index.test: Add tests for creating or dropping FOREIGN KEY constraints. At the moment, MySQL will rebuild the entire table and indexes when such constraints are added or removed, even though the constraints do not affect the storage format of the data. ------------------------------------------------------------ revno: 0.3.669 committer: marko timestamp: Mon 2007-08-20 12:33:27 +0000 message: branches/zip: row_merge_read(): Call os_file_read_no_error_handling() instead of os_file_read(). Display some fault diagnostics. ------------------------------------------------------------ revno: 0.3.668 committer: marko timestamp: Mon 2007-08-20 11:40:00 +0000 message: branches/zip: Preserve FOREIGN KEY constraints when creating a PRIMARY KEY. innodb-index.test: Add some test cases for FOREIGN KEY constraints. row_merge_rename_tables(): New function, adapted from row_rename_table_for_mysql(). ha_innobase::add_index(): Use row_merge_rename_tables(). ------------------------------------------------------------ revno: 0.3.667 committer: marko timestamp: Mon 2007-08-20 09:45:27 +0000 message: branches/zip: row_rename_table_for_mysql(): Rely on the diagnostic printout of dict_table_rename_in_cache(). Correct the comment about the SQL parser. This function does not drop any table. ------------------------------------------------------------ revno: 0.3.666 committer: marko timestamp: Mon 2007-08-20 09:43:30 +0000 message: branches/zip: dict_table_rename_in_cache(): Improve the diagnostic printout for the error cases. Avoid copying the old table->name; the string will remain valid in table->heap. ------------------------------------------------------------ revno: 0.3.665 committer: marko timestamp: Mon 2007-08-20 09:13:26 +0000 message: branches/zip: Refuse fast index creation if newraw or innodb_force_recovery have been set. ha_innobase::add_index(), ha_innobase::prepare_drop_index(), ha_innobase::final_drop_index(): Return HA_ERR_WRONG_COMMAND if newraw or innodb_force_recovery have been set. ------------------------------------------------------------ revno: 0.3.664 committer: marko timestamp: Mon 2007-08-20 06:59:22 +0000 message: branches/zip: Add const qualifiers to the upd_t* parameters of some functions. ------------------------------------------------------------ revno: 0.3.663 committer: marko timestamp: Mon 2007-08-20 06:58:37 +0000 message: branches/zip: Use mem_heap_zalloc() when initializing dict_table_t, dict_index_t, and dict_foreign_t. ------------------------------------------------------------ revno: 0.3.662 committer: marko timestamp: Mon 2007-08-20 06:54:31 +0000 message: branches/zip: ha_innobase::write_row(): Remove an unreachable break statement. ------------------------------------------------------------ revno: 0.3.661 committer: marko timestamp: Thu 2007-08-16 13:25:56 +0000 message: branches/zip: Rename mem_heap_calloc() and mem_calloc() to mem_heap_zalloc() and mem_zalloc(), because calloc() in the C runtime library takes two size parameters, not one. mem_heap_zalloc(): Add debug assertions. Document that the return value is never NULL. ------------------------------------------------------------ revno: 0.3.660 committer: marko timestamp: Thu 2007-08-16 13:13:25 +0000 message: branches/zip: Fix bugs in the creation or dropping of the clustered index (PRIMARY KEY or UNIQUE INDEX on NOT NULL columns). innodb-index.test: Remove the --replace_regex directives. Replace correct values to the "Duplicate entry" messages. This will cause the test to fail until we somehow return the duplicate key values to MySQL. Add test cases for creating or dropping UNIQUE INDEX or PRIMARY KEY. innobase_copy_index_def(): Allow the function to copy a clustered index definition to a secondary one (UNIQUE INDEX). innobase_create_key_def(): Check the NOT NULL flag from the correct place. Copy the clustered index if it is a UNIQUE INDEX. ha_innobase::prepare_drop_index(): Refuse to drop the clustered index. ------------------------------------------------------------ revno: 0.3.659 committer: marko timestamp: Thu 2007-08-16 09:19:48 +0000 message: branches/zip: Minor cleanup. ha_innobase::add_index(), ha_innobase::prepare_drop_index(): Remove the redundant thd_test_options() calls. The options are tested in check_trx_exists(). ha_innobase::prepare_drop_index(): key cannot be NULL; remove the tests. Move the condition for checking foreign keys outside of the loop. Remove the redundant error log printout about foreign key dependency. ------------------------------------------------------------ revno: 0.3.658 committer: marko timestamp: Thu 2007-08-16 09:09:08 +0000 message: branches/zip: Remove redundant type casts. Change the parameter type of ut_strcmp() from const void* to const char*. ------------------------------------------------------------ revno: 0.3.657 committer: marko timestamp: Thu 2007-08-16 08:48:29 +0000 message: branches/zip: dict0mem.h: Minor cleanup. Remove the unused constant DICT_NOT_READY. Make dict_index_t::type a bit-field, and move it next to other bit-fields. Add a const qualifier to dict_index_t::name. ------------------------------------------------------------ revno: 0.3.656 committer: marko timestamp: Wed 2007-08-15 15:49:58 +0000 message: branches/zip: Remove the error code DB_CANNOT_DROP_FOREIGN_INDEX. It was only set by ha_innobase::prepare_drop_index(), which can return the appropriate MySQL error code (HA_ERR_DROP_INDEX_FK) directly. ha_innobase::add_index(): Correct the function comment. ha_innobase::prepare_drop_index(): Correct the function comment. Return MySQL error codes directly. ha_innobase::final_drop_index(): Correct the function comment. ------------------------------------------------------------ revno: 0.3.655 committer: marko timestamp: Wed 2007-08-15 15:35:48 +0000 message: branches/zip: row_mysql_handle_errors(): Replace the if-else with switch-case. ------------------------------------------------------------ revno: 0.3.654 committer: marko timestamp: Wed 2007-08-15 11:54:15 +0000 message: branches/zip: Performance improvement: row_merge_buf_add(): Add a prefetch instruction to row->fields. Eliminate a variable from the copying loop, and move the termination condition to the end of the loop. row_merge_build_indexes(): Remove the second call to trx_start_if_not_started(). ------------------------------------------------------------ revno: 0.3.653 committer: marko timestamp: Wed 2007-08-15 06:53:34 +0000 message: branches/zip: Minor cleanup. trx_t: Change the type of error_info from void* to const dict_index_t*. trx_get_error_info(): Add const qualifier to trx_t*. Make this an inline function. ------------------------------------------------------------ revno: 0.3.652 committer: marko timestamp: Mon 2007-08-13 17:15:31 +0000 message: branches/zip: Fix two mistakes made in r1414 (merging branches/fast-index-creation): row_truncate_table_for_mysql(), row_drop_table_for_mysql_no_commit(): Let ut_print_name() output to ef instead of stderr. ------------------------------------------------------------ revno: 0.3.651 committer: marko timestamp: Mon 2007-08-13 16:34:00 +0000 message: branches/zip: ha_innobase::add_index(): Do not merely check for a key name "PRIMARY". If the table has a generated clustered index, also check for a UNIQUE INDEX containing no NULL columns. innobase_create_index_def(): Add the parameter key_primary. innobase_create_key_def(): Check if the first index is a UNIQUE index consisting of NOT NULL columns. Fixing this bug revealed another one: FOREIGN KEY constraints will be lost when a PRIMARY KEY is created. This is the reason why innodb.test will fail. ------------------------------------------------------------ revno: 0.3.650 committer: marko timestamp: Mon 2007-08-13 16:05:23 +0000 message: branches/zip: ha_innobase::change_active_index(): Write to the error log when the index could not be found. ------------------------------------------------------------ revno: 0.3.649 committer: marko timestamp: Mon 2007-08-13 15:57:28 +0000 message: branches/zip: Add some const qualifiers to dict_index_t* and dict_table_t*. innobase_create_key_def(), row_table_got_default_clust_index(), row_get_mysql_key_number_for_index(): Add a const qualifier. dict_table_get_first_index(), dict_table_get_next_index(): Define as a const-preserving macro. Preserve the old function for UNIV_DEBUG, but add a const qualifier to the parameter and cast away the constness. ------------------------------------------------------------ revno: 0.3.648 committer: marko timestamp: Mon 2007-08-13 14:07:59 +0000 message: branches/zip: Use mem_calloc and mem_heap_calloc when possible. row_ext_create(): After a memset() inside UNIV_DEBUG, flag the memory uninitialized with UNIV_MEM_ALLOC(). ------------------------------------------------------------ revno: 0.3.647 committer: marko timestamp: Mon 2007-08-13 12:46:13 +0000 message: branches/zip: row_rename_table_for_mysql(): Change the return type to ulint and simplify error handling. ------------------------------------------------------------ revno: 0.3.646 committer: marko timestamp: Mon 2007-08-13 12:23:21 +0000 message: branches/zip: ha_innobase::add_index(): Remove the unused variable new_unique. ------------------------------------------------------------ revno: 0.3.645 committer: marko timestamp: Mon 2007-08-13 07:37:53 +0000 message: branches/zip: ha_innobase::add_index(): Fix an ut_ad() assertion that was broken in r1685. ------------------------------------------------------------ revno: 0.3.644 committer: marko timestamp: Fri 2007-08-10 15:53:19 +0000 message: branches/zip: Add changes that accidentally omitted from r1698: innodb-index.test, innodb-index.result: Add a test for creating a PRIMARY KEY on a column that contains a NULL value. ------------------------------------------------------------ revno: 0.3.643 committer: marko timestamp: Fri 2007-08-10 15:52:09 +0000 message: branches/zip: When creating a PRIMARY KEY, flag all its columns NOT NULL. row_merge_create_temporary_table(): Add the parameter index_defs. DB_PRIMARY_KEY_IS_NULL: New error code, mapped to ER_PRIMARY_CANT_HAVE_NULL. row_merge_read_clustered_index(): Replace the parameter "table" with the two parameters "old_table" and "new_table". Detect NULL values of columns that are supposed to be NOT NULL. row_merge_col_prtype(): New auxiliary function, used by row_merge_create_temporary_table() to flag NOT NULL any columns contained in an added PRIMARY KEY. ------------------------------------------------------------ revno: 0.3.642 committer: marko timestamp: Fri 2007-08-10 15:22:47 +0000 message: branches/zip: Minor cleanup. innobase_copy_index_field_def(): Remove parameter heap. The field->name will not be deallocated before the copied index has been added to the data dictionary cache. innobase_copy_index_def(): Add const qualifier to dict_index_t*. Add an assertion !dict_index_is_clust(index). ha_innobase::add_index(): Add the missing user_thd parameter to the convert_error_code_to_mysql() call that was forgotten from r1686. merge_index_field_struct: Add const qualifier to field_name. merge_index_def_struct: Add const qualifier to name. row_merge_build_indexes(): Improve the function comment. row_merge_drop_table(): Remove bogus assertion ut_a(table->to_be_dropped). ------------------------------------------------------------ revno: 0.3.641 committer: marko timestamp: Wed 2007-08-08 14:23:14 +0000 message: branches/zip: ha_innobase::add_index(): Convert the error code before goto err_exit. The error handling should be rewritten. Many of the error messages contain parameters, but this code is only returning the error number to MySQL. ------------------------------------------------------------ revno: 0.3.640 committer: marko timestamp: Wed 2007-08-08 13:57:04 +0000 message: branches/zip: innobase_check_index_keys(): return 0 instead of DB_SUCCESS, as documented. Do not translate the error code. This function is still broken; we should probably use my_error() for reporting errors. ------------------------------------------------------------ revno: 0.3.639 committer: marko timestamp: Wed 2007-08-08 13:43:44 +0000 message: branches/zip: convert_error_code_to_mysql(): replace if-else with switch-case ------------------------------------------------------------ revno: 0.3.638 committer: marko timestamp: Wed 2007-08-08 13:13:01 +0000 message: branches/zip: Resolve an error number collision in db0err.h. The code for DB_CANNOT_DROP_FOREIGN_INDEX should have been renumbered in r1494 (Merge revisions 1402:1493 from trunk). ------------------------------------------------------------ revno: 0.3.637 committer: marko timestamp: Wed 2007-08-08 09:01:46 +0000 message: branches/zip: Add const qualifiers to some dict_table_t* accessor functions. ------------------------------------------------------------ revno: 0.3.636 committer: marko timestamp: Wed 2007-08-08 08:49:33 +0000 message: branches/zip: merge_index_field_struct: Remove the unused field col_type. ------------------------------------------------------------ revno: 0.3.635 committer: marko timestamp: Fri 2007-08-03 11:49:51 +0000 message: branches/zip: Fix memory management errors in row_merge_buf_t. row_merge_buf_create_low(): Swap the parameters max_tuples and buf_size, because the callers had them swapped. Add debug assertions about these parameters. row_merge_buf_empty(): Return the emptied buffer. In some cases, the buffer may be relocated. ------------------------------------------------------------ revno: 0.3.634 committer: marko timestamp: Fri 2007-08-03 11:42:37 +0000 message: branches/zip: ha_innobase::add_index(): When creating a clustered index, do not release and relock the data dictionary during initial preparations. ------------------------------------------------------------ revno: 0.3.633 committer: marko timestamp: Fri 2007-08-03 10:53:08 +0000 message: branches/zip: row_undo_dictionary(): For TRX_UNDO_INDEX_CREATE_REC, the index may be NULL when unfinished transactions are rolled back after crash recovery. ------------------------------------------------------------ revno: 0.3.632 committer: marko timestamp: Fri 2007-08-03 10:17:50 +0000 message: branches/zip: trx_sys_init_at_db_start(): Initialize trx_dummy_sess before calling trx_lists_init_at_db_start(). This was broken in r1594. ------------------------------------------------------------ revno: 0.3.631 committer: marko timestamp: Fri 2007-08-03 07:35:05 +0000 message: branches/zip: Fix errors made in r1672. ------------------------------------------------------------ revno: 0.3.630 committer: marko timestamp: Fri 2007-08-03 07:09:29 +0000 message: branches/zip: Add const qualifiers to the functions that read MySQL data. row_mysql_read_true_varchar(), row_mysql_read_blob_ref(), row_mysql_store_col_in_innobase_format(), row_sel_convert_mysql_key_to_innobase(): Add const qualifiers. row_sel_convert_mysql_key_to_innobase(): Document that the first parameter is in/out. ------------------------------------------------------------ revno: 0.3.629 committer: marko timestamp: Thu 2007-08-02 10:55:25 +0000 message: branches/zip: Ensure that the dictionary updates are atomic by keeping the data dictionary locked across the operations. dict_table_decrement_handle_count(), row_prebuilt_free(): Add the flag dict_locked, to prevent the acquisition of dict_sys->mutex. innobase_rename_table(): Rename commit_flag to lock_and_commit, and do not acquire dict_sys->mutex or flush the log unless the flag is set. Remove bogus comment about utility threads, because the threads will be waken up by the upper-level function ha_innobase::rename_table(). ha_innobase::add_index(): After creating a primary key, hold dict_sys->mutex across all dictionary operations. ------------------------------------------------------------ revno: 0.3.628 committer: marko timestamp: Thu 2007-08-02 09:46:28 +0000 message: branches/zip: row_merge_create_temporary_table(): Correct a bogus ut_ad(). ------------------------------------------------------------ revno: 0.3.627 committer: marko timestamp: Wed 2007-08-01 13:00:16 +0000 message: branches/zip: innodb-index.test: Replace numeric error codes with symbolic ones. ------------------------------------------------------------ revno: 0.3.626 committer: marko timestamp: Wed 2007-08-01 11:49:19 +0000 message: branches/zip: Declare schema_table_store_record(), because MySQL strangely does not declare it unless MYSQL_SERVER is defined. ------------------------------------------------------------ revno: 0.3.625 committer: marko timestamp: Wed 2007-08-01 11:18:43 +0000 message: branches/zip: Merge 1575:1664 from trunk. ------------------------------------------------------------ revno: 0.3.624 committer: marko timestamp: Wed 2007-08-01 11:01:27 +0000 message: branches/zip: innodb.test: Use ER_DROP_INDEX_FK instead of a numeric error code. Apparently, the numeric error codes in MySQL 5.1 are changing. ------------------------------------------------------------ revno: 0.3.623 committer: marko timestamp: Wed 2007-08-01 10:38:07 +0000 message: branches/zip: Add explicit type casts to *.ic, because C++ does not allow implicit type conversion from void*. Inlining is enabled in ha_innodb.cc since r1587. ------------------------------------------------------------ revno: 0.3.622 committer: marko timestamp: Wed 2007-08-01 08:13:22 +0000 message: branches/zip: HASH_SEARCH(): Add the parameter TYPE, for the type of DATA. C++ requires explicit type casts when converting from void*, and *.ic files are now inlined in ha_innodb.cc. fil_space_get_by_id(), fil_space_get_by_name(): New inline functions, to replace occurrences of the HASH_SEARCH() macro in fil0fil.c. This should improve readability. ------------------------------------------------------------ revno: 0.3.621 committer: marko timestamp: Wed 2007-08-01 08:01:47 +0000 message: branches/zip: trx_weight_cmp(): Add const qualifiers. ------------------------------------------------------------ revno: 0.3.620 committer: marko timestamp: Wed 2007-08-01 07:53:27 +0000 message: branches/zip: btr_cur_mark_dtuple_inherited_extern(): Initialize len. This was broken in r1591. ------------------------------------------------------------ revno: 0.3.619 committer: marko timestamp: Wed 2007-08-01 07:52:05 +0000 message: branches/zip: row_merge_read_clustered_index(): Remove a bogus warning about "row" being possibly uninitialized. ------------------------------------------------------------ revno: 0.3.618 committer: marko timestamp: Wed 2007-08-01 07:49:43 +0000 message: branches/zip: lock_rec_print(), lock_table_print(), lock_rec_get_prev(): Add a const qualifier to lock_t*. ------------------------------------------------------------ revno: 0.3.617 committer: marko timestamp: Thu 2007-06-21 13:27:22 +0000 message: branches/zip: Declare innobase_mysql_print_thd() in ha_prototypes.h. ------------------------------------------------------------ revno: 0.3.616 committer: marko timestamp: Thu 2007-06-21 13:25:03 +0000 message: branches/zip: row_prebuilt_free(), row_drop_tables_for_mysql_in_background(): Fix some printouts. ------------------------------------------------------------ revno: 0.3.615 committer: marko timestamp: Thu 2007-06-21 12:22:04 +0000 message: branches/zip: row_upd_sec_index_entry(): Pass foreign=TRUE to row_ins_index_entry(). The added parameter (whether to check foreign key constraints) was incorrectly passed as FALSE in r1591. ------------------------------------------------------------ revno: 0.3.614 committer: marko timestamp: Thu 2007-06-21 12:02:29 +0000 message: branches/zip: Initialize trx_dummy_sess only once. Require trx->sess to be set always. trx_rollback_active(): Split from trx_rollback_or_clean_all_without_sess(). row_undo_dictionary(): Do not return a value. Assert that all operations succeed. row_merge_drop_index(): Remove bogus comment about void return value. trx_dummy_sess: Move the declaration from trx0roll.h to trx0trx.h, because the variable is defined in trx0trx.c. ------------------------------------------------------------ revno: 0.3.613 committer: marko timestamp: Thu 2007-06-21 11:14:13 +0000 message: branches/zip: que_thr_dec_refer_count(): Cleanup. Remove unused variable sess. ------------------------------------------------------------ revno: 0.3.612 committer: marko timestamp: Thu 2007-06-21 10:42:20 +0000 message: branches/zip: trx_commit_for_mysql(): Call trx_start_if_not_started() earlier. Return DB_SUCCESS. Do not release and reacquire kernel_mutex. ------------------------------------------------------------ revno: 0.3.611 committer: marko timestamp: Thu 2007-06-21 09:43:15 +0000 message: branches/zip: Make merge sort handle externally stored columns. Some things still fail in innodb-index.test, and there seems to be a race condition (data dictionary lock wait) when running with --valgrind. dfield_t: Add an "external storage" flag, dfield->ext. dfield_is_null(), dfield_is_ext(), dfield_set_ext(), dfield_set_null(): New functions. dfield_copy(), dfield_copy_data(): Add const qualifiers, fix in/out comments. data_write_sql_null(): Use memset(). big_rec_field_t: Replace byte* data with const void* data. ut_ulint_sort(): Remove. upd_field_t: Remove extern_storage. upd_node_t: Replace ext_vec, n_ext_vec with n_ext. row_merge_copy_blobs(): New function. row_ins_index_entry(): Add the parameter "ibool foreign" for suppressing foreign key checks during fast index creation or when inserting into secondary indexes. btr_page_insert_fits(): Add const qualifiers. btr_cur_add_ext(), upd_ext_vec_contains(): Remove. dfield_print_also_hex(), dfield_print(): Replace if...else if with switch. Observe dfield_is_ext(). ------------------------------------------------------------ revno: 0.3.610 committer: marko timestamp: Thu 2007-06-21 08:58:41 +0000 message: branches/zip: btr_rec_copy_externally_stored_field(): Add const qualifier to rec_t*. Remove the ut_ad(rec_offs_validate()), because this function will be called from row0merge.c on a record that lacks the REC_N_NEW_EXTRA_BYTES. ------------------------------------------------------------ revno: 0.3.609 committer: marko timestamp: Wed 2007-06-20 20:07:56 +0000 message: branches/zip: Add .deps to svn:ignore. ------------------------------------------------------------ revno: 0.3.608 committer: marko timestamp: Wed 2007-06-20 13:58:16 +0000 message: branches/zip: Restore the transaction commit that was removed in r1583. ha_innobase::add_index(): Do commit the transaction, because the error handler (label err1) in mysql_alter_table() won't commit it as of now. This was detected in a failure of type_bit_innodb. ------------------------------------------------------------ revno: 0.3.607 committer: marko timestamp: Wed 2007-06-20 08:26:26 +0000 message: branches/zip: Enable calls to inlined InnoDB functions in ha_innodb.cc, now that all of InnoDB code is built from a single Makefile and it should not be possible to build the modules with mutually incompatible options. #define INSIDE_HA_INNOBASE_CC: Remove. srv_sizeof_trx_t_in_ha_innodb_cc: Remove. dict_table_get_low_noninlined(): Remove. This function was unused. Remove all _noninline functions. Remove the _noninline suffix from all function calls in ha_innodb.cc. ------------------------------------------------------------ revno: 0.3.606 committer: marko timestamp: Tue 2007-06-19 12:44:45 +0000 message: branches/zip: Add some const qualifiers, mainly to upd_t*. upd_get_n_fields(), upd_get_nth_field(): Add const qualifiers. ------------------------------------------------------------ revno: 0.3.605 committer: marko timestamp: Tue 2007-06-19 09:39:27 +0000 message: branches/zip: Define mem_heap_calloc() and mem_calloc(). Use them when allocating zero-filled memory. ------------------------------------------------------------ revno: 0.3.604 committer: marko timestamp: Mon 2007-06-18 11:46:42 +0000 message: branches/zip: ha_innobase::add_index(): Split some assertions. Remove the variable parent_trx. Call innobase_register_stmt() in order to work around a MySQL bug in mysql_alter_table(), which, as of ChangeSet@1.2482.61.2, 2007-06-07 16:37:15+02:00, joerg@trift2. +8 -0 commits the transaction before calling ha_innobase::add_index(). Without re-registering the statement, the ha_commit_stmt(thd) in mysql_alter_table() would not invoke innobase_commit. ------------------------------------------------------------ revno: 0.3.603 committer: marko timestamp: Mon 2007-06-18 11:01:30 +0000 message: branches/zip: ha_innobase::add_index(): Do not commit the transaction. It should be committed by MySQL after all. The error in mysql_alter_table() will be worked around in r1584. ------------------------------------------------------------ revno: 0.3.602 committer: marko timestamp: Wed 2007-06-13 13:40:29 +0000 message: branches/zip: Remove reads of freed memory in fast index creation. Because row_drop_table_for_mysql_no_commit() checks with dict_load_table() if the table was successfully dropped, we cannot pass table->name to it. row_merge_drop_table(): Pass a copy of table->name to row_drop_table_for_mysql(). row_prebuilt_free(): Do not dereference prebuilt->table->name after a successful invocation of row_add_table_to_background_drop_list(). The table object may be freed at any time. Remove the debug message "Dropping table". ------------------------------------------------------------ revno: 0.3.601 committer: marko timestamp: Wed 2007-06-13 11:01:26 +0000 message: branches/zip: Fix a few bugs in fast index creation. No more crashes occur in mysql-test-run, but mysql-test-run reports some warnings for some tests and incorrect results for innodb-index.test. innobase_start_trx_and_assign_read_view(): Use thd instead of current_thd. ha_innobase::add_index(): Use ha_thd() instead of current_thd. Commit the transaction at the end. row_merge_rename_index(): Really change the name of the index. This was broken in r1430. ------------------------------------------------------------ revno: 0.3.600 committer: marko timestamp: Wed 2007-06-13 10:20:52 +0000 message: branches/zip: Merge 1571:1575 from trunk. ------------------------------------------------------------ revno: 0.3.599 committer: marko timestamp: Wed 2007-06-13 10:19:23 +0000 message: branches/zip: trx_commit_for_mysql(): Replace ut_a(err) with ut_a(err == DB_SUCCESS). ------------------------------------------------------------ revno: 0.3.598 committer: marko timestamp: Tue 2007-06-12 10:59:01 +0000 message: branches/zip: Merge 1556:1571 from trunk. ------------------------------------------------------------ revno: 0.3.597 committer: marko timestamp: Tue 2007-06-12 07:06:36 +0000 message: branches/zip: Correctly print the names of temporary tables and indexes during fast index creation. TEMP_TABLE_PREFIX: Move the definition from dict0dict.h to ut0ut.h. ut_print_namel(): Check if the name starts with TEMP_TABLE_PREFIX. innobase_rename_table(): Print all names with ut_print_name(). row_prebuilt_free(): Replace assert() with ut_a(). ------------------------------------------------------------ revno: 0.3.596 committer: marko timestamp: Mon 2007-06-11 14:39:04 +0000 message: branches/zip: Initialize some uninitialized variables in order to avoid comparing uninitialized values. dict_mem_table_create(): Initialize table->version_number. ins_node_create(): Initialize node->table_version_number. row_create_prebuilt(): Initialize all fields. Initialize most fields by memset(), so that any fields that are added will be initialized automatically. ------------------------------------------------------------ revno: 0.3.595 committer: marko timestamp: Mon 2007-06-11 08:26:33 +0000 message: branches/zip: Create special single-table tablespace file names for temporary tablespaces in fast index creation. The tablespaces must reside in the same directory as the persistent tablespaces, so that they can be renamed without copying. Namespace collisions are avoided by replacing the ".ibd" file name suffix with ".ib1" or ".ib2". fil_make_ibd_name(): Treat names starting with TEMP_TABLE_PREFIX specially. Document the dependence on innobase_create_temporary_tablename(). ------------------------------------------------------------ revno: 0.3.594 committer: marko timestamp: Fri 2007-06-08 20:30:26 +0000 message: branches/zip: Fix bugs in merge sort. row_merge_buf_add(): Correctly calculate buf->total_size. row_merge_buf_write(): Add an assertion about buf->total_size. row_merge_heap_create(), row_merge_read_rec(), row_merge_insert_index_tuples(): offsets needs to be 1 + REC_OFFS_HEADER_SIZE + n_fields. Previously, we allocated one element too little. row_merge_blocks(): Use goto instead of break in the AT_END argument of ROW_MERGE_WRITE_GET_NEXT. ------------------------------------------------------------ revno: 0.3.593 committer: marko timestamp: Fri 2007-06-08 09:49:50 +0000 message: branches/zip: row_merge_build_indexes(): Allocate all buffers with a single os_mem_alloc_large() call. The function mem_alloc() that was used previously allocates unaligned memory. row_merge_blocks(): Replace block1, block2, block3 with a single array. Replace buf1, buf2, buf3 with buf[3]. Replace b1..b3 with b0..b2. Replace mrec1,2 with mrec0,1. Replace offsets1,2 with offsets0,1. row_merge(), row_merge_sort(): Replace block1, block2, block3 with a single array. ------------------------------------------------------------ revno: 0.3.592 committer: marko timestamp: Fri 2007-06-08 07:37:07 +0000 message: branches/zip: Reimplement merge sort in fast index creation. The creation of the primary key does not work. We will have to flag externally stored columns and copy the externally stored part from the old table. row_build_index_for_mysql(): Rename to row_merge_build_indexes(). Move from row0mysql.c to row0merge.c. Remove private declarations from row0merge.h. Make many functions static in row0merge.c. cmp_rec_rec_simple(): A new comparison function. dict_index_get_min_size(): New function. OS_FILE_FROM_FD(fd): A macro for converting from int to os_file_t. rec_convert_dtuple_to_rec_comp(): Make the interface lower-level. rec_get_converted_size_comp(): Return also extra_size. UT_SORT_FUNCTION_BODY(): Remove reference to an obsolete test program. row_rec_to_index_entry_low(): New function. row0merge.c: Implement merge sort based on file streams instead of fixed-size blocks. Sort the small blocks as arrays of dfield_t*, because it is faster than invoking rec_get_offsets() for every comparison. ------------------------------------------------------------ revno: 0.3.591 committer: marko timestamp: Fri 2007-06-08 07:05:17 +0000 message: branches/zip: Merge 1553:1556 from trunk. ------------------------------------------------------------ revno: 0.3.590 committer: marko timestamp: Thu 2007-06-07 19:57:34 +0000 message: branches/zip: innodb-index.test: Check the length of the long columns. ------------------------------------------------------------ revno: 0.3.589 committer: marko timestamp: Thu 2007-06-07 18:29:57 +0000 message: branches/zip: Reduce memory allocation and pointer indirection in fast index creation. innobase_create_index_def(), innobase_copy_index_def(): Copy to pre-allocated space. innobase_create_key_def(): Change the return type from merge_index_def_t** to merge_index_def_t*. ------------------------------------------------------------ revno: 0.3.588 committer: marko timestamp: Thu 2007-06-07 12:23:26 +0000 message: branches/zip: Minor cleanup. innobase_create_index_def(): Add parameter new_primary. innobase_copy_index_def(): Simplify the documented algorithm, and try to implement it properly. innodb-index.test: Replace CHECKSUM TABLE with something more stable and useful. The test passes on an older BitKeeper snapshot: ChangeSet@1.2475.18.9, 2007-05-08 11:16:41+02:00, jbruehe@mysql.com +1 -0 Raise version number after cloning 5.1.18-beta But it fails on a newer one where the statement alter table t1 add primary key (a), add key (b(20)); results in fast index creation: ChangeSet@1.2500.1.40, 2007-06-01 20:06:13+04:00, kostja@bodhi.(none) +2 -0 Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime into bodhi.(none):/opt/local/work/mysql-5.1-runtime MERGE: 1.1810.2984.14 ------------------------------------------------------------ revno: 0.3.587 committer: marko timestamp: Thu 2007-06-07 09:47:59 +0000 message: branches/zip: Document dict_rename_indexes() better. ------------------------------------------------------------ revno: 0.3.586 committer: marko timestamp: Thu 2007-06-07 08:14:42 +0000 message: branches/zip: row_merge_read_clustered_index(): Correctly skip the page infimum and supremum. This was broken in r1515. ------------------------------------------------------------ revno: 0.3.585 committer: marko timestamp: Wed 2007-06-06 20:25:35 +0000 message: branches/zip: Clean up fast index creation API. row_merge_create_temporary_table(), row_merge_create_index(): Return the dictionary object. On error, set trx->error_state. ------------------------------------------------------------ revno: 0.3.584 committer: marko timestamp: Wed 2007-06-06 11:07:37 +0000 message: branches/zip: Merge 1533:1553 from trunk. ------------------------------------------------------------ revno: 0.3.583 committer: marko timestamp: Mon 2007-06-04 07:51:10 +0000 message: branches/zip: Minor cleanup. row_merge_mark_prebuilt_obsolete(): Rename to row_prebuilt_table_obsolete() and move from row0merge.c to row0mysql.c. Remove the parameter trx. row_merge_print_table(): Remove. ------------------------------------------------------------ revno: 0.3.582 committer: marko timestamp: Mon 2007-06-04 07:49:31 +0000 message: branches/zip: Minor cleanup. row_remove_indexes_for_mysql(): Rename to row_merge_drop_indexes(), move from row0mysql.c to row0merge.c and make the return type void. row_merge_remove_index(): Rename to row_merge_drop_index() and make the return type void. ------------------------------------------------------------ revno: 0.3.581 committer: marko timestamp: Tue 2007-05-29 08:48:16 +0000 message: branches/zip: Merge 1493:1533 from trunk. Make use of UT_BITS_IN_BYTES(). ------------------------------------------------------------ revno: 0.3.580 committer: marko timestamp: Mon 2007-05-28 07:42:28 +0000 message: branches/zip: Revert r1523. Passing extra parameters to SORT_FUN and CMP_FUN of UT_SORT_FUNCTION_BODY is best done by defining SORT_FUN and CMP_FUN as macros when needed. The solution of r1523 allows for only one extra parameter. ------------------------------------------------------------ revno: 0.3.579 committer: marko timestamp: Thu 2007-05-24 13:14:57 +0000 message: branches/zip: UT_SORT_FUNCTION_BODY(): Add the parameter CTX, which will be needed in row0merge.c for merge sorting the small blocks in main memory. Pass CTX also to SORT_FUN. Adjust all users. ------------------------------------------------------------ revno: 0.3.578 committer: marko timestamp: Tue 2007-05-22 11:55:07 +0000 message: branches/zip: rec_get_offsets_reverse(): Fix the type of the parameter node_ptr. ------------------------------------------------------------ revno: 0.3.577 committer: marko timestamp: Tue 2007-05-22 11:12:35 +0000 message: branches/zip: Refactor some code for handling records in ROW_FORMAT=COMPACT. rec_get_converted_size_new(): Rename to rec_get_converted_size_comp(). Add const qualifier to dtuple. Remove the assertion dict_table_is_comp(index->table), because this function will be invoked when populating the temporary files in fast index creation. rec_convert_dtuple_to_rec_new(): Rename to rec_convert_dtuple_to_rec_comp(). Add parameter "extra". rec_init_offsets_comp_ordinary(): New function. Used in rec_init_offsets(). ------------------------------------------------------------ revno: 0.3.576 committer: marko timestamp: Tue 2007-05-22 09:34:25 +0000 message: branches/zip: Rename dtuple_datas_are_ordering_equal() to dtuple_coll_cmp(), and change the return type from ibool to int (-1, 0, 1). This comparison function will be needed in fast index creation. ------------------------------------------------------------ revno: 0.3.575 committer: marko timestamp: Tue 2007-05-22 06:48:53 +0000 message: branches/zip: Correct the terminology: s/cluster index/clustered index/. row_merge_read_clustered_index(): Simplify the loop that scans the clustered index. ------------------------------------------------------------ revno: 0.3.574 committer: marko timestamp: Mon 2007-05-21 09:35:13 +0000 message: branches/zip: Implement INFORMATION_SCHEMA.INNODB_ZIP_RESET, which is otherwise like INNODB_ZIP, but resets the cumulated counts. Rename innodb_buddy to innodb_zip in some comments. innobase_stat_zip_fill(): Add parameter "reset". Document the race condition with the compression statistics counters. ------------------------------------------------------------ revno: 0.3.573 committer: marko timestamp: Fri 2007-05-18 13:00:53 +0000 message: branches/zip: Minor cleanup. trx_undo_report_row_operation(), trx_undo_report_dict_operation(): Reduce the scope of some variables. Move the return(DB_SUCCESS) case inside the for loop. ------------------------------------------------------------ revno: 0.3.572 committer: marko timestamp: Fri 2007-05-18 11:37:05 +0000 message: branches/zip: row_merge_block_merge(): Add an assertion against buffer overflow. ------------------------------------------------------------ revno: 0.3.571 committer: marko timestamp: Fri 2007-05-18 11:01:58 +0000 message: branches/zip: Use ut_dulint_zero and ut_dulint_is_zero whenever possible. ------------------------------------------------------------ revno: 0.3.570 committer: marko timestamp: Fri 2007-05-18 10:53:29 +0000 message: branches/zip: Fix some minor things in row0uins.c after comparing to trunk. Replace row0merge.h with row0mysql.h. Remove redundant test trx->dict_operation_lock_mode == 0. Fix typos in comments. row_undo_ins(): Make the function more similar to the one in trunk. ------------------------------------------------------------ revno: 0.3.569 committer: marko timestamp: Wed 2007-05-16 12:01:31 +0000 message: branches/zip: btr_cur_optimistic_insert(): Set the insert buffer free bits exactly. Rename the local variable "ulint level" to "ibool leaf". Document that if the function returns DB_SUCCESS on a compressed page that is covered by the insert buffer, the mini-transaction must be committed before latching any further pages. Verify that this is the case on all execution paths. ------------------------------------------------------------ revno: 0.3.568 committer: marko timestamp: Wed 2007-05-16 09:23:53 +0000 message: branches/zip: Document and obey the rules for modifying the free bits in the insert buffer bitmap. ibuf_set_free_bits_func(): Never disable redo logging. ibuf_update_free_bits_zip(): Remove. btr_page_reorganize_low(), page_zip_reorganize(): Do not update the insert buffer bitmap. Instead, document that callers will have to take care of it, and adapt the callers. btr_compress(): On error, reset the insert buffer free bits. btr_cur_insert_if_possible(): Do not modify the insert buffer bitmap. btr_compress(), btr_cur_optimistic_insert(): On compressed pages, reset the insert buffer bitmap. Document why. btr_cur_update_alloc_zip(): Document why it is necessary and sufficient to reset the insert buffer free bits. btr_cur_update_in_place(), btr_cur_optimistic_update(), btr_cur_pessimistic_update(): Update the free bits in the same mini-transaction. Document that the mini-transaction must be committed before latching any further pages. Verify that this is the case in all execution paths. row_ins_sec_index_entry_by_modify(), row_ins_clust_index_entry_by_modify(), row_undo_mod_clust_low(): Because these functions call btr_cur_update_in_place(), btr_cur_optimistic_update(), or btr_cur_pessimistic_update(), document that the mini-transaction must be committed before latching any further pages. Verify that this is the case in all execution paths. ------------------------------------------------------------ revno: 0.3.567 committer: marko timestamp: Tue 2007-05-15 09:31:41 +0000 message: branches/zip: Minor cleanup. page_cur_tuple_insert(), page_cur_rec_insert(): Improve the documentation. Note that the physical position of page_cursor may change. page_cur_rec_insert(), page_cur_insert_rec_low(), page_cur_insert_rec_zip(): Add a const qualifier to the parameter rec. ------------------------------------------------------------ revno: 0.3.566 committer: marko timestamp: Mon 2007-05-14 09:07:15 +0000 message: branches/zip: Merge revisions 1402:1493 from trunk. Remove mysql.patch, because the configuration parameter interface has changed. ------------------------------------------------------------ revno: 0.3.565 committer: marko timestamp: Mon 2007-05-07 05:53:42 +0000 message: branches/zip: Fix two bugs. mtr_commit(): Do not acquire the log mutex if no log records are to be written. ibuf_set_free_bits_func(): Do not clear mtr.modifications, because that would prevent the dirty insert buffer bitmap block from being moved to the flush list. Instead, assume that mtr_commit() will not acquire log_sys->mutex because redo logging is disabled. buf_page_init_for_read(): I/O-fix the block before buf_buddy_alloc(), because the newly allocated block could otherwise be reused by the compressed page. ------------------------------------------------------------ revno: 0.3.564 committer: marko timestamp: Sun 2007-05-06 13:21:59 +0000 message: branches/zip: When reading pages for merging buffered inserts, request that the pages be decompressed. buf_read_page_low(), buf_page_init_for_read(): Add parameter "unzip". ------------------------------------------------------------ revno: 0.3.563 committer: marko timestamp: Sun 2007-05-06 12:39:46 +0000 message: branches/zip: ibuf_set_free_bits_func(): Disable redo logging when crash recovery is in progress. This avoids a hang when btr_parse_page_reorganize(), called from an I/O handler thread, attempts to acquire log_sys->mutex while it is being held by the main thread (the one that runs innobase_init()). This change was committed accidentally. It may be unsafe to clear mtr.modifications, because buf_page_release() at mtr_commit() may forget to put modified pages to the flush list. Cleanup: Remove the "type" parameter from many ibuf functions. Let the caller check that !dict_index_is_clust(). This should avoid function calls and register spilling. ibuf_set_free_bits_func(), ibuf_set_free_bits(): Remove the parameter "type". ibuf_reset_free_bits_with_type(): Rename to ibuf_reset_free_bits(). Remove the parameter "type". ibuf_update_free_bits_if_full(), ibuf_update_free_bits_zip(), ibuf_update_free_bits_low(), ibuf_update_free_bits_for_two_pages_low(): Remove the parameter "index". ------------------------------------------------------------ revno: 0.3.562 committer: marko timestamp: Sun 2007-05-06 12:30:10 +0000 message: branches/zip: buf_page_io_query(): Shorten the code by using a local variable. ------------------------------------------------------------ revno: 0.3.561 committer: marko timestamp: Sun 2007-05-06 12:28:05 +0000 message: branches/zip: Minor cleanup. log_write_up_to(): Replace if-else if-else with a switch block. log_archive_do(): Remove an excess mutex_enter(). Replace if-else if-else with a switch block. (This function is not included unless UNIV_LOG_ARCHIVE is defined.) ------------------------------------------------------------ revno: 0.3.560 committer: marko timestamp: Sun 2007-05-06 12:05:21 +0000 message: branches/zip: Improve the documentation of UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.559 committer: marko timestamp: Thu 2007-05-03 07:42:54 +0000 message: branches/zip: Correct the comment of row_merge_cmp(). ------------------------------------------------------------ revno: 0.3.558 committer: marko timestamp: Wed 2007-05-02 11:58:45 +0000 message: branches/zip: Replace the table attribute AVG_ROW_LENGTH (ugly hack to pass the compressed page size) with KEY_BLOCK_SIZE. ------------------------------------------------------------ revno: 0.3.557 committer: marko timestamp: Mon 2007-04-30 07:02:28 +0000 message: branches/zip: row_merge_sort_linked_list(): Add a default: ut_error; branch to the switch (row_merge_cmp(...)) to eliminate bogus warning about uninitialized variable tmp. ------------------------------------------------------------ revno: 0.3.556 committer: marko timestamp: Mon 2007-04-30 06:25:47 +0000 message: branches/zip: Apply a fix from Sunny. The function row_merge_block_merge() was broken in one of the earlier cleanups. row_merge_block_merge(): Remove the variable "selected". Clear the record count of new_block1 and new_block2. Anticipate the right return values from row_merge_cmp(). ------------------------------------------------------------ revno: 0.3.555 committer: marko timestamp: Tue 2007-04-17 12:25:51 +0000 message: branches/zip: Minor cleanup. Add __attribute__((const)) or __attribute__((pure)) to various mach_read functions. dtype_new_read_for_order_and_null_size(): Remove a statement without effect: mach_read_from_2(buf + 4). ------------------------------------------------------------ revno: 0.3.554 committer: marko timestamp: Tue 2007-04-17 09:44:29 +0000 message: branches/zip: Reintroduce the local variables "sorted" that were removed in r1445. They are needed after all, but apparently the tests do not actually verify that the records are sorted. (Also, a buffer overflow will occur in index_merge_innodb.test if MERGE_BLOCK_SIZE is made smaller.) ------------------------------------------------------------ revno: 0.3.553 committer: marko timestamp: Tue 2007-04-17 08:53:47 +0000 message: branches/zip: Clean up fast index creation. Correct the language of some comments. Eliminate the local variables "num_of_merges" (renamed to "sorted" in one function). ------------------------------------------------------------ revno: 0.3.552 committer: marko timestamp: Tue 2007-04-17 08:21:28 +0000 message: branches/zip: Clean up. cmp_rec_rec_with_match(): Initialize ret=0. Remove assignments ret=0. rec_init_offsets(): Remove bogus comment. ------------------------------------------------------------ revno: 0.3.551 committer: marko timestamp: Mon 2007-04-16 09:21:39 +0000 message: branches/zip: Make use of the function dict_index_is_unique(). ------------------------------------------------------------ revno: 0.3.550 committer: marko timestamp: Mon 2007-04-16 09:13:44 +0000 message: branches/zip: Clean up fast index creation. dict_index_is_unique(): New function. row_merge_rec_fits_to_block(), row_merge_store_rec_to_block(): Add const qualifiers to rec, offsets. row_merge_select(): Rename to row_merge_cmp(), simplify the interface. row_merge_sort_linked_list(): Change the return type to ibool. Replace sec_offs1,sec_offs2 with offsets1,offsets2. Replace offset_heap with heap. Define a func_exit label. row_merge_block_merge(): Reduce the scope of rec_offsets. ------------------------------------------------------------ revno: 0.3.549 committer: marko timestamp: Mon 2007-04-16 07:11:00 +0000 message: branches/zip: Clean up fast index creation. merge_rec_list_t: Define n_records only #ifdef UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.548 committer: marko timestamp: Mon 2007-04-16 07:10:00 +0000 message: branches/zip: Clean up fast index creation. row_merge_dict_table_get_index(): Add function comment. Use inlined versions of mem_alloc() and mem_free(). ------------------------------------------------------------ revno: 0.3.547 committer: marko timestamp: Fri 2007-04-13 12:11:43 +0000 message: branches/zip: fast index creation: Check the status of os_file_read() and os_file_write(), and return DB_CORRUPTION when they fail. Minor cleanup. row_mege_insert_index_tuples(): Use a shared heap for dtuple and rec. Use fewer gotos. row_merge_sort_linked_list_in_disk(): Free the merge blocks at error exit. ------------------------------------------------------------ revno: 0.3.546 committer: marko timestamp: Thu 2007-04-12 12:58:09 +0000 message: branches/zip: Clean up fast index creation. row_merge_read(), row_merge_write(): Add UNIV_LIKELY hints. row_merge_sort_linked_list_in_disk(): Reduce the scope of many variables. Eliminate the variable "selected". ------------------------------------------------------------ revno: 0.3.545 committer: marko timestamp: Thu 2007-04-12 10:32:16 +0000 message: branches/zip: Minor cleanup of merge_file_t and merge_block_header_t. Replace byte offsets of type dulint with block offsets of type ulint. Avoid references to MERGE_BLOCK_SIZE. Improve the language of some comments. row_merge_insert_index_tuples(), row_merge_sort_linked_list_in_disk(): Make the offset a ulint. row_merge_read(), row_merge_write(): Helper functions. Return the status of os_file_read() and os_file_write(). TO DO: check the status in the callers. ------------------------------------------------------------ revno: 0.3.544 committer: marko timestamp: Thu 2007-04-12 05:14:41 +0000 message: branches/zip: More cleanup of fast index creation. innobase_create_temporary_tablename(): Add static qualifier. Allocate the memory from heap. Return a fixed identifier. ha_innobase::add_index(): Allocate all memory from a single heap. Simplify error handling. Use a fixed prefix for temporary table names, because only one add_index() can be active for a given table. mem_heap_empty_noninline(): New function, to be called from ha_innodb.cc. row_build_index_for_mysql(): Remove the parameter new_primary. ------------------------------------------------------------ revno: 0.3.543 committer: marko timestamp: Wed 2007-04-11 12:42:54 +0000 message: branches/zip: Clean up fast index creation. row_merge_remove_index(), row_merge_rename_index(): Remove risky sprintf() calls. Make use of named literals and que_eval_sql(). ------------------------------------------------------------ revno: 0.3.542 committer: marko timestamp: Wed 2007-04-11 12:17:55 +0000 message: branches/zip: Some more cleanup of fast index creation. Move more definitions from row0mysql.h to row0mysql.c. Remove the unused definition of merge_thread. merge_index_def_t: Replace merge_index_field_t** with merge_index_field_t*. Use mem_heap_strdup() when copying strings. ha_innobase::add_index(): Avoid excessive use of current_thd. ------------------------------------------------------------ revno: 0.3.541 committer: marko timestamp: Wed 2007-04-11 09:42:50 +0000 message: branches/zip: row_merge_sort_linked_list_in_disk(): Remove some unnecessary assignments. A memory leak remains at "goto error_handling": the memory allocated with row_merge_block_create() in the beginning of this function will not be freed. ------------------------------------------------------------ revno: 0.3.540 committer: marko timestamp: Wed 2007-04-11 08:16:14 +0000 message: branches/zip: Initial clean up of the merge sort subsystem. Define the merge_rec_ structures in row0merge.c instead of row0merge.h. They are not used in the interface defined in row0merge.h. row_merge_create_file_structure(): Rename to row_merge_file_create(). Input a pointer to a pre-allocated block of memory. row_merge_read_clustered_index(): Replace merge_file_t** with merge_file_t*. row_merge_sort_and_insert_thread(): Remove the declaration. This function was never defined or called. row_merge_is_index_usable(): Correct the formatting. row_build_index_for_mysql(): Allocate an array of merge_file_t instead of an array of pointers to merge_file_t. ------------------------------------------------------------ revno: 0.3.539 committer: marko timestamp: Tue 2007-04-10 08:23:11 +0000 message: branches/zip: Rename INFORMATION_SCHEMA.INNODB_BUDDY to INNODB_ZIP. ------------------------------------------------------------ revno: 0.3.538 committer: marko timestamp: Tue 2007-04-10 08:11:49 +0000 message: branches/zip: Add statistics on page compression and decompression counts. ha_innodb.cc: Add the columns COMPRESSED, COMPRESSED_OK, DECOMPRESSED to INFORMATION_SCHEMA.INNODB_BUDDY. page_zip_compress_count[], page_zip_compress_ok[]: New statistic counters, incremented in page_zip_compress(). page_zip_decompress_count[]: New statistic counter, incremented in page_zip_decompress(). ------------------------------------------------------------ revno: 0.3.537 committer: marko timestamp: Wed 2007-04-04 14:26:06 +0000 message: branches/zip: Fix the merge of branches/fast-index-creation -r1413 in r1414. innodb.test: The error code 1540 has been renumbered to 1542. innodb.result: Adjust the expected value of Innodb_buffer_pool_pages_total. Something may have changed in the BLOB handling in branches/zip. ha_innodb.cc: Add ha_innobase:: prefix to some DBUG_ENTER macros. row_merge_create_temporary_table(): Free the heap only after invoking row_create_table_for_mysql(). The table->col_names points to the heap until the system columns are added by row_create_table_for_mysql(). TODO: use the filename-safe encoding in temporary table names. Test extensively under Valgrind and fix all errors found. Eliminate merge_rec_t and rewrite row0merge.c to write the records directly to the merge blocks. ------------------------------------------------------------ revno: 0.3.536 committer: marko timestamp: Wed 2007-04-04 11:05:33 +0000 message: branches/zip: Merge branches/fast-index-creation -r1413. Fix some bugs. The tests innodb and innodb-index fail, but that might be due to an old MySQL source tree being used. ------------------------------------------------------------ revno: 0.3.535 committer: marko timestamp: Mon 2007-04-02 05:39:41 +0000 message: branches/zip: Merge revisions 1322:1402 from trunk. ------------------------------------------------------------ revno: 0.3.534 committer: marko timestamp: Thu 2007-03-29 08:51:13 +0000 message: branches/zip: Make TRUNCATE TABLE recreate single-table tablespaces. dict_truncate_index_tree(): Add the parameter space for specifying the new tablespace identifier of a single-table tablespace that has been recreated. When SYS_INDEXES.PAGE_NO == FIL_NULL, do not abort but create the index tree. fil_discard_tablespace(): Pass the return code from fil_delete_tablespace(). row_truncate_table_for_mysql(): Attempt to discard and recreate single-table tablespaces. Reassign the tablespace identifier both in the data dictionary (SYS_TABLES and SYS_INDEXES) and in the data dictionary cache. ------------------------------------------------------------ revno: 0.3.533 committer: marko timestamp: Thu 2007-03-29 07:13:22 +0000 message: branches/zip: Minor cleanup in rollback. trx_undo_left(): Add const qualifiers. trx_undo_page_report_insert(): Use exact trx_undo_left() limit. Remove a duplicated trx_undo_left() check. trx_undo_page_report_modify(): Eliminate the local variable len. Document that no prefix for BLOBs needs to be stored in the undo log. Lump two trx_undo_left() checks together. ------------------------------------------------------------ revno: 0.3.532 committer: marko timestamp: Wed 2007-03-28 19:35:52 +0000 message: branches/zip: btr_cur_pessimistic_update(): Add parameter heap. Previously, when big_rec was returned, the fields would point to freed memory. The memory heap was allocated locally, and the data tuple was allocated from the heap, and the big_rec would point to some fields in the data tuple. row_ins_clust_index_entry_by_modify(): Add parameter heap, for the same reason. ------------------------------------------------------------ revno: 0.3.531 committer: marko timestamp: Wed 2007-03-28 18:31:16 +0000 message: branches/zip: Make dtuple_big_rec_free() an inline function. ------------------------------------------------------------ revno: 0.3.530 committer: marko timestamp: Wed 2007-03-28 11:07:28 +0000 message: branches/zip: buf_LRU_block_free_non_file_page(): Flag block->frame allocated before overwriting some fields and flagging the frame freed. Some of the buffer frame may have been flagged freed by the user (such as mem_heap). ------------------------------------------------------------ revno: 0.3.529 committer: marko timestamp: Wed 2007-03-28 09:02:55 +0000 message: branches/zip: Add Valgrind instrumentation to the InnoDB memory management functions. ut_malloc_low(): Flag the block with UNIV_MEM_ALLOC(). Do not flag the block with UNIV_MEM_FREE() in ut_free(), because it would cause bogus Valgrind warnings in the underlying memory allocator. mem_pool_create(): Flag the data area with UNIV_MEM_FREE(). mem_pool_fill_free_list(): Flag the area header with UNIV_MEM_ALLOC(). mem_area_alloc(): Flag the data area with UNIV_MEM_ALLOC(). mem_area_free(): Flag the data area with UNIV_MEM_FREE(). mem_heap_alloc(): Flag the buffer with UNIV_MEM_ALLOC(). mem_heap_block_free(): Flag the block with UNIV_MEM_FREE(). mem_heap_free_top(): Flag the block with UNIV_MEM_FREE(). ------------------------------------------------------------ revno: 0.3.528 committer: marko timestamp: Wed 2007-03-14 12:34:55 +0000 message: branches/zip: Minor cleanup. btr_rec_free_updated_extern_fields(): Remove the parameter do_not_free_inherited, which is always passed as TRUE. btr_cur_unmark_extern_fields(): Invoke rec_offs_any_extern(). btr_cur_unmark_dtuple_extern_fields(): Remove a local variable. ------------------------------------------------------------ revno: 0.3.527 committer: marko timestamp: Mon 2007-03-12 12:01:45 +0000 message: branches/zip: Add the pseudo table INFORMATION_SCHEMA.INNODB_BUDDY for displaying buddy allocator statistics. buf_buddy_used[], buf_buddy_relocated[]: Declare as global symbols. mysql_declare_plugin(innobase): Add MYSQL_INFORMATION_SCHEMA_PLUGIN for innobase_is_buddy ("INNODB_BUDDY"). ------------------------------------------------------------ revno: 0.3.526 committer: marko timestamp: Mon 2007-03-05 09:13:33 +0000 message: branches/zip: dict_mem_table_free(): Remove the call ut_free(table->col_names) that should have been removed in r1264, which made the temporary memory allocations use a caller-supplied heap. ------------------------------------------------------------ revno: 0.3.525 committer: marko timestamp: Thu 2007-03-01 13:53:57 +0000 message: branches/zip: Merge revisions 1271:1322 from trunk. ------------------------------------------------------------ revno: 0.3.524 committer: marko timestamp: Thu 2007-03-01 11:33:26 +0000 message: branches/zip: ibuf_set_free_bits(): Rename to ibuf_set_free_bits_func(), and remove the max_val parameter unless #ifdef UNIV_IBUF_DEBUG ------------------------------------------------------------ revno: 0.3.523 committer: marko timestamp: Thu 2007-03-01 11:28:30 +0000 message: branches/zip: ibuf_update_free_bits_if_full(): Remove the zip_size parameter. Add ibuf_update_free_bits_zip() for compressed pages. ------------------------------------------------------------ revno: 0.3.522 committer: marko timestamp: Wed 2007-02-28 16:04:19 +0000 message: branches/zip: dict_table_copy_types(), dict_index_copy_types(): Add const qualifiers. Correct the documentation of the parameters. ------------------------------------------------------------ revno: 0.3.521 committer: marko timestamp: Wed 2007-02-28 13:19:13 +0000 message: btr_cur_optimistic_insert(): When inserting into a compressed page, pass max_ins_size=UNIV_PAGE_SIZE and increase=ULINT_UNDEFINED to ibuf_update_free_bits_if_full(). Otherwise, a bogus assertion failure may occur when the page is recompressed and there is more space available in the modification log after inserting the record. ------------------------------------------------------------ revno: 0.3.520 committer: marko timestamp: Wed 2007-02-28 11:08:59 +0000 message: branches/zip: Note that page_cur_tuple_insert() can fail without attempting to reorganize a compressed page. This mistake was made in r1308. ------------------------------------------------------------ revno: 0.3.519 committer: marko timestamp: Tue 2007-02-27 11:56:38 +0000 message: branches/zip: Split UNIV_IBUF_COUNT_DEBUG from UNIV_IBUF_DEBUG. ------------------------------------------------------------ revno: 0.3.518 committer: marko timestamp: Tue 2007-02-27 10:21:44 +0000 message: branches/zip: Prepare for a negative return from page_zip_max_ins_size(). ------------------------------------------------------------ revno: 0.3.517 committer: marko timestamp: Tue 2007-02-27 07:25:24 +0000 message: branches/zip: btr_cur_insert_if_possible(): Update the free bits on compressed secondary index pages after attempting the insert. btr_cur_update_alloc_zip(): Reset the insert buffer free bits if there is insufficient space available on secondary index pages. Do not update the bits after successful operation. btr_cur_update_in_place(): Update the free bits in the index buffer. btr_cur_optimistic_update(): First check rec_offs_any_extern(), because checking it is cheaper than checking the "external storage" flags of the update vector. Update the insert buffer free bits in any case after successfully calling btr_cur_update_alloc_zip(). ------------------------------------------------------------ revno: 0.3.516 committer: marko timestamp: Mon 2007-02-26 09:35:02 +0000 message: branches/zip: Update the insert buffer free bits when recompressing a page during update-in-place. page_zip_alloc(): Rename to btr_cur_update_alloc_zip(). Invoke ibuf_update_free_bits_if_full(). ------------------------------------------------------------ revno: 0.3.515 committer: marko timestamp: Tue 2007-02-20 15:01:47 +0000 message: branches/zip: Many places: Avoid re-reorganizing compressed pages after failing insert. Reorganization will have been attempted in page_cur_tuple_insert() or page_cur_rec_insert(). page_zip_reorganize(): Recompute the insert buffer free bits for leaf pages of secondary indexes. ibuf_data_enough_free_for_insert(): Simplify. ------------------------------------------------------------ revno: 0.3.514 committer: marko timestamp: Tue 2007-02-20 13:50:39 +0000 message: branches/zip: page_cur_rec_field_extends(): Fix compilation errors that were introduced when reducing the memory footprint of the data dictionary cache (Bug #20877), around r834. This function is only compiled if PAGE_CUR_LE_OR_EXTENDS is defined in page0cur.h. ------------------------------------------------------------ revno: 0.3.513 committer: marko timestamp: Tue 2007-02-20 13:36:17 +0000 message: branches/zip: Fix bugs related to the insert buffering of compressed tablespaces. btr_page_reorganize_low(): Recompute the insert buffer free bits for compressed pages belonging to a non-clustered index. btr_cur_optimistic_insert(): Determine if the page was reorganized by page_cur_tuple_insert(). Do not attempt to reorganize compressed pages, because that will be attempted by page_cur_tuple_insert(). ------------------------------------------------------------ revno: 0.3.512 committer: marko timestamp: Tue 2007-02-20 11:30:13 +0000 message: branches/zip: btr_cur_optimistic_insert(): If btr_page_reorganize() fails, reset the insert buffer free bits for the page. ------------------------------------------------------------ revno: 0.3.511 committer: marko timestamp: Mon 2007-02-19 20:32:06 +0000 message: branches/zip: Enable the insert buffer on compressed tablespaces. page_zip_max_ins_size(): New function. btr_cur_optimistic_insert(), btr_cur_optimistic_delete(), btr_page_split_and_insert(), btr_compress(): Do not update the ibuf free bits for non-leaf pages or pages belonging to a clustered index. The insert buffer only covers operations on leaf pages of secondary indexes. For pages covered by the insert buffer, limit the max_ins_size to page_zip_max_ins_size(). buf_page_get_gen(): Merge the insert buffer after decompressing the page. buf_page_io_complete(): Relax the assertion about ibuf_count. For compressed-only pages, the insert buffer merge takes place in buf_page_get_gen(). ibuf_index_page_calc_free_bits(), ibuf_index_page_calc_free_from_bits(), ibuf_index_page_calc_free(), ibuf_update_free_bits_if_full(), ibuf_update_free_bits_low(), ibuf_update_free_bits_for_two_pages_low(), ibuf_set_free_bits_low(): Add the parameter zip_size. Limit the maximum insert size to page_zip_max_ins_size(). ------------------------------------------------------------ revno: 0.3.510 committer: marko timestamp: Mon 2007-02-19 14:51:44 +0000 message: branches/zip: page_zip_get_trailer_len(), page_zip_available(): Replace the parameter "dict_index_t* index" with "ibool is_clust". dict_index_is_clust(): Add __attribute__((pure)). ------------------------------------------------------------ revno: 0.3.509 committer: marko timestamp: Mon 2007-02-19 14:23:32 +0000 message: branches/zip: buf_LRU_search_and_free_block(): Do not try to preserve compressed pages, because doing so would require a call to buf_buddy_alloc(), which in turn can invoke buf_LRU_get_free_block() and buf_LRU_search_and_free_block(), potentially infinite recursion. ------------------------------------------------------------ revno: 0.3.508 committer: marko timestamp: Fri 2007-02-16 09:22:50 +0000 message: branches/zip: buf_LRU_search_and_free_block(): Avoid freeing compressed-only pages when they do not occupy too much of the buffer pool. buf0buddy.c, buf0buddy.h: Export buf_buddy_n_frames and buf_buddy_min_n_frames. ------------------------------------------------------------ revno: 0.3.507 committer: marko timestamp: Tue 2007-02-13 12:41:02 +0000 message: branches/zip: Add statistic counters to the buddy allocator. buf_buddy_n_frames: Number of buffer frames allocated for the buddy system buf_buddy_used[]: Counts of allocated blocks, by buddy size. buf_buddy_relocated[]: Counts of blocks relocated, bu buddy size. buf_buddy_alloc_clean(): Note the added configuration parameter buf_buddy_min_n_frames: Preferred minimum buf_buddy_n_frames ------------------------------------------------------------ revno: 0.3.506 committer: marko timestamp: Tue 2007-02-13 11:21:57 +0000 message: branches/zip: buf_LRU_get_free_block(): Add an UNIV_UNLIKELY hint around zip_size. zip_size will be 0 most of the time. ------------------------------------------------------------ revno: 0.3.505 committer: marko timestamp: Tue 2007-02-13 11:15:27 +0000 message: branches/zip: buf_page_get_gen(): After allocating an uncompressed page for decompression, check that the compressed block has not been buffer-fixed or I/O-fixed. This race condition was introduced in r1286. ------------------------------------------------------------ revno: 0.3.504 committer: marko timestamp: Mon 2007-02-12 12:04:49 +0000 message: branches/zip: btr_cur_optimistic_insert(): After dtuple_convert_big_rec(), invoke btr_cur_add_ext() so that rec_size will be computed correctly. Prepare to free the memory heap when handling errors. ------------------------------------------------------------ revno: 0.3.503 committer: marko timestamp: Thu 2007-02-08 14:19:55 +0000 message: branches/zip: buf_page_init_for_read(): Defer the costly calls to buf_buddy_alloc() until after the block has been found not to exist in the buffer pool. buf_buddy_alloc(), buf_buddy_alloc_low(): Make lru an output parameter. Improve documentation. buf_page_init_for_read(): Simplify the code. Check buf_page_hash_get() again if buf_buddy_alloc() released buf_pool->mutex. ------------------------------------------------------------ revno: 0.3.502 committer: marko timestamp: Thu 2007-02-08 12:33:54 +0000 message: branches/zip: buf_page_create(): Do not IO-fix or X-latch the block when not invoking buf_buddy_alloc(). ------------------------------------------------------------ revno: 0.3.501 committer: marko timestamp: Thu 2007-02-08 12:03:03 +0000 message: branches/zip: buf_page_init_for_read(): Do not allocate an uncompressed page frame when reading compressed pages, unless crash recovery is in progress. buf_page_read_low(): Adapt for buf_page_init_for_read() returning buf_page_t* instead of buf_block_t*. ------------------------------------------------------------ revno: 0.3.500 committer: marko timestamp: Thu 2007-02-08 09:08:11 +0000 message: branches/zip: buf_page_init_for_read(), buf_page_create(): Note in the function comments that buf_page_init_for_read() does not perform the state transition to FILE_PAGE. This should have been done in r1286. ------------------------------------------------------------ revno: 0.3.499 committer: marko timestamp: Wed 2007-02-07 13:59:43 +0000 message: branches/zip: Do not decompress blocks in buf_page_init_for_read(), but in buf_page_get_gen(). Adjust comments. This prevents unnecessary decompression in read-ahead when the compressed block exists in the buffer pool. If the block does not exist in the buffer pool, read-ahead will still allocate an uncompressed page and decompress the block. Move buf_block_init_low() and buf_zip_decompress() earlier in the file, because some compilers are unable to inline functions that are defined after the invocation. buf_page_get_gen(): Decompress the block if needed. buf_page_init_for_read(): Do not decompress. ------------------------------------------------------------ revno: 0.3.498 committer: marko timestamp: Mon 2007-02-05 14:05:39 +0000 message: branches/zip: page_zip_write_rec(): Treat records containing externally stored columns as a special case. page_zip_write_rec_ext(): New function for writing records containing externally stored columns. ------------------------------------------------------------ revno: 0.3.497 committer: marko timestamp: Mon 2007-02-05 13:20:00 +0000 message: branches/zip: page_zip_decompress_clust(): Optimize the case when the record does not contain externally stored columns. page_zip_decompress_clust_ext(): New function for decompressing records containing externally stored columns. ------------------------------------------------------------ revno: 0.3.496 committer: marko timestamp: Mon 2007-02-05 12:17:11 +0000 message: branches/zip: ha_innobase::create(): Do not test create_info->used_fields before testing create_info->avg_row_length, because otherwise the table would be converted to uncompressed format by CREATE INDEX and possibly other statements. ------------------------------------------------------------ revno: 0.3.495 committer: marko timestamp: Mon 2007-02-05 11:19:25 +0000 message: branches/zip: Introduce separate functions for handling records containing externally stored columns. page_zip_compress_clust_ext(), page_zip_apply_log_ext(): New functions. page_zip_compress_clust(), page_zip_apply_log(): Check rec_offs_any_extern() and avoid invoking the costly loop in most cases. Similar optimizations can be made in page_zip_decompress_clust() and page_zip_write_rec(). ------------------------------------------------------------ revno: 0.3.494 committer: marko timestamp: Fri 2007-02-02 16:20:48 +0000 message: branches/zip: Speed up rec_offs_any_extern() and rec_offs_n_extern() by adding the REC_OFFS_EXTERNAL flag to rec_offs_base(offsets)[0]. This reduces the processor usage of page_zip_write_rec() by about 40% in one test case. The code could be sped up further by testing rec_offs_any_extern() outside of loops that check rec_offs_nth_extern(). The vast majority of records does not contain any externally stored columns. ------------------------------------------------------------ revno: 0.3.493 committer: marko timestamp: Fri 2007-02-02 11:31:29 +0000 message: branches/zip: Merge revisions 1206:1271 from trunk. ------------------------------------------------------------ revno: 0.3.492 committer: marko timestamp: Thu 2007-02-01 20:56:23 +0000 message: branches/zip: Simplify lock_mode_stronger_or_eq() and lock_mode_compatible() and introduce enum lock_mode. lock_mode_stronger_or_eq(), lock_mode_compatible(): Replace if-then-else chain with a bitwise and against a constant. ------------------------------------------------------------ revno: 0.3.491 committer: marko timestamp: Thu 2007-02-01 09:53:26 +0000 message: branches/zip: Split the function page_cur_insert_rec_low(). page_cur_insert_rec_zip_reorg(): New function: Recompress or reorganize a compressed page. page_cur_insert_rec_zip(): New function: insert a record to a compressed page. page_cur_insert_rec_low(): Only handle inserts to uncompressed pages. ------------------------------------------------------------ revno: 0.3.490 committer: marko timestamp: Wed 2007-01-31 15:11:28 +0000 message: branches/zip: Minor optimization. trx_undo_page_report_modify(), trx_undo_report_row_operation(): Add const qualifier to the parameter rec. Remove some local variables. trx_undo_report_row_operation(): Invoke rec_get_offsets() only once. ------------------------------------------------------------ revno: 0.3.489 committer: marko timestamp: Wed 2007-01-31 14:28:37 +0000 message: branches/zip: btr_search_guess_on_hash(): Eliminate two local variables and optimize one test. ------------------------------------------------------------ revno: 0.3.488 committer: marko timestamp: Wed 2007-01-31 14:12:57 +0000 message: branches/zip: btr_cur_optimistic_insert(): Optimize some tests, eliminate some local variables, and add branching hints. ------------------------------------------------------------ revno: 0.3.487 committer: marko timestamp: Tue 2007-01-30 09:24:18 +0000 message: branches/zip: Avoid memory fragmentation when adding column definitions to tables. dict_mem_table_add_col(): Add the parameter "heap" for temporary memory allocation. Allow it and "name" to be NULL. These parameters are NULL when creating dummy indexes. dict_add_col_name(): Remove calls to ut_malloc() and ut_free(). dict_table_get_col_name(): Allow table->col_names to be NULL. dict_table_add_system_columns(), dict_table_add_to_cache(): Add the parameter "heap". ------------------------------------------------------------ revno: 0.3.486 committer: marko timestamp: Mon 2007-01-29 08:51:20 +0000 message: branches/zip: Make zlib use InnoDB memory heaps when processing BLOBs. page_zip_set_alloc(): New function, to configure zlib to use a memory heap. btr_store_big_rec_extern_fields(): Reduce memLevel, so that a heap of 256 kilobytes will suffice. Use page_zip_set_alloc(). btr_copy_externally_stored_field_prefix_low(): Use page_zip_set_alloc(). page_zip_compress(), page_zip_decompress(): Use page_zip_set_alloc(). ------------------------------------------------------------ revno: 0.3.485 committer: marko timestamp: Wed 2007-01-24 11:41:19 +0000 message: branches/zip: Add UNIV_HASH_DEBUG for detecting multiple invocations of HASH_DELETE(). HASH_ASSERT_VALID(), HASH_INVALIDATE(): New macros, used in HASH_DELETE() and HASH_SEARCH(). buf_page_init_low(): Add HASH_INVALIDATE(bpage, hash); buf_page_init(): Call buf_page_init_low() before HASH_INSERT(), so that bpage->hash will not be invalidated. ------------------------------------------------------------ revno: 0.3.484 committer: marko timestamp: Wed 2007-01-24 10:36:05 +0000 message: branches/zip: buf_page_t: Add the in_page_hash and in_zip_hash for extra validation in UNIV_DEBUG builds. ------------------------------------------------------------ revno: 0.3.483 committer: marko timestamp: Tue 2007-01-23 16:12:14 +0000 message: branches/zip: buf_page_init_for_read(): Decrement, do not reset block->page.buf_fix_count. This mistake was made in r1255. When access to the block is requested by some other thread, buf_fix_count can be incremented during the execution of buf_zip_decompress(). ------------------------------------------------------------ revno: 0.3.482 committer: marko timestamp: Tue 2007-01-23 14:10:48 +0000 message: branches/zip: lock0lock.c: Minor cleanup. Replace some while loops with do..while or for loops. lock_move_rec_list_start(): Replace 2 with PAGE_HEAP_NO_USER_LOW. ------------------------------------------------------------ revno: 0.3.481 committer: marko timestamp: Tue 2007-01-23 14:08:37 +0000 message: branches/zip: buf_page_init_for_read(): When decompressing a compressed block, initialize all the fields of the control block. buf_block_init_low(), buf_page_init_low(): New functions, used in buf_page_init_for_backup_restore(), buf_page_init(), and buf_page_init_for_read(). ------------------------------------------------------------ revno: 0.3.480 committer: marko timestamp: Tue 2007-01-23 10:02:02 +0000 message: branches/zip: lock0lock.c: Add UNIV_UNLIKELY hints to LOCK_WAIT checks. Declare some local variables in narrower scope. lock_move_rec_list_start(): Check for orphan locks #ifdef UNIV_DEBUG ------------------------------------------------------------ revno: 0.3.479 committer: marko timestamp: Mon 2007-01-22 15:46:27 +0000 message: branches/zip: lock_move_reorganize_page(): Move the UNIV_DEBUG check for orphaned locks outside the "for" loop. This mistake was made in r1252. ------------------------------------------------------------ revno: 0.3.478 committer: marko timestamp: Mon 2007-01-22 14:44:34 +0000 message: branches/zip: lock_move_reorganize_page(): Clean up the code a little, and implement UNIV_DEBUG diagnostics for orphaned locks. ------------------------------------------------------------ revno: 0.3.477 committer: marko timestamp: Mon 2007-01-22 10:24:21 +0000 message: branches/zip: Enclose ut_ad(lock_rec_validate_page(...)) inside #ifdef UNIV_DEBUG_LOCK_VALIDATE. lock_rec_validate_page(): Assert that page_find_rec_with_heap_no() returns non-NULL. ------------------------------------------------------------ revno: 0.3.476 committer: marko timestamp: Mon 2007-01-22 08:48:00 +0000 message: branches/zip: Enable assertions on ut_ad(lock_rec_validate_page()). lock_rec_get_nth_bit(), lock_rec_set_nth_bit(), lock_rec_reset_nth_bit(), lock_rec_copy(): Simplify the code. ------------------------------------------------------------ revno: 0.3.475 committer: marko timestamp: Fri 2007-01-19 12:27:47 +0000 message: branches/zip: Fix a bug in the buddy allocator. buf_buddy_relocate_block(): New function, split from buf_buddy_relocate(). Return FALSE when buf_page_can_relocate() returns FALSE. Fix some formatting in buf_buddy_free_low() and buf_page_init_for_read(). ------------------------------------------------------------ revno: 0.3.474 committer: marko timestamp: Thu 2007-01-18 23:10:49 +0000 message: branches/zip: When retrieving compressed BLOBs, avoid allocating uncompressed page frames. buf_page_get_zip(), buf_page_release_zip(): New functions, used by btr_copy_zblob_prefix(). btr_copy_zblob_prefix(): Do not call inflateEnd(). ------------------------------------------------------------ revno: 0.3.473 committer: marko timestamp: Thu 2007-01-18 20:29:35 +0000 message: branches/zip: Fix bugs. buf_LRU_free_block(): Do not allocate the control block when a compressed-only page is being freed. buf_validate(): Note that buf_pool->zip_clean may contain blocks with io_fix == BUF_IO_READ. ------------------------------------------------------------ revno: 0.3.472 committer: marko timestamp: Thu 2007-01-18 18:29:12 +0000 message: branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG. ------------------------------------------------------------ revno: 0.3.471 committer: marko timestamp: Thu 2007-01-18 15:43:59 +0000 message: branches/zip: buf_LRU_free_block(): Allocate a control block for the compressed page also when freeing an unmodified uncompressed page. ------------------------------------------------------------ revno: 0.3.470 committer: marko timestamp: Thu 2007-01-18 14:02:56 +0000 message: branches/zip: Free buffer blocks that are no longer needed for BLOB storage. btr_blob_free(): New function to commit a mini-transaction and to free an uncompressed BLOB block, or the entire block. btr_store_big_rec_extern_fields(): Replace the existing code with btr_blob_free(). The old code may have contained a race condition. btr_free_externally_stored_field(): Completely free the buffer blocks allocated for the freed BLOB. ------------------------------------------------------------ revno: 0.3.469 committer: marko timestamp: Thu 2007-01-18 12:58:39 +0000 message: branches/zip: Merge revisions 1165:1206 from trunk. ------------------------------------------------------------ revno: 0.3.468 committer: marko timestamp: Thu 2007-01-18 09:59:00 +0000 message: branches/zip: Remove the fil_space_get_zip_size() call from buf_page_get_gen(). This saves one mutex operation per block request. buf_page_get_gen(), various macros and functions: Add parameter zip_size. btr_node_ptr_get_child(): Add parameter index. fil_space_get_latch(): Add optional output parameter zip_size. fil_space_get_zip_size(): Return 0 for space id==0, because the system tablespace is never compressed. fsp_header_init(): Remove the parameter zip_size. ibuf_free_excess_pages(): Remove the parameter zip_size. trx_rseg_t, trx_undo_t: Add field zip_size. xdes_lst_get_next(): Remove, unused. ------------------------------------------------------------ revno: 0.3.467 committer: marko timestamp: Thu 2007-01-18 08:35:57 +0000 message: branches/zip: btr_cur_pessimistic_delete(): Correct a comment. ------------------------------------------------------------ revno: 0.3.466 committer: marko timestamp: Wed 2007-01-17 09:07:20 +0000 message: branches/zip: btr_copy_externally_stored_field_prefix_low(): Split the code to subroutines. btr_copy_blob_prefix(): New function: copy the prefix of the externally stored part of an uncompressed BLOB. btr_copy_zblob_prefix(): New function: copy the prefix of the externally stored part of a compressed BLOB. btr_blob_get_part_len(), btr_blob_get_next_page_no(): Add const qualifier to the parameter. ------------------------------------------------------------ revno: 0.3.465 committer: marko timestamp: Tue 2007-01-16 22:19:29 +0000 message: branches/zip: buf_flush_write_block_low(): When flushing a compressed page that also exists in uncompressed form in the buffer pool, pass the compressed frame to fil_io() instead of the uncompressed one when not using the doublewrite buffer. ------------------------------------------------------------ revno: 0.3.464 committer: marko timestamp: Tue 2007-01-16 21:51:40 +0000 message: branches/zip: buf_flush_write_block_low(): Avoid recomputing the compressed page checksum of compressed-only blocks. Pass the compressed page frame to fil_io() when needed. page_zip_calc_checksum(): Skip also FIL_PAGE_LSN and FIL_PAGE_FILE_FLUSH_LSN. buf_flush_init_for_writing(): Expect page to be non-NULL. ------------------------------------------------------------ revno: 0.3.463 committer: marko timestamp: Tue 2007-01-16 18:02:49 +0000 message: branches/zip: Allow dirty compressed-only blocks to exist in the buffer pool and to be flushed to disk. buf_LRU_free_block(): Enable the freeing of uncompressed pages of compressed tablespaces. trx_doublewrite->buf_block_arr[]: Change the type from buf_block_t* to buf_page_t*. buf_flush_ready_for_flush(): Add debug assertion. buf_flush_buffered_writes(), buf_flush_try_page(): Support blocks of type BUF_BLOCK_ZIP_DIRTY. buf_flush_post_to_doublewrite_buf(), buf_flush_write_block_low(): Change the type of the parameter from buf_block_t* to buf_page_t*. buf_flush_init_for_writing(): Allow page to be NULL if page_zip_ is non-NULL. ------------------------------------------------------------ revno: 0.3.462 committer: marko timestamp: Tue 2007-01-16 16:39:53 +0000 message: branches/zip: Note that b (the newly created control block for the compressed page) is not protected by block_mutex. Before releasing buf_pool->mutex, we can simply assign b->io_fix. After reacquiring buf_pool->mutex, we also have to acquire buf_pool->zip_mutex. ------------------------------------------------------------ revno: 0.3.461 committer: marko timestamp: Tue 2007-01-16 16:24:47 +0000 message: branches/zip: buf_LRU_free_block(): When preserving the compressed page of a block, do not release buf_pool->mutex between the time the old control block is removed from buf_pool->page_hash and the new control block is added to it. Prevent operations on the compressed-only block while calling btr_search_drop_page_hash_index() or page_zip_calc_checksum(). buf_LRU_invalidate_tablespace(): Revert the change done in r1223. buf_pool->zip_mutex will have been released by buf_LRU_block_remove_hashed_page() when it returns BUF_BLOCK_ZIP_FREE. ------------------------------------------------------------ revno: 0.3.460 committer: marko timestamp: Tue 2007-01-16 14:37:40 +0000 message: branches/zip: buf_flush_remove(): buf_page_get_mutex(bpage) must have been acquired by the caller. buf_LRU_invalidate_tablespace(): Do not leak buf_pool->zip_mutex when rescanning the LRU list. ------------------------------------------------------------ revno: 0.3.459 committer: marko timestamp: Tue 2007-01-16 14:11:21 +0000 message: branches/zip: buf_LRU_free_block(): When freeing the uncompressed page of a dirty block, relocate the control blocks on buf_pool->flush_list instead of calling buf_flush_insert_into_flush_list(). ------------------------------------------------------------ revno: 0.3.458 committer: marko timestamp: Tue 2007-01-16 13:45:52 +0000 message: branches/zip: buf_page_init_for_read(): X-latch the block before invoking buf_buddy_alloc(). An IO-fixed block must also be x-latched when block->mutex and buf_pool->mutex are released. buf_page_create(): Protect the block during buf_buddy_alloc() by IO-fixing and X-latching it. ------------------------------------------------------------ revno: 0.3.457 committer: marko timestamp: Tue 2007-01-16 13:23:10 +0000 message: branches/zip: btr0cur.c: Add missing #include "buf0lru.h" that should have been added in r1218. ------------------------------------------------------------ revno: 0.3.456 committer: marko timestamp: Tue 2007-01-16 12:40:15 +0000 message: branches/zip: buf_page_init_for_read(): IO-fix the block during buf_zip_decompress(). This will prevent btr_cur_search_to_nth_level() from accessing a half-decompressed leaf page. Internal B-tree nodes (non-leaf pages) in B-tree searches are only protected by the tree latch (index->lock) and by buffer-fixing. ------------------------------------------------------------ revno: 0.3.455 committer: marko timestamp: Tue 2007-01-16 11:56:33 +0000 message: branches/zip: btr_store_big_rec_extern_fields(): Release the uncompressed page frame to save memory. ------------------------------------------------------------ revno: 0.3.454 committer: marko timestamp: Tue 2007-01-16 10:24:13 +0000 message: branches/zip: buf_LRU_block_remove_hashed_page(): When preserving the compressed page, copy the contents from the uncompressed page if necessary. ------------------------------------------------------------ revno: 0.3.453 committer: marko timestamp: Tue 2007-01-16 08:59:39 +0000 message: branches/zip: buf_buddy_alloc_clean(): Remove bogus assertion ut_a(bpage) and update the comments. ------------------------------------------------------------ revno: 0.3.452 committer: marko timestamp: Mon 2007-01-15 16:51:39 +0000 message: branches/zip: When adding a page to the buffer pool, add it to buf_pool->page_hash and buf_pool->LRU before releasing buf_pool->mutex. buf_page_init_for_read(), buf_page_create(): Allocate the compressed page after the block has been added to the buffer pool. Document the reason for this. ------------------------------------------------------------ revno: 0.3.451 committer: marko timestamp: Sun 2007-01-14 20:32:44 +0000 message: branches/zip: buf_LRU_free_block(): Flag the buffer frame fully initialized when calling btr_search_drop_page_hash_index() and uninitialized after that. ------------------------------------------------------------ revno: 0.3.450 committer: marko timestamp: Sat 2007-01-13 21:15:55 +0000 message: branches/zip: Make Valgrind diagnostics more accurate. buf_page_init(): Declare block->frame valid only in the system tablespace. trx_sysf_create(): Declare the rest of the page valid, although it is uninitialized. ------------------------------------------------------------ revno: 0.3.449 committer: marko timestamp: Fri 2007-01-12 22:23:12 +0000 message: branches/zip: Improve Valgrind diagnostics. buf_buddy_relocate(): Document that src may have been split and some of it may be in buf_pool->zip_free[j] for some jstate and next->state in UNIV_DEBUG && UNIV_DEBUG_VALGRIND builds. buf_buddy_free_low(): Flag the entire block valid prior to invoking buf_buddy_remove_from_free() in order to avoid a Valgrind warning about the debug assertion on bpage->state. Remove the Valgrind check for buddy being completely allocated. If it has been split to smaller blocks, some of those blocks may be free. ------------------------------------------------------------ revno: 0.3.448 committer: marko timestamp: Fri 2007-01-12 20:40:42 +0000 message: branches/zip: trx_sys_create_doublewrite_buf(): Revert the change of r1208. We cannot clear the page with memset(), because the page number and tablespace id have already been stamped on it. ------------------------------------------------------------ revno: 0.3.447 committer: marko timestamp: Fri 2007-01-12 14:30:18 +0000 message: branches/zip: buf_buddy_relocate(): Add Valgrind checks. ------------------------------------------------------------ revno: 0.3.446 committer: marko timestamp: Fri 2007-01-12 14:18:22 +0000 message: branches/zip: Add the buf_pool->zip_free[] accessor functions buf_buddy_add_to_free() and buf_buddy_remove_from_free(). Remove some bogus Valgrind warnings. Improve Valgrind instrumentation. ------------------------------------------------------------ revno: 0.3.445 committer: marko timestamp: Fri 2007-01-12 12:36:40 +0000 message: branches/zip: Improve Valgrind instrumentation of allocated memory. UNIV_MEM_FREE(): Declare a memory area free. UNIV_MEM_ALLOC(): Declare a memory area allocated (but uninitialized). UNIV_MEM_DESC(): Associate a memory area with a control block. UNIV_MEM_UNDESC(): Unassociate a control block. trx_sys_create_doublewrite_buf(): Clear the buffer with memset(). buf_page_init(): Add a bogus UNIV_MEM_VALID(block->frame) to silence valid warnings about InnoDB data pages containing uninitialized data. buf_LRU_get_free_only(): Add UNIV_MEM_ALLOC(block->frame). buf_LRU_get_free_block(): Add UNIV_MEM_DESC(block->page.zip.data, block). buf_LRU_free_block(): Add UNIV_MEM_DESC(b->zip.data, b) when allocating a compressed-only control block for a compressed page. buf_LRU_block_free_non_file_page(): Replace UNIV_MEM_INVALID() with UNIV_MEM_FREE(). buf_LRU_block_remove_hashed_page(): Add UNIV_MEM_UNDESC(bpage) when deallocating a compressed-only control block. Add UNIV_MEM_INVALID(block->frame). (The frame should be flagged free by buf_LRU_block_free_non_file_page() moments later.) buf0buddy.c: Disable some extra checks in Valgrind-instrumented builds. Add UNIV_MEM_VALID(), UNIV_MEM_INVALID(), UNIV_MEM_FREE(), UNIV_MEM_ALLOC() as necessary. ------------------------------------------------------------ revno: 0.3.444 committer: marko timestamp: Fri 2007-01-12 09:14:15 +0000 message: branches/zip: buf_relocate(): Copy the block. Invalidate the source block. buf_buddy_block_free(), buf_buddy_free_low(): Flag the freed bytes uninitialized. buf_page_init_for_read(), buf_buddy_relocate(): Do not refer to bpage after invoking buf_relocate(). buf_buddy_relocate(): Flag src uninitialized. ------------------------------------------------------------ revno: 0.3.443 committer: marko timestamp: Wed 2007-01-10 14:36:39 +0000 message: branches/zip: buf_page_io_complete(): Change the parameter type from buf_block_t* to buf_page_t*. Handle compressed-only blocks. ------------------------------------------------------------ revno: 0.3.442 committer: marko timestamp: Wed 2007-01-10 14:36:15 +0000 message: branches/zip: buf_page_init(): Improve diagnostic output in case of buf_pool->page_hash corruption. ------------------------------------------------------------ revno: 0.3.441 committer: marko timestamp: Wed 2007-01-10 12:50:10 +0000 message: branches/zip: buf_page_init_for_read(): Increment the buf_fix_count during the buf_zip_decompress() call. Otherwise, the block may end up being freed by another thread. This bug was caught by the page_zip_validate() check in buf_LRU_block_remove_hashed_page(). ------------------------------------------------------------ revno: 0.3.440 committer: marko timestamp: Wed 2007-01-10 10:08:34 +0000 message: branches/zip: Remove a race condition. buf_page_init_for_read(): Protect the buf_zip_decompress() call with an X-lock on the block. page_zip_validate(): Move the page_is_comp() assertion after the page header comparison. ------------------------------------------------------------ revno: 0.3.439 committer: marko timestamp: Tue 2007-01-09 16:11:11 +0000 message: branches/zip: buf_buddy_free(): Add debug code for detecting live objects in the free area. ------------------------------------------------------------ revno: 0.3.438 committer: marko timestamp: Tue 2007-01-09 15:52:08 +0000 message: branches/zip: buf_LRU_invalidate_tablespace(): After freeing a compressed-only page, restart the scan of the LRU list, because prev_bpage may have been relocated. buf_LRU_block_remove_hashed_page(): Note that other compressed pages or compressed-only blocks may be relocated when freeing a compressed page or a compressed-only block descriptor. ------------------------------------------------------------ revno: 0.3.437 committer: marko timestamp: Tue 2007-01-09 12:56:12 +0000 message: branches/zip: Replace an ut_a() with ut_d(). This mistake was made in r1188. ------------------------------------------------------------ revno: 0.3.436 committer: marko timestamp: Tue 2007-01-09 12:47:15 +0000 message: branches/zip: buf_LRU_free_block(): Correct the logic for releasing dirty uncompressed blocks. Move the page_zip_validate() call to a more appropriate place, buf_LRU_block_remove_hashed_page(). buf_LRU_block_remove_hashed_page(): Allow bpage->oldest_modification != 0 for uncompressed pages if there is a compressed page that will be preserved. Release the mutexes before calling buf_print() and buf_LRU_print(). page_zip_validate(): Remove the assertion containing the buf_frame_get_page_zip() call. We might already be holding buf_pool->mutex. ------------------------------------------------------------ revno: 0.3.435 committer: marko timestamp: Tue 2007-01-09 12:39:50 +0000 message: branches/zip: buf_buddy_alloc_clean(): Restart the scan after a successful buf_LRU_free_block(). buf_LRU_free_block(): Note that buf_pool->mutex may be temporarily released. ------------------------------------------------------------ revno: 0.3.434 committer: marko timestamp: Tue 2007-01-09 12:35:42 +0000 message: branches/zip: buf_page_t: Introduce the field in_flush_list #ifdef UNIV_DEBUG. buf_flush_batch(): Remove the local variable "found". ------------------------------------------------------------ revno: 0.3.433 committer: marko timestamp: Mon 2007-01-08 17:08:57 +0000 message: branches/zip: Maintain a valid checksum for compressed-only pages kept in the buffer pool. buf_LRU_free_block(): When preserving the compressed page, compute the checksum. Also assert page_zip_validate(). buf_zip_decompress(): Add parameter "check" for enabling checksum tests. Before decompressing a compressed-only page from the buffer pool, verify the compressed page checksum. ------------------------------------------------------------ revno: 0.3.432 committer: marko timestamp: Mon 2007-01-08 14:58:20 +0000 message: branches/zip: buf_LRU_free_block(): Check if the block has been reloaded to the buffer pool while we were not holding buf_pool->mutex. If it was, do not attempt to preserve the compressed page. ------------------------------------------------------------ revno: 0.3.431 committer: marko timestamp: Mon 2007-01-08 12:32:31 +0000 message: branches/zip: page_zip_fields_decode(): Do not dereference a null pointer. ------------------------------------------------------------ revno: 0.3.430 committer: marko timestamp: Fri 2007-01-05 21:15:05 +0000 message: branches/zip: Make zlib use InnoDB memory heaps. page_zip_malloc(): Replace ut_malloc(...) with mem_heap_alloc(opaque, ...). page_zip_free(): Dummy function (cannot deallocate from InnoDB memory heaps, and zlib seems to defer deallocation to the very end anyway). page_zip_compress(): Create a big enough heap for the needs of zlib. Replace deflateInit() with deflateInit2(). page_zip_decompress(): Create a big enough heap for the needs of zlib. Replace inflateInit() with inflateInit2(). ------------------------------------------------------------ revno: 0.3.429 committer: marko timestamp: Fri 2007-01-05 21:00:07 +0000 message: branches/zip: buf_get_latched_pages_number(): Count compressed-only blocks too. ------------------------------------------------------------ revno: 0.3.428 committer: marko timestamp: Fri 2007-01-05 20:59:40 +0000 message: branches/zip: mem_heap_create_block(), mem_heap_create_func(): Remove the unused parameter init_block. mem_heap_fast_create(): Remove. struct mem_block_info_struct: Remove the field init_block. ------------------------------------------------------------ revno: 0.3.427 committer: marko timestamp: Fri 2007-01-05 14:03:44 +0000 message: branches/zip: Support compressed-only pages in buf_page_create(). buf_page_get_gen(): Note that buf_read_page() may uncompress a compressed-only page. buf_page_create(): Test buf_page_in_file() instead of BUF_BLOCK_FILE_PAGE. ------------------------------------------------------------ revno: 0.3.426 committer: marko timestamp: Fri 2007-01-05 12:13:28 +0000 message: branches/zip: buf_validate(): Validate also the compressed-only blocks. ------------------------------------------------------------ revno: 0.3.425 committer: marko timestamp: Fri 2007-01-05 11:19:56 +0000 message: branches/zip: buf_page_peek(): Return TRUE also if the page exists in the buffer pool in compressed form only. buf_page_peek_block(): Remove. mutex_enter_fast_func: Remove. ------------------------------------------------------------ revno: 0.3.424 committer: marko timestamp: Fri 2007-01-05 10:49:56 +0000 message: branches/zip: buf_pool_page_hash_rebuild(): Rebuild also buf_pool->zip_hash and add compressed-only pages to buf_pool->page_hash. BUF_POOL_ZIP_FOLD(), BUF_POOL_ZIP_FOLD_PTR(), BUF_POOL_ZIP_FOLD_BPAGE(): Macros for computing buf_pool->zip_hash fold values. Make use of these in buf0buddy.c. buf0buddy.c: Replace some ptr == ut_align_down(ptr, ...) in assertions with !ut_align_offset(ptr, ...). ------------------------------------------------------------ revno: 0.3.423 committer: marko timestamp: Thu 2007-01-04 21:40:10 +0000 message: branches/zip: Allow dirty blocks to be relocated. Allow a transition to BUF_BLOCK_ZIP_DIRTY (discarding the uncompressed page corresponding to a modified compressed page that has not been flushed to disk). buf_page_can_relocate(): New function, modelled after buf_flush_ready_for_replace(). buf_LRU_free_block(): Allow the transition to BUF_BLOCK_ZIP_DIRTY. buf_flush_insert_into_flush_list(): Make the prototype public. buf_buddy_relocate(): Remove an unnecessary switch statement. Use buf_page_can_relocate() instead of buf_flush_ready_for_replace(). buf_page_peek(): Made UNIV_INLINE. Document UNIV_ZIP_DEBUG. ------------------------------------------------------------ revno: 0.3.422 committer: marko timestamp: Thu 2007-01-04 15:45:42 +0000 message: branches/zip: Fix two bugs in the relocation of block descriptors. Improve diagnostics. buf_buddy_relocate(): Do not assume all small blocks to contain only one buf_page_t object. Require an exact size match, as in the case of compressed pages. buf_relocate(): Relocate buf_pool->LRU_old if needed. Validate the LRU list in debug builds. buf_LRU_block_remove_hashed_page(): Do not overwrite FIL_PAGE_OFFSET or FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID. The memory will be invalidated in debug builds of buf_buddy_free(). buf0buddy.c: Add assertions for not holding buf_pool->zip_mutex. The calling thread should not be holding any block->mutex, but it might be too time-consuming to assert against that, even #ifdef UNIV_SYNC_DEBUG. ------------------------------------------------------------ revno: 0.3.421 committer: marko timestamp: Wed 2007-01-03 15:55:36 +0000 message: buf_flush_validate_low(): Minor cleanup. ------------------------------------------------------------ revno: 0.3.420 committer: marko timestamp: Wed 2007-01-03 15:54:05 +0000 message: branches/zip: Before calling buf_buddy_alloc() or buf_buddy_free(), release any block mutexes but hold the buf_pool->mutex. ------------------------------------------------------------ revno: 0.3.419 committer: marko timestamp: Wed 2007-01-03 13:10:46 +0000 message: branches/zip: Use the buddy allocator for managing compressed pages. There is something wrong with the management of compressed-only blocks (BUF_BLOCK_ZIP_PAGE). To disable the creation of such blocks, set zip=TRUE in buf_LRU_block_remove_hashed_page(). buf_LRU_block_remove_hashed_page(): Release buf_pool->zip_mutex when freeing a compressed-only page and its control block, with buf_buddy_free(). Adapt callers. buf_LRU_block_free_hashed_page(): Change the parameter type from buf_page_t* to buf_block_t*. buf_LRU_free_block(): Move below the definition of buf_LRU_add_block_low(). Allocate block descriptor for compressed-only blocks. buf_LRU_block_free_non_file_page(): Replace ut_free() with buf_buddy_free(). buf_zip_decompress(): New function, split from buf_page_io_complete(). buf_page_init_for_read(): Do not allocate the compressed page until it is really needed, to avoid the overhead of the buddy allocator. Decompress compressed-only blocks that are needed again. buf_page_create(): Do not allocate the compressed page until it is really needed, to avoid the overhead of the buddy allocator. buf_validate(): Replace some equality tests on the lengths of the LRU list and the flush lists with greater-or-equal tests, since the counted numbers do not include control blocks for compressed-only pages. ------------------------------------------------------------ revno: 0.3.418 committer: marko timestamp: Wed 2007-01-03 12:34:54 +0000 message: branches/zip: Add __attribute__((const)) or __attribute__((pure)) to all fold functions. ------------------------------------------------------------ revno: 0.3.417 committer: marko timestamp: Wed 2007-01-03 12:34:04 +0000 message: branches/zip: trx_prepare_off_kernel(): Eliminate the local variable must_flush_log, and remove warning about lsn being possibly uninitialized. ------------------------------------------------------------ revno: 0.3.416 committer: marko timestamp: Tue 2007-01-02 21:25:40 +0000 message: branches/zip: buf_page_get_gen(): When checking a guessed block, also check buf_page_in_file(). This error was introduced in r1082. ------------------------------------------------------------ revno: 0.3.415 committer: marko timestamp: Tue 2007-01-02 14:36:59 +0000 message: branches/zip: Merge revisions 1009:1165 from trunk. ------------------------------------------------------------ revno: 0.3.414 committer: marko timestamp: Fri 2006-12-29 09:13:57 +0000 message: branches/zip: Minor cleanup. buf_buddy_get(): New function in buf0buddy.c, to replace the macro in buf0buddy.h. buf_buddy_get_offset(): Remove. buf_buddy_get_slot(): Remove the prototype from buf0buddy.h. This function is for internal use in buf0buddy.ic. ------------------------------------------------------------ revno: 0.3.413 committer: marko timestamp: Fri 2006-12-29 09:07:01 +0000 message: branches/zip: Minor cleanup. buf_page_get_gen(): Cache the result of fil_space_get_zip_size(). trx_commit_off_kernel(): Eliminate the flag must_flush_log. Initialize lsn = 0 to signify must_flush_log == FALSE. log_flush_margin(): Eliminate the flag do_flush. Initialize lsn = 0 to signify do_flush == FALSE. ------------------------------------------------------------ revno: 0.3.412 committer: marko timestamp: Thu 2006-12-21 14:59:41 +0000 message: branches/zip: Fix two bugs in the buddy allocator. buf_buddy_block_free(): Remove the block from buf_pool->zip_hash. buf_buddy_alloc_clean(): Test for buf_page_in_file() before invoking buf_LRU_free_block(). The LRU list also contains "half-freed" blocks (state == BUF_BLOCK_REMOVE_HASH). ------------------------------------------------------------ revno: 0.3.411 committer: marko timestamp: Wed 2006-12-20 15:56:58 +0000 message: branches/zip: Allow the buddy allocator to work for 16-kilobyte pages, twice the maximum block size of the buddy system. buf_page_t: Note that state may change from BUF_BLOCK_READY_FOR_USE to BUF_BLOCK_MEMORY without buf_page_get_mutex() protection [only buf_pool->mutex]. buf_buddy_get_slot(): Extend the output to BUF_BUDDY_SIZES. buf_buddy_alloc(), buf_buddy_free(): Allow sizes up to UNIV_PAGE_SIZE. buf_buddy_alloc_low(), buf_buddy_free_low(), buf_buddy_alloc_clean(): Allow i==BUF_BUDDY_SIZES. ------------------------------------------------------------ revno: 0.3.410 committer: marko timestamp: Wed 2006-12-20 14:07:08 +0000 message: branches/zip: buf_page_get_gen(): Restore the "break" statement to a "for (;;)" loop that was accidentally removed in r1090. ------------------------------------------------------------ revno: 0.3.409 committer: marko timestamp: Wed 2006-12-20 13:29:02 +0000 message: branches/zip: buf_buddy_free_low(): When trying to relocate to a block on the free list, remove the free block from the free list, so that the list item pointers will not be overwritten. ------------------------------------------------------------ revno: 0.3.408 committer: marko timestamp: Wed 2006-12-20 11:38:19 +0000 message: branches/zip: Fix bugs in the buddy allocator and add assertions. buf_buddy_free(), buf_buddy_free_low(): Document that the data must not be pointed to by the buffer pool. Add ut_ad(!buf_pool_contains_zip()) assertions to catch pointers to freed blocks. Validate the zip_free[] lists #ifdef UNIV_DEBUG. buf_buddy_relocate(): Ensure that the size of the compressed page matches. The buddy block can be split, and the control block can be pointing to a smaller compressed page than the one whose relocation is being attempted. ------------------------------------------------------------ revno: 0.3.407 committer: marko timestamp: Tue 2006-12-19 22:12:44 +0000 message: branches/zip: Add the debug function buf_pool_contains_zip() #ifdef UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.406 committer: marko timestamp: Tue 2006-12-19 12:38:18 +0000 message: branches/zip: Correct some bugs in the buddy allocator and add debug code. buf_buddy_alloc_zip() [UNIV_DEBUG]: Byte-fill the allocated blocks with ~i. buf_buddy_block_free() [UNIV_DEBUG]: Clear the frame before releasing it to the buffer pool. buf_buddy_alloc_from() [UNIV_DEBUG]: Byte-fill the free blocks with j. buf_buddy_relocate(): Allow the buf_page_hash_get() lookup to fail, and note the reason. buf_buddy_free_low(): Correctly compute the address of the combined free block. buf_page_struct: Clarify the mutex protection rules. Note that the pointer zip.data is also protected by buf_pool->mutex. ------------------------------------------------------------ revno: 0.3.405 committer: marko timestamp: Mon 2006-12-18 12:55:04 +0000 message: branches/zip: buf_buddy_free_low(): Examine the state bits inside the block before traversing the free list. ------------------------------------------------------------ revno: 0.3.404 committer: marko timestamp: Mon 2006-12-18 12:39:39 +0000 message: branches/zip: buf_buddy_free_low(): Use a byte pointer in arithmetics. buf_buddy_get(): Document that "page" should be a pointer to char or byte. ------------------------------------------------------------ revno: 0.3.403 committer: marko timestamp: Mon 2006-12-18 11:23:58 +0000 message: branches/zip: Fix some bugs in the buddy allocator. buf_buddy_alloc_zip(): Calculate the address with char* aritmetics. buf_buddy_alloc_clean(): Acquire a mutex on the block before calling buf_LRU_free_block(). buf_buddy_relocate(): Remove the bogus assertion about src and dst being buddies of each other. Use mach_read_from_4() instead of page_get_space_id() and page_get_page_no() to avoid page alignment assertions. buf_buddy_free_low(): Replace bogus assertions. ------------------------------------------------------------ revno: 0.3.402 committer: marko timestamp: Fri 2006-12-15 15:05:18 +0000 message: branches/zip: Minor improvements. buf_LRU_block_remove_hashed_page(): Return the new state of the block. Only call buf_LRU_block_free_hashed_page() if buf_LRU_block_remove_hashed_page() did not return BUF_BLOCK_ZIP_FREE, that is, the control block was not freed. buf_LRU_insert_zip_clean(): New function, for inserting a compressed-only block into buf_pool->zip_clean in the LRU order. buf_LRU_block_remove_hashed_page(), buf_LRU_free_block(): Add the flag "zip" for controlling if the compressed page of an uncompressed page should be removed. For now, assume zip==TRUE. buf_LRU_get_free_block(): Replace the test for UT_LIST_GET_LEN(buf_pool->free) with a test for the return value of buf_LRU_get_free_only(). Do not free zip.data, as it must already have been freed. buf_flush_insert_into_flush_list(), buf_flush_insert_sorted_into_flush_list(): Remove compressed-only blocks from the buf_pool->zip_clean list. buf_flush_remove(): Restore compressed-only blocks to the buf_pool->zip_clean list. buf_page_init_for_read(): Uncompress compressed-only blocks when possible. Currently, there cannot be any compressed-only blocks in the buffer pool; they would be inserted by buf_LRU_free_block(bpage, zip=FALSE). ------------------------------------------------------------ revno: 0.3.401 committer: marko timestamp: Fri 2006-12-15 14:47:04 +0000 message: branches/zip: Minor improvements. buf_flush_remove(): New function, for removing a block from the flush list. Sliced from buf_flush_write_complete(). buf_page_set_state(): Allow transitions between BUF_BLOCK_ZIP_PAGE and BUF_BLOCK_ZIP_DIRTY. ------------------------------------------------------------ revno: 0.3.400 committer: marko timestamp: Thu 2006-12-14 15:15:51 +0000 message: branches/zip: Refactor some code for relocating buffer control blocks. buf_relocate(): New function, split from buf_buddy_relocate(). ------------------------------------------------------------ revno: 0.3.399 committer: marko timestamp: Wed 2006-12-13 14:58:54 +0000 message: branches/zip: Make use of the previously unused state BUF_BLOCK_MEMORY. buf_LRU_get_free_block(): Document that the block is in the state BUF_BLOCK_READY_FOR_USE. buf_block_alloc(): Change the state of the block to BUF_BLOCK_MEMORY and document it. Replace those invocations of buf_block_alloc() with buf_LRU_get_free_block() where the allocated block is used for buffer pool input and output. However, temporary copies of B-tree pages during reorganization are not used for file I/O, and such blocks are still allocated with buf_block_alloc(). ------------------------------------------------------------ revno: 0.3.398 committer: marko timestamp: Tue 2006-12-12 16:28:22 +0000 message: branches/zip: Make the buddy allocator reclaim blocks from the end of the LRU list regardless of their size. buf_buddy_alloc_clean_zip(): Rename to buf_buddy_alloc_clean(), now that also uncompressed blocks can be reclaimed. Use buf_buddy_alloc_zip() instead of reusing the freed block directly, since buf_buddy_free() may combine blocks. ------------------------------------------------------------ revno: 0.3.397 committer: marko timestamp: Tue 2006-12-12 12:21:11 +0000 message: branches/zip: Correct the names of two function parameters in buf0flu.ic. ------------------------------------------------------------ revno: 0.3.396 committer: marko timestamp: Tue 2006-12-12 12:14:58 +0000 message: branches/zip: Minor improvements to the buddy allocator. buf_buddy_alloc(), buf_buddy_alloc_low(): Add parameter "lru" for enabling allocation from the list of least-recently-used blocks. buf_buddy_alloc_low(): Release buf_pool->mutex while calling buf_LRU_get_free_block(). ------------------------------------------------------------ revno: 0.3.395 committer: marko timestamp: Mon 2006-12-11 15:48:37 +0000 message: branches/zip: Make the code compile with all debugging enabled buf_buddy_relocate(): Replace ut_align_down() with ut_align_offset() in assertions. buf0buddy.h: Include buf0buf.h and sync0sync.h. ------------------------------------------------------------ revno: 0.3.394 committer: marko timestamp: Mon 2006-12-11 14:27:43 +0000 message: branches/zip: Implement the whole allocation algorithm of compressed pages. buf_LRU_free_block(): Free compressed-only pages and their descriptors with buf_buddy_free(). buf_LRU_get_free_only(): New function for returning a block from buf_pool->free if one is available. Split from buf_LRU_get_free_block(). buf_buddy_alloc_zip(): Rename from buf_buddy_alloc_low() and make static. Remove parameter "split". Always try to split. buf_buddy_free_block(): Rename to buf_buddy_block_free(). buf_buddy_block_register(): New function for registering buf_block_t objects reserved by the allocator. buf_buddy_alloc_from(): New function for allocating an object from a bigger object, and putting the unused parts on the free list. buf_buddy_alloc_clean_zip(): New function for allocating memory by replacing an unmodified compressed page. buf_buddy_alloc_low(): New function for allocating memory, either from the free lists of compressed pages, from the global free list, or from unmodified pages in the buffer pool. ------------------------------------------------------------ revno: 0.3.393 committer: marko timestamp: Mon 2006-12-11 09:59:06 +0000 message: branches/zip: buf_buddy_relocate(): Split some lines differently on popular demand. ------------------------------------------------------------ revno: 0.3.392 committer: marko timestamp: Mon 2006-12-11 09:54:13 +0000 message: branches/zip: Add buf_pool->zip_hash for keeping track on pages allocated to the buddy system for allocating compressed pages and their descriptors. buf_buddy_free_block(): New function: Deallocate the buffer frame. buf_buddy_free(), buf_buddy_free_low(): Return void instead of a pointer to a freed buffer frame. ------------------------------------------------------------ revno: 0.3.391 committer: marko timestamp: Mon 2006-12-11 08:43:55 +0000 message: branches/zip: buf_buddy_relocate(): Relocate buf_page_t objects that represent clean compressed pages (BUF_BLOCK_ZIP_PAGE). ------------------------------------------------------------ revno: 0.3.390 committer: marko timestamp: Fri 2006-12-08 15:55:59 +0000 message: branches/zip: Try to adhere to ISO 9899:1989 where possible. (The recently introduced ib_longlong and %ll length specifier are not C89.) row_ext_t: Change char* buf to byte* buf to avoid signedness warnings. Change the type of all bit fields to unsigned. rec_get_next_ptr(): Add (byte*) casts to avoid arithmetics on void*. page_zip_decompress_clust(): Do not mix declarations and code. ------------------------------------------------------------ revno: 0.3.389 committer: marko timestamp: Fri 2006-12-08 14:44:28 +0000 message: branches/zip: buf_buddy_free_low(): Attempt to relocate the buddy of a free block in order to create two adjacent free blocks that can be recombined. Add some debug assertions. buf_buddy_relocate(): New function: Try to relocate a free block. ------------------------------------------------------------ revno: 0.3.388 committer: marko timestamp: Thu 2006-12-07 15:22:44 +0000 message: branches/zip: Add buf_buddy_free() and buf_buddy_free_low(). ------------------------------------------------------------ revno: 0.3.387 committer: marko timestamp: Thu 2006-12-07 15:20:53 +0000 message: branches/zip: Introduce the constant BUF_BUDDY_HIGH. ------------------------------------------------------------ revno: 0.3.386 committer: marko timestamp: Thu 2006-12-07 15:05:06 +0000 message: branches/zip: Rename buf_buddy_alloc_free() to buf_buddy_alloc() and buf_buddy_alloc_free_low() to buf_buddy_alloc_low(). ------------------------------------------------------------ revno: 0.3.385 committer: marko timestamp: Thu 2006-12-07 14:58:58 +0000 message: branches/zip: buf_buddy_alloc_free(), buf_buddy_alloc_free_low(): Add parameter "split" for enabling splits. ------------------------------------------------------------ revno: 0.3.384 committer: marko timestamp: Thu 2006-12-07 13:29:04 +0000 message: branches/zip: Add the first bits of the binary buddy system for allocating compressed pages from the buffer pool. Makefile.am: Add buf0buddy.h, buf0buddy.ic. buf/Makefile.am: Add buf0buddy.c. Introduce the constants BUF_BUDDY_LOW and BUF_BUDDY_SIZES. buf_pool_t: Add zip_mutex and the lists zip_clean and zip_free[]. buf_page_get_mutex(): Return &buf_pool->zip_mutex instead of NULL. buf_buddy_get_offset(), buf_buddy_get(), buf_buddy_get_slot(), buf_buddy_alloc_free(), buf_buddy_alloc_free_low(): New functions. ------------------------------------------------------------ revno: 0.3.383 committer: marko timestamp: Thu 2006-12-07 10:02:23 +0000 message: branches/zip: Fix some comments in buf0buf.h. ------------------------------------------------------------ revno: 0.3.382 committer: marko timestamp: Tue 2006-12-05 12:31:38 +0000 message: branches/zip: buf_page_t: Rename free_or_flush_list to list and document the possible list memberships. ------------------------------------------------------------ revno: 0.3.381 committer: marko timestamp: Tue 2006-12-05 12:10:30 +0000 message: branches/zip: enum buf_page_state: Add BUF_BLOCK_ZIP_FREE, BUF_BLOCK_ZIP_DIRTY. ------------------------------------------------------------ revno: 0.3.380 committer: marko timestamp: Mon 2006-12-04 13:12:07 +0000 message: branches/zip: buf_LRU_free_block(): Note that buf_LRU_block_remove_hashed_page() changes the state of the block. This error was introduced in r1090. ------------------------------------------------------------ revno: 0.3.379 committer: marko timestamp: Mon 2006-12-04 12:44:06 +0000 message: branches/zip: Remove buf_block_t:free_list. Rename buf_page_t:flush_list to free_or_flush_list. The list node pointers can be shared, because a block can never be belong to both lists at the same time. ------------------------------------------------------------ revno: 0.3.378 committer: marko timestamp: Mon 2006-12-04 12:38:27 +0000 message: branches/zip: buf_page_get_io_fix(): Remove UNIV_SYNC_DEBUG assertions, as the field will be read without mutex protection in buf_page_io_complete(). ------------------------------------------------------------ revno: 0.3.377 committer: marko timestamp: Thu 2006-11-30 15:25:52 +0000 message: branches/zip: Fix compilation errors when UNIV_HOTBACKUP is defined. ------------------------------------------------------------ revno: 0.3.376 committer: marko timestamp: Thu 2006-11-30 15:09:33 +0000 message: branches/zip: Allow some functions to work on compressed-only pages (state == BUF_BLOCK_ZIP_PAGE). Make use of buf_page_in_file() and buf_page_get_mutex(). buf_block_get_newest_modification(): Rename to buf_page_get_newest_modification(). ------------------------------------------------------------ revno: 0.3.375 committer: marko timestamp: Thu 2006-11-30 14:09:29 +0000 message: branches/zip: page_zip_des_t: Enclose m_start in #ifdef UNIV_DEBUG. Add m_nonempty for facilitating the test in page_zip_alloc(). This reduces the combined size of the bit-fields to 32 bits. Thus, sizeof(page_zip_des_t) == 2 machine words on 32-bit and wider systems. ------------------------------------------------------------ revno: 0.3.374 committer: marko timestamp: Thu 2006-11-30 13:27:34 +0000 message: branches/zip: buf_page_t: Move "old" to the same machine word with LRU_position and possibly freed_page_clock. All these fields are protected by buf_pool->mutex rather than buf_page_get_mutex(). buf_page_set_accessed(): Add a mutex_own() assertion. ------------------------------------------------------------ revno: 0.3.373 committer: marko timestamp: Thu 2006-11-30 12:40:33 +0000 message: branches/zip: buf_page_peek_block(): Do not invoke buf_block_get_state() on a NULL pointer. This error was introduced in r1082. ------------------------------------------------------------ revno: 0.3.372 committer: marko timestamp: Thu 2006-11-30 12:27:49 +0000 message: branches/zip: Move the fields related to the least-recently-used algorithm of the buffer pool from buf_block_t to buf_page_t. Replace some buf_block_t* parameters with buf_page_t*. Add accessor functions. ------------------------------------------------------------ revno: 0.3.371 committer: marko timestamp: Thu 2006-11-30 10:33:35 +0000 message: branches/zip: Move all fields that are not needed in compression or decompression from page_zip_des_t to buf_page_t, because the fields needed in compression are modified without holding the block mutex. All writes to bit-fields sharing a machine word must be protected by the same mutex or rw-lock. ------------------------------------------------------------ revno: 0.3.370 committer: marko timestamp: Thu 2006-11-30 09:24:57 +0000 message: branches/zip: Make buf_block_buf_fix_inc() a macro wrapper for buf_block_buf_fix_inc_func() to eliminate an #ifdef in every invocation. ------------------------------------------------------------ revno: 0.3.369 committer: marko timestamp: Thu 2006-11-30 09:23:47 +0000 message: branches/zip: Rename ut_ulonglong_align_down() and ut_ulonglong_align_up() to ut_uint64_align_down() and ut_uint64_align_up(), to reflect the rename of ib_ulonglong to ib_uint64_t in r1085. ------------------------------------------------------------ revno: 0.3.368 committer: marko timestamp: Wed 2006-11-29 14:52:16 +0000 message: branches/zip: Replace ib_ulonglong with ib_uint64_t, since we want exactly 64 bits. "long long" might be longer than 64 bits on some systems. ------------------------------------------------------------ revno: 0.3.367 committer: marko timestamp: Wed 2006-11-29 13:23:28 +0000 message: branches/zip: Make buf_pool->page_hash point to buf_page_t instead of buf_block_t. Move the fields "hash" and "file_page_was_freed" from buf_block_t to buf_page_t. buf_page_in_file(): New function, for checking block state in assertions. ------------------------------------------------------------ revno: 0.3.366 committer: marko timestamp: Tue 2006-11-28 11:08:33 +0000 message: branches/zip: Allow the code to compile with debugging enabled. This was broken in r1066. ------------------------------------------------------------ revno: 0.3.365 committer: marko timestamp: Tue 2006-11-28 10:02:03 +0000 message: branches/zip: Make buf_block_t:old a bit-field. Document the mutex protection of the fields "freed_page_clock" and "old". ------------------------------------------------------------ revno: 0.3.364 committer: marko timestamp: Tue 2006-11-28 09:37:02 +0000 message: branches/zip: Enclose buf_block_t:in_LRU_list in #ifdef UNIV_DEBUG ------------------------------------------------------------ revno: 0.3.363 committer: marko timestamp: Mon 2006-11-27 14:12:09 +0000 message: branches/zip: Move the page flushing fields from buf_block_t to buf_page_t and page_zip_des_t. ------------------------------------------------------------ revno: 0.3.362 committer: marko timestamp: Mon 2006-11-27 13:44:32 +0000 message: branches/zip: page_zip_des_t: Rename "size" to "ssize" and reduce the storage size from 16 to 3 bits. page_zip_get_size(), page_zip_set_size(): New functions. Replace direct references to page_zip_des_t:size with calls to buf_block_get_zip_size(), page_zip_get_size(), and page_zip_set_size(). ------------------------------------------------------------ revno: 0.3.361 committer: marko timestamp: Fri 2006-11-24 13:05:01 +0000 message: branches/zip: Introduce the unsigned 64-bit data type ib_ulonglong for log sequence numbers, to replace dulint. ------------------------------------------------------------ revno: 0.3.360 committer: marko timestamp: Fri 2006-11-24 13:02:31 +0000 message: branches/zip: Since r1057, page_zip_des_init() affects buf_block_get_state(). buf_block_init(), buf_page_init_for_backup_restore(): Assign block->page.zip.state after invoking page_zip_des_init(&block->page). ------------------------------------------------------------ revno: 0.3.359 committer: marko timestamp: Fri 2006-11-24 12:51:05 +0000 message: page_zip_validate(): Replace %lu with %d, because the bit-fields introduced in r1057 are of the int type. ------------------------------------------------------------ revno: 0.3.358 committer: marko timestamp: Fri 2006-11-24 12:49:59 +0000 message: branches/zip: Replace all references to block->space and block->offset, which should have been replaced in r1057. ------------------------------------------------------------ revno: 0.3.357 committer: marko timestamp: Fri 2006-11-24 08:39:53 +0000 message: branches/zip: buf_read_ahead_random(): Stop searching upon exceeding the threshold. ------------------------------------------------------------ revno: 0.3.356 committer: marko timestamp: Fri 2006-11-24 08:32:18 +0000 message: branches/zip: Introduce buf_page_t, a common structure for compressed-only and uncompressed buffer pool pages. buf_block_t: Replace page_zip, space, and offset with buf_page_t page. Replace some integers with bit-fields. enum buf_block_state: Rename to buf_page_state. Add BUF_BLOCK_ZIP_PAGE. page_zip_des_t: Add the field "state". Make the integer fields bit-fields. page_zip_copy(): Document which fields are copied. ------------------------------------------------------------ revno: 0.3.355 committer: marko timestamp: Thu 2006-11-23 15:14:45 +0000 message: branches/zip: Remove buf_block_t:magic_n. buf_block_state_valid(): New macro for replacing the magic_n check ------------------------------------------------------------ revno: 0.3.354 committer: marko timestamp: Thu 2006-11-23 15:12:53 +0000 message: branches/zip: buf_block_set_state(): Allow the state transition from BUF_BLOCK_READY_FOR_USE to BUF_BLOCK_NOT_USED. ------------------------------------------------------------ revno: 0.3.353 committer: marko timestamp: Thu 2006-11-23 15:10:51 +0000 message: branches/zip: Remove bogus debug assertions. buf_block_get_space(), buf_block_get_page_no(): Remove ut_ad(block->buf_fix_count > 0), because since r1052 these functions are also used in low-level code. ------------------------------------------------------------ revno: 0.3.352 committer: marko timestamp: Thu 2006-11-23 14:12:58 +0000 message: branches/zip: Remove most direct references to block->state. buf_block_set_state(): New function. Also checks the state transitions. buf_block_set_file_page(): New function. ------------------------------------------------------------ revno: 0.3.351 committer: marko timestamp: Thu 2006-11-23 13:26:01 +0000 message: branches/zip: Replace most references to block->state, block->offset, and block->space with buf_block_get_state(block), buf_block_get_page_no(block), and buf_block_get_space(block). enum buf_block_state: Replaces the #define'd buf_block_t.state values. buf_block_get_state(): New function. buf_block_get_frame(): Add __attribute__((const)). ------------------------------------------------------------ revno: 0.3.350 committer: marko timestamp: Wed 2006-11-22 13:08:38 +0000 message: branches/zip: Fix errors when compiling with UNIV_DEBUG and UNIV_SYNC_DEBUG. buf0buf.ic: Remove the extern declaration of buf_dbg_counter. It was declared static in buf0buf.c in r1025. ha0ha.c: #include "btr0sea.h" #ifdef UNIV_SYNC_DEBUG. Assertions on btr_search_latch were added in r1041. ------------------------------------------------------------ revno: 0.3.349 committer: marko timestamp: Tue 2006-11-21 15:38:18 +0000 message: branches/zip: Rebuild buf_pool->page_hash after resizing the buffer pool. buf_pool_page_hash_rebuild(): New function. ------------------------------------------------------------ revno: 0.3.348 committer: marko timestamp: Tue 2006-11-21 14:40:14 +0000 message: branches/zip: When shrinking the buffer pool, disable and purge the adaptive hash index, because it might occupy the chunk we would like to free. TODO: In btr_search_check_free_space_in_heap(), release the block if btr_search_latch is not immediately available. buf_pool_shrink(): Split from buf_pool_resize(). btr_search_disabled: New variable, similar to srv_use_adaptive_hash_indexes that was removed earlier. btr_search_disable(): New function: disable and purge the adaptive hash index. btr_search_enable(): New function: enable the adaptive hash index. ha_clear(): New function: Empty a hash table and free the memory heaps. ------------------------------------------------------------ revno: 0.3.347 committer: marko timestamp: Tue 2006-11-21 10:34:42 +0000 message: branches/zip: ha_node_set_data(): Define a wrapper macro, and rename the function to ha_node_set_data_func(). In this way, the #ifdef in the callers can be removed. ------------------------------------------------------------ revno: 0.3.346 committer: marko timestamp: Tue 2006-11-21 10:09:14 +0000 message: branches/zip: Remove some instrumentation and reduce the output of SHOW MUTEX STATUS in non-debug builds. (Bug #24386) ------------------------------------------------------------ revno: 0.3.345 committer: marko timestamp: Thu 2006-11-16 11:23:20 +0000 message: branches/zip: buf_pool_resize(): When shrinking the buffer pool, do not assume that non-file pages are free. After trying to free or flush file pages, do not proceed to buf_chunk_free(), because the calls will temporarily release buf_pool->mutex. Do not flush if there are non-free blocks, because it would not achieve anything. ------------------------------------------------------------ revno: 0.3.344 committer: marko timestamp: Thu 2006-11-16 09:01:53 +0000 message: branches/zip: Make ibuf_validate_low() static and enclose in #ifdef UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.343 committer: marko timestamp: Thu 2006-11-16 09:00:30 +0000 message: branches/zip: Introduce a new preprocessor symbol, UNIV_BUF_DEBUG, and enclose buf_validate() and friends in it. ------------------------------------------------------------ revno: 0.3.342 committer: marko timestamp: Thu 2006-11-16 08:48:28 +0000 message: branches/zip: Add #define UNIV_DEBUG_FILE_ACCESSES to univ.i and enclose all related debug code in #ifdef UNIV_DEBUG_FILE_ACCESSES. This should have no effect on the behaviour, as the symbol is not defined by default. It only reduces the size of buf_block_t and removes some assignments and debug functions. ------------------------------------------------------------ revno: 0.3.341 committer: marko timestamp: Thu 2006-11-16 08:41:10 +0000 message: branches/zip: btr_store_big_rec_extern_fields(): Remove the incomplete statement that was accidentally checked in in r1022. ------------------------------------------------------------ revno: 0.3.340 committer: marko timestamp: Wed 2006-11-15 21:58:01 +0000 message: btr_store_big_rec_extern_fields(): Write the (space_id, page_no) of the record on every compressed BLOB page header, so that compressed BLOBs can be relocated or the chain of BLOB pages can be validated. ------------------------------------------------------------ revno: 0.3.339 committer: marko timestamp: Wed 2006-11-15 21:49:14 +0000 message: branches/zip: Improve the shrinking of the buffer pool. buf_LRU_block_free_non_file_page(): Deallocate block->page_zip.data to avoid ut_a(!block->page_zip.data) in buf_chunk_free(). buf_chunk_free(): Add the assertion ut_a(!block->in_LRU_list). buf_pool_resize(): When shrinking the buffer pool and there are non-free blocks in the candidate chunk, free the clean blocks and move the dirty blocks to the end of the LRU list and request a flush. Proceed if the chunk becomes free, and retry otherwise. ------------------------------------------------------------ revno: 0.3.338 committer: marko timestamp: Wed 2006-11-15 21:41:27 +0000 message: branches/zip: buf_LRU_free_block(): New function, split from buf_LRU_search_and_free_block(). ------------------------------------------------------------ revno: 0.3.337 committer: marko timestamp: Tue 2006-11-14 14:27:26 +0000 message: branches/zip: Implement resizeable buffer pool. mysql.patch: Patch to change or add variables to MySQL innodb.patch: Patch to make the master thread poll requests to resize the buffer pool. Replace srv_pool_size and innobase_buffer_pool_size with srv_buf_pool_size, srv_buf_pool_old_size, and srv_buf_pool_curr_size. Add buf_chunk_t, a collection of buf_block_t. ------------------------------------------------------------ revno: 0.3.336 committer: marko timestamp: Tue 2006-11-14 10:42:50 +0000 message: branches/zip: Correct a bug introduced in r1014: Always assign node->block when assigning node->data. ha_delete(), ha_search_and_delete_if_found(), ha_remove_all_nodes_to_page(): Remove the parameter buf_block_t* block, now that it is stored within the hash data structure in debug builds. ------------------------------------------------------------ revno: 0.3.335 committer: marko timestamp: Mon 2006-11-13 21:53:09 +0000 message: branches/zip: Remove the buf_block_align() calls from ha0ha.c that caused an assertion failure in debug builds when a context switch occurred in buf_LRU_search_and_free_block() before the call to btr_search_drop_page_hash_index() managed to acquire the mutexes again. ha_node_t: Add the field buf_block_t* block. ha_search_and_update_if_found(): Rename to ha_search_and_update_if_found_func() with added buf_block_t* parameter in debug builds. Define the wrapper macro ha_search_and_update_if_found() that always takes the buf_block_t* parameter. ha_insert_for_fold(): Rename to ha_insert_for_fold_func() with added buf_block_t* parameter in debug builds. Define the wrapper macro ha_insert_for_fold() that always takes the buf_block_t* parameter. ------------------------------------------------------------ revno: 0.3.334 committer: marko timestamp: Mon 2006-11-13 10:03:18 +0000 message: branches/zip: Remove the variable innobase_buffer_pool_awe_mem_mb. The bulk of the AWE support was removed in r976. ------------------------------------------------------------ revno: 0.3.333 committer: marko timestamp: Mon 2006-11-13 09:55:31 +0000 message: branches/zip: buf_LRU_block_free_non_file_page(), buf_LRU_block_remove_hashed_page(): Overwrite (space_id,page_no) when freeing a buffer block. This will help catching non-file pages being passed to buf_block_align(). ------------------------------------------------------------ revno: 0.3.332 committer: marko timestamp: Fri 2006-11-10 11:15:59 +0000 message: branches/zip: Merge revisions 968:1009 from trunk. ------------------------------------------------------------ revno: 0.3.331 committer: marko timestamp: Thu 2006-11-02 09:06:49 +0000 message: branches/zip: buf_block_align(): Remove from non-debug builds. btr_search_guess_on_hash(), btr_search_validate(): Instead of buf_block_align(), call buf_page_hash_get(), and allow it to return NULL. ------------------------------------------------------------ revno: 0.3.330 committer: marko timestamp: Wed 2006-11-01 10:06:29 +0000 message: branches/zip: btr_cur_position(): Replace buf_block_get_frame(block) with block->frame, because in btr_search_guess_on_hash(), it may occur that block->buf_fix_count == 0. ------------------------------------------------------------ revno: 0.3.329 committer: marko timestamp: Wed 2006-11-01 09:20:22 +0000 message: branches/zip: ibuf_merge_or_delete_for_page(): Replace all calls buf_block_get_frame(block) with block->frame in order to avoid debug assertions about block->buf_fix_count == 0. ------------------------------------------------------------ revno: 0.3.328 committer: marko timestamp: Wed 2006-11-01 08:13:58 +0000 message: branches/zip: os_mem_alloc_large(), os_mem_free_large(): On POSIX, use mmap() and munmap(). On Windows, use VirtualAlloc() and VirtualFree(). Only on Netware, use ut_malloc_low() and ut_free(). The lower-level functions on POSIX and Windows allow InnoDB to return memory to the operating system when the buffer pool is shrunk. ------------------------------------------------------------ revno: 0.3.327 committer: marko timestamp: Tue 2006-10-31 16:51:16 +0000 message: branches/zip: Enclose some more debug code in #ifdef UNIV_SYNC_DEBUG to allow the code to be built with UNIV_DEBUG but without UNIV_SYNC_DEBUG. ------------------------------------------------------------ revno: 0.3.326 committer: marko timestamp: Tue 2006-10-31 09:59:15 +0000 message: branches/zip: Remove buf_pool->frame_zero and buf_pool->high_end. ------------------------------------------------------------ revno: 0.3.325 committer: marko timestamp: Mon 2006-10-30 19:46:31 +0000 message: branches/zip: ha_delete_hash_node(): Do not call buf_block_align(). Instead, get buf_block_t* as a parameter. Without this patch, buf_page_hash_get() would return NULL in buf_block_align(). The function buf_LRU_search_and_free_block() invokes buf_LRU_block_remove_hashed_page(), which removes the hash mapping needed by buf_page_hash_get(). ------------------------------------------------------------ revno: 0.3.324 committer: marko timestamp: Mon 2006-10-30 16:18:23 +0000 message: branches/zip: Always call buf_block_align() while holding buf_pool->mutex. This was forgotten from r977. ------------------------------------------------------------ revno: 0.3.323 committer: marko timestamp: Mon 2006-10-30 15:38:58 +0000 message: branches/zip: Replace buf_pool->max_size with buf_pool->curr_size in debug assertions. This was forgotten from r977. ------------------------------------------------------------ revno: 0.3.322 committer: marko timestamp: Mon 2006-10-30 15:15:19 +0000 message: branches/zip: Prepare for buffer pool allocation in several chunks. buf_pool_t: Remove n_frames, max_size, and blocks_of_frames. The current buffer pool size is in curr_size. buf_pool_init(): Remove parameter max_size. buf_pool_get_max_size(), buf_pool_is_block(): Remove. buf_block_align(): Do not assume that the buffer pool is allocated in one chunk. Replace dependency on buf_pool->blocks_of_frames with a call to buf_page_hash_get(). ------------------------------------------------------------ revno: 0.3.321 committer: marko timestamp: Mon 2006-10-30 13:48:08 +0000 message: branches/zip: Remove support for AWE (Intel PAE on Win32). Removal of the variable innobase_buffer_pool_awe_mem_mb requires coordination with MySQL AB. ------------------------------------------------------------ revno: 0.3.320 committer: marko timestamp: Mon 2006-10-30 13:44:00 +0000 message: branches/zip: Port r973 from trunk. Do not break the latching order in TRUNCATE TABLE. dict_truncate_index_tree(): Replace parameter rec_t* rec with btr_pcur_t* pcur. Reposition pcur before calling btr_create(). sync_thread_add_level(): Remove the relaxation of the assertion added in r968. ------------------------------------------------------------ revno: 0.3.319 committer: marko timestamp: Mon 2006-10-30 09:25:08 +0000 message: branches/zip: Enclose some debug code in #ifdef UNIV_SYNC_DEBUG. The code was previously unused in non-debug builds. ------------------------------------------------------------ revno: 0.3.318 committer: marko timestamp: Mon 2006-10-30 09:19:41 +0000 message: branches/zip: Minor cleanup. btr_pcur_restore_position(): Add const qualifiers. buf_LRU_block_remove_hashed_page(): Reduce the amount of buf_page_hash_get() calls and add a UNIV_UNLIKELY hint to an assertion-like test. ------------------------------------------------------------ revno: 0.3.317 committer: marko timestamp: Mon 2006-10-30 09:11:31 +0000 message: branches/zip: Merge revisions 962:968 from trunk. ------------------------------------------------------------ revno: 0.3.316 committer: marko timestamp: Fri 2006-10-27 13:12:47 +0000 message: branches/zip: dict_load_table(): Note that dict_sys_tables_get_zip_size() returns the compressed page size in kilobytes, not bytes. ------------------------------------------------------------ revno: 0.3.315 committer: marko timestamp: Thu 2006-10-26 13:05:45 +0000 message: branches/zip: lock0lock.c: Add const qualifiers to and assertions about block->frame matching rec. ------------------------------------------------------------ revno: 0.3.314 committer: marko timestamp: Thu 2006-10-26 13:04:49 +0000 message: branches/zip: row_ins_foreign_check_on_constraint(), row_ins_check_foreign_constraint(): Pass the correct block to the lock_ functions. ------------------------------------------------------------ revno: 0.3.313 committer: marko timestamp: Thu 2006-10-26 13:03:43 +0000 message: branches/zip: row0ins.c: Add const qualifiers to function parameters. ------------------------------------------------------------ revno: 0.3.312 committer: marko timestamp: Thu 2006-10-26 11:56:51 +0000 message: branches/zip: Merge revisions 934:962 from trunk. ------------------------------------------------------------ revno: 0.3.311 committer: marko timestamp: Thu 2006-10-26 11:13:59 +0000 message: branches/zip: btr_lift_page_up(): Omit father_block from blocks[], because the level of that page needs to be adjusted separately. ------------------------------------------------------------ revno: 0.3.310 committer: marko timestamp: Thu 2006-10-26 08:52:14 +0000 message: branches/zip: Add const qualifiers to read-only pointers. rec_get_nth_field_offs_old(): Split from rec_get_nth_field_old(). rec_get_nth_field_old(): Reimplement as a constness-preserving macro. dict_drop_index_tree(), dict_truncate_index_tree(): Note that rec is an in/out parameter, as the B-tree root page number will be updated. ------------------------------------------------------------ revno: 0.3.309 committer: marko timestamp: Thu 2006-10-26 08:47:00 +0000 message: branches/zip: btr_store_big_rec_extern_fields(): Replace page_get_page_no(page_align(field_ref)) calls with a local variable rec_page_no = buf_block_get_page_no(rec_block). ------------------------------------------------------------ revno: 0.3.308 committer: marko timestamp: Thu 2006-10-26 08:04:16 +0000 message: branches/zip: btr_compress(): Enclose an assertion inside #ifdef UNIV_BTR_DEBUG, as it depends on other #ifdef UNIV_BTR_DEBUG code. ------------------------------------------------------------ revno: 0.3.307 committer: marko timestamp: Thu 2006-10-26 07:50:51 +0000 message: branches/zip: After merge (r956) fix: Implement dict_index_get_if_in_cache_low() correctly. Restore the function dict_index_get_if_in_cache() #ifdef UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.306 committer: marko timestamp: Wed 2006-10-25 11:19:12 +0000 message: branches/zip: Merge revisions 887:934 from trunk. ------------------------------------------------------------ revno: 0.3.305 committer: marko timestamp: Wed 2006-10-25 11:03:27 +0000 message: branches/zip: Clean up things found in an inlined build. buf0lru.c: Always #include "srv0srv.h" buf_block_get_lock_mutex(), buf_frame_get_lock_mutex(): Remove. mtr0log.ic: Remove #include "page0page.h" and replace the page_ functions with lower-level ones to break an #include cycle. dict0dict.ic: Remove unnecessary #include "trx0undo.h" and "trx0sys.h" that would create an #include cycle. ------------------------------------------------------------ revno: 0.3.304 committer: marko timestamp: Wed 2006-10-25 08:52:43 +0000 message: branches/zip: Remove a few buf_block_align() calls from debug builds. btr_check_node_ptr(): Replace page_t* parameter with buf_block_t*. btr_free_externally_stored_field(): Add const qualifier to rec. Remove an explicit buf_block_align() call, but replace an mtr_memo_contains() with mtr_memo_contains_page(). row_upd_rec_sys_fields(): Reorder an assertion containing buf_block_align() so that the costly call can be avoided in some cases. ------------------------------------------------------------ revno: 0.3.303 committer: marko timestamp: Wed 2006-10-25 08:45:25 +0000 message: branches/zip: page_cur_insert_rec_low(): Replace rec_t* current_rec with rec_t** current_rec. Reposition *current_rec after calling page_zip_reorganize(). ------------------------------------------------------------ revno: 0.3.302 committer: marko timestamp: Tue 2006-10-24 14:06:31 +0000 message: branches/zip: Remove all references to buf_block_align() except those from the adaptive hash index [btr_search_guess_on_hash() and btr_search_validate()]. Some references to buf_block_align() remain in debug builds. btr_store_big_rec_extern_fields(): Add the parameter rec_block. page_rec_get_next_low(): Do not assume that the page has been allocated from the buffer pool when printing the diagnostic information. page_cur_insert_rec_low(): Replace the parameter page_zip_des_t* page_zip with the parameter buf_block_t* block. ------------------------------------------------------------ revno: 0.3.301 committer: marko timestamp: Tue 2006-10-24 11:54:01 +0000 message: branches/zip: lock_update_discard(): Fix a bug introduced in r949: Compare heap_no against PAGE_HEAP_NO_SUPREMUM instead of PAGE_NEW_SUPREMUM or PAGE_OLD_SUPREMUM. ------------------------------------------------------------ revno: 0.3.300 committer: marko timestamp: Tue 2006-10-24 11:03:46 +0000 message: branches/zip: mem_heap_create_block(): Correct an error introduced in r909: Return NULL when trying to use heap->free_block that is NULL. ------------------------------------------------------------ revno: 0.3.299 committer: marko timestamp: Tue 2006-10-24 06:45:52 +0000 message: branches/zip: Remove all buf_block_align() calls from lock0lock.c. Replace all page_t* parameters with buf_block_t*, and replace many rec_t* parameters with heap_no. This eliminates also many rec_get_heap_no() calls, which became more expensive with the introduction of ROW_FORMAT=COMPACT in MySQL/InnoDB 5.0.3. page_rec_get_heap_no(), lock_get_min_heap_no(): New functions. ------------------------------------------------------------ revno: 0.3.298 committer: marko timestamp: Mon 2006-10-23 19:34:45 +0000 message: branches/zip: buf_page_get_release_on_io(), buf_page_get_gen(): Replace buf_frame_t* guess with buf_block_t* guess in order to avoid a buf_block_align() call. trx_undo_t: Replace page_t* guess_page with buf_block_t* guess_block. btr_search_t: Replace page_t* root_guess with buf_block_t* root_guess. ------------------------------------------------------------ revno: 0.3.297 committer: marko timestamp: Mon 2006-10-23 19:14:36 +0000 message: branches/zip: Minor cleanup. buf_calc_page_new_checksum(), buf_calc_page_old_checksum(), buf_page_is_corrupted(), buf_page_print(): Add const qualifier to byte* parameter. page_parse_create_zip(): Remove this declaration of non-existing function. page_rec_check(), page_rec_print(), row_vers_impl_x_locked_off_kernel(): Add const qualifier to rec_t* parameter. row_vers_old_has_index_entry(): Add const qualifier to dtuple_t* parameter. row_sel_sec_rec_is_for_blob(): Add const qualifiers. Replace some occurrences of mtr_memo_contains_page() with mtr_memo_contains(). ------------------------------------------------------------ revno: 0.3.296 committer: marko timestamp: Mon 2006-10-23 18:29:14 +0000 message: branches/zip: row_sel_sec_rec_is_for_clust_rec(): Augment the bug fix in r918: After calling row_sel_sec_rec_is_for_blob(), skip the cmp_data_data() comparison of the incomplete prefix. ------------------------------------------------------------ revno: 0.3.295 committer: marko timestamp: Mon 2006-10-23 18:26:10 +0000 message: branches/zip: Minor cleanup. page_set_max_trx_id(): Replace page_t* parameter with buf_block_t*, to avoid a buf_block_align() call. Replace some occurrences of page_get_page_no() with buf_block_get_page_no(). page_cur_delete_rec(): Replace buf_block_align() with page_cur_get_block(). ------------------------------------------------------------ revno: 0.3.294 committer: marko timestamp: Mon 2006-10-23 11:38:32 +0000 message: branches/zip: Fix some bugs. btr_cur_pessimistic_insert(): Remove local variable "block". Replace an extraneous call to btr_cur_position() [with wrong "block", in r948] with a debug assertion that the cursor is positioned on the preceding record after the page split. btr_pcur_restore_position(): Do not use btr_pcur_get_page(), because the debug assertion there could fail. This bug was introduced in r928. ------------------------------------------------------------ revno: 0.3.293 committer: marko timestamp: Fri 2006-10-20 13:50:40 +0000 message: branches/zip: Add const qualifiers to some read-only byte* and rec_t* parameters of some functions. ------------------------------------------------------------ revno: 0.3.292 committer: marko timestamp: Fri 2006-10-20 13:49:42 +0000 message: branches/zip: btr_search_drop_page_hash_index(): Do not call buf_block_get_frame(), because it will lead to debug assertion failure when buf_fix_count == 0. This bug was introduced in r908. ------------------------------------------------------------ revno: 0.3.291 committer: marko timestamp: Fri 2006-10-20 12:45:53 +0000 message: branches/zip: Remove some more buf_block_align() calls. btr_cur_t: Move page_block to page_cur_t::block. page_cur_get_block(), page_cur_get_page_zip(): New functions. page_cur_position(): Add parameter block. Remove many page_zip parameters, now that there is page_cur_get_page_zip(). Replace some page, page_zip parameters with block. Add some const qualifiers to function parameters and remove casts. PAGE_HEAP_NO_INFIMUM, PAGE_HEAP_NO_SUPREMUM, PAGE_HEAP_NO_USER_LOW: New constants. Replace some cursor code in low-level diagnostic functions with direct management of rec, because buf_block_t::buf_fix_count may be 0 when the functions are called, and debug assertions would fail. ------------------------------------------------------------ revno: 0.3.290 committer: marko timestamp: Fri 2006-10-20 12:22:42 +0000 message: branches/zip: btr_search_guess_on_hash(): Do not call buf_block_get_frame(), because it will lead to debug assertion failure when buf_fix_count == 0. This bug was introduced in r912. ------------------------------------------------------------ revno: 0.3.289 committer: marko timestamp: Fri 2006-10-20 11:54:13 +0000 message: branches/zip: btr_cur_open_at_index_side(): Correct a debug assertion added in r928. Do not call btr_cur_get_block() in the debug assertion, because the debug assertion there would fail. ------------------------------------------------------------ revno: 0.3.288 committer: marko timestamp: Fri 2006-10-20 11:35:32 +0000 message: branches/zip: buf_merge_or_delete_for_page(): Correct some debug assertions. We cannot call buf_block_get_space() or buf_block_get_page_no(), because the assertions there can fail. ------------------------------------------------------------ revno: 0.3.287 committer: marko timestamp: Fri 2006-10-20 11:10:46 +0000 message: branches/zip: mem_heap_block_free(): Fix a bug introduced in r914 while trying to fix r909: invoke mem_erase_buf() before freeing the buffer, but after interpreting block->buf_block. ------------------------------------------------------------ revno: 0.3.286 committer: marko timestamp: Fri 2006-10-20 08:30:07 +0000 message: branches/zip: Add const qualifiers to function parameters, mostly dtuple_t. ------------------------------------------------------------ revno: 0.3.285 committer: marko timestamp: Thu 2006-10-19 11:07:50 +0000 message: branches/zip: Remove many fil_space_get_zip_size() calls. ibuf_page(), ibuf_page_low(), ibuf_free_excess_pages(), ibuf_insert(), buf_read_page(), buf_read_ahead_linear(), buf_read_recv_pages(): Add parameter zip_size. ------------------------------------------------------------ revno: 0.3.284 committer: marko timestamp: Thu 2006-10-19 08:27:34 +0000 message: branches/zip: Remove some more buf_block_align() calls. btr_search_build_page_hash_index(), fsp_parse_init_file_page(), ibuf_parse_bitmap_init(): Replace page_t* with buf_block_t*. buf_read_ibuf_merge_pages(): Add const qualifiers. Retrieve zip_size. ibuf_merge_or_delete_for_page(): Replace page_t* with buf_block_t*. Add parameter zip_size. ------------------------------------------------------------ revno: 0.3.283 committer: marko timestamp: Thu 2006-10-19 07:52:28 +0000 message: branches/zip: Remove some more casts. dict_index_get_nth_col_pos(), dict_index_get_sys_col_pos(), dict_index_get_n_fields(), fil_page_get_type(): Add const qualifier to parameter. dict_index_get_nth_field(): Implement as a macro unless #ifdef UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.282 committer: marko timestamp: Thu 2006-10-19 07:27:26 +0000 message: branches/zip: Remove the casts introduced in r920 and r925. Replace the accessors returning pointers with macros that preserve const qualifiers. In UNIV_DEBUG builds, retain the accessors and cast away constness there. dfield_get_type(), dfield_get_data(), dtuple_get_nth_field(), dict_table_get_nth_col(), dict_table_get_sys_col(): Implement as macro unless #ifdef UNIV_DEBUG. rec_get_nth_field(): Replace with rec_get_nth_field_offs() that does not do pointer arithmetics. Implement rec_get_nth_field() as a macro. ------------------------------------------------------------ revno: 0.3.281 committer: marko timestamp: Wed 2006-10-18 18:52:04 +0000 message: branches/zip: ha_create(): Remove parameter in_btr_search, which was passed as TRUE. Enclose hash_table_t::adaptive and buf_block_t::n_pointers in #ifdef UNIV_DEBUG. btr_search_drop_page_hash_index(): Enclose the corruption check (which depends on buf_block_t::n_pointers) in #ifdef UNIV_DEBUG. ------------------------------------------------------------ revno: 0.3.280 committer: marko timestamp: Wed 2006-10-18 17:43:04 +0000 message: branches/zip: btr_cur_t: replace left_page with left_block, to avoid calling buf_block_align() in btr_pcur_move_backward_from_page(). Also, enclose some assertions about page_is_comp() in #ifdef UNIV_BTR_DEBUG. ------------------------------------------------------------ revno: 0.3.279 committer: marko timestamp: Wed 2006-10-18 11:39:31 +0000 message: branches/zip: Eliminate many buf_block_align() calls. Replace page_t* or page_zip_des_t* parameters in some functions with buf_block_t*. buf_frame_get_page_zip(): Disable unless #ifdef UNIV_DEBUG || UNIV_ZIP_DEBUG. btr_cur_t: Add buf_block_t* page_block. btr_pcur_get_block(), btr_cur_get_block(), btr_cur_get_page_zip(): New functions. btr_cur_position(): Add the parameter block. ------------------------------------------------------------ revno: 0.3.278 committer: marko timestamp: Tue 2006-10-17 12:24:13 +0000 message: branches/zip: Introduce const qualifiers to many read-only parameters and modify some functions to return const pointers. Add const qualifiers to local variable declarations or casts to remove the const qualifier in those places where write access is needed. ------------------------------------------------------------ revno: 0.3.277 committer: marko timestamp: Tue 2006-10-17 12:13:15 +0000 message: branches/zip: Allow compilation with UNIV_DEBUG without defining the symbol UNIV_DEBUG_PRINT, which was introduced in r729. buf_LRU_print(), buf_print(): Replace #ifdef UNIV_DEBUG_PRINT with #if defined UNIV_DEBUG || defined UNIV_DEBUG_PRINT. ------------------------------------------------------------ revno: 0.3.276 committer: marko timestamp: Mon 2006-10-16 11:42:46 +0000 message: branches/zip: Add const qualifiers to read-only rec_t* parameters of rec accessor functions. ------------------------------------------------------------ revno: 0.3.275 committer: marko timestamp: Fri 2006-10-13 13:40:25 +0000 message: branches/zip: row_sel_sec_rec_is_for_blob(): Add parameters mbminlen, mbmaxlen. Trim the fetched prefix with dtype_get_at_most_n_mbchars(). ------------------------------------------------------------ revno: 0.3.274 committer: marko timestamp: Fri 2006-10-13 13:03:06 +0000 message: branches/zip: buf_ptr_get_fsp_addr(): Change parameter ptr to const void*, and remove the buf_block_align() call. ------------------------------------------------------------ revno: 0.3.273 committer: marko timestamp: Fri 2006-10-13 13:02:00 +0000 message: branches/zip: row_sel_get_clust_rec_for_mysql(): Improve formatting. ------------------------------------------------------------ revno: 0.3.272 committer: marko timestamp: Fri 2006-10-13 11:55:27 +0000 message: branches/zip: Remove some more buf_block_align() calls. Replace buf_frame_modify_clock_inc() with buf_block_modify_clock_inc(). Replace buf_frame_get_lock_hash_val() with buf_block_get_lock_hash_val(). Replace buf_frame_get_lock_mutex() with buf_block_get_lock_mutex(). page_create_zip(), page_create(), page_create_low(), btr_page_free(), btr_page_free_low(): Replace page_t with buf_block_t. ------------------------------------------------------------ revno: 0.3.271 committer: marko timestamp: Fri 2006-10-13 11:50:33 +0000 message: branches/zip: mem_heap_block_free(): Fix a bug introduced in r909: invoke mem_erase_buf() only after interpreting block->buf_block. ------------------------------------------------------------ revno: 0.3.270 committer: marko timestamp: Fri 2006-10-13 09:15:17 +0000 message: branches/zip: Eliminate some more buf_block_align() calls. ibuf_update_free_bits_low(), ibuf_update_free_bits_for_two_pages_low(), ibuf_set_free_bits_low(): Replace page_t with buf_block_t. ------------------------------------------------------------ revno: 0.3.269 committer: marko timestamp: Fri 2006-10-13 07:45:52 +0000 message: branches/zip: Remove more references to buf_block_align(). ibuf_reset_free_bits(): Remove, as there already is a similar function ibuf_reset_free_bits_with_type(). ibuf_reset_free_bits_with_type(), ibuf_set_free_bits(), ibuf_update_free_bits_if_full(), btr_leaf_page_release(), buf_page_make_young(): Replace page_t with buf_block_t. btr_compress(): Replace btr_page_get() with btr_block_get(). ------------------------------------------------------------ revno: 0.3.268 committer: marko timestamp: Thu 2006-10-12 18:39:43 +0000 message: branches/zip: Eliminate some more buf_block_align() calls. mlog_write_initial_log_record_fast(): Remove the buf_block_align() call unless #ifdef UNIV_DEBUG. btr_cur_update_in_place(): Replace buf_frame_get_page_zip() with buf_block_get_page_zip(). btr_page_create(), btr_page_empty(): Replace the parameter page with block. btr_attach_half_pages(): Use btr_block_get() instead of btr_page_get(). Remove buf_block_align() calls. btr_cur_latch_leaves(): Remove duplicated code. Use btr_block_get() instead of btr_page_get(). Remove buf_block_align() calls. ------------------------------------------------------------ revno: 0.3.267 committer: marko timestamp: Thu 2006-10-12 12:44:46 +0000 message: branches/zip: mem_heap_create_block(): Correct an error introduced in r909: When allocating a block from heap->free_block, set buf_block. ------------------------------------------------------------ revno: 0.3.266 committer: marko timestamp: Thu 2006-10-12 12:38:29 +0000 message: branches/zip: Replace buf_frame_alloc() and buf_frame_free() with buf_block_alloc() and buf_block_free(), in order to avoid buf_block_align() calls. ------------------------------------------------------------ revno: 0.3.265 committer: marko timestamp: Thu 2006-10-12 11:05:22 +0000 message: branches/zip: Reduce the number of buf_block_align() calls. btr_block_get(): New function to return buf_block_t. btr_page_alloc(), buf_page_get_release_on_io(), buf_page_get_gen(), buf_page_create(), fseg_create(), fseg_create_general(): Return buf_block_t. buf_page_get_known_nowait(): Expect buf_block_t instead of buf_frame_t. buf_frame_get_newest_modification(): Replace with buf_block_get_newest_modification(). buf_page_dbg_add_level(): Replace with buf_block_dbg_add_level(). buf_block_get_zip_size(): New function. buf_block_get_page_zip(): Reintroduce. recv_recover_page(): Replace page, space, page_no with block. ibuf_bitmap_page_init(): Replace page, zip_size with block. ibuf_parse_bitmap_init(): Remove the parameter zip_size. btr_search_drop_page_hash_index(): Replace page with block. ------------------------------------------------------------ revno: 0.3.264 committer: marko timestamp: Thu 2006-10-12 07:02:36 +0000 message: branches/zip: Replace buf_frame_get_page_no() and buf_frame_get_space_id() with page_get_page_no() and page_get_space_id(). We want to avoid buf_block_align() calls, and the page_no and space_id are now stamped on the pages early on. ------------------------------------------------------------ revno: 0.3.263 committer: marko timestamp: Thu 2006-10-12 06:33:43 +0000 message: branches/zip: Move the assertion about holding dict_sys->mutex from dict_table_add_system_columns() to dict_table_add_to_cache(). ------------------------------------------------------------ revno: 0.3.262 committer: marko timestamp: Tue 2006-10-10 12:26:37 +0000 message: branches/zip: Stamp (space_id, page_no) on buffer pool pages early on. buf_flush_init_for_writing(): Remove parameters space, page_no. fsp_init_file_page_low(): Wriet space_id and page_no to the page. fil_create_new_single_table_tablespace(): Write space_id to the page. ------------------------------------------------------------ revno: 0.3.261 committer: marko timestamp: Tue 2006-10-10 10:21:04 +0000 message: row_ext_create(): Allocate enough space for the structure. This error was introduced in r867. ------------------------------------------------------------ revno: 0.3.260 committer: marko timestamp: Mon 2006-10-09 19:36:58 +0000 message: branches/zip: Add function mtr_memo_contains_page() #ifdef UNIV_DEBUG. Replace ut_ad(mtr_memo_contains(mtr, buf_block_align(ptr), ...)) with ut_ad(mtr_memo_contains_page(mtr, ptr, ...)) in order to reduce the number of buf_block_align() calls. ------------------------------------------------------------ revno: 0.3.259 committer: marko timestamp: Mon 2006-10-09 16:22:47 +0000 message: branches/zip: Replace buf_frame_align() with page_align(), page_offset(), ut_align_down(), or ut_align_offset(). ------------------------------------------------------------ revno: 0.3.258 committer: marko timestamp: Mon 2006-10-09 15:37:19 +0000 message: branches/zip: buf_block_get_page_zip(): Replace with buf_frame_get_page_zip(). ------------------------------------------------------------ revno: 0.3.257 committer: marko timestamp: Fri 2006-10-06 11:23:19 +0000 message: branches/zip: Remove compilation errors with -DUNIV_HOTBACKUP. dict_load_foreigns(): Enclose in #ifndef UNIV_HOTBACKUP. fil_extend_tablespaces_to_stored_len(): Pass zip_size to fil_read(). buf_page_init_for_backup_restore(): Add parameter zip_size. Enclose the declaration in buf0buf.h in #ifdef UNIV_HOTBACKUP. recv_apply_log_recs_for_backup(): Replace the local variable "page" with the local variable "block". Add local variable zip_size. ------------------------------------------------------------ revno: 0.3.256 committer: marko timestamp: Wed 2006-10-04 11:47:25 +0000 message: branches/zip: fil_reset_too_high_lsns(): Adapt for compressed tablespaces. TODO: test this with InnoDB Hot Backup 3.0 ------------------------------------------------------------ revno: 0.3.255 committer: marko timestamp: Tue 2006-10-03 13:10:20 +0000 message: branches/zip: Merge revisions 869:887 from trunk. ------------------------------------------------------------ revno: 0.3.254 committer: marko timestamp: Mon 2006-10-02 08:42:42 +0000 message: branches/zip: Fix all bugs detected by mysql-test-run. The exactly same set of tests are failing with trunk -r869, with this revision using uncompressed storage, and with this revision hard-wired to use 1-kilobyte compressed pages and innodb_file_per_table. btr_push_update_extern_fields(): Do not call ut_ulint_sort() if n_pushed == 0. btr_copy_externally_stored_field_prefix_low(): Replace ut_max() with ut_min(). ------------------------------------------------------------ revno: 0.3.253 committer: marko timestamp: Fri 2006-09-29 12:12:47 +0000 message: branches/zip: Merge revisions 861:869 from trunk. ------------------------------------------------------------ revno: 0.3.252 committer: marko timestamp: Fri 2006-09-29 11:26:20 +0000 message: branches/zip: Remove os_file_check_page_trailers(). It was used in os_aio_simulated_handle() before and after initiating a write. We cannot easily pass the compressed page sizes to this function. The check could only be performed on uncompressed pages. ------------------------------------------------------------ revno: 0.3.251 committer: marko timestamp: Fri 2006-09-29 10:43:42 +0000 message: branches/zip: Remove the unused function ut_clock(). ------------------------------------------------------------ revno: 0.3.250 committer: marko timestamp: Fri 2006-09-29 10:40:42 +0000 message: branches/zip: dtuple_convert_big_rec(): Do not store anything locally of externally stored columns, and fix bugs introduced in r873. (Bug #22496) btr_page_get_sure_split_rec(), btr_page_insert_fits(), rec_get_converted_size(), rec_convert_dtuple_to_rec(), rec_convert_dtuple_to_rec_old(), rec_convert_dtuple_to_rec_new(): Add parameters ext and n_ext. Flag external fields during the conversion. rec_set_field_extern_bits(), rec_set_field_extern_bits_new(), rec_offs_set_nth_extern(), rec_set_nth_field_extern_bit_old(): Remove. The bits are set by rec_convert_dtuple_to_rec(). page_cur_insert_rec_low(): Remove the parameters ext and n_ext. btr_cur_add_ext(): New utility function for updating and sorting ext[]. Low-level functions now expect the array to be in ascending order for performance reasons. Used in btr_cur_optimistic_insert(), btr_cur_pessimistic_insert(), and btr_cur_pessimistic_update(). btr_cur_optimistic_insert(): Remove some defensive code, because we cannot compute the added parameters of rec_get_converted_size(). btr_push_update_extern_fields(): Sort the array. Require the array to be twice the maximum usage, so that ut_ulint_sort() can be used. dtuple_convert_big_rec(): Allocate new space for the BLOB pointer, to avoid overwriting prefix indexes to the same column. Adapt dtuple_convert_back_big_rec(). row_build_index_entry(): Fetch the columns also for prefix indexes of the clustered index. page_zip_apply_log(), page_zip_decompress_clust(): Allow externally stored fields to lack a locally stored part. ------------------------------------------------------------ revno: 0.3.249 committer: marko timestamp: Thu 2006-09-28 11:02:04 +0000 message: btr_page_get_sure_split_rec(): Revert the change from r875: "On compressed pages, return NULL if incl_data > free_space." btr_page_split_and_insert(): Remove the limit check of n_iterations on compressed pages. After enough many invocations of btr_page_get_sure_split_rec(), the record will finally fit. ------------------------------------------------------------ revno: 0.3.248 committer: marko timestamp: Thu 2006-09-28 10:40:07 +0000 message: branches/zip: btr_page_get_sure_split_rec(): Rewrite the for (;;) { ... if (condition) { ... return }} loop as do { ... } while (!condition); ... return. On compressed pages, return NULL if incl_data > free_space. ------------------------------------------------------------ revno: 0.3.247 committer: marko timestamp: Wed 2006-09-27 10:51:05 +0000 message: branches/zip: Replace FIL_PAGE_ZBLOB_SPACE_ID and FIL_PAGE_ZBLOB_DATA with FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID and FIL_PAGE_DATA. The doublewrite buffer needs to read the space_id in order to determine the type of the page. Because FIL_PAGE_TYPE could contain garbage in MySQL/InnoDB 5.0 and earlier versions, we cannot trust fil_page_get_type(). Instead, we have to always store the space_id at the same location. This modification wastes 12 bytes per compressed BLOB page (1.2% on 1-kilobyte pages). ------------------------------------------------------------ revno: 0.3.246 committer: marko timestamp: Tue 2006-09-26 19:50:21 +0000 message: branches/zip: dtuple_convert_big_rec(): Reduce the locally stored part of externally stored columns to REC_1BYTE_OFFS_LIMIT (128) bytes. TODO: only store BTR_EXTERN_FIELD_REF_SIZE (20) bytes with the record, and store the entire column externally. (Bug #22496) dict_col_t::min_prefix: Remove. ------------------------------------------------------------ revno: 0.3.245 committer: marko timestamp: Tue 2006-09-26 14:26:19 +0000 message: branches/zip: row_build_index_entry(): Fix errors introduced in r870. Do not augment clustered index records. When computing the prefix, use dfield (where the prefix was copied), not dfield2 (the record in the clustered index). ------------------------------------------------------------ revno: 0.3.244 committer: marko timestamp: Tue 2006-09-26 14:21:28 +0000 message: branches/zip: fil_create_new_single_table_tablespace(): Remove the unnecessary memset() introduced in r852. When zip_size != 0, write the compressed page to disk, not the uncompressed one. ------------------------------------------------------------ revno: 0.3.243 committer: marko timestamp: Tue 2006-09-26 11:50:54 +0000 message: branches/zip: Allow the locally stored part of externally stored columns in the clustered index to be smaller than the indexed prefix in secondary indexes. row_ext_lookup(): Return NULL if the column is not stored externally. trx_undo_rec_get_partial_row(): row_build(): Add parameter row_ext_t** ext. row_build_index_entry(): Add the parameter row_ext_t* ext. Invoke row_ext_lookup() to fetch prefixes of externally stored columns. upd_node_t, undo_node_t, purge_node_t: Add the field row_ext_t* ext. ------------------------------------------------------------ revno: 0.3.242 committer: marko timestamp: Tue 2006-09-26 07:39:02 +0000 message: branches/zip: Add const qualifiers to the pointer parameters of mach_read_...() functions. Remove unnecessary casts. ------------------------------------------------------------ revno: 0.3.241 committer: marko timestamp: Tue 2006-09-26 07:28:23 +0000 message: branches/zip: Add row_ext_t for caching prefixes of externally stored columns. This will be needed for fixing Bug #22496. REC_MAX_INDEX_COL_LEN: New constant, copied from DICT_MAX_INDEX_COL_LEN. row_ext_create(), row_ext_lookup(), row_ext_lookup_low(): New functions. ------------------------------------------------------------ revno: 0.3.240 committer: marko timestamp: Tue 2006-09-26 06:22:16 +0000 message: branches/zip: Implement the ability to fetch a prefix of an externally stored column. This is the first part of fixing Bug #22496. btr_copy_externally_stored_field_prefix(): New function. btr_copy_externally_stored_field(): Split to btr_copy_externally_stored_field_prefix_low(). row_sel_sec_rec_is_for_blob(): New function, used by row_sel_sec_rec_is_for_clust_rec() in selects via a secondary index. ------------------------------------------------------------ revno: 0.3.239 committer: marko timestamp: Mon 2006-09-25 12:17:33 +0000 message: branches/zip: Minor cleanup in update related code. btr_push_update_extern_fields(): Instead of iterating all upd_get_n_fields(), stop at the first match. row_search_index_entry(): Simplify the return statements. row_upd_sec_step(): Eliminate the local variable "err". row_upd_clust_step(): Add a UNIV_UNLIKELY hint. ------------------------------------------------------------ revno: 0.3.238 committer: marko timestamp: Fri 2006-09-22 11:30:03 +0000 message: branches/zip: ibuf_merge_or_delete_for_page(): Check for ibuf_fixed_addr_page() and fsp_descr_page() before invoking fil_inc_pending_ibuf_merges(). That function call should always be paired with a call to fil_decr_pending_ibuf_merges(). ------------------------------------------------------------ revno: 0.3.237 committer: marko timestamp: Fri 2006-09-22 10:22:03 +0000 message: branches/zip: Merge revisions 838:861 from trunk. ------------------------------------------------------------ revno: 0.3.236 committer: marko timestamp: Fri 2006-09-22 06:56:50 +0000 message: branches/zip: srv_master_thread(): Remove unnecessary assignments to n_pages_purged. ------------------------------------------------------------ revno: 0.3.235 committer: marko timestamp: Thu 2006-09-21 19:09:25 +0000 message: branches/zip: page_zip_decompress(): Split into page_zip_decompress_node_ptrs(), page_zip_decompress_sec(), and page_zip_decompress_clust(). See also r856. ------------------------------------------------------------ revno: 0.3.234 committer: marko timestamp: Thu 2006-09-21 08:01:50 +0000 message: branches/zip: ibuf_merge_or_delete_for_page(): Do not invoke fil_space_get_zip_size() unless zip_size is really needed (update_ibuf_bitmap || page). This avoids an assertion failure when discarding ibuf entries for a deleted tablespace, for which fil_space_get_zip_size() would return ULINT_UNDEFINED. Also, reindent ibuf0ibuf.c. ------------------------------------------------------------ revno: 0.3.233 committer: marko timestamp: Thu 2006-09-21 07:27:35 +0000 message: branches/zip: page_zip_compress(): Split into page_zip_compress_node_ptrs(), page_zip_compress_sec(), and page_zip_compress_clust(). ------------------------------------------------------------ revno: 0.3.232 committer: marko timestamp: Wed 2006-09-20 14:26:53 +0000 message: branches/zip: page_zip_empty_size(): New function to compute the guaranteed free space available for inserting one record. btr_page_get_sure_split_rec(), btr_cur_pessimistic_insert(): Use page_zip_empty_size(). btr_page_split_and_insert(): Relax a debug assertion that there should be at least two user records on the page. On compressed pages, we may be able to write only one record. ------------------------------------------------------------ revno: 0.3.231 committer: marko timestamp: Wed 2006-09-20 12:42:08 +0000 message: branches/zip: Instrument the buffer pool allocator and deallocator for more accurate Valgrind debugging. univ.i: Introduce UNIV_DEBUG_VALGRIND, UNIV_MEM_VALID, and UNIV_MEM_INVALID. buf_LRU_block_free_non_file_page(): Invalidate the buffer frame with UNIV_MEM_INVALID(). buf_LRU_get_free_block(): Declare the buffer frame valid with UNIV_MEM_VALID(). Other memory is allocated and deallocated via malloc() and free(), which are already overridden by Valgrind. Without the added instrumentation, accesses to free pages in the buffer pool cannot be caught. The diagnostics could probably be improved further by declaring all non-latched buffer frames invalid. ------------------------------------------------------------ revno: 0.3.230 committer: marko timestamp: Wed 2006-09-20 12:23:25 +0000 message: branches/zip: Fix bugs #ifdef UNIV_DEBUG. rec_convert_dtuple_to_rec_old(): Initialize the record in order to avoid bogus Valgrind warnings about the ut_ad() in mach_write_to_1() and mach_write_to_2(). page_zip_compress(), page_zip_write_rec(), page_zip_write_blob_ptr(): Replace ut_ad(page_validate(...)) with ut_ad(page_simple_validate_new(...)), because otherwise crash recovery would fail. ------------------------------------------------------------ revno: 0.3.229 committer: marko timestamp: Wed 2006-09-20 11:14:54 +0000 message: branches/zip: fil_create_new_single_table_tablespace(): Make page_zip->data point to an address different from page, to avoid calling memcpy() with overlapping source and destination. ------------------------------------------------------------ revno: 0.3.228 committer: marko timestamp: Wed 2006-09-20 05:05:58 +0000 message: branches/zip: mlog_parse_index(): After merge fix (r841): Identify DB_TRX_ID and DB_ROLL_PTR in the index. ------------------------------------------------------------ revno: 0.3.227 committer: marko timestamp: Tue 2006-09-19 13:56:56 +0000 message: branches/zip: Remove page_zip_decompress_low(). Do not call page_validate() on the ZIP_DUMMY index. Because it does not contain valid collation information, the ordering check in page_validate() may fail on pages containing non-binary data. Instead, let the callers of page_zip_decompress() invoke page_validate() when the index information is available. ------------------------------------------------------------ revno: 0.3.226 committer: marko timestamp: Tue 2006-09-19 10:14:07 +0000 message: branches/zip: Merge revisions 804:838 from trunk. ------------------------------------------------------------ revno: 0.3.225 committer: marko timestamp: Tue 2006-09-12 07:29:57 +0000 message: branches/zip: Merge revisions 789:804 from trunk. ------------------------------------------------------------ revno: 0.3.224 committer: marko timestamp: Wed 2006-09-06 14:17:20 +0000 message: branches/zip: btr_store_big_rec_extern_fields(): When adjusting the "next BLOB page" pointer, write it also to the compressed page, which is the one that will be flushed to disk. ------------------------------------------------------------ revno: 0.3.223 committer: marko timestamp: Wed 2006-09-06 09:51:00 +0000 message: branches/zip: btr_copy_externally_stored_field(): Add diagnostics for unexpected end of compressed BLOB. ------------------------------------------------------------ revno: 0.3.222 committer: marko timestamp: Tue 2006-09-05 19:41:05 +0000 message: branches/zip: btr_copy_externally_stored_field(): Correct the reporting and handling of inflate() errors. ------------------------------------------------------------ revno: 0.3.221 committer: marko timestamp: Tue 2006-09-05 19:37:43 +0000 message: branches/zip: Split lines before operators, not after them. ------------------------------------------------------------ revno: 0.3.220 committer: marko timestamp: Tue 2006-09-05 12:49:35 +0000 message: branches/zip: btr_cur_optimistic_insert(): When returning DB_FAIL, always convert back big_rec_vec. ------------------------------------------------------------ revno: 0.3.219 committer: marko timestamp: Mon 2006-09-04 19:47:47 +0000 message: branches/zip: Merge revisions 767:789 from trunk. ------------------------------------------------------------ revno: 0.3.218 committer: marko timestamp: Mon 2006-09-04 19:06:58 +0000 message: branches/zip: btr_cur_optimistic_insert(): Add a closing parenthesis that was accidentally omitted in r766. ------------------------------------------------------------ revno: 0.3.217 committer: marko timestamp: Thu 2006-08-31 11:00:02 +0000 message: branches/zip: dtuple_convert_big_rec(): Shorten the locally stored part of externally stored columns to 108 bytes when possible. This will unmask a bug in the handling of BLOBs on compressed tablespaces, especially of small page sizes. Apparently, the locally stored part must be less than 235 bytes in size for the bug to occur. dict_col_struct: Add field min_prefix. dict_index_build_internal_non_clust(): Adjust min_prefix. ------------------------------------------------------------ revno: 0.3.216 committer: marko timestamp: Thu 2006-08-31 10:53:00 +0000 message: branches/zip: Avoid overwriting an existing big_rec when calling dtuple_convert_big_rec(). This should never happen, though. ------------------------------------------------------------ revno: 0.3.215 committer: marko timestamp: Tue 2006-08-29 12:17:50 +0000 message: branches/zip: Merge revisions 765:767 from trunk. ------------------------------------------------------------ revno: 0.3.214 committer: marko timestamp: Tue 2006-08-29 09:30:31 +0000 message: branches/zip: Merge revisions 720:765 from trunk and reindent the code as per revisions r763:765. ------------------------------------------------------------ revno: 0.3.213 committer: marko timestamp: Tue 2006-08-22 08:34:14 +0000 message: branches/zip: page_zip_dir_insert(): When looking for slot_rec, use the old value of PAGE_N_RECS. page_zip_dir_find_free_low(): Rename to page_zip_dir_find_low(). page_zip_dir_find(): Make use of page_zip_dir_find_low(). ------------------------------------------------------------ revno: 0.3.212 committer: marko timestamp: Mon 2006-08-21 18:36:00 +0000 message: branches/zip: Speed up the compression and decompression of leaf pages of non-clustered indexes. On these pages, only the bytes rec[-5..-1] will be omitted from the compressed data stream. Save time by not looking for trx_id or externally stored columns. ------------------------------------------------------------ revno: 0.3.211 committer: marko timestamp: Mon 2006-08-21 10:27:15 +0000 message: branches/zip: Assert that only leaf pages of clustered indexes may contain externally stored columns. Make some use of the fact in compression and decompression. rec_init_offsets(): Add ut_ad(dict_index_is_clust(index)) before flagging external columns. page_zip_get_trailer_len(): Assert ut_ad(!page_zip->n_blobs) unless dict_index_is_clust(index). page_zip_get_n_prev_extern(): Add ut_ad(dict_index_is_clust(index)). page_zip_compress(), page_zip_decompress_low(): Add dict_index_is_clust() assertions. Allow completely external storage of columns. Simplify the computation of "externs". page_zip_write_rec(): Store leaf node records of non-clustered indexes with one memcpy(), avoiding rec_offs_n_extern() and the for loop. page_zip_write_blob_ptr(): Add ut_ad(dict_index_is_clust(index)). Simplify the computation of "externs". page_zip_clear_rec(): Only attempt to zero out BLOB pointers when the record belongs to a leaf page of a clustered index. page_zip_dir_delete(): Take a fast path when the record is not on a leaf page of a clustered index. Simplify the computation of "externs". page_zip_copy(): Assert that n_blobs is zero on anything else than leaf pages of clustered indexes. ------------------------------------------------------------ revno: 0.3.210 committer: marko timestamp: Mon 2006-08-21 09:30:48 +0000 message: branches/zip: page_zip_fields_decode(): Set index->type to DICT_CLUSTERED if and only if the records on the page contain a trx_id column. (Dummy indexes of non-leaf pages will always show up as non-clustered.) ------------------------------------------------------------ revno: 0.3.209 committer: marko timestamp: Mon 2006-08-21 09:27:44 +0000 message: branches/zip: page_zip_dir_insert(): Remove unused parameters index, offsets. ------------------------------------------------------------ revno: 0.3.208 committer: marko timestamp: Mon 2006-08-21 09:08:47 +0000 message: branches/zip: page_zip_decompress(): Initialize page_zip->n_blobs before referencing it, to prevent a ut_ad() assertion on page_zip_get_trailer_len() from failing. Promote that assertion to ut_a(). ------------------------------------------------------------ revno: 0.3.207 committer: marko timestamp: Mon 2006-08-21 08:41:05 +0000 message: branches/zip: dtuple_convert_big_rec(): Do not attempt to shorten records of secondary indexes. (This is just an optimization; the logic in the search loop would never store such records externally.) ------------------------------------------------------------ revno: 0.3.206 committer: marko timestamp: Fri 2006-08-18 19:30:55 +0000 message: branches/zip: page_cur_insert_rec_low(): Replace page_zip_dir_rewrite() with page_zip_dir_insert(). Pass page_zip to rec_set_n_owned_new() and page_dir_slot_set_n_owned(). page_zip_dir_insert(): New function. Shift the dense page directory and write the inserted record there. ------------------------------------------------------------ revno: 0.3.205 committer: marko timestamp: Fri 2006-08-18 14:34:30 +0000 message: branches/zip: Bug fixes. data0data.c: Add #include "page0zip.h" that was forgotten from r739. page_cur_insert_rec_low(): Remove a memory leak when preventing extra_size to grow. ------------------------------------------------------------ revno: 0.3.204 committer: marko timestamp: Fri 2006-08-18 10:02:50 +0000 message: branches/zip: Correct the description of DB_TOO_BIG_RECORD. ------------------------------------------------------------ revno: 0.3.203 committer: marko timestamp: Thu 2006-08-17 11:57:51 +0000 message: branches/zip: btr_cur_pessimistic_insert(): Prior to splitting, ensure that the record will fit on an empty compressed page. buf_block_alloc(), buf_block_free(), buf_frame_alloc(), buf_frame_free(): Make inlined. ------------------------------------------------------------ revno: 0.3.202 committer: marko timestamp: Thu 2006-08-17 08:28:05 +0000 message: branches/zip: btr_page_get_sure_split_rec(): Align the variable declarations according to InnoDB formatting rules. ------------------------------------------------------------ revno: 0.3.201 committer: marko timestamp: Thu 2006-08-17 08:14:38 +0000 message: branches/zip: Account for the compressed page size when checking if a record will fit or need external storage. btr_page_get_sure_split_rec(): Estimate the free space of an empty compressed page. page_zip_rec_needs_ext(): New function, to replace existing tests whether external storage is needed. ------------------------------------------------------------ revno: 0.3.200 committer: marko timestamp: Wed 2006-08-16 09:35:36 +0000 message: branches/zip: Clean up debug code. struct mtr_struct: Omit unused field "state" unless #ifdef UNIV_DEBUG. buf_block_buf_fix_inc_debug(): Remove redundant __attribute__((unused)) and #ifdef UNIV_SYNC_DEBUG. ------------------------------------------------------------ revno: 0.3.199 committer: marko timestamp: Tue 2006-08-15 14:28:09 +0000 message: branches/zip: Disable unused function ut_dulint_sort(). ------------------------------------------------------------ revno: 0.3.198 committer: marko timestamp: Tue 2006-08-15 14:27:19 +0000 message: branches/zip: buf_LRU_print(): Terminate every displayed entry with a newline. ------------------------------------------------------------ revno: 0.3.197 committer: marko timestamp: Tue 2006-08-15 11:55:06 +0000 message: branches/zip: Merge revisions 713:720 from trunk. ------------------------------------------------------------ revno: 0.3.196 committer: marko timestamp: Tue 2006-08-15 11:54:20 +0000 message: branches/zip: Introduce the symbol UNIV_DEBUG_PRINT for enabling debug print functions. buf_LRU_print(), buf_print(): Replace #ifdef UNIV_DEBUG with #ifdef UNIV_DEBUG_PRINT. ------------------------------------------------------------ revno: 0.3.195 committer: marko timestamp: Tue 2006-08-15 08:37:54 +0000 message: branches/zip: btr0btr.ic: Add #include "page0zip.h" so that the code will compile with inlining disabled. ------------------------------------------------------------ revno: 0.3.194 committer: marko timestamp: Mon 2006-08-14 08:25:46 +0000 message: branches/zip: Allow the code to be built with function inlining enabled. page0page.h: Add #include "page0zip.h" page_dir_slot_get_rec(): Avoid void* arithmetics. trx0undo.ic, trx0sys.ic: Remove unnecessary #include "page0zip.h" page_zip_write_header(): Move prototype from page0types.h to page0zip.h ------------------------------------------------------------ revno: 0.3.193 committer: marko timestamp: Fri 2006-08-11 11:49:38 +0000 message: branches/zip: Merge revisions 634:713 from trunk. ------------------------------------------------------------ revno: 0.3.192 committer: marko timestamp: Thu 2006-08-10 11:14:00 +0000 message: branches/zip: page_copy_rec_list_start(): Replace the local variable "old_end" with "ret". Otherwise, a page_zip_reorganize() would make lock_move_rec_list_start() fail. ------------------------------------------------------------ revno: 0.3.191 committer: marko timestamp: Wed 2006-08-09 11:17:59 +0000 message: branches/zip: page_zip_decompress_low(): Clear the node_ptr during initial decompression, in case the record will be deleted and the space will be reused by a smaller record. page_zip_clear_rec_disable: Note the possibility of a page_zip_validate() failure when the space of a deleted record is reused by a smaller record. ------------------------------------------------------------ revno: 0.3.190 committer: marko timestamp: Wed 2006-08-09 08:55:00 +0000 message: branches/zip: Improve diagnostics. buf_LRU_get_free_block(): When zip_size changes, initialize all fields of page_zip. This avoids an assertion failure in page_create_zip() when a block with an originally larger zip_size is reallocated. fsp_get_space_header(): Assert that the stored space id matches. xdes_get_state(): Assert that the state is valid. ------------------------------------------------------------ revno: 0.3.189 committer: marko timestamp: Mon 2006-08-07 11:35:03 +0000 message: branches/zip: recv_parse_or_apply_log_rec_body(): Note that MLOG_COMP_REC_MIN_MARK is allowed on a compressed page. ------------------------------------------------------------ revno: 0.3.188 committer: marko timestamp: Mon 2006-08-07 08:12:39 +0000 message: branches/zip: Minor cleanup. row_upd_sec_index_entry(): Remove redundant goto. Replace duplicated cleanup code with goto func_exit. mtr_memo_slot_release(): Eliminate the #else branch of #ifdef UNIV_DEBUG by reorganizing the code. ------------------------------------------------------------ revno: 0.3.187 committer: marko timestamp: Mon 2006-08-07 08:07:47 +0000 message: branches/zip: btr_cur_search_to_nth_level(): Do not invoke page_zip_validate() if rw_latch == RW_NO_LATCH. ------------------------------------------------------------ revno: 0.3.186 committer: marko timestamp: Fri 2006-08-04 12:35:43 +0000 message: branches/zip: dict_check_tablespaces_and_store_max_id(): Determine zip_size in kilobytes, pass on in bytes. ------------------------------------------------------------ revno: 0.3.185 committer: marko timestamp: Fri 2006-08-04 11:46:20 +0000 message: branches/zip: Fix the decompression of deleted records containing externally stored columns. page_zip_decompress(): We indeed need to clear the BLOB pointers of deleted records twice. This implies that we also need to invoke rec_get_offsets() twice for each record on a leaf page. Add clarifying comments. page_zip_clear_rec(): Add the flag page_zip_clear_rec_disable for disabling the clearing of deleted records. ------------------------------------------------------------ revno: 0.3.184 committer: marko timestamp: Fri 2006-08-04 08:25:39 +0000 message: branches/zip: Minor cleanup after r690. One test case still fails. page_zip_compress_write_log(): Do not invoke page_zip_validate(), since this is a static function and the callers already invoke page_zip_validate(). page_zip_decompress_low(): Clear the page #ifdef UNIV_ZIP_DEBUG. Optimizations: Remove local variable "last". Do not clear the BLOB pointer until the modification log has been applied. (Since r690, it will be cleared after applying the modification log.) Avoid calling rec_get_offsets() a second time if there are no uncompressed columns to be restored. ------------------------------------------------------------ revno: 0.3.183 committer: marko timestamp: Thu 2006-08-03 08:06:45 +0000 message: branches/zip: Zero out the BLOB pointers when decoding deleted records. Improve diagnostics. btr_cur_pessimistic_update(): Add page_zip_validate() assertion. page_zip_decompress(): Initialize all BLOB pointers. page_zip_clear_rec(): Add page_zip_header_cmp() assertion. page_delete_rec_list_end(): Add page_zip_validate() assertion. ------------------------------------------------------------ revno: 0.3.182 committer: marko timestamp: Wed 2006-08-02 05:49:15 +0000 message: branches/zip: Fix some crash recovery bugs. dict_load_table(): Initialize table->flags with zip_size. mlog_parse_nbytes(), mlog_parse_string(): Add parameter page_zip and write the changes also to the compressed page if one is specified. Assert that these functions are not called on FIL_PAGE_INDEX pages. buf_page_io_complete(): Replace block->frame with frame where appropriate. recv_parse_or_apply_log_rec_body(): Add ut_a(!page_zip) where appropriate. page_parse_delete_rec_list(): Add parameter page_zip. ------------------------------------------------------------ revno: 0.3.181 committer: marko timestamp: Tue 2006-08-01 12:05:04 +0000 message: branches/zip: buf_flush_init_for_writing(): Invoke page_zip_calc_checksum() on page_zip->data, so that the freshly written fields will be included. page_cur_delete_rec(): Add a page_zip_validate() assertion to the end. ------------------------------------------------------------ revno: 0.3.180 committer: marko timestamp: Tue 2006-08-01 10:11:04 +0000 message: branches/zip: Properly merge records to compressed pages. ------------------------------------------------------------ revno: 0.3.179 committer: marko timestamp: Tue 2006-08-01 08:53:55 +0000 message: branches/zip: Improve debugging. page_zip_decompress(): Move the function body to page_zip_decompress_low(), add the parameter do_validate() to enable page_validate() assertion. Wrap page_zip_decompress_low() with do_validate=TRUE. page_zip_validate(): Invoke page_zip_decompress_low() with do_validate=FALSE, as page_validate() may fail when the compressed page is being updated in-place. page_dir_slot_check(): Replace buf_frame_align() with ut_align_down() in order to avoid an assertion failure in page_zip_validate(), which will now invoke page_validate() via page_zip_decompress(). ------------------------------------------------------------ revno: 0.3.178 committer: marko timestamp: Tue 2006-08-01 07:58:38 +0000 message: branches/zip: Bug fixes. buf_page_io_complete(): On FIL_PAGE_TYPE_ZBLOB (compressed BLOB pages), read the space_id from a different location. page_zip_compress(), page_zip_write_rec(), page_zip_write_blob_ptr(): Replace page_simple_validate_new() with page_validate(). page_zip_clear_rec(): When running out of log space, do not attempt to recompress the page, because the directory slots might be unbalanced and the page_validate() assertion in page_zip_compress() would fail. Instead, clear the BLOB pointers of the deleted record on the uncompressed page, so that page_zip_validate() will succeed. page_zip_validate(): Remove the comment about page_zip_clear_rec(). A mismatch always indicates a serious inconsistency. ------------------------------------------------------------ revno: 0.3.177 committer: marko timestamp: Mon 2006-07-31 18:27:17 +0000 message: branches/zip: Stamp some header fields to compressed BLOB pages. buf_flush_init_for_writing(): On FIL_PAGE_TYPE_ZBLOB, write to page_zip->data instead of page. page_zip_write_rec(), page_zip_write_blob_ptr(), page_zip_write_node_ptr(): Add ut_ad(page_simple_validate_new()). ------------------------------------------------------------ revno: 0.3.176 committer: marko timestamp: Mon 2006-07-31 06:43:25 +0000 message: branches/zip: Fix a bug in consistent reads of rows containing BLOB data. btr_rec_copy_externally_stored_field(): Add parameter zip_size. Do not call buf_block_align(rec), because rec can also be in dynamically allocated memory. buf_block_align() can only be invoked on addresses inside the buffer pool. page_zip_clear_rec(): Improve formatting. ------------------------------------------------------------ revno: 0.3.175 committer: marko timestamp: Fri 2006-07-28 07:34:33 +0000 message: branches/zip: page_zip_validate(): Replace buf_frame_alloc() with ut_malloc() to avoid breaking the latching order. page_rec_check(), page_dir_slot_get_rec(): Replace buf_frame_align() with ut_align_down() to avoid assertion failures in page_zip_validate(). ------------------------------------------------------------ revno: 0.3.174 committer: marko timestamp: Thu 2006-07-27 12:32:12 +0000 message: branches/zip: btr_store_big_rec_extern_fields(), btr_free_externally_stored_field(): Replace mlog_write_ulint() with mach_write_to_4() when page_zip != NULL. The operation is logged by page_zip_write_blob_ptr(). ------------------------------------------------------------ revno: 0.3.173 committer: marko timestamp: Fri 2006-07-07 10:42:41 +0000 message: branches/zip: Remove a bogus page_zip_validate() assertion failure found by running index_merge_ror_cpk on 1-kilobyte compressed pages. page_delete_rec_list_start(): Remove the page_zip_validate() assertion. btr_page_split_and_insert(): Add page_zip_validate() assertions about page and new_page after moving the records. ------------------------------------------------------------ revno: 0.3.172 committer: marko timestamp: Thu 2006-07-06 19:24:53 +0000 message: branches/zip: dict_build_table_def_step(): Refuse to create a compressed table in the system tablespace. ------------------------------------------------------------ revno: 0.3.171 committer: marko timestamp: Thu 2006-07-06 11:40:28 +0000 message: branches/zip: page_zip_fields_encode(): Fuse fixed-length fields to a maximum of DICT_MAX_INDEX_COL_LEN (768 bytes). ------------------------------------------------------------ revno: 0.3.170 committer: marko timestamp: Thu 2006-07-06 10:39:09 +0000 message: branches/zip: page_zip_fields_encode(): Assign to trx_id_col after encoding any pending data. ------------------------------------------------------------ revno: 0.3.169 committer: marko timestamp: Thu 2006-07-06 08:31:26 +0000 message: branches/zip: page_zip_fields_encode(): Do not increment "col" without encoding a column. ------------------------------------------------------------ revno: 0.3.168 committer: marko timestamp: Tue 2006-07-04 21:34:25 +0000 message: mlog_parse_index(): Remove an off-by-one error in the bounds check that would cause the crash recovery of MLOG_COMP_PAGE_REORGANIZE to fail. (Bug #20855) ------------------------------------------------------------ revno: 0.3.167 committer: marko timestamp: Tue 2006-07-04 21:15:30 +0000 message: branches/zip: btr_parse_page_reorganize(): Add parameter page_zip. ------------------------------------------------------------ revno: 0.3.166 committer: marko timestamp: Tue 2006-07-04 11:55:26 +0000 message: branches/zip: Eliminate some duplicated code to release btr_search_latch that was found while investigating Bug #19081. ------------------------------------------------------------ revno: 0.3.165 committer: marko timestamp: Mon 2006-07-03 19:12:21 +0000 message: branches/zip: page_cur_insert_rec_low(): Replace page_zip_alloc() with page_zip_available() in order to avoid an extra page_zip_compress(). page_zip_available(): Make the function public. page0zip.ic: Sort the inline function declarations in order to avoid forward references, which do not work on some compilers. ------------------------------------------------------------ revno: 0.3.164 committer: marko timestamp: Fri 2006-06-30 11:59:28 +0000 message: branches/zip: page_zip_dir_size(): Remove bogus debug assertion. The function will be invoked in page_zip_decompress() before setting page_zip->m_start or page_zip->m_end. ------------------------------------------------------------ revno: 0.3.163 committer: marko timestamp: Fri 2006-06-30 09:49:32 +0000 message: branches/zip: Improve assertions related to the linked lists of records on B-tree index pages. page_rec_set_next(): Assert that rec != next. rec_get_next_ptr(), rec_get_next_offs(): On compact pages, assert that there are at least REC_N_NEW_EXTRA_BYTES + 1 between records. page_cur_insert_rec_write_log(): Replace a buf_frame_align() call with ut_align_offset(). page_cur_insert_rec_low(): Assert that current_rec != insert_rec. ------------------------------------------------------------ revno: 0.3.162 committer: marko timestamp: Wed 2006-06-28 12:01:29 +0000 message: branches/zip: Eliminate page corruption in btr_compress() when page_zip_reorganize() was invoked. btr_compress(): Obtain orig_pred and orig_succ after copying the records. Add a debug assertion about FIL_PAGE_PREV. page_copy_rec_list_end(), page_copy_rec_list_start(): Change the return type from ibool to rec_t. Adjust the return value after invoking page_zip_reorganize(). ------------------------------------------------------------ revno: 0.3.161 committer: marko timestamp: Wed 2006-06-21 12:38:42 +0000 message: branches/zip: buf_page_io_complete(): Copy also uninitialized pages to uncompressed storage, to avoid bogus warnings about page number mismatch. ------------------------------------------------------------ revno: 0.3.160 committer: marko timestamp: Wed 2006-06-21 11:24:47 +0000 message: branches/zip: Tighten the assertions about page_zip->m_end. ------------------------------------------------------------ revno: 0.3.159 committer: marko timestamp: Wed 2006-06-21 11:14:11 +0000 message: branches/zip: fsp_fill_free_list(): Replace % with ut_2pow_remainder(). ------------------------------------------------------------ revno: 0.3.158 committer: marko timestamp: Wed 2006-06-21 09:15:09 +0000 message: branches/zip: Add debug assertions about page_zip->m_end < paeg_zip->m_size. ------------------------------------------------------------ revno: 0.3.157 committer: marko timestamp: Tue 2006-06-20 19:35:59 +0000 message: branches/zip: Make page_zip_validate() independent of UNIV_DEBUG. Replace most occurrences of #if defined UNIV_DEBUG || defined UNIV_ZIP_DEBUG with #ifdef UNIV_ZIP_DEBUG. ------------------------------------------------------------ revno: 0.3.156 committer: marko timestamp: Tue 2006-06-20 11:35:41 +0000 message: branches/zip: fil_space_truncate_start(): Fix an incorrect assertion, disable unless #ifdef UNIV_LOG_ARCHIVE. ------------------------------------------------------------ revno: 0.3.155 committer: marko timestamp: Tue 2006-06-20 11:32:26 +0000 message: branches/zip: fsp_fill_free_list(): Compute "init_xdes" properly. ------------------------------------------------------------ revno: 0.3.154 committer: marko timestamp: Mon 2006-06-19 11:08:46 +0000 message: branches/zip: Add assertions. btr_compress(): Invoke page_zip_validate() on the page being compressed. recv_parse_or_apply_log_rec_body(): Assert that MLOG_WRITE_STRING is never used on compressed B-tree pages. ------------------------------------------------------------ revno: 0.3.153 committer: marko timestamp: Mon 2006-06-19 11:07:21 +0000 message: branches/zip: page_zip_reorganize(): On success, write to the redo log. ------------------------------------------------------------ revno: 0.3.152 committer: marko timestamp: Thu 2006-06-15 07:27:13 +0000 message: branches/zip: Add parameter zip_size to fil_io(). fil_read(), fil_write(): Make these inlined functions in fil0fil.c. fil_write_lsn_and_arch_no_to_file(): Remove the parameter space_id and note that this function is to be called on the system tablespace, which is uncompressed. ------------------------------------------------------------ revno: 0.3.151 committer: marko timestamp: Wed 2006-06-14 11:19:08 +0000 message: branches/zip: Improve some assertions. recv_parse_or_apply_log_rec_body(): Assert that mlog_parse_nbytes() is never called on compressed B-tree pages. page_zip_simple_validate(): Correct a typo in a debug assertion. xdes_calc_descriptor_page(): Fix an incorrect debug assertion. ------------------------------------------------------------ revno: 0.3.150 committer: marko timestamp: Wed 2006-06-14 08:15:44 +0000 message: branches/zip: page_zip_validate(): First compare the page headers and obey the added flag page_zip_validate_header_only. ------------------------------------------------------------ revno: 0.3.149 committer: marko timestamp: Wed 2006-06-14 07:47:32 +0000 message: branches/zip: buf_flush_init_for_writing(): Determine zip_size from page_zip instead of calling fil_space_get_zip_size(). In fil_create_new_single_table_tablespace(), the table space has not yet been created. Handle also FIL_PAGE_TYPE_ALLOCATED. ------------------------------------------------------------ revno: 0.3.148 committer: marko timestamp: Wed 2006-06-14 06:29:41 +0000 message: branches/zip: Fix some bugs in the crash recovery of compressed tablespaces. fil_node_open_file(): Set node->size correctly for compressed tablespaces. fsp_header_write_space_id(): Rename to fsp_header_write_fields(), add parameter zip_size. fil_io(): Add UNIV_UNLIKELY hints to assertion-like tests. ------------------------------------------------------------ revno: 0.3.147 committer: marko timestamp: Tue 2006-06-13 20:23:26 +0000 message: branches/zip: Merge revisions 583:634 from trunk. ------------------------------------------------------------ revno: 0.3.146 committer: marko timestamp: Tue 2006-06-13 19:27:40 +0000 message: branches/zip: fsp_try_extend_data_file(): Extend the data file by one megabyte at a time, no matter what the compressed page size is. ------------------------------------------------------------ revno: 0.3.145 committer: marko timestamp: Tue 2006-06-13 08:24:26 +0000 message: branches/zip: Add page_zip_validate() assertions and remove a bogus page_zip_assertion() failure in page_copy_rec_list_end(). btr_root_raise_and_insert(), btr_lift_page_up(), btr_compress(): Add page_zip_validate() assertions. btr_compress(): Only copy FIL_PAGE_PREV when UNIV_BTR_DEBUG is defined. page_cur_delete_rec(): Document why the page_zip_validate() assertion was removed. page_copy_rec_list_end(): Remove the page_zip_validate() assertion and document why. page_move_rec_list_end(): Add page_zip_validate() assertion. ------------------------------------------------------------ revno: 0.3.144 committer: marko timestamp: Mon 2006-06-12 12:37:54 +0000 message: branches/zip: Add page_zip_validate() checks. page_cur_delete_rec(): Do not call page_zip_validate() in the beginning, because btr_set_min_rec_mark() in btr_cur_pessimistic_delete() will cause a temporary mismatch. Document temporary mismatches caused by btr_set_min_rec_mark() calls and explain why they will not cause any problems. ------------------------------------------------------------ revno: 0.3.143 committer: marko timestamp: Wed 2006-06-07 11:23:21 +0000 message: branches/zip: Cleanup suggested by Osku. ut_is_2pow(): New function for testing if a number is zero or a power of two. Use this function instead of bitwise arithmetics or ut_2_power_up() where possible. ------------------------------------------------------------ revno: 0.3.142 committer: marko timestamp: Wed 2006-06-07 11:06:12 +0000 message: branches/zip: Replace all ut_ad(page_zip_validate()) assertions with ut_a(page_zip_validate()) that are enabled if UNIV_DEBUG or UNIV_ZIP_DEBUG is defined. ------------------------------------------------------------ revno: 0.3.141 committer: marko timestamp: Wed 2006-06-07 10:41:58 +0000 message: branches/zip: Remove remaining occurrences of XDES_DESCRIBED_PER_PAGE. mlog_parse_string(): Remove an off-by-one error in an assertion. fil_extend_space_to_desired_size(): fsp_header_get_free_limit(), fsp_try_extend_data_file(): Replace UNIV_PAGE_SIZE with the actual page size. PAGE_ZIP_MIN_SIZE: New constant, to be used in assertions. FSP_SEG_INODES_PER_PAGE: Add parameter zip_size. fsp_seg_inode_page_get_nth_inode(), fsp_seg_inode_page_find_used(), fsp_seg_inode_page_find_free(): Add parameter zip_size. ------------------------------------------------------------ revno: 0.3.140 committer: marko timestamp: Tue 2006-06-06 07:42:04 +0000 message: branches/zip: Remove some more references to XDES_DESCRIBED_PER_PAGE. ibuf_parse_bitmap_init(), ibuf_bitmap_page_init(), ibuf_bitmap_page_get_bits(), ibuf_bitmap_set_bits(), ibuf_bitmap_page_no_calc(), ibuf_bitmap_get_map_page(), xdes_calc_descriptor_page(), xdes_calc_descriptor_index(), fsp_descr_page(): Add parameter zip_size. ------------------------------------------------------------ revno: 0.3.139 committer: marko timestamp: Mon 2006-06-05 09:04:19 +0000 message: branches/zip: When identifying insert buffer bitmap pages, note that the pages occur every zip_size pages in compressed tablespaces, instead of UNIV_PAGESIZE (or XDES_DESCRIBED_PER_PAGE). ibuf_bitmap_page(): Add parameter zip_size. ibuf_fixed_addr_page(): Add parameter space. ------------------------------------------------------------ revno: 0.3.138 committer: marko timestamp: Tue 2006-05-30 09:04:57 +0000 message: branches/zip: Write compressed pages to disk. os_aio_simulated_handle(): Temporarily disable os_file_check_page_trailers(), which cannot be invoked on compressed pages. dict_table_add_system_columns(): New function, split from dict_table_add_to_cache(). mlog_parse_index(): Add system columns to the dummy table and identify DB_TRX_ID and DB_ROLL_PTR in the dummy index. buf_LRU_get_free_block(): Note that page_zip->data should be allocated from an aligned memory pool. buf_flush_buffered_writes(): Write compressed pages to disk. buf_flush_post_to_doublewrite_buf(): Copy compressed pages to the doublewrite buffer. Zero fill any excess space. buf_flush_init_for_writing(): Treat all compressed pages the same. buf_read_page_low(): Read compressed pages from disk. buf_page_io_complete(): Process compressed pages. trx_sys_doublewrite_init_or_restore_page(): Process compressed pages. mlog_write_initial_log_record_fast(): Enable a debug printout #ifdef UNIV_LOG_DEBUG. fsp_header_init(), fsp_fill_free_list(): Pass the compressed page size to buf_page_create(). page_zip_compress_write_log(): Flatten the if-else if-else logic. page_zip_parse_write_blob_ptr(): Do not test page_zip if page==NULL. page_zip_parse_write_node_ptr(): Do not test page_zip if page==NULL. Invoke mlog_close() correctly. row_sel_store_row_id_to_prebuilt(): Add UNIV_UNLIKELY hint to an assertion-like test. ------------------------------------------------------------ revno: 0.3.137 committer: marko timestamp: Wed 2006-05-24 14:35:22 +0000 message: branches/zip: buf_flush_buffered_writes(): Disable the checks on compressed pages. buf_flush_post_to_doublewrite_buf(): Add a TODO comment about compressed pages. ------------------------------------------------------------ revno: 0.3.136 committer: marko timestamp: Mon 2006-05-22 09:30:34 +0000 message: branches/zip: Merge revisions 560:583 from trunk. ------------------------------------------------------------ revno: 0.3.135 committer: marko timestamp: Mon 2006-05-22 09:23:30 +0000 message: branches/zip: buf_flush_buffered_writes(): Replace four occurrences of mach_read_from_4(...) != mach_read_from_4(...) with memcmp(..., ..., 4). ------------------------------------------------------------ revno: 0.3.134 committer: marko timestamp: Wed 2006-05-17 12:03:32 +0000 message: branches/zip: Write the compressed page size to SYS_TABLES.TYPE and adjust a few places accordingly. os_aio_simulated_handle(): Add TODO comments about skipping the write checks for compressed pages. dict_create_sys_tables_tuple(): Write the compressed page size to the TYPE column. open_or_create_data_files(): Simplify the fil_node_create() call. fil_node_create(): Do not touch space->zip_size. It was already initialized by fil_space_create(). fil_reset_too_high_lsns(), buf_flush_buffered_writes(): Add TODO comment about compressed pages. buf_flush_init_for_writing(): Handle pages of type FIL_PAGE_INODE, FIL_PAGE_IBUF_BITMAP, and FIL_PAGE_TYPE_FSP_HDR as uncompressed ones. ------------------------------------------------------------ revno: 0.3.133 committer: marko timestamp: Tue 2006-05-16 14:17:43 +0000 message: branches/zip: Try to reorganize the page when compression fails. page_zip_compress_write_log(): Make static. page_zip_compress(): Add optional parameter mtr for redo logging. page_zip_reorganize(): Low-level counterpart of btr_page_reorganize(). page_zip_copy(): Add debug assertions about mtr_memo_contains. page_cur_insert_rec_low(): Try page_zip_reorganize() and seek to the new position of insert_rec if it succeeds. page_copy_rec_list_end(), page_copy_rec_list_start(): Try page_zip_reorganize(). page_move_rec_list_end(): Remove bogus comment. ------------------------------------------------------------ revno: 0.3.132 committer: marko timestamp: Tue 2006-05-16 12:01:20 +0000 message: branches/zip: btr_root_raise_and_insert(): Remove a bogus assertion. ------------------------------------------------------------ revno: 0.3.131 committer: marko timestamp: Tue 2006-05-16 07:58:10 +0000 message: branches/zip: Shorten the log record MLOG_ZIP_PAGE_COMPRESS. page_zip_copy(), page_zip_compress_write_log(): Add parameter 'index'. page_zip_parse_write_header(): Check for !page_zip only if page != NULL. page_zip_compress_write_log(), page_zip_parse_compress(): Omit some fields in the page header. Omit the unused bytes between the modification log and the page trailer. parse_or_apply_log_rec_body(): Remove a bogus debug assertion. ------------------------------------------------------------ revno: 0.3.130 committer: marko timestamp: Mon 2006-05-15 11:43:35 +0000 message: branches/zip: btr_page_split_and_insert(): Implement fallbacks for page_move_rec_list_start() and page_move_rec_list_end(). Relax the conditions on insert_will_fit if page_zip is set. page_delete_rec_list_start(): Make public. page_zip_copy(): Clear REC_INFO_MIN_REC_FLAG if FIL_PAGE_PREV != FIL_NULL. ------------------------------------------------------------ revno: 0.3.129 committer: marko timestamp: Fri 2006-05-12 13:49:04 +0000 message: branches/zip: btr_compress(): When merging a compressed page to the right, set the FIL_PAGE_PREV field of merge_page to FIL_NULL before copying the records in order not to break the assumption of page_zip_compress() that min_rec_mark is always set on the first user record of a non-leaf page whose FIL_PAGE_PREV field is FIL_NULL, and never otherwise. ------------------------------------------------------------ revno: 0.3.128 committer: marko timestamp: Fri 2006-05-12 11:36:17 +0000 message: branches/zip: Fix a bug that was triggered during purge. btr_compress(): Defer any tree modifications until the records have successfully been copied. row_purge_remove_sec_if_poss_low(): Simplify the setting of the return status. ------------------------------------------------------------ revno: 0.3.127 committer: marko timestamp: Fri 2006-05-12 09:35:56 +0000 message: branches/zip: Remove a potential assertion failure. btr_lift_page_up(): If page_copy_rec_list_end() fails, resort to page_zip_copy(). page_zip_copy(): Validate the copy of the page. ------------------------------------------------------------ revno: 0.3.126 committer: marko timestamp: Thu 2006-05-11 18:23:10 +0000 message: branches/zip: After merge fix, and cleanup. btr_validate_level(): Add missing parameter to added buf_page_print() calls. btr_root_raise_and_insert(): Replace low-level code with page_zip_copy(). page_zip_copy(): New function to copy the data payload of a compressed page, byte for byte. The file page header and trailer are not copied, to avoid overwriting the fields FIL_PAGE_OFFSET, FIL_PAGE_PREV and FIL_PAGE_NEXT. ------------------------------------------------------------ revno: 0.3.125 committer: marko timestamp: Thu 2006-05-11 17:00:43 +0000 message: branches/zip: Merge revisions 558:560 from trunk. ------------------------------------------------------------ revno: 0.3.124 committer: marko timestamp: Thu 2006-05-11 12:47:23 +0000 message: branches/zip: Merge revisions 536:558 from trunk. ------------------------------------------------------------ revno: 0.3.123 committer: marko timestamp: Thu 2006-05-11 12:31:22 +0000 message: branches/zip: Minor cleanup. btr_cur_compress_if_useful(): Replace if () return(); return() with return. page_rec_get_next_low(): New function. page_rec_get_prev(): Invoke page_is_comp() outside the loop. Replace page_rec_get_next() with loop-specific instances of page_rec_get_next_low(). page_copy_rec_list_end(): Add some debug assertions. ------------------------------------------------------------ revno: 0.3.122 committer: marko timestamp: Wed 2006-05-10 18:01:41 +0000 message: branches/zip: btr_compress(): Do not modify the node pointer until the records have successfully been copied. ------------------------------------------------------------ revno: 0.3.121 committer: marko timestamp: Wed 2006-05-10 13:58:35 +0000 message: branches/zip: Remove GCC 4.0.4 warnings from make AM_CFLAGS='-std=c89 -Wall -W -pedantic' ------------------------------------------------------------ revno: 0.3.120 committer: marko timestamp: Wed 2006-05-10 11:28:14 +0000 message: branches/zip: Fix bugs. btr_root_raise_and_insert(): When copying root to new_page byte for byte, restore the page number of new_page afterwards. buf_flush_init_for_writing(): For FIL_PAGE_INDEX, write the page number and space id also to the uncompressed page. ------------------------------------------------------------ revno: 0.3.119 committer: marko timestamp: Wed 2006-05-10 07:15:07 +0000 message: branches/zip: Fix bugs triggered by running out of space. btr_root_raise_and_insert(): If page_copy_rec_list_end() fails, copy the pages byte for byte. page_zip_compress(): Ensure that the uncompressed storage area will fit on the compressed page. ------------------------------------------------------------ revno: 0.3.118 committer: marko timestamp: Tue 2006-05-09 16:09:09 +0000 message: branches/zip: Add detailed debugging output to page_zip_compress(). ------------------------------------------------------------ revno: 0.3.117 committer: marko timestamp: Mon 2006-05-08 13:30:46 +0000 message: branches/zip: btr_cur_optimistic_insert(): Fail gracefully if reorganizing the page fails when compressed pages are enabled. ------------------------------------------------------------ revno: 0.3.116 committer: marko timestamp: Mon 2006-05-08 12:20:34 +0000 message: branches/zip: Temporarily allow the compressed page size to be specified in CREATE TABLE and ALTER TABLE with AVG_ROW_LENGTH={1,2,4,8,16}. ------------------------------------------------------------ revno: 0.3.115 committer: marko timestamp: Mon 2006-05-08 09:37:03 +0000 message: branches/zip: Merge revisions 532:536 from trunk. ------------------------------------------------------------ revno: 0.3.114 committer: marko timestamp: Mon 2006-05-08 06:18:59 +0000 message: branches/zip: Merge revisions 465:532 from trunk. ------------------------------------------------------------ revno: 0.3.113 committer: marko timestamp: Thu 2006-05-04 11:44:49 +0000 message: branches/zip: Minor improvements. Introduce FIL_PAGE_ZBLOB_DATA as a synonym for FIL_PAGE_FILE_FLUSH_LSN. btr_store_big_rec_extern_fields(): Make the assertion about dict_table_zip_size() more accurate. buf_LRU_get_free_block(), buf_block_alloc(): Add parameter zip_size. buf_calc_zblob_page_checksum(): Remove. Replace with page_zip_calc_checksum(). buf_page_init(): Remove parameter zip_size. buf_page_io_complete(): Add a placeholder for handling compressed pages. trx_doublewrite_page_inside(): Remove redundant function. page_zip_write_rec(): Relax an overly tight assertion about blob_no. ------------------------------------------------------------ revno: 0.3.112 committer: marko timestamp: Tue 2006-05-02 11:44:39 +0000 message: branches/zip: Prepare for writing compressed and reading pages. buf_page_print(): Print also compressed pages. Add parameter zip_size. buf_flush_init_for_writing(): Stamp the fields on a compressed B-tree index page. Add the header field FIL_PAGE_ZBLOB_SPACE_ID as an alias of FIL_PAGE_PREV. page_zip_calc_checksum(): New function. page_zip_compress(): Avoid copying the fields that are written in buf_flush_init_for_writing(). page_zip_header_cmp(): New function for comparing those fields of the page header that will not be written in buf_flush_init_for_writing(). ------------------------------------------------------------ revno: 0.3.111 committer: marko timestamp: Fri 2006-04-28 10:53:24 +0000 message: branches/zip: page_cur_insert_rec_low(): Write a log record of recompressing the page. ------------------------------------------------------------ revno: 0.3.110 committer: marko timestamp: Fri 2006-04-28 09:30:40 +0000 message: branches/zip: Minor improvements. buf_flush_init_for_writing(): Calculate the checksum with the actual zip_size. buf_calc_zblob_page_checksum(): Skip the field FIL_PAGE_SPACE_OR_CHKSUM. trx_sys_doublewrite_init_or_restore_page(): Use the actual zip_size. page_cur_insert_rec_low(): If page_zip_alloc() fails, try compressing the whole page afterwards. ------------------------------------------------------------ revno: 0.3.109 committer: marko timestamp: Thu 2006-04-27 10:48:12 +0000 message: branches/zip: btr_lift_page_up(): Set level before page_zip_compress(). ------------------------------------------------------------ revno: 0.3.108 committer: marko timestamp: Wed 2006-04-26 09:35:18 +0000 message: branches/zip: Minor cleanup and bug fixes btr_page_reorganize_low(): Rename new_page to temp_page. btr_store_big_rec_extern_fields(): FIL_PAGE_TYPE is 2 bytes, not 4. buf_page_init(), buf_page_create(), buf_read_page_low(), buf_page_init_for_read(): Add parameter zip_size. buf_page_init_for_backup_restore(), recv_apply_log_recs_for_backup(): Enclose in #ifdef UNIV_HOTBACKUP. Enclose some debug code in #ifdef UNIV_LOG_REPLICATE. page_zip_write_header_log(): Replace page_zip with a pointer to the uncompressed page. page_zip_write_rec(): Relax an assertion about blob_no + n_ext. page_copy_rec_list_to_created_page_write_log(): Allow logging to be disabled. ------------------------------------------------------------ revno: 0.3.107 committer: marko timestamp: Tue 2006-04-25 07:12:32 +0000 message: branches/zip: Write the compressed page size to SYS_TABLES.TYPE and to the file space header (FSP_PAGE_ZIP_SIZE, renamed from FSP_LOWEST_NO_WRITE). fil_space_struct: Add zip_size. dict_table_struct: Embed zip_size in flags. dict_table_zip_size(): Infer zip_size from table->flags. dict_sys_tables_get_zip_size(): Read zip_size from SYS_TABLES.TYPE. fil_space_get_zip_size(): Read zip_size from the file space header. Add the redo log entry type MLOG_ZIP_FILE_CREATE. ------------------------------------------------------------ revno: 0.3.106 committer: marko timestamp: Wed 2006-04-12 12:39:58 +0000 message: branches/zip: Merge revisions 459:465 from trunk. ------------------------------------------------------------ revno: 0.3.105 committer: marko timestamp: Wed 2006-04-12 09:32:17 +0000 message: branches/zip: Merge revisions 265:459 from trunk. ------------------------------------------------------------ revno: 0.3.104 committer: marko timestamp: Tue 2006-04-11 18:40:44 +0000 message: branches/zip: Fix some crash recovery bugs. page_zip_alloc(): Add parameter "mtr" and log successful calls to page_zip_compress(). page_zip_write_blob_ptr(), page_zip_write_node_ptr(): Write the offset on the uncompressed page, because mlog_write_initial_log_record_fast() does not do so. page_zip_write_header_log(), page_zip_parse_write_header(): Encode the offset in one byte. ------------------------------------------------------------ revno: 0.3.103 committer: marko timestamp: Tue 2006-04-11 12:27:06 +0000 message: branches/zip: Add the redo log type MLOG_ZIP_PAGE_COMPRESS. Remove MLOG_ZIP_LIST_START_COPY and MLOG_ZIP_LIST_END_COPY. btr_compress(): Simplify a debug assertion. page_zip_compress_write_log(), page_zip_parse_compress(): New functions. page_cur_parse_insert_rec(): Simplify the code. page_parse_create_zip(): Removed. page_create_zip(), page_copy_rec_list_end(), page_copy_rec_list_start(): Invoke page_zip_compress_write_log(). ------------------------------------------------------------ revno: 0.3.102 committer: marko timestamp: Tue 2006-04-11 09:02:27 +0000 message: branches/zip: Minor cleanup. Remove MLOG_ZIP_ROOT_RAISE. btr_page_create(): Remove parameters "prev" and "next". The pointers to adjacent B-tree pages will be set in the caller before any user records are inserted. Remove the redo log entry type MLOG_ZIP_ROOT_RAISE, since btr_root_raise_and_insert() will not defer modifications to the compressed page. btr_attach_half_pages(): Add parameter new_page_zip. ------------------------------------------------------------ revno: 0.3.101 committer: marko timestamp: Tue 2006-04-11 08:12:39 +0000 message: branches/zip: Disable accidentally committed debug code that would break crash recovery of uncompressed tables. ------------------------------------------------------------ revno: 0.3.100 committer: marko timestamp: Mon 2006-04-10 19:48:37 +0000 message: branches/zip: Replace the redo log entry types MLOG_ZIP_COMPRESS and MLOG_ZIP_DECOMPRESS with higher-level entry types. Implement the logging and crash recovery of MLOG_ZIP_PAGE_CREATE. page_create_zip(): New function for creating a compressed B-tree page. page_parse_create_zip(): New function for applying a MLOG_ZIP_PAGE_CREATE redo log record. btr_page_create(): Remove the prototype. Add parameters page_zip, level, prev, and next. btr0btr.c: Eliminate page_zip_compress() calls where possible. page_zip_alloc(), page_zip_compress(), page_zip_decompress(), page_zip_clear_rec(): Remove parameter mtr. recv_parse_or_apply_log_rec_body(): Handle MLOG_ZIP_PAGE_CREATE. Add TODO comments for the other added redo log entry types. ------------------------------------------------------------ revno: 0.3.99 committer: marko timestamp: Mon 2006-04-10 06:54:14 +0000 message: branches/zip: btr_lift_page_up(): Remove return value; assume that the operation always succeeds. ------------------------------------------------------------ revno: 0.3.98 committer: marko timestamp: Fri 2006-04-07 12:56:22 +0000 message: branches/zip: Implement crash recovery of writing BLOB pointers. page_zip_parse_write_blob_ptr(): New function for applying the redo log record MLOG_ZIP_WRITE_BLOB_PTR. page_zip_write_blob_ptr(): Write the necessary information to the redo log. page0zip.c: Tighten the assertions to ensure that blob_ptr < page_zip->n_blobs. page_zip_write_node_ptr(): Use memcpy() instead of mach_write_to_4(). ------------------------------------------------------------ revno: 0.3.97 committer: marko timestamp: Fri 2006-04-07 11:44:14 +0000 message: branches/zip: Implement crash recovery of writing to the page header. page_zip_parse_write_header(): New function for applying the redo log of MLOG_ZIP_WRITE_HEADER. page_zip_parse_write_node_ptr(): Mark the log corrupted if !page_zip. ------------------------------------------------------------ revno: 0.3.96 committer: marko timestamp: Fri 2006-04-07 11:04:08 +0000 message: branches/zip: Implement the crash recovery of MLOG_ZIP_WRITE_NODE_PTR. page_zip_parse_write_node_ptr(): New function to apply a redo log of MLOG_ZIP_WRITE_NODE_PTR. page_zip_write_node_ptr(): Write all needed information to the redo log. page_zip_write_header_log(): Write all necessary information to the redo log. ------------------------------------------------------------ revno: 0.3.95 committer: marko timestamp: Wed 2006-04-05 13:41:12 +0000 message: branches/zip: Initial steps towards disk-based storage of compressed pages. dict_mem_table_create(): Account for DICT_TF_COMPRESSED in a debug assertion. btr_store_big_rec_extern_fields(), btr_free_externally_stored_field(), btr_copy_externally_stored_field(): Implement the disk format for compressed BLOB pages. btr_copy_externally_stored_field(): Improve error reporting and handling when decompressing BLOB pages. buf_flush_init_for_writing(), buf_page_is_corrupted(), buf_page_print(): Account for compressed BLOB pages (FIL_PAGE_TYPE_ZBLOB). buf_calc_zblob_page_checksum(): New function. ------------------------------------------------------------ revno: 0.3.94 committer: marko timestamp: Tue 2006-04-04 10:42:05 +0000 message: branches/zip: Minor cleanup. Replace btr_page_get_level() with page_is_leaf() where possible. row_purge_upd_exist_or_extern(): Remove obsolete TODO comment. dtuple_convert_big_rec(): Replace a flag variable with goto. ------------------------------------------------------------ revno: 0.3.93 committer: marko timestamp: Mon 2006-04-03 20:33:31 +0000 message: branches/zip: Fix some BLOB handling bugs. btr_store_big_rec_extern_fields(): Assert that page_zip is non-NULL if and only if dict_table_is_zip() holds. btr_free_externally_stored_field(): Observe dict_table_is_zip(). Allow page_zip==NULL even if dict_table_is_zip(). Remove the related TODO comment in row_purge_upd_exist_or_extern(). page_zip_available(): uncompressed_size already includes PAGE_ZIP_DIR_SLOT_SIZE. page_zip_decompress(): Remove bogus assertion d_stream.next_out == last. Do not subtract BTR_EXTERN_FIELD_REF_SIZE from d_stream.avail_in when decompressing records, because the records may be deleted later in page_zip_apply_log(), and no BLOB pointers are allocated for deleted records. ------------------------------------------------------------ revno: 0.3.92 committer: marko timestamp: Mon 2006-04-03 12:40:09 +0000 message: branches/zip: Add TODO comment to row_purge_upd_exist_or_extern(). ------------------------------------------------------------ revno: 0.3.91 committer: marko timestamp: Mon 2006-04-03 11:19:01 +0000 message: branches/zip: Fix some bugs btr_page_split_and_insert(): Avoid dereferencing pointers to garbage on the old page. btr_cur_pessimistic_insert(): Pass pointer to big_rec_vec to btr_cur_optimistic_insert(). trx_undo_prev_version_build(): Only invoke rec_set_field_extern_bits() if n_ext_vect > 0. row_ins_index_entry_low(): Simplify a debug assertion. page_copy_rec_list_end_no_locks(): Make the loop slightly more readable. page_delete_rec_list_end(): Delete records on compressed pages one by one. ------------------------------------------------------------ revno: 0.3.90 committer: marko timestamp: Thu 2006-03-30 11:47:10 +0000 message: branches/zip: Minor fixes for BLOB handling. page_zip_get_n_prev_extern(): Ignore deleted records. page_zip_write_rec(): Remove bogus debug assertion about the BLOB pointer being zero-filled. It would fail when reallocating records from the page heap or when updating records in place. ------------------------------------------------------------ revno: 0.3.89 committer: marko timestamp: Wed 2006-03-29 14:08:57 +0000 message: branches/zip: Correctly identify deleted records when deciding whether to copy BLOB pointers. page_zip_dir_find_free_low(): New function, split from page_zip_dir_find_free(). Add comments about processing the records in heap_no order. Fix some typographic errors in comments and improve formatting. page_zip_decompress(): Initialize (clear) the BLOB pointers in deleted records. page_zip_clear_rec(): Relocate page_zip_validate() assertions, so that they will not fail if a record containing BLOB pointers is being deleted. Note that page_zip_validate() will fail if page_zip_clear_rec() is unable to clear the record. ------------------------------------------------------------ revno: 0.3.88 committer: marko timestamp: Tue 2006-03-28 07:57:47 +0000 message: branches/zip: Fix two bugs. page_zip_decompress(): Pass size = d_stream.avail_in + 1 to page_zip_apply_log(), since the terminating NUL byte is not included in the space reserved for the compressed data stream. page_zip_clear_rec(): Clear also node pointer fields. ------------------------------------------------------------ revno: 0.3.87 committer: marko timestamp: Mon 2006-03-27 12:30:25 +0000 message: Rename the static page_zip_alloc() to page_zip_malloc() to resolve a clash. ------------------------------------------------------------ revno: 0.3.86 committer: marko timestamp: Mon 2006-03-27 12:27:53 +0000 message: branches/zip: Implement custom memory management for zlib. Wrap ut_malloc() and ut_free() as page_zip_alloc() and page_zip_free(). ------------------------------------------------------------ revno: 0.3.85 committer: marko timestamp: Thu 2006-03-23 08:13:08 +0000 message: branches/zip: Do not clear the records in page_delete_rec_list_end(). page_delete_rec_list_end(): Do not invoke page_zip_clear_rec(). page_zip_clear_rec(): Remove the global declaration. Add an assertion that the record must be on the free list. Copy onl rec_offs_data_size() bytes before attempting to clear the record and to compress the page. page_zip_compress(), page_zip_write_rec(): Remove debug assertions that trx_id, roll_ptr and node_ptr of deleted records be zero-filled. ------------------------------------------------------------ revno: 0.3.84 committer: marko timestamp: Wed 2006-03-22 14:10:09 +0000 message: branches/zip: Remove a bogus assertion. page_zip_write_rec(): Allow the record to be delete-marked. ------------------------------------------------------------ revno: 0.3.83 committer: marko timestamp: Wed 2006-03-22 10:31:18 +0000 message: branches/zip: Bug fix page_zip_write_trx_id_and_roll_ptr(): Write roll_ptr after trx_id, not over it. ------------------------------------------------------------ revno: 0.3.82 committer: marko timestamp: Wed 2006-03-22 08:05:06 +0000 message: branches/zip: Minor improvements. page_cur_search_with_match(): Add a page_zip_validate() debug assertion. page_validate(): Add a missing space to a fprintf() format string. ------------------------------------------------------------ revno: 0.3.81 committer: marko timestamp: Mon 2006-03-20 15:14:38 +0000 message: branches/zip: Minor improvements. page_zip_compress(): Add a debug check that the trx_id and roll_ptr columns of deleted records are zero-filled. This should provide some detection against misdirected writes. page_zip_decompress(): Correct typos in comments. ------------------------------------------------------------ revno: 0.3.80 committer: marko timestamp: Mon 2006-03-20 13:21:11 +0000 message: branches/zip: Minor improvements btr_page_get_father_for_rec(): Remove redundant assertion. Add UNIV_UNLIKELY to an assertion-like test. btr_validate_level(): Add debug assertions on page_zip_validate(). page_zip_compress(): Remove bogus assertion. page_zip_write_rec(): Assert that the record written is neither delete-marked nor deleted. ------------------------------------------------------------ revno: 0.3.79 committer: marko timestamp: Fri 2006-03-17 15:36:25 +0000 message: branches/zip: Minor bug fix. test-insert still does not pass. page_zip_compress(): Assert that trx_id and roll_ptr are zero for deleted records. page_zip_clear_rec(): Remove comment about need for redo logging. This operationg is already logged on a higher level. page_delete_rec_list_end(): Always invoke page_zip_clear_rec() on compressed pages. ------------------------------------------------------------ revno: 0.3.78 committer: marko timestamp: Fri 2006-03-17 14:11:57 +0000 message: branches/zip: Minor fixes Restore page_zip_clear_rec() to the global scope. Invoke it in page_delete_rec_list_end(). Add debug assertions to page0zip.c to guard against overwriting data on the compressed page. ------------------------------------------------------------ revno: 0.3.77 committer: marko timestamp: Thu 2006-03-16 14:02:22 +0000 message: branches/zip: Improve the clearing of deleted records. Try to support operations on BLOB columns. There are some bugs in the code, because test-insert and a few other tests fail. page_mem_free(): Add parameter index. Decrement PAGE_N_RECS here. Move some operations to page_zip_dir_delete(). page_zip_clear_rec(): Make this a static function. page_zip_dir_delete(): Add parameters index and offsets. Decrement PAGE_N_RECS and clear info_bits and n_owned. page_zip_get_n_prev_extern(): Correct the synopsis and the algorithm. Add parameter page_zip. Search the records in heap_no order instead of collation order. page_zip_compress(), page_zip_decompress(): Only copy BLOB pointers and increment n_blobs for records that have not been deleted. page_zip_clear_rec(): Clear trx_id and roll_ptr on the compressed page. page_zip_dir_delete(): Decrement PAGE_N_RECS. Shift the array of BLOB pointers. Call page_zip_clear_rec(). page_zip_dir_add_slot(): Shift the array of BLOB pointers to make space of roll_ptr and trx_id. page_cur_delete_rec(): Do not decrement PAGE_N_RECS or call page_zip_clear_rec(), as page_mem_free() already does it. ------------------------------------------------------------ revno: 0.3.76 committer: marko timestamp: Thu 2006-03-16 09:44:52 +0000 message: branches/zip: Minor fixes trx-undo_prev_version_build(): Pass offsets==NULL to rec_set_field_extern_bits(). rec_set_field_extern_bits(), rec_set_field_extern_bits_new(): Accept offsets==NULL. row_upd_rec_in_place(): Remove the bogus comment that the function would only be invoked on a clustered index. Remove the related debug assertion. ------------------------------------------------------------ revno: 0.3.75 committer: marko timestamp: Tue 2006-03-14 14:38:45 +0000 message: branches/zip: Bug fixes for BLOB handling. At least one bug remains: page_zip_dir_delete() will need to handle BLOBs. rec_set_field_extern_bits(), rec_set_field_extern_bits_new(): Add parameter offsets. rec_offs_set_nth_extern(): New function to set an extern bit in offsets. This will be called when an extern bit is set in a record. page_cur_rec_insert(), page_cur_insert_rec_low(): Document that the parameter "offsets" is in/out. page_zip_dir_delete(): Note that the array of BLOB pointers will need to be shifted. page0zip.ic: Document the entry type for clearing a record. page_zip_available(): Add parameter "index". Remove parameters "is_leaf" and "is_clustered". page_zip_get_trailer_len(): New function for computing the trailer length of the compressed page. page_zip_apply_log(): Implement the modification log entry type for clearing the data bytes of a record. page_zip_decompress(): Initialize n_blobs when actually copying the BLOB pointers to place. page_zip_validate(): Add diagnostic messages for failures. Check also m_start, m_end, and n_blobs. page_zip_write_blob_ptr(): Add page_zip_validate() assertion. ------------------------------------------------------------ revno: 0.3.74 committer: marko timestamp: Mon 2006-03-13 15:02:16 +0000 message: branches/zip: Implement in-place updates of BLOB pointers. There are still some bugs in the code. btr_store_big_rec_extern_fields(): Remove assertion on dict_table_is_zip() to ease testing. btr_free_externally_stored_field(): Test page_zip instead of dict_table_is_zip(). page_zip_write_rec(): Add parameter "create". Try to handle externally stored columns. rec_offs_any_extern(): Correct the function comment. Add rec_offs_n_extern() and page_zip_get_n_prev_extern(). page_zip_dir_decode(): Replace assertion with if (...) return(FALSE). page_zip_decompress(): Do not clear page_zip->n_blobs after counting the BLOBs. page_zip_write_blob_ptr(): Use page_zip_get_n_prev_extern(). Correct an off-by-one error in memcpy(). ------------------------------------------------------------ revno: 0.3.73 committer: marko timestamp: Mon 2006-03-13 07:42:31 +0000 message: branches/zip: Minor improvements. btr_cur_pessimistic_update(): Remove extraneous page_zip_write_rec() call. btr_cur_set_ownership_of_extern_field(): Simplify the logic. row_upd_rec_in_place(): Make use of parameter "index" in debug assertions. page_zip_write_rec(): Remove TODO comment about redo log record. The write will already be covered by higher-level log entries. ------------------------------------------------------------ revno: 0.3.72 committer: marko timestamp: Fri 2006-03-10 12:29:22 +0000 message: branches/zip: Remove unused parameter "index" of page_mem_free(). ------------------------------------------------------------ revno: 0.3.71 committer: marko timestamp: Fri 2006-03-10 12:10:47 +0000 message: branches/zip: Replace buf_block_align(btr_cur_get_page()) with buf_block_align(btr_cur_get_rec()). ------------------------------------------------------------ revno: 0.3.70 committer: marko timestamp: Fri 2006-03-10 10:30:56 +0000 message: branches/zip: Make test-insert --small-test pass. btr_compress(): Pass the correct page_zip to btr_node_ptr_set_child_page_no(). page_mem_free(): Remove parameter mtr. Do not call page_zip_clear_rec() here. page_cur_delete_rec(): Call page_zip_clear_rec() here. Decrement PAGE_N_RECS only after calling page_mem_free(). Assert page_zip_validate(). ------------------------------------------------------------ revno: 0.3.69 committer: marko timestamp: Thu 2006-03-09 17:26:02 +0000 message: branches/zip: Note that TRX_ID and ROLL_PTR only exist on B-tree leaf pages of clustered indexes. Previously, parts of the code assumed that these columns would exist on all leaf pages. Simplify the update-in-place of these columns. Add inline function dict_index_is_clust() to replace all tests index->type & DICT_CLUSTERED. Remove the redo log entry types MLOG_ZIP_WRITE_TRX_ID and MLOG_ZIP_WRITE_ROLL_PTR, because the modifications to these columns are covered by logical logging. Fuse page_zip_write_trx_id() and page_zip_write_roll_ptr() into page_zip_write_trx_id_and_roll_ptr(). page_zip_dir_add_slot(), page_zip_available(): Add flag "is_clustered", so that no space will be reserved for TRX_ID and ROLL_PTR on leaf pages of secondary indexes. page_zip_apply_log(): Flag an error when val==0 is encoded with two bytes. page_zip_write_rec(): Add debug assertions that there is enough space available for the entry before copying the data bytes of the record. ------------------------------------------------------------ revno: 0.3.68 committer: marko timestamp: Thu 2006-03-09 16:48:25 +0000 message: branches/zip: Fix a bug in optimistic update. btr_cur_update_in_place(): Remove the page_zip_write_rec() call, because row_upd_rec_in_place() already calls it. ------------------------------------------------------------ revno: 0.3.67 committer: marko timestamp: Thu 2006-03-09 13:35:04 +0000 message: branches/zip: Fix a bug in the insertion of a record. page_dir_split_slot(): Do not pass page_zip to page_dir_slot_set_n_owned(), because the caller will rewrite the dense page directory later. At this point of execution, the dense directory will not contain the newly inserted record, which may end up being written to new_slot. ------------------------------------------------------------ revno: 0.3.66 committer: marko timestamp: Wed 2006-03-08 22:19:20 +0000 message: branches/zip: Fix various bugs. btr_root_raise_and_insert(): Because btr_page_set_level() must not change level from non-zero to zero on compressed pages, invoke btr_page_set_level() with page_zip==NULL and compress the entire root page after creating it from the scratch. btr_attach_half_pages(): Simplify the computation of lower_page_zip and upper_page_zip. Invoke btr_node_ptr_set_child_page_no() with the correct page_zip. page0page.h: Add __attribute__((const)) to functions testing for infimum or supremum. page_zip_dir_delete(): Note that the third parameter may be NULL. Correct offset errors. page_zip_available(): Use n_heap instead of n_recs. page_zip_dir_find(), page_zip_dir_find_free(): Fix off-by-one error. page_zip_fields_encode(), page_zip_fields_decode(): Encode and decode index->n_nullable for non-leaf pages. page_zip_apply_log(): Write REC_NEW_HEAP_NO before calling rec_offs_make_valid(). page_zip_write_node_ptr(): Correct off-by-one error. page_cur_search_with_match(): Make use of page_is_leaf(). page_dir_add_slots(): Replaced with page_dir_add_slot(). Use memmove(). ------------------------------------------------------------ revno: 0.3.65 committer: marko timestamp: Wed 2006-03-08 09:57:54 +0000 message: branches/zip: btr_page_reorganize_low(): Assert page_zip_validate() before and after the operation. ------------------------------------------------------------ revno: 0.3.64 committer: marko timestamp: Tue 2006-03-07 13:47:33 +0000 message: branches/zip: Minor bug fix buf_flush_init_for_writing(): Copy FIL_PAGE_LSN to the compressed page. page_cur_insert_rec_low(): Add debug assertion. ------------------------------------------------------------ revno: 0.3.63 committer: marko timestamp: Tue 2006-03-07 11:41:56 +0000 message: branches/zip: Fix errors in bit arithmetics. page_zip_fixed_field_encode(), page_zip_fields_encode(), page_zip_fields_decode(): Do not waste one bit when encoding quantities larger than 127. page_zip_apply_log(), page_zip_write_rec(): Decode and encode heap_no >= 127 correctly. ------------------------------------------------------------ revno: 0.3.62 committer: marko timestamp: Tue 2006-03-07 09:41:31 +0000 message: branches/zip: Correctly restore extra bytes in page_zip_apply_log(). page_zip_apply_log(): Correct an off-by-one error. page_zip_write_rec(): Correct a debug assertion. Encode heap_no as soon as possible. ------------------------------------------------------------ revno: 0.3.61 committer: marko timestamp: Mon 2006-03-06 21:00:05 +0000 message: branches/zip: Fix some bugs in the insertion of records. row_upd_rec_in_place(), page_zip_write_rec(): Add parameter "index". page_dir_set_n_heap(): Add a debug assertion that on compressed pages, n_heap will always be incremented by one. Improve code formatting. page_zip_dir_add_slot(): New function, called from page_cur_insert_rec_low() after page_mem_alloc_heap(). rec_set_n_owned_new(): Do not call page_zip_rec_set_owned() on the supremum record. rec_offs_make_valid(): Add debug assertions. page_zip_dir_user_size(): Correct an off-by-one error in the debug assertion. page_zip_apply_log(): Add parameter trx_id_col. Skip trx_id and roll_ptr. page_zip_decompress(): Simplify the handling of "storage" in the loop that copies the uncompressed fields. page_zip_write_rec(): Store trx_id and roll_ptr separately. page_zip_write_trx_id(), page_zip_write_roll_ptr(): Fix off-by-one errors. page_cur_insert_rec_low(): Call page_zip_dir_add_slot() after page_mem_alloc_heap(). Remove some redundant assertions. Pass page_zip to page_dir_split_slot(). ------------------------------------------------------------ revno: 0.3.60 committer: marko timestamp: Fri 2006-03-03 14:43:05 +0000 message: branches/zip: Merge revisions 247:265 from trunk. ------------------------------------------------------------ revno: 0.3.59 committer: marko timestamp: Fri 2006-03-03 14:32:27 +0000 message: branches/zip: Bug fixes rec_get_offsets_reverse(): Calculate extra_size correctly. page_zip_apply_log(): Fix an off-by-one error in comparison. Replace heap_status with hs where possible. Increment the heap_no in heap_status correctly. page_zip_decompress(): Eliminate the local variable "err". Check for Z_STREAM_END only at the start of a record, so that incomplete records will always be detected. page_zip_write_rec(): Calculate the address of "storage" in the same way as elsewhere. Add TODO comments regarding the handling of the uncompressed fields (BLOB pointers, trx_id, and roll_ptr). ------------------------------------------------------------ revno: 0.3.58 committer: marko timestamp: Fri 2006-03-03 08:39:20 +0000 message: branches/zip: Merge table->zip to table->flags. Add dict_table_is_zip(). ------------------------------------------------------------ revno: 0.3.57 committer: marko timestamp: Fri 2006-03-03 08:12:59 +0000 message: branches/zip: page_zip_write_rec(): Add a page_zip_validate() assertion. ------------------------------------------------------------ revno: 0.3.56 committer: marko timestamp: Thu 2006-03-02 14:05:32 +0000 message: branches/zip: Fix some bugs in incremental compression. btr_create(): page_zip_compress() returns FALSE on failure. page_zip_write_header(): Write to page_zip->data[] instead of page_zip[]. buf_flush_init_for_writing(): Add parameter page_zip and set the fields also in the header of the compressed page. btr_cur_search_to_nth_level(): Add ut_ad() on page_zip_validate(). ------------------------------------------------------------ revno: 0.3.55 committer: marko timestamp: Wed 2006-03-01 13:39:56 +0000 message: branches/zip: Identify records in the modification log by heap_no. page_zip_compress(), page_zip_decompress(), page_zip_write_rec(): Note that the end marker of the modification log is 1 byte. page_zip_find_heap_no(): Remove. page_zip_apply_log(): Remove parameter "page". Instead of a 2-byte offset to the record, decode the heap number using a variable-length code. page_zip_write_rec(): Check the range of heap_no with debug assertions. Encode the heap number instead of an offset to the start of the record. ------------------------------------------------------------ revno: 0.3.54 committer: marko timestamp: Wed 2006-03-01 11:38:25 +0000 message: branches/zip: Move some private functions from page0zip.ic and page0zip.h to page0zip.c. ------------------------------------------------------------ revno: 0.3.53 committer: marko timestamp: Wed 2006-03-01 11:29:18 +0000 message: branches/zip: Remove remaining references to relocated records in function prototypes and comments. These changes were accidentally forgotten from revision 253. ------------------------------------------------------------ revno: 0.3.52 committer: marko timestamp: Tue 2006-02-28 20:37:29 +0000 message: branches/zip: In page_zip_compress(), do not touch page_zip unless the operation succeeds. page_zip_dir_set(): Remove, as the slots will be written to a temporary buffer. page_zip_dir_encode(): Replace page_zip with buf. Make some assertions more accurate. Write the dense page directory to buf. page_zip_compress(): Allocate a temporary buffer for the compressed page except the page header. Make some assertions more accurate. page_zip_compress(), page_zip_decompress(): Remove 2 bytes of empty space adjacent to the area reserved for storing uncompressed columns. ------------------------------------------------------------ revno: 0.3.51 committer: marko timestamp: Mon 2006-02-27 16:03:32 +0000 message: branches/zip: Fix a memory management bug. page_zip_decompress(): Free index and heap at the end of the function. Do not write the index to the MLOG_ZIP_DECOMPRESS record, since it can be decoded from the compressed page. ------------------------------------------------------------ revno: 0.3.50 committer: marko timestamp: Mon 2006-02-27 12:38:49 +0000 message: branches/zip: Make page_delete_rec_list_start() work on compressed pages, now that deletion of records on compressed pages is guaranteed to succeed. ------------------------------------------------------------ revno: 0.3.49 committer: marko timestamp: Mon 2006-02-27 10:26:59 +0000 message: branches/zip: Remove the possibility to relocate reallocated records on a compressed page. page_zip_get_n_relocated(), page_zip_set_n_relocated(), page_zip_get_relocated(): Remove. page0zip.c, page0zip.ic: Remove all references to n_relocated. page_cur_insert_rec_low(): On pages that are compressed, never relocate records that are allocated from the free list. ------------------------------------------------------------ revno: 0.3.48 committer: marko timestamp: Mon 2006-02-27 09:53:58 +0000 message: branches/zip: Correct bugs found by running ibtestblob. page_zip_compress(): Add assertions !c_stream.avail_in where appropriate. Add assertions on c_stream.next_in. Correct malformed assertion on externs > c_stream.next_in. Note that there may be trailing garbage after the last record. page_zip_fields_decode(): Correctly decode variable-length fields having maximum length greater than 255 bytes. page_zip_decompress(): Remove the special treatment of the case !n_dense. Replace the Z_NO_FLUSH argument of inflate() with Z_SYNC_FLUSH. Treat Z_OK return value the same as Z_BUF_ERROR: always check avail_out. After decompressing all records, decompress any trailing garbage. ------------------------------------------------------------ revno: 0.3.47 committer: marko timestamp: Mon 2006-02-27 09:33:26 +0000 message: branches/zip: Merge revisions 236:247 from trunk. ------------------------------------------------------------ revno: 0.3.46 committer: marko timestamp: Thu 2006-02-23 19:25:29 +0000 message: branches/zip: Merge revisions 200:236 from trunk. ------------------------------------------------------------ revno: 0.3.45 committer: marko timestamp: Thu 2006-02-23 15:00:45 +0000 message: branches/zip: Add TODO comments about the relocation log. page_cur_insert_rec_low(): Note that the relocation log on the compressed page needs to reflect some changes of extra_size. ------------------------------------------------------------ revno: 0.3.44 committer: marko timestamp: Thu 2006-02-23 14:45:12 +0000 message: branches/zip: When allocating records from the free list, do not allow extra_size to decrease on compressed pages. Split page_mem_alloc() to page_mem_alloc_free() and page_mem_alloc_heap(). page_cur_insert_rec_low(): Remove parameter "tuple". Implement some of the logic from page_mem_alloc(). page_cur_tuple_insert(): Convert the tuple to a record and calculate offsets. page_zip_validate(): Assert that the page is in compact format. ------------------------------------------------------------ revno: 0.3.43 committer: marko timestamp: Wed 2006-02-22 13:49:05 +0000 message: branches/zip: Minor cleanup. Remove the declaration of the undefined function page_zip_available_noninline(). Make page_zip_available() private to page0zip.c and page0zip.ic. ------------------------------------------------------------ revno: 0.3.42 committer: marko timestamp: Wed 2006-02-22 13:02:40 +0000 message: branches/zip: Try to synchronize the updates of uncompressed and compressed pages. btr_root_raise_and_insert(): Distinguish root_page_zip and new_page_zip. btr_cur_set_ownership_of_extern_field(): Do not log the write on the uncompressed page if it will be logged for page_zip. lock_rec_insert_check_and_lock(), lock_sec_rec_modify_check_and_lock(): Update the max_trx_id field also on the compressed page. mlog_write_ulint(): Add UNIV_UNLIKELY hints. Remove trailing white space. mlog_log_string(): Remove trailing white space. rec_set_field_extern_bits(): Remove parameter mtr, as the write will either occur in the heap, or it will be logged at a higher level. recv_parse_or_apply_log_rec_body(), page_zip_write_header(): Add log record type MLOG_ZIP_WRITE_HEADER. page_header_set_field(): Pass mtr=NULL to page_zip_write_header(). page_header_reset_last_insert(): Pass mtr to page_zip_write_header(). btr_page_set_index_id(), btr_page_set_level(), btr_page_set_next(), btr_page_set_prev(): Pass mtr to page_zip_write_header(). row_upd_rec_sys_fields(): Pass mtr=NULL to page_zip_write_trx_id() and page_zip_write_roll_ptr(), since the write will be logged at a higher level. page_zip_write_header(): Add parameter mtr. page_zip_write_header_log(): New function. Remove rec_set_nth_field_extern_bit(). Make rec_set_nth_field_extern_bit_old() static. Rename rec_set_nth_field_extern_bit_new() to rec_set_field_extern_bits_new() and make it static. row_ins_index_entry_low(): Remove bogus TODO comment. ------------------------------------------------------------ revno: 0.3.41 committer: marko timestamp: Tue 2006-02-21 14:43:23 +0000 message: branches/zip: Remove temporary hooks for testing BLOB compression. dict_mem_table_create(): Initialize table->zip. btr0cur.c: Distinguish compressed BLOBs based on page_zip or table->zip. ------------------------------------------------------------ revno: 0.3.40 committer: marko timestamp: Tue 2006-02-21 14:15:11 +0000 message: branches/zip: Fix the way how btr_free_externally_stored_field() is called in purge. btr_free_externally_stored_field(): Add parameter field_ref that points directly to the BLOB reference. Use rec, offsets, page_zip, and i only for the page_zip_write_blob_ptr() call. row_purge_upd_exist_or_extern(): Do not assume that the undo log contains the entire record. Only pass the BLOB reference to btr_free_externally_stored_field(). ------------------------------------------------------------ revno: 0.3.39 committer: marko timestamp: Tue 2006-02-21 10:24:32 +0000 message: branches/zip: Fix bugs in the handling of externally stored columns. btr_cur_pessimistic_insert(): Pass the "extern storage" flags to btr_root_raise_and_insert() or btr_page_split_and_insert(). btr_copy_externally_stored_field(): Include local_len in the returned length. ------------------------------------------------------------ revno: 0.3.38 committer: marko timestamp: Fri 2006-02-17 14:19:39 +0000 message: branches/zip: Merge revisions 79:200 from trunk. ------------------------------------------------------------ revno: 0.3.37 committer: marko timestamp: Fri 2006-02-17 14:14:07 +0000 message: branches/zip: btr_cur_optimistic_insert(): Replace page_cur_insert_rec_low() with page_cur_tuple_insert(). btr_cur_pessimistic_update(): Add the columns of big_rec_vec to ext_vect, so that the "extern storage" bits will be set correctly in btr_cur_insert_if_possible(). ------------------------------------------------------------ revno: 0.3.36 committer: marko timestamp: Fri 2006-02-17 13:44:16 +0000 message: lock_rec_move(): Compute receiver_heap_no correctly. ------------------------------------------------------------ revno: 0.3.35 committer: marko timestamp: Thu 2006-02-16 13:47:20 +0000 message: branches/zip: row_purge_upd_exist_or_extern(): use the offsets correctly ------------------------------------------------------------ revno: 0.3.34 committer: marko timestamp: Thu 2006-02-16 12:58:18 +0000 message: branches/zip: Implement the compression of BLOB columns. This has not been extensively tested yet, because some other part of the code breaks in "ibtestblob". btr_free_page_low(): Add parameters "space" and "page_no", because they are omitted from compressed BLOB pages. btr0cur.c: Implement the compression and decompression of BLOB columns, enabled at compile-time (#define ZIP_BLOB TRUE) for now. btr_rec_free_externally_stored_fields(), btr_copy_externally_stored_field(): Made static mlog_log_string(): New function, split from mlog_write_string(), allows to avoid a dummy memcpy() of compressed BLOB pages. ------------------------------------------------------------ revno: 0.3.33 committer: marko timestamp: Mon 2006-02-13 14:28:00 +0000 message: branches/zip: Remove in-place updates of the "external storage" flag of records. The flags may only be updated in heap-allocated copies of records. btr_root_raise_and_insert(), btr_page_split_and_insert(), btr_cur_insert_if_possible(), btr_cur_optimistic_insert(), btr_cur_pessimistic_insert(), page_cur_tuple_insert(), page_cur_insert_rec_low(): Add parameters "ext" and "n_ext". dtuple_convert_big_rec(): Make parameter "ext" const. ------------------------------------------------------------ revno: 0.3.32 committer: marko timestamp: Fri 2006-02-10 15:06:17 +0000 message: branches/zip: Prepare for in-place updates of B-tree node pointers, BLOB pointers, trx_id, and roll_ptr. btr_empty(), btr_create(), page_create(): Add parameter "index", as some index information will be encoded on the compressed page. Define REC_NODE_PTR_SIZE as 4. Allow btr_page_reorganize() and btr_page_reorganize_low() to fail. Define the error code DB_ZIP_OVERFLOW. Make row_ins_index_entry_low() static. page0zip: Encode the index, log reorganized records, and store uncompressed fields separately from the compressed data stream. ------------------------------------------------------------ revno: 0.3.31 committer: marko timestamp: Fri 2006-02-03 14:44:29 +0000 message: branches/zip: Prepare for upcoming implementation of page_zip_compress() that will require complete index information. dict_create_index_step(): invoke dict_index_add_to_cache() before btr_create() dict_index_remove_from_cache(): make public dict_index_get_if_in_cache_low(): new function, for holding dict_sys->mutex buf_flush_init_for_writing(): remove the temporary hook to page_zip_compress() page_create(): add temporary hook to page_zip_compress() ------------------------------------------------------------ revno: 0.3.30 committer: marko timestamp: Wed 2005-11-30 23:09:36 +0000 message: branches/zip: buf_flush_init_for_writing(): The reported dense page directory size was 4 bytes too much. Subtract 2 (infimum and supremum) from n_heap. page_zip_decompress(): When decompressing the last user record, only set heap_no and the status bits if there is data to decode, i.e., there are user records on the page. ------------------------------------------------------------ revno: 0.3.29 committer: marko timestamp: Wed 2005-11-30 13:57:54 +0000 message: branches/zip: Minor improvements for debugging and testing purposes. buf_flush_init_for_writing(): Improve the diagnostics and make the condition for skipping pages accurate. univ.i: Introduce UNIV_ZIP_DEBUG for enabling some page_zip_validate() tests. page0zip.h, page0zip.c: Define and use page_zip_validate() in page_zip_compress() and page_zip_write() if UNIV_ZIP_DEBUG or UNIV_DEBUG is defined. ------------------------------------------------------------ revno: 0.3.28 committer: marko timestamp: Wed 2005-11-30 13:29:31 +0000 message: branches/zip: Merge revisions 72:79 from trunk. ------------------------------------------------------------ revno: 0.3.27 committer: marko timestamp: Tue 2005-11-29 12:30:46 +0000 message: branches/zip: Merge revisions 9:72 from trunk. ------------------------------------------------------------ revno: 0.3.26 committer: marko timestamp: Tue 2005-11-29 10:24:45 +0000 message: branches/zip: More fixes to problems found in speedc test runs. Before the speedc test was interrupted, 121,765 B-tree pages were written. buf_flush_init_for_writing(): Do not compress other than B-tree pages outside the system tablespace. Report non-B-tree pages. page_zip_decompress(): Clear the unused heap space on the uncompressed page, so that the whole buffer for the uncompressed page will be initialized and page_zip_validate() will always succeed. ------------------------------------------------------------ revno: 0.3.25 committer: marko timestamp: Mon 2005-11-28 11:32:52 +0000 message: branches/zip: Fixes to allow the speedc test to run without assertion failures. page_zip_dir_decode(): Correct the handling of the free list. page_zip_set_extra_bytes(): Remove off-by-one error in the first loop. page_zip_apply_log(): Replace parameter end with size, and let end=data+size. page_zip_decompress(): Properly handle pages where the first user record has more than REC_N_NEW_EXTRA_BYTES extra bytes. page_delete_rec_list_end(): Remove page_zip_temp. This operation will be done completely in-place on page_zip. If page_zip is specified, clear the data bytes and the info and status bits of deleted records and clear the removed directory slots. page_dir_delete_slot(): Clear the last directory slot, which will be removed. ------------------------------------------------------------ revno: 0.3.24 committer: marko timestamp: Fri 2005-11-25 14:17:40 +0000 message: branches/zip: Minor fixes. Now one non-trivial page compresses and decompresses properly. page_mem_free(): Adjust the temporary condition for zeroing data. page_zip_compress(): Do not accept Z_STREAM_END from non-final deflate(). Tighten the assertion on c_stream.avail_in. page_zip_dir_sort(): Note that the high bound is not inclusive. page_zip_dir_decode(): Remove off-by-one error in page_zip_dir_sort() call. page_zip_set_extra_bytes(): Add the termination condition that was forgotten from the second for loop. Simplify the code a little. page_zip_decompress(): Do not accept Z_STREAM_END from non-final inflate(). Tighten the assertion on d_stream.avail_out. Increment heap_status correctly. ------------------------------------------------------------ revno: 0.3.23 committer: marko timestamp: Fri 2005-11-25 12:34:38 +0000 message: branches/zip: Minor fixes to get a page with one record compress/decompress. A page with multiple records or deleted records still does not compress or decompress properly. buf_flush_init_for_writing(): Initialize block->page_zip properly so that all assertions in page0zip can be enabled. page_zip_decompress(): Note that corrupt data should not lead to assertions. page_zip_dir_set(): Correct the interface. Fix off-by-one error. page_zip_dir_get(): Fix off-by-one error. page0zip.c: Replace n_heap with n_dense and add comments about the infimum and supremum records whenever we subtract 2 from heap_no. Fix some programming errors. ------------------------------------------------------------ revno: 0.3.22 committer: marko timestamp: Fri 2005-11-25 07:51:28 +0000 message: branches/zip: Minor fixes. Compression/decompression still fails. buf0flu.c: Allocate the temporary buffer from buf_frame_alloc(). page_zip_simple_validate(): Do not assert page_zip->m_start >= PAGE_DATA. page_zip_compress(): Replace some assertions with page_zip_simple_validate(), and do not assert anything about page_zip->data contents. page_zip_validate(): Do not compare the page trailer bytes. page_zip_write(): Assert that the entire page headers match and that page_zip->m_start >= PAGE_DATA. ------------------------------------------------------------ revno: 0.3.21 committer: marko timestamp: Thu 2005-11-24 14:13:10 +0000 message: branches/zip: Implement a more compact page format. Add a hook to buf0flu.c for testing compression and decompression. TODO: adapt page_zip_write() calls. ------------------------------------------------------------ revno: 0.3.20 committer: marko timestamp: Fri 2005-11-18 07:42:02 +0000 message: branches/zip: Split page_zip_apply_log() from page_zip_decompress(). ------------------------------------------------------------ revno: 0.3.19 committer: marko timestamp: Fri 2005-11-18 07:40:34 +0000 message: branches/zip: Remember to update page_zip when updating "extern" flags. Add function parameters and TODO comments regarding that. ------------------------------------------------------------ revno: 0.3.18 committer: marko timestamp: Tue 2005-11-15 11:00:37 +0000 message: branches/zip: Attach TODO comments to added btr_page_reorganize() calls ------------------------------------------------------------ revno: 0.3.17 committer: marko timestamp: Mon 2005-11-14 15:46:12 +0000 message: branches/zip: Minor improvements. page_dir_slot_set_n_owned(): Check page_zip_available(). page_dir_add_slots(): Add parameter page_zip. btr_attach_half_pages(): Add parameter page_zip. btr_node_ptr_set_child_page_no(): Add parameter page_zip. Make comments about page_zip modification log usage more accurate. ------------------------------------------------------------ revno: 0.3.16 committer: marko timestamp: Mon 2005-11-14 10:40:02 +0000 message: branches/zip: Minor improvements. page_dir_set_n_slots(): Add debug assertion that there will be enough space available in the modification log of the compressed page. page_trailer_get_len(): Simplify the formula. Make more use of the function. ------------------------------------------------------------ revno: 0.3.15 committer: marko timestamp: Fri 2005-11-11 21:18:42 +0000 message: branches/zip: Minor improvements. page_set_max_trx_id(), page_update_max_trx_id(): Add parameter page_zip. Check that page_zip_decompress() is never called after modifying the header or trailer of the compressed page, i.e., that page_zip_decompress() will restore the uncompressed page as it was before the failed operation. ------------------------------------------------------------ revno: 0.3.14 committer: marko timestamp: Fri 2005-11-11 13:59:40 +0000 message: branches/zip: Restore left b-tree splits. page_move_rec_list_start(): Restored. Reorganize old page if compressed. btr_page_split_and_insert(): Do left page splits. ------------------------------------------------------------ revno: 0.3.13 committer: marko timestamp: Thu 2005-11-10 09:31:10 +0000 message: branches/zip: buf_flush_buffered_writes(): Remove bogus assertion failure. ------------------------------------------------------------ revno: 0.3.12 committer: marko timestamp: Wed 2005-11-09 15:43:36 +0000 message: branches/zip: Bug fixes and improvements. page_header_reset_last_insert(): Add page_zip parameter. rec_get_next_ptr(): Return a pointer to the same page, or NULL. page_dir_delete_slot(): Fix off-by-one errors. ------------------------------------------------------------ revno: 0.3.11 committer: marko timestamp: Mon 2005-11-07 14:24:37 +0000 message: branches/zip: Fix some (not all) bugs found by testing. ------------------------------------------------------------ revno: 0.3.10 committer: marko timestamp: Fri 2005-11-04 12:49:39 +0000 message: branches/zip: Fix bugs found during testing. ------------------------------------------------------------ revno: 0.3.9 committer: marko timestamp: Fri 2005-11-04 08:50:25 +0000 message: branches/zip: Add page_zip parameter to page_dir_slot_set_rec(). Improve the documentation of the page_zip parameters in page0page. Add function page_trailer_get_len(). ------------------------------------------------------------ revno: 0.3.8 committer: marko timestamp: Wed 2005-11-02 07:51:47 +0000 message: branches/zip: Slightly improve error handling. ------------------------------------------------------------ revno: 0.3.7 committer: marko timestamp: Fri 2005-10-28 10:45:20 +0000 message: branches/zip: Implement page_zip_write_header(). Add page_zip parameter to btr_page_set_ functions. Allow page_copy_rec_list_end() to be called with invalid new_page_zip if the page has been newly created. ------------------------------------------------------------ revno: 0.3.6 committer: marko timestamp: Thu 2005-10-27 11:48:10 +0000 message: branches/zip: Initial import of the zip-like compression of B-tree pages. ------------------------------------------------------------ revno: 0.3.5 committer: marko timestamp: Thu 2005-10-27 11:33:12 +0000 message: Create zip branch (LZ77 based compression of B-tree index pages). ------------------------------------------------------------ revno: 0.3.4 committer: osku timestamp: Thu 2005-10-27 09:37:17 +0000 message: include/Makefile.am: Remove reference to removed makefilewin.i. ------------------------------------------------------------ revno: 0.3.3 committer: osku timestamp: Thu 2005-10-27 07:51:34 +0000 message: Add 5.0 -> 5.1 changes. ------------------------------------------------------------ revno: 0.3.2 committer: osku timestamp: Thu 2005-10-27 07:29:40 +0000 message: Import 5.0 code. ------------------------------------------------------------ revno: 0.3.1 committer: osku timestamp: Thu 2005-10-27 07:02:45 +0000 message: Create directory structure. ------------------------------------------------------------ revno: 2555.738.12 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 15:43:25 +0300 message: Merge from mysql-5.1-innodb ------------------------------------------------------------ revno: 2555.772.1 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-04-07 15:32:51 +0300 message: Merge from mysql-5.1 ------------------------------------------------------------ revno: 2555.738.11 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 17:55:07 +0300 message: Convert innodb-consistent-master.opt to Unix EOL ------------------------------------------------------------ revno: 2555.738.10 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 17:50:28 +0300 message: Convert innodb-consistent.test to Unix EOL ------------------------------------------------------------ revno: 2555.738.9 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 17:02:35 +0300 message: Merge from innodb-branches-5.1 ------------------------------------------------------------ revno: 0.1.821 [merge] committer: Vasil Dimov branch nick: innodb-branches-5.1 timestamp: Wed 2010-03-31 17:01:38 +0300 message: Merge from SVN ------------------------------------------------------------ revno: 0.2.3 committer: mmakela timestamp: Wed 2010-03-31 11:28:25 +0000 message: branches/5.1: innodb_bug51920.test: Fix a race condition. ------------------------------------------------------------ revno: 2555.738.8 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 16:14:24 +0300 message: Merge from innodb-branches-5.1. ------------------------------------------------------------ revno: 0.1.820 [merge] committer: Vasil Dimov branch nick: innodb-branches-5.1 timestamp: Wed 2010-03-31 16:13:15 +0300 message: Merge from SVN ------------------------------------------------------------ revno: 0.2.2 committer: mmakela timestamp: Wed 2010-03-31 10:33:04 +0000 message: branches/5.1: innodb_bug51920.test: Make the test quicker and more deterministic. Suggested by Vasil Dimov. ------------------------------------------------------------ revno: 2555.738.7 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 16:07:55 +0300 message: Rename the newly added mysql-tests from InnoDB to their proper location. ------------------------------------------------------------ revno: 2555.738.6 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 16:06:13 +0300 message: Merge from innodb-branches-5.1 ------------------------------------------------------------ revno: 0.1.819 [merge] committer: Vasil Dimov branch nick: innodb-branches-5.1 timestamp: Wed 2010-03-31 14:31:19 +0300 message: Merge from SVN ------------------------------------------------------------ revno: 0.2.1 committer: mmakela timestamp: Wed 2010-03-31 07:14:51 +0000 message: branches/5.1: Obey KILL during a lock wait (Bug #51920). srv_suspend_mysql_thread(), srv_lock_timeout_and_monitor_thread(): Check trx_is_interrupted() in addition to checking the lock wait timeout. rb://279 approved by Sunny Bains ------------------------------------------------------------ revno: 2555.738.5 committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 16:04:40 +0300 message: Move ./storage/innobase/mysql-test/* into ./mysql-test/* except innodb.*, innodb_bug34300* and innodb_bug39438* in order to preserve their history from SVN. ------------------------------------------------------------ revno: 2555.738.4 [merge] committer: Vasil Dimov branch nick: mysql-5.1-innodb timestamp: Wed 2010-03-31 10:17:04 +0300 message: Import branches/5.1@r6912 from SVN on top of storage/innobase ------------------------------------------------------------ revno: 0.1.818 committer: Vasil Dimov branch nick: innodb-branches-5.1 timestamp: Wed 2010-03-31 09:47:22 +0300 message: Remove files that are SVN-specific. ------------------------------------------------------------ revno: 0.1.817 committer: Vasil Dimov branch nick: innodb-branches-5.1 timestamp: Tue 2010-03-30 19:03:46 +0300 message: Move everything into a subdir in order to workaround a bzr merge bug: https://bugs.launchpad.net/bzr/+bug/375898 ------------------------------------------------------------ revno: 0.1.816 committer: vdimov timestamp: Tue 2010-03-30 08:18:46 +0000 message: branches/5.1: Whitespace fixup on line 354 ------------------------------------------------------------ revno: 0.1.815 committer: vdimov timestamp: Tue 2010-03-30 07:39:02 +0000 message: branches/5.1: Whitespace fixup ------------------------------------------------------------ revno: 0.1.814 committer: vdimov timestamp: Fri 2010-03-26 11:05:03 +0000 message: branches/5.1: Fix a non-determinism in innodb_bug38231. Reported by: Sergey Vojtovich ------------------------------------------------------------ revno: 0.1.813 committer: vasil timestamp: Mon 2010-03-15 08:17:31 +0000 message: branches/5.1: Typecast to silence a compiler warning: row/row0sel.c: 4548 C4244: '=' : conversion from 'float' to 'ib_ulonglong', possible loss of data row/row0sel.c: 4553 C4244: '=' : conversion from 'double' to 'ib_ulonglong', possible loss of data Reported by: Jonas Oreland Discussed with: Sunny Bains ------------------------------------------------------------ revno: 0.1.812 committer: vasil timestamp: Wed 2010-03-10 08:53:21 +0000 message: branches/5.1: In innodb_bug38231.test: replace the fragile sleep 0.2 that depends on timing with a more robust condition which waits for the TRUNCATE and LOCK commands to appear in information_schema.processlist. This could also break if there are other sessions executing the same SQL commands, but there are none during the execution of the mysql test. ------------------------------------------------------------ revno: 0.1.811 committer: vasil timestamp: Wed 2010-03-10 07:04:38 +0000 message: branches/5.1: Add the missing --reap statements in innodb_bug38231.test. Probably MySQL enforced the presence of those recently and the test started failing like: main.innodb_bug38231 [ fail ] Test ended at 2010-03-10 08:48:32 CURRENT_TEST: main.innodb_bug38231 mysqltest: At line 49: Cannot run query on connection between send and reap ------------------------------------------------------------ revno: 0.1.810 committer: jyang timestamp: Tue 2010-03-09 15:54:14 +0000 message: branches/5.1: Fix bug #47621 "MySQL and InnoDB data dictionaries will become out of sync when renaming columns". MySQL does not provide new column name information to storage engine to update the system table. To avoid column name mismatch, we shall just request a table copy for now. rb://246 approved by Marko. ------------------------------------------------------------ revno: 0.1.809 committer: vasil timestamp: Mon 2010-03-08 17:13:20 +0000 message: branches/5.1: Whitespace fixup. ------------------------------------------------------------ revno: 0.1.808 committer: calvin timestamp: Wed 2010-03-03 21:56:10 +0000 message: branches/5.1: fix bug#51653: outdated reference to set-variable Non functional change. ------------------------------------------------------------ revno: 0.1.807 committer: jyang timestamp: Thu 2010-02-11 10:24:19 +0000 message: branches/5.1: Fix bug #50691, AIX implementation of readdir_r causes InnoDB errors. readdir_r() returns an non-NULL value in the case of reaching the end of a directory. It should not be treated as an error return. rb://238 approved by Marko ------------------------------------------------------------ revno: 0.1.806 committer: inaam timestamp: Tue 2010-02-09 18:23:09 +0000 message: branches/5.1: Fix Bug #38901 InnoDB logs error repeatedly when trying to load page into buffer pool In buf_page_get_gen() if we are unable to read a page (because of corruption or some other reason) we keep on retrying. This fills up error log with millions of entries in no time and we'd eventually run out of disk space. This patch limits the number of attempts that we make (currently set to 100) and after that we abort with a message. rb://241 Approved by: Heikki ------------------------------------------------------------ revno: 0.1.805 committer: jyang timestamp: Wed 2010-02-03 01:57:32 +0000 message: branches/5.1: Fix bug #49001, "SHOW INNODB STATUS deadlock info incorrect when deadlock detection aborts". Print the correct lock owner when recursive function lock_deadlock_recursive() exceeds its maximum depth LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK. rb://217, approved by Marko. ------------------------------------------------------------ revno: 0.1.804 committer: sunny timestamp: Fri 2010-01-29 22:43:06 +0000 message: branches/5.1: Check *first_value every time against the column max value and set *first_value to next autoinc if it's > col max value. ie. not rely on what is passed in from MySQL. [49497] Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value rb://236 ------------------------------------------------------------ revno: 0.1.803 committer: sunny timestamp: Fri 2010-01-29 22:35:00 +0000 message: branches/5.1: Undo r6536. ------------------------------------------------------------ revno: 0.1.802 committer: sunny timestamp: Fri 2010-01-29 22:13:42 +0000 message: branches/5.1: Check *first_value everytime against the column max value and set *first_value to next autoinc if it's > col max value. ie. not rely on what is passed in from MySQL. [49497] Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value rb://236 ------------------------------------------------------------ revno: 0.1.801 committer: sunny timestamp: Fri 2010-01-29 22:08:40 +0000 message: branches/5.1: Undo the change from r6424. We need to return DB_SUCCESS even if we were unable to initialize the tabe autoinc value. This is required for the open to succeed. The only condition we currently treat as a hard error is if the autoinc field instance passed in by MySQL is NULL. Previously if the table autoinc value was 0 and the next value was requested we had an assertion that would fail. Change that assertion and treat a value of 0 to mean that the autoinc system is unavailable. Generation of next value will now return failure. rb://237 ------------------------------------------------------------ revno: 0.1.800 committer: sunny timestamp: Thu 2010-01-21 07:38:35 +0000 message: branches/5.1: Add reference to bug#47621 in the comment. ------------------------------------------------------------ revno: 0.1.799 committer: sunny timestamp: Thu 2010-01-21 00:57:50 +0000 message: branches/5.1: Factor out test for bug#44030 from innodb-autoinc.test into a separate test/result files. ------------------------------------------------------------ revno: 0.1.798 committer: sunny timestamp: Thu 2010-01-21 00:55:08 +0000 message: branches/5.1: Factor out test for bug#44030 from innodb-autoinc.test into a separate test/result files. ------------------------------------------------------------ revno: 0.1.797 committer: calvin timestamp: Fri 2010-01-15 23:43:27 +0000 message: branches/5.1: fix bug#49396: main.innodb test fails in embedded mode Change replace_result by using $MYSQLD_DATADIR. Tested in both embedded mode and normal server mode. ------------------------------------------------------------ revno: 0.1.796 committer: marko timestamp: Tue 2010-01-12 10:22:19 +0000 message: branches/5.1: In innobase_initialize_autoinc(), do not attempt to read the maximum auto-increment value from the table if innodb_force_recovery is set to at least 4, so that writes are disabled. (Bug #46193) innobase_get_int_col_max_value(): Move the function definition before ha_innobase::innobase_initialize_autoinc(), because that function now calls this function. ha_innobase::innobase_initialize_autoinc(): Change the return type to void. Do not attempt to read the maximum auto-increment value from the table if innodb_force_recovery is set to at least 4. Issue ER_AUTOINC_READ_FAILED to the client when the auto-increment value cannot be read. rb://144 by Sunny, revised by Marko ------------------------------------------------------------ revno: 0.1.795 committer: marko timestamp: Tue 2010-01-12 09:34:27 +0000 message: branches/5.1: Non-functional change: Make innobase_get_int_col_max_value() a static function. It does not access any fields of class ha_innobase. ------------------------------------------------------------ revno: 0.1.794 committer: jyang timestamp: Tue 2010-01-12 05:59:16 +0000 message: branches/5.1: Fix bug #49238: Creating/Dropping a temporary table while at 1023 transactions will cause assert. Handle possible DB_TOO_MANY_CONCURRENT_TRXS when deleting metadata in row_drop_table_for_mysql(). rb://220, approved by Marko ------------------------------------------------------------ revno: 0.1.793 committer: marko timestamp: Tue 2009-12-22 09:11:09 +0000 message: branches/5.1: Remove an obsolete declaration of LOCK_thread_count. ------------------------------------------------------------ revno: 0.1.792 committer: marko timestamp: Tue 2009-12-22 09:09:54 +0000 message: branches/5.1: lock_print_info_summary(): Remove a reference to innobase_mysql_end_print_arbitrary_thd() that should have been removed in r6347 when removing the function. ------------------------------------------------------------ revno: 0.1.791 committer: marko timestamp: Tue 2009-12-22 08:54:55 +0000 message: branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 3236 committer: Satya B branch nick: mysql-5.1-bugteam timestamp: Tue 2009-12-01 17:48:57 +0530 message: merge to mysql-5.1-bugteam ------------------------------------------------------------ revno: 3234.1.1 committer: Gleb Shchepa branch nick: mysql-5.1-bugteam timestamp: Tue 2009-12-01 14:38:40 +0400 message: Bug #38883 (reopened): thd_security_context is not thread safe, crashes? manual merge 5.0-->5.1, updating InnoDB plugin. ------------------------------------------------------------ revno: 1810.3968.13 committer: Gleb Shchepa branch nick: mysql-5.0-bugteam timestamp: Tue 2009-12-01 14:24:44 +0400 message: Bug #38883 (reopened): thd_security_context is not thread safe, crashes? The bug 38816 changed the lock that protects THD::query from LOCK_thread_count to LOCK_thd_data, but didn't update the associated InnoDB functions. 1. The innobase_mysql_prepare_print_arbitrary_thd and the innobase_mysql_end_print_arbitrary_thd InnoDB functions have been removed, since now we have a per-thread mutex: now we don't need to wrap several inter-thread access tries to THD::query with a single global LOCK_thread_count lock, so we can simplify the code. 2. The innobase_mysql_print_thd function has been modified to lock LOCK_thd_data in direct way. ------------------------------------------------------------ revno: 0.1.790 committer: jyang timestamp: Thu 2009-12-17 04:54:24 +0000 message: branches/5.1: Fix bug #47814 - Diagnostics are frequently not printed after a long lock wait in InnoDB. Separate out the lock wait timeout check thread from monitor information printing thread. rb://200 Approved by Marko. ------------------------------------------------------------ revno: 0.1.789 committer: marko timestamp: Tue 2009-12-15 13:23:54 +0000 message: branches/5.1: Merge r4922 from branches/zip. This the fix for the first part of Bug #41609 from InnoDB Plugin to the built-in InnoDB in MySQL 5.1. This allows InnoDB Hot Backup to back up a database while the built-in InnoDB in MySQL 5.1 is creating temporary tables. (This fix does not address the printouts about missing .ibd files for temporary tables at InnoDB startup, which was committed to branches/zip in r6252.) rb://219 approved by Sunny Bains. branches/zip: Distinguish temporary tables in MLOG_FILE_CREATE. This addresses Mantis Issue #23 in InnoDB Hot Backup and some of MySQL Bug #41609. In MLOG_FILE_CREATE, we need to distinguish temporary tables, so that InnoDB Hot Backup can work correctly. It turns out that we can do this easily, by using a bit of the previously unused parameter for page number. (The page number parameter of MLOG_FILE_CREATE has been written as 0 ever since MySQL 4.1, which introduced MLOG_FILE_CREATE.) MLOG_FILE_FLAG_TEMP: A flag for indicating a temporary table in the page number parameter of MLOG_FILE_ operations. fil_op_write_log(): Add the parameter log_flags. fil_op_log_parse_or_replay(): Add the parameter log_flags. Do not replay MLOG_FILE_CREATE when MLOG_FILE_FLAG_TEMP is set in log_flags. This only affects ibbackup --apply-log. InnoDB itself never replays file operations. ------------------------------------------------------------ revno: 0.1.788 committer: calvin timestamp: Mon 2009-12-14 13:12:46 +0000 message: branches/5.1: fix bug#49267: innodb-autoinc.test fails on windows because of different case mode There is no change to the InnoDB code, only to fix test case by changing "T1" to "t1". ------------------------------------------------------------ revno: 0.1.787 committer: vasil timestamp: Fri 2009-11-27 20:07:12 +0000 message: branches/5.1: Minor changes to support plugin snapshots. ------------------------------------------------------------ revno: 0.1.786 committer: sunny timestamp: Wed 2009-11-25 23:14:42 +0000 message: branches/5.1: Fix Bug#47720 - REPLACE INTO Autoincrement column with negative values. This bug is similiar to the negative autoinc filter patch from earlier, with the additional handling of filtering out the negative column values set explicitly by the user. rb://184 Approved by Heikki. ------------------------------------------------------------ revno: 0.1.785 committer: sunny timestamp: Wed 2009-11-25 08:29:03 +0000 message: branches/5.1: This is an interim fix, fix whitepsace issues. ------------------------------------------------------------ revno: 0.1.784 committer: sunny timestamp: Wed 2009-11-25 08:28:35 +0000 message: branches/5.1: This is an interim fix, fix tests and make read float/double arg const. ------------------------------------------------------------ revno: 0.1.783 committer: sunny timestamp: Wed 2009-11-25 08:27:39 +0000 message: branches/5.1: This is an interim fix, fix white space errors. ------------------------------------------------------------ revno: 0.1.782 committer: sunny timestamp: Wed 2009-11-25 08:26:27 +0000 message: branches/5.1: Fix BUG#49032 - auto_increment field does not initialize to last value in InnoDB Storage Engine. We use the appropriate function to read the column value for non-integer autoinc column types, namely float and double. rb://208. Approved by Marko. ------------------------------------------------------------ revno: 0.1.781 committer: sunny timestamp: Tue 2009-11-24 21:52:43 +0000 message: branches/5.1: Fix autoinc failing test results. (this should be skipped when merging 5.1 into zip) ------------------------------------------------------------ revno: 0.1.780 committer: jyang timestamp: Fri 2009-11-20 07:38:43 +0000 message: branches/5.1: Non-functional change, fix formatting. ------------------------------------------------------------ revno: 0.1.779 committer: jyang timestamp: Fri 2009-11-20 05:55:48 +0000 message: branches/5.1: Add a special case to handle the Duplicated Key error and return DB_ERROR instead. This is to avoid a possible SIGSEGV by mysql error handling re-entering the storage layer for dup key info without proper table handle. This is to prevent a server crash when error situation in bug #45961 "DDL on partitioned innodb tables leaves data dictionary in an inconsistent state" happens. rb://157 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.1.778 committer: jyang timestamp: Thu 2009-11-19 13:12:22 +0000 message: branches/5.1: Use btr_free_root() instead of fseg_free() for the fix of bug #48469, because fseg_free() is not defined in the zip branch. And we could save one mini-trasaction started by fseg_free(). Approved by Marko. ------------------------------------------------------------ revno: 0.1.777 committer: vasil timestamp: Thu 2009-11-19 10:14:23 +0000 message: branches/5.1: White space fixup - indent under the opening ( ------------------------------------------------------------ revno: 0.1.776 committer: jyang timestamp: Wed 2009-11-18 05:14:23 +0000 message: branches/5.1: Fix bug #48526 "Data type for float and double is incorrectly reported in InnoDB table monitor". Certain datatypes are not printed correctly in dtype_print(). rb://204 Approved by Marko. ------------------------------------------------------------ revno: 0.1.775 committer: jyang timestamp: Wed 2009-11-18 03:27:30 +0000 message: branches/5.1: Fix bug #48469 "when innodb tablespace is configured too small, crash and corruption!". Function btr_create() did not check the return status of fseg_create(), and continue the index creation even there is no sufficient space. rb://205 Approved by Marko ------------------------------------------------------------ revno: 0.1.774 committer: vasil timestamp: Wed 2009-11-11 12:52:14 +0000 message: branches/5.1: Merge a change from MySQL: (this has been reviewed by Calvin and Marko, and Calvin says Luis has incorporated Marko's suggestions) ------------------------------------------------------------ revno: 3092.5.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Thu 2009-09-24 15:52:52 +0100 message: BUG#42829: binlogging enabled for all schemas regardless of binlog-db-db / binlog-ignore-db InnoDB will return an error if statement based replication is used along with transaction isolation level READ-COMMITTED (or weaker), even if the statement in question is filtered out according to the binlog-do-db rules set. In this case, an error should not be printed. This patch addresses this issue by extending the existing check in external_lock to take into account the filter rules before deciding to print an error. Furthermore, it also changes decide_logging_format to take into consideration whether the statement is filtered out from binlog before decision is made. added: mysql-test/suite/binlog/r/binlog_stm_do_db.result mysql-test/suite/binlog/t/binlog_stm_do_db-master.opt mysql-test/suite/binlog/t/binlog_stm_do_db.test modified: sql/sql_base.cc sql/sql_class.cc storage/innobase/handler/ha_innodb.cc storage/innobase/handler/ha_innodb.h storage/innodb_plugin/handler/ha_innodb.cc storage/innodb_plugin/handler/ha_innodb.h ------------------------------------------------------------ revno: 0.1.773 committer: calvin timestamp: Wed 2009-11-11 00:51:18 +0000 message: branches/5.1: fix bug#3139: Mysql crashes: 'windows error 995' after several selects on a large DB During stress environment, Windows AIO may fail with error code ERROR_OPERATION_ABORTED. InnoDB does not handle the error, rather crashes. The cause of the error is unknown, but likely due to faulty hardware or driver. This patch introduces a new error code OS_FILE_OPERATION_ABORTED, which maps to Windows ERROR_OPERATION_ABORTED (995). When the error is detected during AIO, the InnoDB will issue a synchronous retry (read/write). This patch has been extensively tested by MySQL support. Approved by: Marko rb://196 ------------------------------------------------------------ revno: 0.1.772 committer: vasil timestamp: Tue 2009-11-10 13:30:20 +0000 message: branches/5.1: White space fixup. ------------------------------------------------------------ revno: 0.1.771 committer: vasil timestamp: Mon 2009-11-09 09:43:31 +0000 message: branches/5.1: Merge a part of r2911.5.5 from MySQL: (the other part of this was merged in c5700) ------------------------------------------------------------ revno: 2911.5.5 committer: Vladislav Vaintroub branch nick: 5.1-innodb_plugin timestamp: Wed 2009-06-10 10:59:49 +0200 message: Backport WL#3653 to 5.1 to enable bundled innodb plugin. Remove custom DLL loader code from innodb plugin code, use symbols exported from mysqld. removed: storage/innodb_plugin/handler/handler0vars.h storage/innodb_plugin/handler/win_delay_loader.cc added: storage/mysql_storage_engine.cmake win/create_def_file.js modified: CMakeLists.txt include/m_ctype.h include/my_global.h include/my_sys.h include/mysql/plugin.h libmysqld/CMakeLists.txt mysql-test/mysql-test-run.pl mysql-test/t/plugin.test mysql-test/t/plugin_load-master.opt mysys/charset.c sql/CMakeLists.txt sql/handler.h sql/mysql_priv.h sql/mysqld.cc sql/sql_class.cc sql/sql_class.h sql/sql_list.h sql/sql_profile.h storage/Makefile.am storage/archive/CMakeLists.txt storage/blackhole/CMakeLists.txt storage/csv/CMakeLists.txt storage/example/CMakeLists.txt storage/federated/CMakeLists.txt storage/heap/CMakeLists.txt storage/innobase/CMakeLists.txt storage/innobase/handler/ha_innodb.cc storage/innodb_plugin/CMakeLists.txt storage/innodb_plugin/handler/ha_innodb.cc storage/innodb_plugin/handler/handler0alter.cc storage/innodb_plugin/handler/i_s.cc storage/innodb_plugin/plug.in storage/myisam/CMakeLists.txt storage/myisammrg/CMakeLists.txt win/Makefile.am win/configure.js ------------------------------------------------------------ revno: 0.1.770 committer: vasil timestamp: Mon 2009-11-09 09:15:01 +0000 message: branches/5.1: Followup to r5700: Adjust the changes so they are the same as in the BZR repository. ------------------------------------------------------------ revno: 0.1.769 committer: marko timestamp: Wed 2009-11-04 10:28:10 +0000 message: branches/5.1: Port r6134 from branches/zip: ------------------------------------------------------------------------ r6134 | marko | 2009-11-04 07:57:29 +0000 (Wed, 04 Nov 2009) | 5 lines branches/zip: innobase_convert_identifier(): Convert table names with explain_filename() to address Bug #32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs. rb://134 approved by Sunny Bains ------------------------------------------------------------------------ innobase_print_identifier(): Replace with innobase_convert_name(). innobase_convert_identifier(): New function, called by innobase_convert_name(). ------------------------------------------------------------ revno: 0.1.768 committer: vasil timestamp: Fri 2009-10-30 15:14:22 +0000 message: branches/5.1: Revert a change to Makefile.am that sneaked unnoticed in c6127. ------------------------------------------------------------ revno: 0.1.767 committer: vasil timestamp: Fri 2009-10-30 09:18:25 +0000 message: branches/5.1: Backport c6121 from branches/zip: ------------------------------------------------------------------------ r6121 | sunny | 2009-10-30 01:42:11 +0200 (Fri, 30 Oct 2009) | 7 lines Changed paths: M /branches/zip/mysql-test/innodb-autoinc.result branches/zip: This test has been problematic for sometime now. The underlying bug is that the data dictionaries get out of sync. In the AUTOINC code we try and apply salve to the symptoms. In the past MySQL made some unrelated change and the dictionaries stopped getting out of sync and this test started to fail. Now, it seems they have reverted that changed and the test is passing again. I suspect this is not he last time that this test will change. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.1.766 committer: vasil timestamp: Fri 2009-10-30 08:31:23 +0000 message: branches/5.1: White-space fixup. ------------------------------------------------------------ revno: 0.1.765 committer: jyang timestamp: Fri 2009-10-30 03:43:06 +0000 message: branches/5.1: In os_mem_alloc_large(), if we fail to attach the shared memory, reset memory pointer ptr to NULL, and allocate memory from conventional pool. This is a port from branches/zip. Bug #48237 Error handling in os_mem_alloc_large appears to be incorrect rb://198 Approved by: Marko ------------------------------------------------------------ revno: 0.1.764 committer: jyang timestamp: Fri 2009-10-30 03:18:38 +0000 message: branches/5.1: Chnage WARN_LEVEL_ERROR to WARN_LEVEL_WARN for push_warning_printf() call in innodb. Fix Bug#47233: Innodb calls push_warning(MYSQL_ERROR::WARN_LEVEL_ERROR) rb://170 approved by Marko. ------------------------------------------------------------ revno: 0.1.763 committer: vasil timestamp: Wed 2009-10-14 15:30:12 +0000 message: branches/5.1: Fix typo. ------------------------------------------------------------ revno: 0.1.762 committer: sunny timestamp: Mon 2009-10-12 03:37:49 +0000 message: branches/5.1: Copy the maximum AUTOINC value from the old table to the new table when MySQL does a CREATE INDEX ON T. This is required because MySQL does a table copy, rename and drops the old table. Fix Bug#47125: auto_increment start value is ignored if an index is created and engine=innodb rb://168 ------------------------------------------------------------ revno: 0.1.761 committer: sunny timestamp: Mon 2009-10-12 03:09:56 +0000 message: branches/5.1: Reset the statement level autoinc counter on ROLLBACK. Fix the test results too. rb://164 ------------------------------------------------------------ revno: 0.1.760 committer: sunny timestamp: Mon 2009-10-12 03:05:00 +0000 message: branches/5.1: Ignore negative values supplied by the user when calculating the next value to store in dict_table_t. Setting autoincrement columns top negative values is undefined behavior and this change should bring the behavior of InnoDB closer to what users expect. Added several tests to check. rb://162 ------------------------------------------------------------ revno: 0.1.759 committer: jyang timestamp: Wed 2009-10-07 22:27:08 +0000 message: branches/5.1: Fix bug #47777. Treat the Geometry data same as Binary BLOB in ha_innobase::store_key_val_for_row(), since the Geometry data is stored as Binary BLOB in Innodb. Review: rb://180 approved by Marko Makela. ------------------------------------------------------------ revno: 0.1.758 committer: vasil timestamp: Thu 2009-10-01 11:55:49 +0000 message: branches/5.1: Fix Bug#38996 Race condition in ANALYZE TABLE by serializing ANALYZE TABLE inside InnoDB. Approved by: Heikki (rb://175) ------------------------------------------------------------ revno: 0.1.757 committer: calvin timestamp: Tue 2009-09-22 15:45:07 +0000 message: branches/5.1: fix bug#42383: Can't create table 'test.bug39438' For embedded server, MySQL may pass in full path, which is currently disallowed. It is needed to relax the condition by accepting full paths in the embedded case. Approved by: Heikki (on IM) ------------------------------------------------------------ revno: 0.1.756 committer: jyang timestamp: Mon 2009-09-14 23:39:21 +0000 message: branches/5.1: Disallow creating index with the name of "GEN_CLUST_INDEX" which is reserved for the default system primary index. (Bug #46000) rb://149 approved by Marko Makela. ------------------------------------------------------------ revno: 0.1.755 committer: jyang timestamp: Thu 2009-09-10 20:43:05 +0000 message: branches/5.1: Block creating table with column name conflicting with Innodb reserved key words. (Bug #44369) rb://151 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.1.754 committer: vasil timestamp: Thu 2009-09-10 04:41:48 +0000 message: branches/5.1: Fix a compilation warning caused by c5799: handler/ha_innodb.cc: In function 'void innobase_get_cset_width(ulint, ulint*, ulint*)': handler/ha_innodb.cc:830: warning: format '%d' expects type 'int', but argument 2 has type 'ulint' ------------------------------------------------------------ revno: 0.1.753 committer: calvin timestamp: Wed 2009-09-09 16:47:31 +0000 message: branches/5.1: fix bug#46256 Allow tables to be dropped even if the collation is not found, but issue a warning. Could not find an easy way to add mysql-test since it requires changes to charsets and restarting the server. Tests were executed manually. Approved by: Heikki (on IM) ------------------------------------------------------------ revno: 0.1.752 committer: calvin timestamp: Wed 2009-09-09 14:26:29 +0000 message: branches/5.1: merge change from 5.1.38 HA_ERR_TOO_MANY_CONCURRENT_TRXS is added in 5.1.38. ------------------------------------------------------------ revno: 0.1.751 committer: jyang timestamp: Fri 2009-09-04 03:07:34 +0000 message: branches/5.1: This is to revert change 5741. A return status for create_table_def() needs to be fixed. ------------------------------------------------------------ revno: 0.1.750 committer: jyang timestamp: Fri 2009-09-04 00:26:13 +0000 message: branches/5.1: Revert change in 5740. Making the fix in a subsequent check in. ------------------------------------------------------------ revno: 0.1.749 committer: jyang timestamp: Thu 2009-09-03 03:16:01 +0000 message: branches/5.1: Block creating table with column name conflicting with Innodb reserved key words. (Bug #44369) rb://151 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.1.748 committer: jyang timestamp: Thu 2009-09-03 02:33:47 +0000 message: branches/5.1: Disallow creating index with the name of "GEN_CLUST_INDEX" which is reserved for the default system primary index. (Bug #46000) rb://149 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.1.747 committer: calvin timestamp: Wed 2009-08-26 20:05:35 +0000 message: branches/5.1: Merge PART OF r2911.5.5 from MySQL: adjust CMakeLists.txt to work with MySQL 5.1.38 and beyond. MySQL changed how the build works on Windows starting from 5.1.38. All shared properties are defined in mysql_storage_engine.cmake. And the top level CMakeLists.txt determines what engines to build and how (static vs. dynamic). log message from BZR: ------------------------------------------------------------ revno: 2911.5.5 committer: Vladislav Vaintroub branch nick: 5.1-innodb_plugin timestamp: Wed 2009-06-10 10:59:49 +0200 message: Backport WL#3653 to 5.1 to enable bundled innodb plugin. Remove custom DLL loader code from innodb plugin code, use symbols exported from mysqld. removed: storage/innodb_plugin/handler/handler0vars.h storage/innodb_plugin/handler/win_delay_loader.cc added: storage/mysql_storage_engine.cmake win/create_def_file.js modified: CMakeLists.txt include/m_ctype.h include/my_global.h include/my_sys.h include/mysql/plugin.h libmysqld/CMakeLists.txt mysql-test/mysql-test-run.pl mysql-test/t/plugin.test mysql-test/t/plugin_load-master.opt mysys/charset.c sql/CMakeLists.txt sql/handler.h sql/mysql_priv.h sql/mysqld.cc sql/sql_class.cc sql/sql_class.h sql/sql_list.h sql/sql_profile.h storage/Makefile.am storage/archive/CMakeLists.txt storage/blackhole/CMakeLists.txt storage/csv/CMakeLists.txt storage/example/CMakeLists.txt storage/federated/CMakeLists.txt storage/heap/CMakeLists.txt storage/innobase/CMakeLists.txt storage/innobase/handler/ha_innodb.cc storage/innodb_plugin/CMakeLists.txt storage/innodb_plugin/handler/ha_innodb.cc storage/innodb_plugin/handler/handler0alter.cc storage/innodb_plugin/handler/i_s.cc storage/innodb_plugin/plug.in storage/myisam/CMakeLists.txt storage/myisammrg/CMakeLists.txt win/Makefile.am win/configure.js ------------------------------------------------------------ revno: 0.1.746 committer: vasil timestamp: Mon 2009-08-03 11:27:00 +0000 message: branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2988 committer: Satya B branch nick: mysql-5.1-bugteam timestamp: Wed 2009-07-01 11:06:05 +0530 message: Fix build failure after applying Innodb snapshot 5.1-ss5282 After applying Innodb snapshot 5.1-ss5282, build was broken because of missing header file. Adding the header file to Makefile.am after informing the innodb developers. modified: storage/innobase/Makefile.am ------------------------------------------------------------ revno: 0.1.745 committer: vasil timestamp: Mon 2009-07-20 07:29:47 +0000 message: branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2874.2.1 committer: Anurag Shekhar branch nick: mysql-5.1-bugteam-windows-warning timestamp: Wed 2009-05-13 15:41:24 +0530 message: Bug #39802 On Windows, 32-bit time_t should be enforced This patch fixes compilation warning, "conversion from 'time_t' to 'ulong', possible loss of data". The fix is to typecast time_t to ulong before assigning it to ulong. Backported this from 6.0-bugteam tree. modified: storage/archive/ha_archive.cc storage/federated/ha_federated.cc storage/innobase/handler/ha_innodb.cc storage/myisam/ha_myisam.cc ------------------------------------------------------------ revno: 0.1.744 committer: vasil timestamp: Thu 2009-07-09 15:16:44 +0000 message: branches/5.1: Fix Bug#21704 Renaming column does not update FK definition by checking whether a column that participates in a FK definition is being renamed and denying the ALTER in this case. The patch was originally developed by Davi Arnaut : http://lists.mysql.com/commits/77714 and was later adjusted to conform to InnoDB coding style by me (Vasil), I also added some more comments and moved the bug specific mysql-test to a separate file to make it more manageable and flexible. ------------------------------------------------------------ revno: 0.1.743 committer: vasil timestamp: Thu 2009-07-02 06:46:45 +0000 message: branches/5.1: Adjust the failing innodb-autoinc test to conform to the latest behavior of the MySQL code. The idea and the comment in innodb-autoinc.test come from Sunny. ------------------------------------------------------------ revno: 0.1.742 committer: vasil timestamp: Tue 2009-06-30 09:04:29 +0000 message: branches/5.1: Fix Bug#45814 URL reference in InnoDB server errors needs adjusting to match documentation by changing the URL from http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.html to http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting-datadict.html ------------------------------------------------------------ revno: 0.1.741 committer: marko timestamp: Thu 2009-06-25 12:11:57 +0000 message: branches/5.1: Merge r5418 from branches/zip: ------------------------------------------------------------------------ r5418 | marko | 2009-06-25 15:55:52 +0300 (Thu, 25 Jun 2009) | 5 lines Changed paths: M /branches/zip/ChangeLog M /branches/zip/handler/ha_innodb.cc M /branches/zip/mysql-test/innodb_bug42101-nonzero.result M /branches/zip/mysql-test/innodb_bug42101-nonzero.test M /branches/zip/mysql-test/innodb_bug42101.result M /branches/zip/mysql-test/innodb_bug42101.test branches/zip: Fix a race condition caused by SET GLOBAL innodb_commit_concurrency=DEFAULT. (Bug #45749) When innodb_commit_concurrency is initially set nonzero, DEFAULT would change it back to 0, triggering Bug #42101. rb://139 approved by Heikki Tuuri. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.1.740 committer: marko timestamp: Wed 2009-06-24 18:26:34 +0000 message: branches/5.1: Add missing #include "mtr0log.h" to avoid warnings when compiling with -DUNIV_MUST_NOT_INLINE. ------------------------------------------------------------ revno: 0.1.739 committer: marko timestamp: Wed 2009-06-17 08:11:49 +0000 message: branches/5.1: row_unlock_for_mysql(): When the clustered index is unknown, refuse to unlock the record. (Bug #45357, caused by the fix of Bug #39320). rb://132 approved by Sunny Bains. ------------------------------------------------------------ revno: 0.1.738 committer: marko timestamp: Wed 2009-06-17 07:01:37 +0000 message: branches/5.1: Add missing #include "mtr0log.h" so that the code compiles with -DUNIV_MUST_NOT_INLINE. ------------------------------------------------------------ revno: 0.1.737 committer: vasil timestamp: Fri 2009-06-05 06:29:16 +0000 message: branches/5.1: Remove the word "Error" from the printout because the mysqltest suite interprets it as an error and thus the innodb-autoinc test fails. Approved by: Sunny (via IM) ------------------------------------------------------------ revno: 0.1.736 committer: sunny timestamp: Thu 2009-06-04 06:16:24 +0000 message: branches/5.1: The version of the result file checked in was broken in r5243. ------------------------------------------------------------ revno: 0.1.735 committer: sunny timestamp: Wed 2009-06-03 23:17:14 +0000 message: branches/5.1: When the InnoDB and MySQL data dictionaries go out of sync, before the bug fix we would assert on missing autoinc columns. With this fix we allow MySQL to open the table but set the next autoinc value for the column to the MAX value. This effectively disables the next value generation. INSERTs will fail with a generic AUTOINC failure. However, the user should be able to read/dump the table, set the column values explicitly, use ALTER TABLE to set the next autoinc value and/or sync the two data dictionaries to resume normal operations. Fix Bug#44030 Error: (1500) Couldn't read the MAX(ID) autoinc value from the index (PRIMARY) rb://118 ------------------------------------------------------------ revno: 0.1.734 committer: marko timestamp: Wed 2009-06-03 11:12:44 +0000 message: branches/5.1: Merge the test case from r5232 from branches/5.0: ------------------------------------------------------------------------ r5232 | marko | 2009-06-03 14:31:04 +0300 (Wed, 03 Jun 2009) | 21 lines branches/5.0: Merge r3590 from branches/5.1 in order to fix Bug #40565 (Update Query Results in "1 Row Affected" But Should Be "Zero Rows"). Also, add a test case for Bug #40565. rb://128 approved by Heikki Tuuri ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 0.1.733 committer: vasil timestamp: Sat 2009-05-30 13:46:05 +0000 message: branches/5.1: Merge a change from MySQL (this fixes the failing innodb_mysql test): ------------------------------------------------------------ revno: 1810.3894.10 committer: Sergey Glukhov branch nick: mysql-5.0-bugteam timestamp: Tue 2009-05-19 11:32:21 +0500 message: Bug#39793 Foreign keys not constructed when column has a '#' in a comment or default value Internal InnoDN FK parser does not recognize '\'' as quotation symbol. Suggested fix is to add '\'' symbol check for quotation condition (dict_strip_comments() function). modified: innobase/dict/dict0dict.c mysql-test/r/innodb_mysql.result mysql-test/t/innodb_mysql.test ------------------------------------------------------------ revno: 0.1.732 committer: vasil timestamp: Wed 2009-05-27 14:56:03 +0000 message: branches/5.1: Whitespace fixup. ------------------------------------------------------------ revno: 0.1.731 committer: vasil timestamp: Tue 2009-05-26 13:26:37 +0000 message: branches/5.1: Fix Bug#45097 Hang during recovery, redo logs for doublewrite buffer pages Do not write redo log for the pages in the doublewrite buffer. Also, do not make a dummy change to the page because this is not needed. ------------------------------------------------------------ revno: 0.1.730 committer: vasil timestamp: Tue 2009-05-26 13:05:43 +0000 message: branches/5.1: Preparation for the fix of Bug#45097 Hang during recovery, redo logs for doublewrite buffer pages Do not include unnecessary headers mtr0log.h and fut0lst.h in trx0sys.h and include fsp0fsp.h just before it is needed. This is needed in order to be able to use TRX_SYS_SPACE in mtr0log.ic. ------------------------------------------------------------ revno: 0.1.729 committer: vasil timestamp: Tue 2009-05-26 12:57:12 +0000 message: branches/5.1: Preparation for the fix of Bug#45097 Hang during recovery, redo logs for doublewrite buffer pages Non-functional change: move FSP_* macros from fsp0fsp.h to a new file fsp0types.h. This is needed in order to be able to use FSP_EXTENT_SIZE in mtr0log.ic. ------------------------------------------------------------ revno: 0.1.728 committer: marko timestamp: Thu 2009-05-14 11:04:55 +0000 message: branches/5.1: Prevent a race condition in innobase_commit() by ensuring that innodb_commit_concurrency>0 remains constant at run time. (Bug #42101) srv_commit_concurrency: Make this a static variable in ha_innodb.cc. innobase_commit_concurrency_validate(): Check that innodb_commit_concurrency is not changed from or to 0 at run time. This is needed, because innobase_commit() assumes that innodb_commit_concurrency>0 remains constant. Without this limitation, the checks for innodb_commit_concurrency>0 in innobase_commit() should be removed and that function would have to acquire and release commit_cond_m at least twice per invocation. Normally, innodb_commit_concurrency=0, and introducing the mutex operations would mean significant overhead. innodb_bug42101.test, innodb_bug42101-nonzero.test: Test cases. rb://123 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.1.727 committer: marko timestamp: Wed 2009-05-13 11:44:54 +0000 message: branches/5.1: Display DB_ROLL_PTR in the COLUMNS section of the innodb_table_monitor output. It was accidentally omitted due to an off-by-one loop condition. (Bug #44320) rb://116 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.1.726 committer: vasil timestamp: Fri 2009-04-17 20:32:08 +0000 message: branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2728.10.2 committer: Ignacio Galarza branch nick: mysql-5.1-bugteam-bug29125 timestamp: Fri 2009-02-13 11:41:47 -0500 message: Bug#29125 Windows Server X64: so many compiler warnings - Remove bothersome warning messages. This change focuses on the warnings that are covered by the ignore file: support-files/compiler_warnings.supp. - Strings are guaranteed to be max uint in length modified: client/mysql_upgrade.c client/mysqladmin.cc client/mysqlbinlog.cc client/mysqlcheck.c client/mysqldump.c client/mysqlslap.c client/mysqltest.cc client/sql_string.cc extra/comp_err.c extra/yassl/src/buffer.cpp extra/yassl/taocrypt/include/block.hpp extra/yassl/taocrypt/src/algebra.cpp extra/yassl/taocrypt/src/asn.cpp include/config-win.h libmysql/libmysql.c mysys/array.c mysys/base64.c mysys/charset.c mysys/checksum.c mysys/default.c mysys/default_modify.c mysys/hash.c mysys/mf_keycache.c mysys/mf_tempdir.c mysys/my_append.c mysys/my_compress.c mysys/my_conio.c mysys/my_copy.c mysys/my_getwd.c mysys/my_pread.c mysys/my_quick.c mysys/my_read.c mysys/safemalloc.c mysys/string.c server-tools/instance-manager/buffer.cc server-tools/instance-manager/instance.cc server-tools/instance-manager/options.cc server-tools/instance-manager/parse.h sql-common/client.c sql-common/my_user.c sql/event_data_objects.cc sql/event_parse_data.cc sql/events.cc sql/gen_lex_hash.cc sql/item.h sql/item_func.cc sql/item_strfunc.cc sql/item_timefunc.cc sql/lock.cc sql/log_event.cc sql/log_event.h sql/log_event_old.cc sql/net_serv.cc sql/sp_head.h sql/spatial.h sql/sql_class.h sql/sql_connect.cc sql/sql_crypt.cc sql/sql_error.cc sql/sql_insert.cc sql/sql_lex.cc sql/sql_lex.h sql/sql_load.cc sql/sql_prepare.cc sql/sql_profile.cc sql/sql_repl.cc sql/sql_servers.cc sql/sql_string.cc sql/sql_table.cc sql/sql_trigger.cc sql/sql_udf.cc sql/sql_view.cc sql/udf_example.c sql/uniques.cc storage/archive/azio.c storage/archive/azlib.h storage/csv/ha_tina.cc storage/csv/ha_tina.h storage/csv/transparent_file.h storage/federated/ha_federated.cc storage/federated/ha_federated.h storage/heap/hp_write.c storage/innobase/handler/ha_innodb.cc storage/innobase/include/pars0pars.h storage/myisam/ha_myisam.cc storage/myisam/mi_check.c storage/myisam/mi_packrec.c storage/myisam/mi_search.c storage/myisam/rt_index.c storage/myisammrg/ha_myisammrg.cc strings/ctype.c strings/my_vsnprintf.c tests/bug25714.c tests/mysql_client_test.c ------------------------------------------------------------ revno: 0.1.725 committer: vasil timestamp: Wed 2009-04-15 07:55:18 +0000 message: branches/5.1: Merge a change from MySQL (looks like this is against 5.0 but they later merged it to 5.1): ------------------------------------------------------------ revno: 1810.3846.1 committer: Alexey Botchkov branch nick: 31435 timestamp: Tue 2008-11-11 14:42:32 +0400 message: Bug#31435 ha_innodb.cc:3983: ulint convert_search_mode_to_innobase(ha_rkey_function): Asse I think we don't need to issue an error statement in the convert_search_mode_to_innobase(). Returning the PAGE_CUR_UNSUPP value is enough as allows to handle this case depending on the requirements. per-file comments: sql/ha_innodb.cc Bug#31435 ha_innodb.cc:3983: ulint convert_search_mode_to_innobase(ha_rkey_function): Asse no error issued in convert_search_mode_to_innobase. ha_innobase::records_in_range() returns HA_POS_ERROR if search mode isn't supported. modified: sql/ha_innodb.cc ------------------------------------------------------------ revno: 0.1.724 committer: vasil timestamp: Tue 2009-04-14 10:30:13 +0000 message: branches/5.1: When using the random function, first take the modulus by the number of pages and then typecast to ulint. This is a followup to r4699 - the fix of Bug#43660. ------------------------------------------------------------ revno: 0.1.723 committer: vasil timestamp: Thu 2009-04-09 10:01:52 +0000 message: branches/5.1: Fix Bug#43660 SHOW INDEXES/ANALYZE does NOT update cardinality for indexes of InnoDB table by replacing the PRNG that is used to pick random pages with a better one. This is based on r4670 but also adds a new configuration option and enables the fix only if this option is changed. Please skip the present revision when merging. Approved by: Heikki (via email) ------------------------------------------------------------ revno: 0.1.722 committer: vasil timestamp: Mon 2009-04-06 11:34:51 +0000 message: branches/5.1: Followup to r4575 and the fix of Bug#43309 Test main.innodb can't be run twice: Add an explanatory comment, as suggested by Patrick Crews in the bug report. ------------------------------------------------------------ revno: 0.1.721 committer: vasil timestamp: Mon 2009-03-30 12:25:10 +0000 message: branches/5.1: Revert a change to Makefile.am that I committed accidentally in c4574. ------------------------------------------------------------ revno: 0.1.720 committer: vasil timestamp: Mon 2009-03-30 11:55:31 +0000 message: branches/5.1: Fix Bug#43309 Test main.innodb can't be run twice Make the innodb mysql-test more flexible by inspecting how much a variable of interest has changed since the start of the test. Do not assume the variables have zero values at the start of the test. ------------------------------------------------------------ revno: 0.1.719 committer: vasil timestamp: Mon 2009-03-30 10:27:08 +0000 message: branches/5.1: Restore the state of INNODB_THREAD_CONCURRENCY to silence this warning: TEST RESULT TIME (ms) ------------------------------------------------------------ worker[1] Using MTR_BUILD_THREAD 250, with reserved ports 12500..12509 main.innodb [ pass ] 8803 MTR's internal check of the test case 'main.innodb' failed. This means that the test case does not preserve the state that existed before the test case was executed. Most likely the test case did not do a proper clean-up. This is the diff of the states of the servers before and after the test case was executed: mysqltest: Logging to '/tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.log'. mysqltest: Results saved in '/tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result'. mysqltest: Connecting to server localhost:12500 (socket /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/mysqld.1.sock) as 'root', connection 'default', attempt 0 ... mysqltest: ... Connected. mysqltest: Start processing test commands from './include/check-testcase.test' ... mysqltest: ... Done processing test commands. --- /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result 2009-03-30 14:12:31.000000000 +0300 +++ /tmp/autotest.sh-20090330_033000-5.1.5Hg8CY/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.reject 2009-03-30 14:12:41.000000000 +0300 @@ -99,7 +99,7 @@ INNODB_SUPPORT_XA ON INNODB_SYNC_SPIN_LOOPS 20 INNODB_TABLE_LOCKS ON -INNODB_THREAD_CONCURRENCY 8 +INNODB_THREAD_CONCURRENCY 16 INNODB_THREAD_SLEEP_DELAY 10000 INSERT_ID 0 INTERACTIVE_TIMEOUT 28800 mysqltest: Result content mismatch not ok ------------------------------------------------------------ revno: 0.1.718 committer: vasil timestamp: Mon 2009-03-30 10:17:13 +0000 message: branches/5.1: Fix email address from dev@innodb.com to innodb_dev_ww@oracle.com ------------------------------------------------------------ revno: 0.1.717 committer: marko timestamp: Thu 2009-03-19 13:01:48 +0000 message: branches/5.1: row_unlock_for_mysql(): Do not unlock records that were modified by the current transaction. This bug was introduced or unmasked in r4400. rb://97 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.1.716 committer: marko timestamp: Thu 2009-03-12 08:06:44 +0000 message: branches/5.1: Fix a bug in multi-table semi-consistent reads. Remember the acquired record locks per table handle (row_prebuilt_t) rather than per transaction (trx_t), so that unlock_row should successfully unlock all non-matching rows in multi-table operations. This deficiency was found while investigating Bug #39320. rb://94 approved by Heikki Tuuri. ------------------------------------------------------------ revno: 0.1.715 committer: marko timestamp: Thu 2009-03-12 07:38:05 +0000 message: branches/5.1: row_sel_get_clust_rec_for_mysql(): Store the cursor position also for unlock_row(). (Bug #39320) rb://96 approved by Heikki Tuuri. ------------------------------------------------------------ revno: 0.1.714 committer: vasil timestamp: Thu 2009-03-05 19:42:01 +0000 message: branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2747 committer: Timothy Smith branch nick: 51 timestamp: Fri 2009-01-16 17:49:07 +0100 message: Add another cast to ignore int/ulong difference in error types, silence warning on Win64 modified: storage/innobase/handler/ha_innodb.cc ------------------------------------------------------------ revno: 0.1.713 committer: vasil timestamp: Thu 2009-03-05 19:21:10 +0000 message: branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2728.19.1 committer: Alfranio Correia branch nick: mysql-5.1-bugteam timestamp: Tue 2009-02-03 11:36:46 +0000 message: BUG#42445 Warning messages in innobase/handler/ha_innodb.cc There was a type casting problem in the storage/innobase/handler/ha_innodb.cc, (int ha_innobase::write_row(...)). Innobase uses has an internal error variable of type 'ulint' while mysql uses an 'int'. To fix the problem the function manipulates an error variable of type 'ulint' and only casts it into 'int' when needs to return the value. modified: storage/innobase/handler/ha_innodb.cc ------------------------------------------------------------ revno: 0.1.712 committer: sunny timestamp: Mon 2009-03-02 00:28:52 +0000 message: branches/5.1: Bug#43203: Overflow from auto incrementing causes server segv It was not a SIGSEGV but an assertion failure. The assertion was checking the invariant that *first_value passed in by MySQL doesn't contain a value that is greater than the max value for that type. The assertion has been changed to a check and if the value is greater than the max we report a generic AUTOINC failure. rb://93 Approved by Heikki ------------------------------------------------------------ revno: 0.1.711 committer: sunny timestamp: Wed 2009-02-25 03:32:01 +0000 message: branches/5.1: Fix Bug#42714 AUTO_INCREMENT errors in 5.1.31. There are two changes to the autoinc handling. 1. To fix the immediate problem from the bug report, we must ensure that the value written to the table is always less than the max value stored in dict_table_t. 2. The second related change is that according to MySQL documentation when the offset is greater than the increment, we should ignore the offset. ------------------------------------------------------------ revno: 0.1.710 committer: calvin timestamp: Wed 2009-02-11 23:34:27 +0000 message: branches/5.1: minor non-functional changes. ------------------------------------------------------------ revno: 0.1.709 committer: vasil timestamp: Sun 2009-02-08 19:54:25 +0000 message: branches/5.1: Merge a change from MySQL: [looks like the changes to innodb-autoinc.test were made as part of the following huge merge, but we are merging only changes to that file] ------------------------------------------------------------ revno: 2546.47.1 committer: Luis Soares branch nick: 5.1-rpl timestamp: Fri 2009-01-23 13:22:05 +0100 message: merge: 5.1 -> 5.1-rpl conflicts: Text conflict in client/mysqltest.cc Text conflict in mysql-test/include/wait_until_connected_again.inc Text conflict in mysql-test/lib/mtr_report.pm Text conflict in mysql-test/mysql-test-run.pl Text conflict in mysql-test/r/events_bugs.result Text conflict in mysql-test/r/log_state.result Text conflict in mysql-test/r/myisam_data_pointer_size_func.result Text conflict in mysql-test/r/mysqlcheck.result Text conflict in mysql-test/r/query_cache.result Text conflict in mysql-test/r/status.result Text conflict in mysql-test/suite/binlog/r/binlog_index.result Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result Text conflict in mysql-test/suite/rpl/r/rpl_packet.result Text conflict in mysql-test/suite/rpl/t/rpl_packet.test Text conflict in mysql-test/t/disabled.def Text conflict in mysql-test/t/events_bugs.test Text conflict in mysql-test/t/log_state.test Text conflict in mysql-test/t/myisam_data_pointer_size_func.test Text conflict in mysql-test/t/mysqlcheck.test Text conflict in mysql-test/t/query_cache.test Text conflict in mysql-test/t/rpl_init_slave_func.test Text conflict in mysql-test/t/status.test removed: mysql-test/suite/parts/r/partition_bit_ndb.result mysql-test/suite/parts/t/partition_bit_ndb.test mysql-test/suite/parts/t/partition_sessions.test mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test mysql-test/t/log_bin_trust_function_creators_func-master.opt mysql-test/t/rpl_init_slave_func-slave.opt added: mysql-test/include/check_events_off.inc mysql-test/include/cleanup_fake_relay_log.inc mysql-test/include/have_simple_parser.inc mysql-test/include/no_running_event_scheduler.inc mysql-test/include/no_running_events.inc mysql-test/include/running_event_scheduler.inc mysql-test/include/setup_fake_relay_log.inc mysql-test/include/wait_condition_sp.inc mysql-test/r/fulltext_plugin.result mysql-test/r/have_simple_parser.require mysql-test/r/innodb_bug38231.result mysql-test/r/innodb_bug39438.result mysql-test/r/innodb_mysql_rbk.result mysql-test/r/partition_innodb_semi_consistent.result mysql-test/r/query_cache_28249.result mysql-test/r/status2.result mysql-test/std_data/bug40482-bin.000001 mysql-test/suite/binlog/r/binlog_innodb_row.result mysql-test/suite/binlog/t/binlog_innodb_row.test mysql-test/suite/rpl/r/rpl_binlog_corruption.result mysql-test/suite/rpl/t/rpl_binlog_corruption-master.opt mysql-test/suite/rpl/t/rpl_binlog_corruption.test mysql-test/suite/sys_vars/r/tmp_table_size_basic.result mysql-test/suite/sys_vars/t/tmp_table_size_basic.test mysql-test/t/fulltext_plugin-master.opt mysql-test/t/fulltext_plugin.test mysql-test/t/innodb_bug38231.test mysql-test/t/innodb_bug39438-master.opt mysql-test/t/innodb_bug39438.test mysql-test/t/innodb_mysql_rbk-master.opt mysql-test/t/innodb_mysql_rbk.test mysql-test/t/partition_innodb_semi_consistent-master.opt mysql-test/t/partition_innodb_semi_consistent.test mysql-test/t/query_cache_28249.test mysql-test/t/status2.test renamed: mysql-test/suite/funcs_1/r/is_collation_character_set_applicability.result => mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result mysql-test/suite/funcs_1/t/is_collation_character_set_applicability.test => mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test modified: .bzr-mysql/default.conf CMakeLists.txt client/mysql.cc client/mysql_upgrade.c client/mysqlcheck.c client/mysqltest.cc configure.in extra/resolve_stack_dump.c extra/yassl/include/openssl/ssl.h include/config-win.h include/m_ctype.h include/my_global.h mysql-test/extra/binlog_tests/database.test mysql-test/extra/rpl_tests/rpl_auto_increment.test mysql-test/include/commit.inc mysql-test/include/have_32bit.inc mysql-test/include/have_64bit.inc mysql-test/include/index_merge1.inc mysql-test/include/linux_sys_vars.inc mysql-test/include/windows_sys_vars.inc mysql-test/lib/mtr_report.pm mysql-test/mysql-test-run.pl mysql-test/r/alter_table.result mysql-test/r/commit_1innodb.result mysql-test/r/create.result mysql-test/r/csv.result mysql-test/r/ctype_ucs.result mysql-test/r/date_formats.result mysql-test/r/events_bugs.result mysql-test/r/events_scheduling.result mysql-test/r/fulltext.result mysql-test/r/func_if.result mysql-test/r/func_in.result mysql-test/r/func_str.result mysql-test/r/func_time.result mysql-test/r/grant.result mysql-test/r/index_merge_myisam.result mysql-test/r/information_schema.result mysql-test/r/innodb-autoinc.result mysql-test/r/innodb.result mysql-test/r/innodb_mysql.result mysql-test/r/log_bin_trust_function_creators_func.result mysql-test/r/log_state.result mysql-test/r/myisampack.result mysql-test/r/mysql.result mysql-test/r/mysqlcheck.result mysql-test/r/partition_datatype.result mysql-test/r/partition_mgm.result mysql-test/r/partition_pruning.result mysql-test/r/query_cache.result mysql-test/r/read_buffer_size_basic.result mysql-test/r/read_rnd_buffer_size_basic.result mysql-test/r/rpl_init_slave_func.result mysql-test/r/select.result mysql-test/r/status.result mysql-test/r/strict.result mysql-test/r/temp_table.result mysql-test/r/type_bit.result mysql-test/r/type_date.result mysql-test/r/type_float.result mysql-test/r/warnings_engine_disabled.result mysql-test/r/xml.result mysql-test/suite/binlog/r/binlog_database.result mysql-test/suite/binlog/r/binlog_index.result mysql-test/suite/binlog/r/binlog_innodb.result mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result mysql-test/suite/binlog/t/binlog_innodb.test mysql-test/suite/funcs_1/r/is_columns_is.result mysql-test/suite/funcs_1/r/is_engines.result mysql-test/suite/funcs_1/r/storedproc.result mysql-test/suite/funcs_1/storedproc/param_check.inc mysql-test/suite/funcs_2/t/disabled.def mysql-test/suite/ndb/t/disabled.def mysql-test/suite/parts/r/partition_bit_innodb.result mysql-test/suite/parts/r/partition_bit_myisam.result mysql-test/suite/parts/r/partition_special_innodb.result mysql-test/suite/parts/t/disabled.def mysql-test/suite/parts/t/partition_special_innodb.test mysql-test/suite/parts/t/partition_value_innodb.test mysql-test/suite/parts/t/partition_value_myisam.test mysql-test/suite/parts/t/partition_value_ndb.test mysql-test/suite/rpl/r/rpl_auto_increment.result mysql-test/suite/rpl/r/rpl_packet.result mysql-test/suite/rpl/r/rpl_row_create_table.result mysql-test/suite/rpl/r/rpl_slave_skip.result mysql-test/suite/rpl/r/rpl_trigger.result mysql-test/suite/rpl/t/disabled.def mysql-test/suite/rpl/t/rpl_packet.test mysql-test/suite/rpl/t/rpl_row_create_table.test mysql-test/suite/rpl/t/rpl_slave_skip.test mysql-test/suite/rpl/t/rpl_trigger.test mysql-test/suite/rpl_ndb/t/disabled.def mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result mysql-test/t/alter_table.test mysql-test/t/create.test mysql-test/t/csv.test mysql-test/t/ctype_ucs.test mysql-test/t/date_formats.test mysql-test/t/disabled.def mysql-test/t/events_bugs.test mysql-test/t/events_scheduling.test mysql-test/t/fulltext.test mysql-test/t/func_if.test mysql-test/t/func_in.test mysql-test/t/func_str.test mysql-test/t/func_time.test mysql-test/t/grant.test mysql-test/t/information_schema.test mysql-test/t/innodb-autoinc.test mysql-test/t/innodb.test mysql-test/t/innodb_mysql.test mysql-test/t/log_bin_trust_function_creators_func.test mysql-test/t/log_state.test mysql-test/t/myisam_data_pointer_size_func.test mysql-test/t/myisampack.test mysql-test/t/mysql.test mysql-test/t/mysqlcheck.test mysql-test/t/partition_innodb_stmt.test mysql-test/t/partition_mgm.test mysql-test/t/partition_pruning.test mysql-test/t/query_cache.test mysql-test/t/rpl_init_slave_func.test mysql-test/t/select.test mysql-test/t/status.test mysql-test/t/strict.test mysql-test/t/temp_table.test mysql-test/t/type_bit.test mysql-test/t/type_date.test mysql-test/t/type_float.test mysql-test/t/warnings_engine_disabled.test mysql-test/t/xml.test mysys/my_getopt.c mysys/my_init.c scripts/mysql_install_db.sh sql-common/my_time.c sql/field.cc sql/field.h sql/filesort.cc sql/ha_partition.cc sql/ha_partition.h sql/item.cc sql/item_cmpfunc.cc sql/item_func.h sql/item_strfunc.cc sql/item_sum.cc sql/item_timefunc.cc sql/item_timefunc.h sql/log.cc sql/log.h sql/log_event.cc sql/log_event.h sql/mysql_priv.h sql/mysqld.cc sql/opt_range.cc sql/partition_info.cc sql/repl_failsafe.cc sql/rpl_constants.h sql/set_var.cc sql/slave.cc sql/spatial.h sql/sql_acl.cc sql/sql_base.cc sql/sql_binlog.cc sql/sql_class.h sql/sql_cursor.cc sql/sql_delete.cc sql/sql_lex.cc sql/sql_lex.h sql/sql_locale.cc sql/sql_parse.cc sql/sql_partition.cc sql/sql_plugin.cc sql/sql_plugin.h sql/sql_profile.cc sql/sql_repl.cc sql/sql_select.cc sql/sql_select.h sql/sql_show.cc sql/sql_table.cc sql/sql_trigger.cc sql/sql_trigger.h sql/table.cc sql/table.h sql/unireg.cc storage/csv/ha_tina.cc storage/federated/ha_federated.cc storage/heap/ha_heap.cc storage/innobase/Makefile.am storage/innobase/btr/btr0sea.c storage/innobase/buf/buf0lru.c storage/innobase/dict/dict0dict.c storage/innobase/dict/dict0mem.c storage/innobase/handler/ha_innodb.cc storage/innobase/handler/ha_innodb.h storage/innobase/include/btr0sea.h storage/innobase/include/dict0dict.h storage/innobase/include/dict0mem.h storage/innobase/include/ha_prototypes.h storage/innobase/include/lock0lock.h storage/innobase/include/row0mysql.h storage/innobase/include/sync0sync.ic storage/innobase/include/ut0ut.h storage/innobase/lock/lock0lock.c storage/innobase/os/os0file.c storage/innobase/plug.in storage/innobase/row/row0mysql.c storage/innobase/row/row0sel.c storage/innobase/srv/srv0srv.c storage/innobase/srv/srv0start.c storage/innobase/ut/ut0ut.c storage/myisam/ft_boolean_search.c strings/ctype.c strings/xml.c tests/mysql_client_test.c win/configure.js mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test ------------------------------------------------------------ revno: 0.1.708 committer: vasil timestamp: Sun 2009-02-08 19:36:45 +0000 message: branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2709.20.31 committer: Timothy Smith branch nick: 51 timestamp: Fri 2008-12-19 01:28:51 +0100 message: Disable part of innodb-autoinc.test, because the MySQL server asserts when compiled --with-debug, due to bug 39828, "autoinc wraps around when offset and increment > 1". This change should be reverted when that bug is fixed (and a a few other minor changes to the test as described in comments). modified: mysql-test/r/innodb-autoinc.result mysql-test/t/innodb-autoinc.test ------------------------------------------------------------ revno: 0.1.707 committer: sunny timestamp: Tue 2009-02-03 20:06:52 +0000 message: branches/5.1: Add the ULL suffix otherwise there is an overflow. ------------------------------------------------------------ revno: 0.1.706 committer: sunny timestamp: Thu 2009-01-29 14:01:36 +0000 message: branches/5.1: In the last round of AUTOINC cleanup we assumed that AUTOINC is only defined for integer columns. This caused an assertion failure when we checked for the maximum value of a column type. We now calculate the max value for floating-point autoinc columns too. Fix Bug#42400 - InnoDB autoinc code can't handle floating-point columns rb://84 and Mantis issue://162 ------------------------------------------------------------ revno: 0.1.705 committer: vasil timestamp: Mon 2009-01-26 15:26:25 +0000 message: branches/5.1: Merge a change from MySQL: ------------------------------------------------------------ revno: 2646.161.4 committer: Tatiana A. Nurnberg branch nick: 51-31177v2 timestamp: Mon 2009-01-12 06:32:49 +0100 message: Bug#31177: Server variables can't be set to their current values Bounds-checks and blocksize corrections were applied to user-input, but constants in the server were trusted implicitly. If these values did not actually meet the requirements, the user could not set change a variable, then set it back to the (wonky) factory default or maximum by explicitly specifying it (SET = vs SET =DEFAULT). Now checks also apply to the server's presets. Wonky values and maxima get corrected at startup. Consequently all non-offsetted values the user sees are valid, and users can set the variable to that exact value if they so desire. ------------------------------------------------------------ revno: 0.1.704 committer: marko timestamp: Fri 2009-01-23 13:43:51 +0000 message: branches/5.1: Merge r4031 from branches/5.0: btr_search_drop_page_hash_when_freed(): Check if buf_page_get_gen() returns NULL. The page may have been evicted from the buffer pool between buf_page_peek_if_search_hashed() and buf_page_get_gen(), because the buffer pool mutex will be released between these two calls. (Bug #42279) rb://82 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.1.703 committer: marko timestamp: Tue 2009-01-20 14:22:36 +0000 message: branches/5.1: lock_is_table_exclusive(): Acquire kernel_mutex before accessing table->locks and release kernel_mutex before returning from the function. This fixes a portential race condition in the "commit every 10,000 rows" in ALTER TABLE, CREATE INDEX, DROP INDEX, and OPTIMIZE TABLE. (Bug #42152) rb://80 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.1.702 committer: marko timestamp: Tue 2009-01-20 14:19:00 +0000 message: branches/5.1: Merge r4003 from branches/5.0: rec_set_nth_field(): When the field already is SQL null, do nothing when it is being changed to SQL null. (Bug #41571) Normally, MySQL does not pass "do-nothing" updates to the storage engine. When it does and a column of an InnoDB table that is in ROW_FORMAT=COMPACT is being updated from NULL to NULL, the InnoDB buffer pool will be corrupted without this fix. rb://81 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.1.701 committer: marko timestamp: Wed 2009-01-14 13:51:30 +0000 message: branches/5.1: dict_load_table(): If dict_load_indexes() fails, invoke dict_table_remove_from_cache() instead of dict_mem_table_free(), so that the data dictionary will not point to freed data. (Bug #42075, Issue #153, rb://76 approved by Heikki Tuuri) ------------------------------------------------------------ revno: 0.1.700 committer: sunny timestamp: Tue 2009-01-13 12:15:24 +0000 message: branches/5.1: Fix Bug#38187 Error 153 when creating savepoints InnoDB previously treated savepoints as a stack e.g., SAVEPOINT a; SAVEPOINT b; SAVEPOINT c; SAVEPOINT b; <- This would delete b and c. This fix changes the behavior to: SAVEPOINT a; SAVEPOINT b; SAVEPOINT c; SAVEPOINT b; <- Does not delete savepoint c ------------------------------------------------------------ revno: 0.1.699 committer: marko timestamp: Mon 2008-12-22 14:05:19 +0000 message: branches/5.1: Make SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED a true replacement of SET GLOBAL INNODB_LOCKS_UNSAFE_FOR_BINLOG=1. This fixes an error that was introduced in r370, causing semi-consistent read not to not unlock rows in READ COMMITTED mode. (Bug #41671, Issue #146) rb://67 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.1.698 committer: marko timestamp: Mon 2008-12-22 13:28:03 +0000 message: branches/5.1: ibuf_delete_rec(): When the record cannot be found and the tablespace has been dropped, commit the mini-transaction, so that InnoDB will not hold the insert buffer tree latch in exclusive mode, causing a potential deadlock. This bug was introduced in the fix of Bug #27276 in r2924. ------------------------------------------------------------ revno: 0.1.697 committer: marko timestamp: Thu 2008-12-18 13:33:36 +0000 message: branches/5.1: When converting a record to MySQL format, copy the default column values for columns that are SQL NULL. This addresses failures in row-based replication (Bug #39648). row_prebuilt_t: Add default_rec, for the default values of the columns in MySQL format. row_sel_store_mysql_rec(): Use prebuilt->default_rec instead of padding columns. rb://64 approved by Heikki Tuuri ------------------------------------------------------------ revno: 0.1.696 committer: inaam timestamp: Thu 2008-12-18 12:26:54 +0000 message: branches/5.1 It is a bug in unused code. If we don't calculate the hash value when calculating the mutex number then two pages which map to same hash value can get two different mutex numbers. Approved by: Marko ------------------------------------------------------------ revno: 0.1.695 committer: calvin timestamp: Wed 2008-12-10 21:30:05 +0000 message: branches/5.1: change .result file eol-style to LF mysql-test-run only takes LF style even on Windows. ------------------------------------------------------------ revno: 0.1.694 committer: vasil timestamp: Tue 2008-12-09 09:21:08 +0000 message: branches/5.1: Merge a change from MySQL to fix the failing innodb_bug34300 mysql-test: main.innodb_bug34300 [ fail ] mysqltest: At line 11: query 'SET @@max_allowed_packet=16777216' failed: 1621: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value Aborting: main.innodb_bug34300 failed in default mode. The changeset is this: ------------------------------------------------------------ revno: 2709.1.10 committer: Staale Smedseng branch nick: b22891-51-bugteam timestamp: Thu 2008-11-20 08:51:48 +0100 message: A fix for Bug#22891 "session level max_allowed_packet can be set but is ignored". This patch makes @@session.max_allowed_packed and @@session.net_buffer_length read-only as suggested in the bug report. The user will have to use SET GLOBAL (and reconnect) to alter the session values of these variables. The error string ER_VARIABLE_IS_READONLY is introduced. Tests are modified accordingly. modified: mysql-test/r/func_compress.result mysql-test/r/max_allowed_packet_basic.result mysql-test/r/max_allowed_packet_func.result mysql-test/r/net_buffer_length_basic.result mysql-test/r/packet.result mysql-test/r/union.result mysql-test/r/variables.result mysql-test/t/func_compress.test mysql-test/t/innodb_bug34300.test mysql-test/t/max_allowed_packet_basic.test mysql-test/t/max_allowed_packet_func.test mysql-test/t/net_buffer_length_basic.test mysql-test/t/packet.test mysql-test/t/union.test mysql-test/t/variables.test sql/set_var.cc sql/set_var.h sql/share/errmsg.txt ------------------------------------------------------------ ------------------------------------------------------------ revno: 0.1.693 committer: vasil timestamp: Fri 2008-12-05 08:46:18 +0000 message: branches/5.1: Add the traditional 2 spaces after the timestamp so the message does not look like: 070223 13:26:01InnoDB: Warning: canno.... ------------------------------------------------------------ revno: 0.1.692 committer: calvin timestamp: Thu 2008-12-04 17:00:20 +0000 message: branches/5.1: revert the changes in r2933 The changes in r2933 causes test failure on Linux. More investigation is needed for Windows. Change the followings in innodb-autoinc.result: auto-increment-increment auto-increment-offset back to: auto_increment_increment auto_increment_offset ------------------------------------------------------------ revno: 0.1.691 committer: inaam timestamp: Mon 2008-11-24 20:06:50 +0000 message: branches/5.1: Fix Bug#40760 "set global innodb_thread_concurrency = 0;" is not safe The config param innodb_thread_concurrency is dynamically set and is read when a thread enters/exits innodb. If the value is changed between the enter and exit time the behaviour becomes erratic. The fix is not to use srv_thread_concurrency when exiting, instead use the flag trx->declared_to_be_inside_innodb. rb://57 Approved by: Marko ------------------------------------------------------------ revno: 0.1.690 committer: calvin timestamp: Fri 2008-11-14 18:31:48 +0000 message: branches/5.1: fix bug#40386: Not flushing query cache after truncate ha_statistics.records can not be 0 unless the table is empty, set to 1 instead. The original problem of bug#29507 is fixed in the server. Additional test was done with the fix of bug#29507 in the server. Approved by: Heikki (on IM) ------------------------------------------------------------ revno: 0.1.689 committer: marko timestamp: Fri 2008-11-07 12:54:10 +0000 message: branches/5.1: row_mysql_store_col_in_innobase_format(): Correct a misleading comment. In the UTF-8 encoding, ASCII takes 1 byte per character, while the "latin1" character set (normally ISO-8859-1, but in MySQL it actually refers to the Windows Code Page 1252 a.k.a. CP1252, WinLatin1) takes 1 to 3 bytes (1 to 2 bytes for the ISO-8859-1 subset). ------------------------------------------------------------ revno: 0.1.688 committer: calvin timestamp: Thu 2008-10-30 00:57:31 +0000 message: branches/5.1: correct the result file innodb-autoinc.result Change the followings: auto_increment_increment auto_increment_offset to auto-increment-increment auto-increment-offset ------------------------------------------------------------ revno: 0.1.687 committer: marko timestamp: Wed 2008-10-29 19:26:14 +0000 message: branches/5.1: dtype_get_sql_null_size(): return the correct storage size of a SQL NULL column. (Bug #40369) When MySQL Bug #20877 was fixed in r834, this function was accidentally modified to return 0 or 1. Apparently, the only impact of this bug is that fixed-length columns cannot be updated in-place from or to SQL NULL, even in ROW_FORMAT=REDUNDANT. After this fix, fixed-length columns in ROW_FORMAT=REDUNDANT will have a constant storage size as they should, no matter if NULL or non-NULL. The bug caused fixed-length NULL columns to occupy 1 byte. rb://37 approved by Heikki over IM. ------------------------------------------------------------ revno: 0.1.686 committer: marko timestamp: Wed 2008-10-29 08:07:48 +0000 message: branches/5.1: Merge revision 2866 from branches/zip: ibuf_delete_rec(): When the cursor to the insert buffer record cannot be restored, do not complain if the tablespace does not exist. (Bug #27276) Approved by Sunny Bains (rb://34) ------------------------------------------------------------ revno: 0.1.685 committer: vasil timestamp: Tue 2008-10-28 10:10:25 +0000 message: branches/5.1: Fix Bug#38189 innodb_stats_on_metadata missing Make the variable innodb_stats_on_metadata visible to the users and also settable at runtime. Previously it was only "visible" as a command line startup option to mysqld. Approved by: Marko (https://svn.innodb.com/rb/r/36) ------------------------------------------------------------ revno: 0.1.684 committer: calvin timestamp: Mon 2008-10-27 09:09:18 +0000 message: branches/5.1: port the fix of Bug#19424 - InnoDB: Possibly a memory overrun of the buffer being freed with 64-bit Microsoft Visual C++. The changed file: CMakeLists.txt: Removing Win64 compiler optimizations for all innodb/mem/* files. ------------------------------------------------------------ revno: 0.1.683 committer: sunny timestamp: Thu 2008-10-23 04:30:32 +0000 message: branches/5.1: Backport changes from branches/zip r2725 Simplify the autoinc initialization code. This removes the non-determinism related to reading the table's autoinc value for the first time. This change has also reduced the sizeof dict_table_t by sizeof(ibool) bytes because we don't need the dict_table_t::autoinc_inited field anymore. Bug#39830 Table autoinc value not updated on first insert. Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info Bug#36411 Failed to read auto-increment value from storage engine" in 5.1.24 auto-inc rb://16 ------------------------------------------------------------ revno: 0.1.682 committer: sunny timestamp: Wed 2008-10-22 21:42:24 +0000 message: branches/5.1: Backport r2724 from branches/zip Check column value against the col max value before updating the table's global autoinc counter value. This is part of simplifying the AUTOINC sub-system. We extract the type info from MySQL data structures at runtime. This fixes Bug#37788 InnoDB Plugin: AUTO_INCREMENT wrong for compressed tables ------------------------------------------------------------ revno: 0.1.681 committer: sunny timestamp: Wed 2008-10-22 08:01:18 +0000 message: branches/5.1: Return the actual error code encountered when allocating a new autoinc value. The change in behavior (bug) was introduced in 5.1.22 when we introduced the new AUTOINC locking model. rb://31 Bug#40224 New AUTOINC changes mask reporting of deadlock/timeout errors ------------------------------------------------------------ revno: 0.1.680 committer: vasil timestamp: Tue 2008-10-21 08:07:44 +0000 message: branches/5.1: Merge a change from MySQL (this fixes the failing innodb and innodb-semi-consistent tests): revno: 2757 committer: Georgi Kodinov branch nick: B39812-5.1-5.1.29-rc timestamp: Fri 2008-10-03 15:24:19 +0300 message: Bug #39812: Make statement replication default for 5.1 (to match 5.0) Make STMT replication default for 5.1. Add a default of MIXED into the config files Fix the tests that needed MIXED replication mode. modified: mysql-test/include/mix1.inc mysql-test/r/innodb-semi-consistent.result mysql-test/r/innodb.result mysql-test/r/innodb_mysql.result mysql-test/r/tx_isolation_func.result mysql-test/t/innodb-semi-consistent.test mysql-test/t/innodb.test mysql-test/t/tx_isolation_func.test sql/mysqld.cc support-files/my-huge.cnf.sh support-files/my-innodb-heavy-4G.cnf.sh support-files/my-large.cnf.sh support-files/my-medium.cnf.sh support-files/my-small.cnf.sh ------------------------------------------------------------ revno: 0.1.679 committer: vasil timestamp: Tue 2008-10-21 06:08:30 +0000 message: branches/5.1: In ha_innobase::info(): Replace sql_print_warning() which prints to mysqld error log with push_warning_printf() which sends the error message to the client. Suggested by: Marko, Sunny, Michael Objected by: Inaam ------------------------------------------------------------ revno: 0.1.678 committer: vasil timestamp: Mon 2008-10-20 10:09:01 +0000 message: branches/5.1: Non-functional change: use a single tab instead of 12 spaces between variable type and variable name. ------------------------------------------------------------ revno: 0.1.677 committer: marko timestamp: Mon 2008-10-13 10:21:02 +0000 message: branches/5.1: Backport a fix from branches/zip r2763: row_drop_database_for_mysql(): Postpone mem_free(table_name), so that an error printout will not dereference freed memory. ------------------------------------------------------------ revno: 0.1.676 committer: marko timestamp: Thu 2008-10-09 06:53:09 +0000 message: branches/5.1: ha_innobase::delete_all_rows(): In response to a user asking why DELETE FROM t is not mapped to TRUNCATE TABLE t as it is in MyISAM, note in a comment that DELETE is transactional while TRUNCATE is not. ------------------------------------------------------------ revno: 0.1.675 committer: inaam timestamp: Wed 2008-10-08 18:02:15 +0000 message: branches/5.1: Fix Bug#39939 DROP TABLE/DISCARD TABLESPACE takes long time in buf_LRU_invalidate_tablespace() Improve implementation of buf_LRU_invalidate_tablespace by attempting hash index drop in batches instead of doing it one by one. Reviewed by: Heikki, Sunny, Marko Approved by: Heikki ------------------------------------------------------------ revno: 0.1.674 committer: sunny timestamp: Fri 2008-10-03 22:48:04 +0000 message: branches/5.1: This bug has always existed but was masked by other errors. The fix for bug# 38839 triggered this bug. When the offset and increment are > 1 we need to calculate the next value taking into consideration the two variables. Previously we simply assumed they were 1 particularly offset was never used. MySQL does its own calculation and that's probably why it seemed to work in the past. We would return what we thought was the correct next value and then MySQL would recalculate the actual value from that and return it to the caller (e.g., handler::write_row()). Several new tests have been added that try and catch some edge cases. The tests exposed a wrap around error in MySQL next value calculation which was filed as bug#39828. The tests will need to be updated once MySQL fix that bug. One good side effect of this fix is that dict_table_t size has been reduced by 8 bytes because we have moved the autoinc_increment field to the row_prebuilt_t structure. See review-board for a detailed discussion. rb://3 ------------------------------------------------------------ revno: 0.1.673 committer: sunny timestamp: Fri 2008-10-03 22:08:23 +0000 message: branches/5.1: We need to send the messages to the client because handler::get_auto_increment() doesn't allow a way to return the specific error for why it failed. rb://18 ------------------------------------------------------------ revno: 0.1.672 committer: vasil timestamp: Fri 2008-10-03 15:52:39 +0000 message: branches/5.1: Print a warning if an attempt is made to get the free space for a table whose .ibd file is missing or the tablespace has been discarded. This is a followup to r2719. Suggested by: Inaam ------------------------------------------------------------ revno: 0.1.671 committer: vasil timestamp: Fri 2008-10-03 14:17:28 +0000 message: branches/5.1: Fix Bug#39438 Testcase for Bug#39436 crashes on 5.1 in fil_space_get_latch In ha_innobase::info() - do not try to get the free space for a tablespace which has been discarded with ALTER TABLE ... DISCARD TABLESPACE or if the .ibd file is missing for some other reason. ibd_file_missing and tablespace_discarded are manipulated only in row_discard_tablespace_for_mysql() and in row_import_tablespace_for_mysql() and the manipulation is protected/surrounded by row_mysql_lock_data_dictionary()/row_mysql_unlock_data_dictionary() thus we do the same in ha_innobase::info() when checking the values of those members to avoid race conditions. I have tested the code-path with UNIV_DEBUG and UNIV_SYNC_DEBUG. Looks like it is not possible to avoid mysqld printing warnings in the mysql-test case and thus this test innodb_bug39438 must be added to the list of exceptional test cases that are allowed to print warnings. For this, the following patch must be applied to the mysql source tree: --- cut --- === modified file 'mysql-test/lib/mtr_report.pl' --- mysql-test/lib/mtr_report.pl 2008-08-12 10:26:23 +0000 +++ mysql-test/lib/mtr_report.pl 2008-10-01 11:57:41 +0000 @@ -412,7 +412,10 @@ # When trying to set lower_case_table_names = 2 # on a case sensitive file system. Bug#37402. - /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./ + /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./ or + + # this test is expected to print warnings + ($testname eq 'main.innodb_bug39438') ) { next; # Skip these lines --- cut --- The mysql-test is currently somewhat disabled (see inside innodb_bug39438.test), after the above patch has been applied to the mysql source tree, the test can be enabled. rb://20 Reviewed by: Inaam, Calvin Approved by: Heikki ------------------------------------------------------------ revno: 0.1.670 committer: vasil timestamp: Wed 2008-10-01 10:13:58 +0000 message: branches/5.1: Silence a compilation warning in UNIV_DEBUG. Approved by: Marko (via IM) ------------------------------------------------------------ revno: 0.1.669 committer: vasil timestamp: Wed 2008-10-01 06:13:13 +0000 message: branches/5.1: Fix Bug#38231 Innodb crash in lock_reset_all_on_table() on TRUNCATE + LOCK / UNLOCK In TRUNCATE TABLE and discard tablespace: do not remove table-level S and X locks and do not assert on such locks not being wait locks. Leave such locks alone. Approved by: Heikki (rb://14) ------------------------------------------------------------ revno: 0.1.668 committer: sunny timestamp: Tue 2008-09-30 07:41:56 +0000 message: branches/5.1: Since handler::get_auto_increment() doesn't allow us to return the cause of failure we have to inform MySQL using the sql_print_warning() function to return the cause for autoinc failure. Previously we simply printed the error code, this patch prints the text string representing the following two error codes: DB_LOCK_WAIT_TIMEOUT DB_DEADLOCK. Bug#35498 Cannot get table test/table1 auto-inccounter value in ::info Approved by Marko. ------------------------------------------------------------ revno: 0.1.667 committer: vasil timestamp: Thu 2008-09-18 05:47:00 +0000 message: export.sh: Instead of doing "svn log" for every revision between $START_REV and $END_REV, lookup the revisions which actually contain changes to this branch and do "svn log" and "svn diff" only for them. This makes the script many times faster. I have checked that both old and new variant create identical snapshots. ------------------------------------------------------------ revno: 0.1.666 committer: inaam timestamp: Tue 2008-09-16 15:11:26 +0000 message: branches/5.1 bug#39483 InnoDB hang on adaptive hash because of out of order ::open() call by MySQL Forward port of r2629 Under some conditions MySQL calls ::open with search_latch leading to a deadlock as we try to acquire dict_sys->mutex inside ::open breaking the latching order. The fix is to release search_latch. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.1.665 committer: vasil timestamp: Tue 2008-09-09 11:46:17 +0000 message: branches/5.1: Merge a change from MySQL (fix the failing innodb test): ------------------------------------------------------------ revno: 2646.12.1 committer: Mattias Jonsson branch nick: wl4176_2-51-bugteam timestamp: Mon 2008-08-11 20:02:03 +0200 message: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION took another code path (over mysql_alter_table instead of mysql_admin_table) which differs in two ways: 1) alter table opens the tables in a different way than admin tables do resulting in returning with error before it tried the command 2) alter table does not start to send any diagnostic rows to the client which the lower admin functions continue to use -> resulting in assertion crash The fix: Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t. Adding check in mysql_admin_table to setup the partition list for which partitions that should be used. Partitioned tables will still not work with REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions to tables, REPAIR TABLE t USE_FRM, and check that the data still fulfills the partitioning function and then move the table back to being a partition. NOTE: I have removed the following functions from the handler interface: analyze_partitions, check_partitions, optimize_partitions, repair_partitions Since they are not longer needed. THIS ALTERS THE STORAGE ENGINE API I have verified that OPTIMIZE TABLE actually rebuilds the table and calls ANALYZE. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.664 committer: sunny timestamp: Sat 2008-08-23 21:19:05 +0000 message: branches/5.1: Fix for MySQL Bug#38839. Reset the statement level last value field in prebuilt. This field tracks the last value in an autoincrement interval. We use this value to check whether we need to update a table's AUTOINC counter, if the value written to a table is less than this value then we avoid updating the table's AUTOINC value in order to reduce mutex contention. If it's not reset (e.g., after a DELETE statement) then there is the possibility of missing updates to the table's AUTOINC counter resulting in a subsequent duplicate row error message under certain conditions (see the test case for details). Bug #38839 - auto increment does not work properly with InnoDB after update ------------------------------------------------------------ revno: 0.1.663 committer: marko timestamp: Thu 2008-08-21 12:25:05 +0000 message: branches/5.1: Identify SELECT statements by thd_sql_command() == SQLCOM_SELECT instead of parsing the query string. This fixes MySQL Bug #37885 without us having to implement lexical analysis of SQL comments in yet another place. thd_is_select(): A new predicate. row_search_for_mysql(): Use thd_is_select(). Approved by Heikki. ------------------------------------------------------------ revno: 0.1.662 committer: vasil timestamp: Fri 2008-07-25 13:24:23 +0000 message: branches/5.1: Fix Bug#38185 ha_innobase::info can hold locks even when called with HA_STATUS_NO_LOCK The fix is to call fsp_get_available_space_in_free_extents() from ha_innobase::info() only if HA_STATUS_NO_LOCK is not present in the flag *AND* change get_schema_tables_record() in MySQL's sql/sql_show.cc to call ::info() *without* HA_STATUS_NO_LOCK whenever a user issues SELECT FROM information_schema.tables; Without the change to sql/sql_show.cc this patch would lead to Bug#32440 resurfacing. I.e. delete_length would never be updated in ::info() and will remain 0 forever, resulting in the free space not being shown anywhere. This is the change to sql/sql_show.cc for reference, it needs to be committed to the MySQL repo before or at the same time with this change to ha_innodb.cc: --- patch begins here --- --- sql/sql_show.cc.orig 2008-07-23 09:32:14.000000000 +0300 +++ sql/sql_show.cc 2008-07-23 09:32:19.000000000 +0300 @@ -3549,8 +3549,7 @@ static int get_schema_tables_record(THD if(file) { - file->info(HA_STATUS_VARIABLE | HA_STATUS_TIME | HA_STATUS_AUTO | - HA_STATUS_NO_LOCK); + file->info(HA_STATUS_VARIABLE | HA_STATUS_TIME | HA_STATUS_AUTO); enum row_type row_type = file->get_row_type(); switch (row_type) { case ROW_TYPE_NOT_USED: --- patch ends here --- Approved by: Heikki ------------------------------------------------------------ revno: 0.1.661 committer: inaam timestamp: Tue 2008-07-22 14:57:43 +0000 message: branches/5.1: Removed UNIV_INLINE qualifier from btr_search_info_get_ref_count(). Otherwise compilation failed on non-debug builds. Pointed by: Vasil ------------------------------------------------------------ revno: 0.1.660 committer: inaam timestamp: Tue 2008-07-15 16:46:03 +0000 message: branches/5.1 issue# 4 Fixed a timing hole where a thread dropping an index can free the in-memory index struct while another thread is still using that structure to remove entries from adaptive hash index belonging to one of the pages that belongs to the index being dropped. The fix is to have a reference counter in the index struct and to wait for this counter to drop to zero beforing freeing the struct. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.1.659 committer: vasil timestamp: Tue 2008-07-01 06:37:34 +0000 message: branches/5.1: Merge a change from MySQL (this fixes the failing innodb-replace test): revno: 2659 committer: Mattias Jonsson branch nick: b31210-51-bugteam timestamp: Tue 2008-06-03 13:25:41 +0200 message: Bug#31210: INSERT DELAYED crashes server when used on partitioned tables Problem was an unclear error message since it could suggest that MyISAM did not support INSERT DELAYED. Changed the error message to say that DELAYED is not supported by the table, instead of the table's storage engine. The confusion is that a partitioned table is in somewhat sense using the partitioning storage engine, which in turn uses the ordinary storage engine. By saying that the table does not support DELAYED we do not give any extra informantion about the storage engine or if it is partitioned. modified: mysql-test/r/innodb-replace.result mysql-test/t/innodb-replace.test mysql-test/t/merge.test mysql-test/t/partition_hash.test sql/share/errmsg.txt sql/sql_insert.cc ------------------------------------------------------------ revno: 0.1.658 committer: vasil timestamp: Thu 2008-06-26 13:39:01 +0000 message: branches/5.1: Fix Bug#36942 Performance problem in lock_get_n_rec_locks (SHOW INNODB STATUS) by not calling lock_get_n_rec_locks() from lock_print_info_summary() on production builds. Approved by: Heikki (via IM) ------------------------------------------------------------ revno: 0.1.657 committer: vasil timestamp: Thu 2008-06-26 13:38:02 +0000 message: branches/5.1: Fix Bug#36941 Performance problem in ha_print_info (SHOW INNODB STATUS) by disabling some of the code in ha_print_info() in production builds. Approved by: Heikki (via IM) ------------------------------------------------------------ revno: 0.1.656 committer: sunny timestamp: Thu 2008-06-26 12:55:43 +0000 message: branches/5.1: Add test cases and fix a bug where the last AUTOINC cached value was not reset to 0 when the table was truncated. Bug #37531 : After truncate, auto_increment behaves incorrectly for InnoDB ------------------------------------------------------------ revno: 0.1.655 committer: vasil timestamp: Mon 2008-06-09 10:16:51 +0000 message: branches/5.1: Merge change from MySQL (this fixes the failing innodb test): ChangeSet@1.2628 2008-05-13 17:01:02+05:00 gshchepa@host.loc Merge host.loc:/work/bugs/5.0-bugteam-30059 into host.loc:/work/bk/5.1-bugteam NOTE: the diff for mysql-test/r/innodb.result in this ChangeSet looks empty but the line: Data truncated for column 'c' at row 1 is present in annotated mysql-test/r/innodb.result@1.215 [1] and not present in annotated mysql-test/r/innodb.result@1.216 [2] so it must have been deleted in the above ChangeSet. [1] http://mysql.bkbits.net:8080/mysql-5.1/mysql-test/r/innodb.result?PAGE=anno&REV=4825e033JNz_463Ha9pwInSjqLvIQg [2] http://mysql.bkbits.net:8080/mysql-5.1/mysql-test/r/innodb.result?PAGE=anno&REV=482982fcUoskWjhU2xMH2BZ4Gyukfg ------------------------------------------------------------ revno: 0.1.654 committer: vasil timestamp: Mon 2008-06-09 09:53:12 +0000 message: branches/5.1: Merge change from MySQL (this almost fixes the failing innodb test): ChangeSet@1.2613, 2008-05-07 09:58:21+04:00, sergefp@mysql.com +5 -0 BUG#35850 "Performance regression in 5.1.23/5.1.24" - Disable the "prefer full scan on clustered primary key over full scan of any secondary key" rule introduced by BUG#35850. - Update test results accordingly (bk trigger: file this for BUG#35850) mysql-test/r/innodb.result@1.214, 2008-05-07 09:57:31+04:00, sergefp@mysql.com +15 -15 BUG#35850 "Performance regression in 5.1.23/5.1.24" - Update test results ------------------------------------------------------------ revno: 0.1.653 committer: vasil timestamp: Wed 2008-05-28 12:01:14 +0000 message: branches/5.1: Fix Bug#36149 Read buffer overflow in srv0start.c found during "make test" Use strncmp(3) instead of memcmp(3) to avoid reading past end of the string if it is empty (*str == '\0'). This bug is _not_ a buffer overflow. Discussed with: Sunny (via IM) ------------------------------------------------------------ revno: 0.1.652 committer: sunny timestamp: Wed 2008-05-28 08:18:35 +0000 message: branches/5.1: Fix for Bug#35602, "Failed to read auto-increment value from storage engine". The test for REPLACE was an error of ommission since it's classified as a simple INSERT. For REPLACE statements we don't acquire the special AUTOINC lock for AUTOINC_NEW_STYLE_LOCKING with this fix. ------------------------------------------------------------ revno: 0.1.651 committer: vasil timestamp: Tue 2008-05-27 07:40:07 +0000 message: branches/5.1: Fix Bug#36819 ut_usectime does not handle errors from gettimeofday by retrying gettimeofday() several times if it fails in ut_usectime(). If it fails on all calls then return error to the caller to be handled at higher level. Update the variable innodb_row_lock_time_max in SHOW STATUS output only if ut_usectime() was successful. ------------------------------------------------------------ revno: 0.1.650 committer: sunny timestamp: Fri 2008-05-23 04:29:08 +0000 message: branches/5.1: Fix for bug# 36793. This is a back port from branches/zip. This code has been tested on a big-endian machine too. ------------------------------------------------------------ revno: 0.1.649 committer: calvin timestamp: Mon 2008-05-19 21:37:14 +0000 message: branches/5.1: Fix Bug#11894 innodb_file_per_table crashes w/ Windows .sym symbolic link hack The crash was due to un-handled error 3 (path not found). In the case of file per table, change the call to os_file_handle_error_no_exit() from os_file_handle_error(). Also, checks for full path pattern during table create (Windows only), which is used in symbolic link and temp table creation. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.648 committer: vasil timestamp: Mon 2008-05-19 13:59:42 +0000 message: branches/5.1: Fix Bug#36600 SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number by removing the Innodb_buffer_pool_pages_latched variable from SHOW STATUS output in non-UNIV_DEBUG compilation. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.647 committer: vasil timestamp: Wed 2008-04-30 16:36:11 +0000 message: branches/5.1: Fix Bug#36434 ha_innodb.so is installed in the wrong directory Change pkglib_LTLIBRARIES with pkgplugin_LTLIBRARIES which has been forgotten in this commit: http://lists.mysql.com/commits/40206 ------------------------------------------------------------ revno: 0.1.646 committer: vasil timestamp: Wed 2008-04-30 15:15:46 +0000 message: branches/5.1: Non-functional white space change in Makefile.am: Use tabs for indentation and be consistent about spaces around the equal sign. ------------------------------------------------------------ revno: 0.1.645 committer: vasil timestamp: Wed 2008-04-30 15:04:36 +0000 message: branches/5.1: Merge change from MySQL: ChangeSet@1.2563, 2008-03-18 19:42:04+04:00, gluh@mysql.com +1 -0 Bug#35406 5.1-opt crashes on select from I_S.REFERENTIAL_CONSTRAINTS added intialization of f_key_info.referenced_key_name for the case when referenced table is dropped ------------------------------------------------------------ revno: 0.1.644 committer: vasil timestamp: Wed 2008-04-30 14:45:44 +0000 message: branches/5.1: Merge changes from MySQL: ChangeSet@1.2645, 2007-12-19 13:24:43+00:00, jperkin@chorlton.adsl.perkin.org.uk +14 -0 Add new pkgplugindir handling to seperate plugins from libraries, and allow override for binary distributions. Extend mysql_config to print compiled-in plugin location for third-party plugins to use. Resolves bug#31736. and ChangeSet@1.2646, 2008-01-02 13:00:46+00:00, jperkin@chorlton.adsl.perkin.org.uk +11 -0 Use pkglibdir to simplify pkgplugindir, and fix the path in a couple of Makefiles. Continuation of the fix for bug#31736. ------------------------------------------------------------ revno: 0.1.643 committer: vasil timestamp: Wed 2008-04-30 08:02:35 +0000 message: branches/5.1: Add vim modeline to hint it that plug.in is a config file so it can be colorized. ------------------------------------------------------------ revno: 0.1.642 committer: vasil timestamp: Wed 2008-04-30 07:58:38 +0000 message: branches/5.1: Non-functional change: use tabs for indentation in plug.in. ------------------------------------------------------------ revno: 0.1.641 committer: vasil timestamp: Wed 2008-04-30 07:54:49 +0000 message: branches/5.1: Fix r2430, it should be CFLAGS="$CFLAGS ..." not CFLAGS="..." ------------------------------------------------------------ revno: 0.1.640 committer: vasil timestamp: Wed 2008-04-30 07:48:35 +0000 message: branches/5.1: Use CFLAGS instead of INNODB_CFLAGS to avoid having incompatible flags inserted in CFLAGS and INNODB_CFLAGS and to avoid compiling mysql and innodb with different flags. Discussed with: Sunny ------------------------------------------------------------ revno: 0.1.639 committer: vasil timestamp: Wed 2008-04-30 07:19:06 +0000 message: branches/5.1: * Use INNODB_CFLAGS insead of cluttering CFLAGS with InnoDB specific flags. CFLAGS are used to compile every file in the MySQL source tree. * Add INNODB_DYNAMIC_CFLAGS to the flags of the dynamic plugin and use -prefer-non-pic to make the dynamic plugin faster on i386. Approved by: Sunny ------------------------------------------------------------ revno: 0.1.638 committer: vasil timestamp: Thu 2008-04-24 12:00:30 +0000 message: branches/5.1: Fix Bug#36169 create innodb compressed table with too large row size crashed Sometimes it is possible that row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in row_create_index_for_mysql() when the index object is freed so copy the table name to a safe place beforehand and use the copy. Approved by: Sunny ------------------------------------------------------------ revno: 0.1.637 committer: calvin timestamp: Thu 2008-04-24 11:32:30 +0000 message: branches/5.1: Fix bug#35537 - Innodb doesn't increment handler_update and handler_delete Add the calls to ha_statistic_increment() in ha_innobase::delete_row() and ha_innobase::update_row(). ------------------------------------------------------------ revno: 0.1.636 committer: calvin timestamp: Thu 2008-04-24 11:25:30 +0000 message: branches/5.1: Fix bug#29507 TRUNCATE shows to many rows effected In InnoDB, the row count is only a rough estimate used by SQL optimization. InnoDB is now return row count 0 for TRUNCATE operation. ------------------------------------------------------------ revno: 0.1.635 committer: vasil timestamp: Wed 2008-04-23 15:08:06 +0000 message: branches/5.1: Change the fix for Bug#32440 to show bytes instead of kilobytes in INFORMATION_SCHEMA.TABLES.DATA_FREE. Suggested by: Domas Mituzas Approved by: Heikki ------------------------------------------------------------ revno: 0.1.634 committer: vasil timestamp: Thu 2008-03-27 12:02:34 +0000 message: branches/5.1: Swap the order in which mysql_thd, mysql_query_str and *mysql_query_str are checked for non-NULL. Suggested by: Marko ------------------------------------------------------------ revno: 0.1.633 committer: vasil timestamp: Thu 2008-03-27 06:49:05 +0000 message: branches/5.1: Check whether *trx->mysql_query_str is != NULL in addition to trx->mysql_query_str. This adds more safety. This may or may not fix Bug#35226 RBR event crashes slave. ------------------------------------------------------------ revno: 0.1.632 committer: vasil timestamp: Thu 2008-03-27 05:45:02 +0000 message: branches/5.1: Merge change from MySQL (this fixes the failing innodb test): ChangeSet@1.1810.3601.4, 2008-02-07 02:33:21+04:00, gshchepa@host.loc +9 -0 Fixed bug#30059. Server handles truncation for assignment of too-long values into CHAR/VARCHAR/TEXT columns in a different ways when the truncated characters are spaces: 1. CHAR(N) columns silently ignore end-space truncation; 2. TEXT columns post a truncation warning/error in the non-strict/strict mode. 3. VARCHAR columns always post a truncation note in any mode. Space truncation processing has been synchronised over CHAR/VARCHAR/TEXT columns: current behavior of VARCHAR columns has been propagated as standard. Binary-encoded string/BLOB columns are not affected. ------------------------------------------------------------ revno: 0.1.631 committer: vasil timestamp: Wed 2008-03-26 16:26:54 +0000 message: branches/5.1: Fix Bug#34300 Tinyblob & tinytext fields currupted after export/import and alter in 5.1 Copy the BLOB fields, that are stored internally, to a safe place (prebuilt->blob_heap) when converting a row from InnoDB format to MySQL format in row_sel_store_mysql_rec(). The bug was introduced in: ------------------------------------------------------------------------ r587 | osku | 2006-05-23 15:35:58 +0300 (Tue, 23 May 2006) | 3 lines Optimize BLOB selects by using prebuilt->blob_heap directly instead of first reading BLOB data to a temporary heap and then copying it to prebuilt->blob_heap. ------------------------------------------------------------------------ Approved by: Heikki ------------------------------------------------------------ revno: 0.1.630 committer: vasil timestamp: Wed 2008-03-26 07:35:22 +0000 message: branches/5.1: Fix typo in comment. ------------------------------------------------------------ revno: 0.1.629 committer: sunny timestamp: Fri 2008-03-21 03:03:56 +0000 message: branches/5.1: Fix for Bug# 35352. We've added a heuristic that checks the size of the UNDO slots cache lists (insert and upate). If either of cached lists has more than 500 entries then we add any UNDO slots that are freed, to the common free list instead of the cache list, this is to avoid the case where all the free slots end up in only one of the lists on startup after a crash. Tested with test case for 26590 and passes all mysql-test(s). ------------------------------------------------------------ revno: 0.1.628 committer: vasil timestamp: Wed 2008-03-19 16:48:00 +0000 message: branches/5.1: Fix Bug#34823: fsync() occasionally returns ENOLCK and causes InnoDB to restart mysqld Create a wrapper to fsync(2) that retries the operation if the error is ENOLCK. Use that wrapper instead of fsync(2). Approved by: Heikki ------------------------------------------------------------ revno: 0.1.627 committer: vasil timestamp: Tue 2008-03-18 07:35:30 +0000 message: branches/5.1: Fix Bug#35220 ALTER TABLE too picky on reserved word "foreign". In ALTER TABLE, change the internal parser to search for ``FOREIGN[[:space:]]'' instead of only ``FOREIGN'' when parsing ALTER TABLE ... DROP FOREIGN KEY ...; otherwise it could be mistaken with ALTER TABLE ... DROP foreign_col; Approved by: Heikki ------------------------------------------------------------ revno: 0.1.626 committer: marko timestamp: Mon 2008-03-17 08:23:03 +0000 message: branches/5.1: ha_innobase::check_if_incompatible_data(): Check HA_CREATE_USED_ROW_FORMAT before comparing row_type. Previously, the comparison was incorrectly guarded by the presence of an AUTO_INCREMENT attribute. ------------------------------------------------------------ revno: 0.1.625 committer: sunny timestamp: Wed 2008-03-12 07:08:09 +0000 message: branches/5.1: Remove the innodb_flush_method fdatasync option since it was not being used and there was a potential it could mislead users. ------------------------------------------------------------ revno: 0.1.624 committer: vasil timestamp: Tue 2008-03-11 16:50:50 +0000 message: branches/5.1: Merge changes from MySQL AB. ------------------------------------------------------------ revno: 0.1.623 committer: sunny timestamp: Tue 2008-03-11 14:20:59 +0000 message: branches/5.1: Checked in the wrong test results in r2353. This commit has the correct result set. ------------------------------------------------------------ revno: 0.1.622 committer: sunny timestamp: Wed 2008-03-05 20:23:39 +0000 message: branches/5.1: Change the InnoDB autoinc type to ulint64. For this added a new typedef to univ.i (ib_ulonglong). Added checks for overflow and removed the assertion where it crashed previously, since the type has now changed to unsigned, it doesn't make sense to check for < 0. Added new tests, to check for overflow, for the different INT types supported for both signed and unsigned. Fixes Bug# 34335 ------------------------------------------------------------ revno: 0.1.621 committer: sunny timestamp: Mon 2008-03-03 22:50:15 +0000 message: branches/5.1: Fix Bug# 34920. We need to use/inherit the passed in autoinc counter for ALTER TABLE statements too. ------------------------------------------------------------ revno: 0.1.620 committer: vasil timestamp: Mon 2008-02-11 15:51:03 +0000 message: branches/5.1: Merge r2294 from branches/5.0: Fix typo and add comma in comment. ------------------------------------------------------------ revno: 0.1.619 committer: vasil timestamp: Thu 2008-02-07 12:02:06 +0000 message: branches/5.1: Fix Bug#34053: * In CREATE TABLE and DROP TABLE check whether the table in question is one of the magic innodb_monitor tables and whether the user has enough rights to mess with it before doing anything else. * Implement a mysql-test testcase. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.618 committer: vasil timestamp: Tue 2008-02-05 14:30:41 +0000 message: branches/5.1: Fix typo in comment. ------------------------------------------------------------ revno: 0.1.617 committer: vasil timestamp: Tue 2008-02-05 13:29:30 +0000 message: branches/5.1: Rename the user visible parameter innodb-use-adaptive-hash-indexes to innodb-adaptive-hash-index so that it is in sync with MySQL 5.0. Suggested by: Heikki Approved by: Heikki ------------------------------------------------------------ revno: 0.1.616 committer: inaam timestamp: Sun 2008-02-03 19:52:44 +0000 message: branches/5.1: Port of r2267 This is a combination of changes that forward port the scalability fix applied to 5.0 through r1001. It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of scalability fix of 5.0) Then it applies r1001 to 5.0 which is the original scalability fix. Finally it applies r2082 which fixes an issue with the original fix. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.1.615 committer: marko timestamp: Mon 2008-01-28 14:37:09 +0000 message: branches/5.1: innodb.result: Fix results after merging changes from MySQL. Maybe some changes were incorrectly merged in the past? ------------------------------------------------------------ revno: 0.1.614 committer: marko timestamp: Mon 2008-01-28 14:07:57 +0000 message: branches/5.1: Merge a change from MySQL AB: ChangeSet@2007-11-27 09:25:45+01:00, istruewing@stella.local Bug#32754 - InnoDB tests do not prepare or clean up correctly Some test cases were missing preparation to deal with failed predecessor test cases. Added preparation (drop table if exists) to some test cases. innodb-semi-consistent.test: Added preparation (drop table if exists). ------------------------------------------------------------ revno: 0.1.613 committer: marko timestamp: Mon 2008-01-28 14:04:10 +0000 message: branches/5.1: Merge a change from MySQL AB: ChangeSet@2007-10-13 15:49:42+03:00, aelkin@koti.dsl.inet.fi Bug #29136 erred multi-delete on trans table does not rollback the statement innodb.test, innodb.result: trans table specific test added ------------------------------------------------------------ revno: 0.1.612 committer: vasil timestamp: Wed 2008-01-16 13:50:51 +0000 message: branches/5.1: Fix formatting of the autoinc-lock-mode command line parameter. Old view (./mysqld --help --verbose): --innodb-autoinc-lock-mode=# The AUTOINC lock modes supported by InnoDB: 0 => Old style AUTOINC locking (for backward compatibility) 1 => New style AUTOINC locking 2 => No AUTOINC locking (unsafe for SBR) New view: --innodb-autoinc-lock-mode=# The AUTOINC lock modes supported by InnoDB: 0 => Old style AUTOINC locking (for backward compatibility) 1 => New style AUTOINC locking 2 => No AUTOINC locking (unsafe for SBR) Looks like these strings are "automatically" wrapped by MySQL in the following way: * newlines (\n) in the string are ignored * newline separator (\n) is inserted every 57 or so characters. * lots of white space is appended to each inserted new line. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.611 committer: inaam timestamp: Tue 2008-01-15 03:22:37 +0000 message: branches/5.1: bug#33349 Introduce retry/sleep logic as a workaround for a transient bug where ::open fails for partitioned tables randomly if we are using one file per table. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.1.610 committer: vasil timestamp: Fri 2008-01-04 15:38:59 +0000 message: branches/5.1: Merge change from MySQL AB: ChangeSet@1.2639, 2007-11-23 12:51:14+01:00, mkindahl@dl145h.mysql.com +7 -0 Post-merge fixes. mysql-test/r/innodb.result@1.206, 2007-11-23 12:51:10+01:00, mkindahl@dl145h.mysql.com +1 -1 Result change. ------------------------------------------------------------ revno: 0.1.609 committer: vasil timestamp: Fri 2008-01-04 15:29:32 +0000 message: branches/5.1: Merge change from MySQL AB: ChangeSet@1.2616, 2007-12-01 19:55:06+01:00, tnurnberg@mysql.com +8 -0 Bug#31177: Server variables can't be set to their current values 5.1+ specific fixes (plugins etc.) mysql-test/r/innodb.result@1.204, 2007-12-01 19:55:04+01:00, tnurnberg@mysql.com +2 -2 we throw warnings to the client, yea, verily ------------------------------------------------------------ revno: 0.1.608 committer: vasil timestamp: Fri 2008-01-04 15:17:59 +0000 message: branches/5.1: Merge change from MySQL AB: ChangeSet@1.2557, 2007-11-28 19:43:50+01:00, tnurnberg@mysql.com +21 -0 Bug#31177: Server variables can't be set to their current values Default values of variables were not subject to upper/lower bounds and step, while setting variables was. Bounds and step are also applied to defaults now; defaults are corrected quietly, values given by the user are corrected, and a correction-warning is thrown as needed. Lastly, very large values could wrap around, starting from 0 again. They are bounded at the maximum value for the respective data-type now if no lower maximum is specified in the variable's definition. mysql-test/r/innodb.result@1.171, 2007-11-28 19:43:48+01:00, tnurnberg@mysql.com +4 -0 We throw a warning now when we adjust out of range parameters. ------------------------------------------------------------ revno: 0.1.607 committer: vasil timestamp: Fri 2008-01-04 14:45:16 +0000 message: branches/5.1: Merge change from MySQL AB: ChangeSet@1.2612, 2007-11-07 19:59:58+04:00, ramil@mysql.com +6 -0 Fix for bug #26447: "ALTER TABLE .. ORDER" does not work with InnoDB and auto_increment keys Problems: 1. ALTER TABLE ... ORDER BY... doesn't make sence if there's a user-defined clustered index in the table. 2. using a secondary index is slower than using a clustered one for a table scan. Fixes: 1. raise a warning. 2. use the clustered index. mysql-test/r/innodb.result@1.203, 2007-11-07 19:59:56+04:00, ramil@mysql.com +15 -15 Fix for bug #26447: "ALTER TABLE .. ORDER" does not work with InnoDB and auto_increment keys - results adjusted. ------------------------------------------------------------ revno: 0.1.606 committer: vasil timestamp: Fri 2008-01-04 14:18:29 +0000 message: branches/5.1: Merge change from MySQL AB: ChangeSet@1.2541, 2007-10-13 15:49:42+03:00, aelkin@koti.dsl.inet.fi +10 -0 Bug #29136 erred multi-delete on trans table does not rollback the statement similar to bug_27716, but it was stressed on in the synopsis on that there is another side of the artifact affecting behaviour in transaction. Fixed with deploying multi_delete::send_error() - otherwise never called - and refining its logic to perform binlogging job if needed. The changeset includes the following side effects: - added tests to check bug_23333's scenarios on the mixture of tables for multi_update; - fixes bug@30763 with two-liner patch and a test coinciding to one added for bug_23333. mysql-test/r/innodb.result@1.171, 2007-10-13 15:49:36+03:00, aelkin@koti.dsl.inet.fi +15 -2 results changed mysql-test/t/innodb.test@1.145, 2007-10-13 15:49:37+03:00, aelkin@koti.dsl.inet.fi +32 -0 trans table specific test added ------------------------------------------------------------ revno: 0.1.605 committer: sunny timestamp: Wed 2007-12-19 03:58:36 +0000 message: branches/5.1: Remove unused field can_be_too_old from read_view_struct. ------------------------------------------------------------ revno: 0.1.604 committer: vasil timestamp: Thu 2007-12-13 14:05:51 +0000 message: branches/5.1: Merge r2177 from trunk/: Fix Bug#29157 "UPDATE, changed rows incorrect": Return HA_ERR_RECORD_IS_THE_SAME from ha_innobase::update_row() if no columns were updated. ------------------------------------------------------------ revno: 0.1.603 committer: vasil timestamp: Tue 2007-12-11 14:12:10 +0000 message: branches/5.1: Merge r2166:2168 from trunk/: Bug#32440: Put information about the free space in a tablespace in INFORMATION_SCHEMA.TABLES.DATA_FREE. This information was previously available in INFORMATION_SCHEMA.TABLES.TABLE_COMMENT, but MySQL has removed it from there recently. The stored value is in kilobytes. This can be considered as a permanent workaround to http://bugs.mysql.com/32440. "Workaround" becasue that bug is about the data missing from TABLE_COMMENT and this is actually not solved. ------------------------------------------------------------ revno: 0.1.602 committer: vasil timestamp: Thu 2007-12-06 08:21:22 +0000 message: branches/5.1: Merge r2160 from trunk/: Fix Bug#18942 by dropping all foreign key constraints at the end of DROP DATABASE. Usually, by then, there are no foreign constraints left because all of them are dropped when the relevant tables are dropped. This code is to ensure that any orphaned FKs are wiped too. ------------------------------------------------------------ revno: 0.1.601 committer: marko timestamp: Tue 2007-12-04 08:33:27 +0000 message: branches/5.1: Merge r2154 from trunk: innodb.result, innodb.test: Revert the changes in r2145. The tests that were removed by MySQL ChangeSet@1.2598.2.6 2007-11-06 15:42:58-07:00 tsmith@hindu.god were moved to a new test, innodb_autoinc_lock_mode_zero, which is kept in the MySQL BitKeeper tree. ------------------------------------------------------------ revno: 0.1.600 committer: marko timestamp: Fri 2007-11-30 12:47:33 +0000 message: branches/5.1: Copy from trunk. From now on, trunk will refer to MySQL/InnoDB version 6.0, and any changes to MySQL/InnoDB 5.1 will be made in branches/5.1. ------------------------------------------------------------ revno: 0.1.599 committer: marko timestamp: Fri 2007-11-30 12:20:56 +0000 message: convert_error_code_to_mysql(): Do not call thd_mark_transaction_to_rollback() when thd is NULL. ------------------------------------------------------------ revno: 0.1.598 committer: marko timestamp: Fri 2007-11-30 12:02:40 +0000 message: Revert the changes that were reverted in r2144 to get a source tree that is an exact match of a MySQL BitKeeper tree. Apply r2116: ------------------------------------------------------------------------ r2116 | vasil | 2007-11-23 19:10:17 +0200 (pe, 23 marras 2007) | 6 lines Set trx->mysql_query_str to NULL at transaction commit. It could be a problem if someone looks at it after that because MySQL may have free()d it then. Approved by: Heikki (via IM) ------------------------------------------------------------------------ innodb.test, innodb.result: Add some tests that were apparently accidentally removed in ChangeSet@1.2598.2.6 2007-11-06 15:42:58-07:00 tsmith@hindu.god Apply snapshot innodb-5.1-ss1989 ha_innodb.cc: Add a decorative comment. ------------------------------------------------------------ revno: 0.1.597 committer: marko timestamp: Fri 2007-11-30 11:45:26 +0000 message: Make our 5.1 tree an exact copy of the MySQL source tree. Revert r2116: ------------------------------------------------------------------------ r2116 | vasil | 2007-11-23 19:10:17 +0200 (pe, 23 marras 2007) | 6 lines Set trx->mysql_query_str to NULL at transaction commit. It could be a problem if someone looks at it after that because MySQL may have free()d it then. Approved by: Heikki (via IM) ------------------------------------------------------------------------ innodb.test, innodb.result: Remove some tests that were apparently accidentally removed in ChangeSet@1.2598.2.6 2007-11-06 15:42:58-07:00 tsmith@hindu.god Apply snapshot innodb-5.1-ss1989 ha_innodb.cc: Remove a decorative comment. This tree should be an exact match of the following MySQL source tree: bk://mysql.bkbits.net/mysql-5.1 ROOTKEY=3985cf0cwNRCED_XNSCA7RvkLPer2Q TIPKEY=47447c7cTrSPx22mH8PXNmurrycaaw bkf changes | head ChangeSet@1.2634.1.2, 2007-11-21 19:42:50+01:00, df@pippilotta.erinye.com +1 -0 Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build MERGE: 1.1810.3425.2 ChangeSet@1.1810.3425.2, 2007-11-21 19:41:13+01:00, df@pippilotta.erinye.com +1 -0 add wrong warning to suppression file ChangeSet@1.2634.1.1, 2007-11-21 19:33:27+01:00, df@pippilotta.erinye.com +1 -0 Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build MERGE: 1.1810.3425.1 ChangeSet@1.1810.3425.1, 2007-11-21 18:11:08+01:00, df@pippilotta.erinye.com +1 -0 ignore readline warnings ChangeSet@1.2635, 2007-11-21 15:06:38+01:00, mleich@five.local.lan +6 -0 Merge five.local.lan:/work/merge/mysql-5.0-build-30418 into five.local.lan:/work/merge/mysql-5.1-build-31610 MERGE: 1.1810.3284.72 ------------------------------------------------------------ revno: 0.1.596 committer: marko timestamp: Fri 2007-11-30 11:41:22 +0000 message: ha_innobase::get_auto_increment(): Add a comment that was accidentally removed in r2137, when merging a change from MySQL AB. ------------------------------------------------------------ revno: 0.1.595 committer: marko timestamp: Fri 2007-11-30 09:59:17 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2528.124.3 2007-08-14 15:35:19-06:00 tsmith@hindu.god Updates to allow innodb.test to be run with --embedded-server, including a small change to build_table_filename(). innodb.test, innodb.result: Updates to allow innodb.test to be run with --embedded-server ------------------------------------------------------------ revno: 0.1.594 committer: marko timestamp: Fri 2007-11-30 09:52:49 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2598.6.1 2007-11-07 12:59:22-07:00 tsmith@hindu.god Cast away compiler warning on Windows. ha_innodb.cc: Cast away a compiler warning; some functions return ulong or ulint for errors, and some use int. Let's hope these all fit in an int. ------------------------------------------------------------ revno: 0.1.593 committer: marko timestamp: Fri 2007-11-30 09:44:34 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2528.116.44 2007-09-12 18:16:50-07:00 antony@xiphis.org Changes for pushbuild test runs and VSC compile warnings ha_innodb.cc: resolve a VSC++ typecast compile warning. ------------------------------------------------------------ revno: 0.1.592 committer: marko timestamp: Fri 2007-11-30 09:43:06 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2528.116.43 2007-09-12 13:35:39-07:00 antony@xiphis.org undo unneccessary change to ha_innodb.cc remove 'drop database' from new tests. ha_innodb.cc: undo unneccessary edits. ------------------------------------------------------------ revno: 0.1.591 committer: marko timestamp: Fri 2007-11-30 09:40:20 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2528.116.42 2007-09-08 20:26:12-07:00 antony@xiphis.org Bug#30919 "Rows not deleted from innodb partitioned tables if --innodb_autoinc_lock_mode=0" Due to a previous bugfix which initializes a previously uninitialized variable, ha_partition::get_auto_increment() may fail to operate correctly when the storage engine reports that it is only reserving one value and one or more partitions have a different 'next-value'. Currently, only affects Innodb's new-style auto-increment code which reserves larger blocks of values and has less inter-thread contention. ha_innodb.cc: Bug30919 Only set *first_value if it is less than autoinc value. This allows a higher value to be hinted when operating as a partitioned table. ------------------------------------------------------------ revno: 0.1.590 committer: marko timestamp: Fri 2007-11-30 09:36:27 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2528.116.40 2007-09-08 11:19:35-07:00 acurtis@xiphis.org Bug#30907 "Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases" Bug#28430 "Failure in replication of innodb partitioned tables on row/mixed format" Bug#30888 "Innodb table + stored procedure + row deletion = server crash" Apply Oracle patch from Sunny Include tests cases by Omer Ensure that innobase_read_and_init_auto performs table autoinc lock when lock_mode = 0 No need for "if" guard around row_unlock_table_autoinc_for_mysql() because it already performs same check. Make autoinc_lock_mode variable read-only for duration of running mysqld process. ha_innodb.cc: Bug30907/28430 "Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases" "Failure in replication of innodb partitioned tables on row/mixed format" Apply Oracle patch from Sunny Ensure that innobase_read_and_init_auto performs table autoinc lock when lock_mode = 0 No need for "if" guard around row_unlock_table_autoinc_for_mysql() because it already performs same check. Make autoinc_lock_mode variable read-only for duration of running mysqld process. ------------------------------------------------------------ revno: 0.1.589 committer: marko timestamp: Fri 2007-11-30 09:25:46 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2528.24.43 2007-08-02 02:22:31-06:00 tsmith@hindu.god Post-merge fix, add InnoDB compatibility hook (defined for InnoDB only), thd_mark_transaction_to_rollback(). ------------------------------------------------------------ revno: 0.1.588 committer: vasil timestamp: Fri 2007-11-23 17:10:17 +0000 message: Set trx->mysql_query_str to NULL at transaction commit. It could be a problem if someone looks at it after that because MySQL may have free()d it then. Approved by: Heikki (via IM) ------------------------------------------------------------ revno: 0.1.587 committer: marko timestamp: Fri 2007-11-16 13:03:21 +0000 message: convert_search_mode_to_innobase(): Add the missing case label HA_READ_MBR_EQUAL that was forgotten in r2088. ------------------------------------------------------------ revno: 0.1.586 committer: marko timestamp: Fri 2007-11-16 12:59:33 +0000 message: Remove the unused function innobase_convert_from_filename() that was inadvertently added in r590. ------------------------------------------------------------ revno: 0.1.585 committer: vasil timestamp: Wed 2007-11-14 13:15:24 +0000 message: Non-functional change: convert the switch in convert_search_mode_to_innobase() to the InnoDB coding style. ------------------------------------------------------------ revno: 0.1.584 committer: vasil timestamp: Wed 2007-11-14 12:49:24 +0000 message: Fix Bug#32125 (http://bugs.mysql.com/32125) "Database crash due to ha_innodb.cc:3896: ulint convert_search_mode_to_innobase": When unknown find_flag is encountered in convert_search_mode_to_innobase() do not call assert(0); instead queue a MySQL error using my_error() and return the error code PAGE_CUR_UNSUPP. Change the functions that call convert_search_mode_to_innobase() to handle that error code by "canceling" execution and returning appropriate error code further upstream. Approved by: Heikki (via IM) ------------------------------------------------------------ revno: 0.1.583 committer: vasil timestamp: Wed 2007-10-31 08:27:53 +0000 message: * Make ./setup.sh sh compliant by avoiding bash-specific syntax. * Make the heading line #!/bin/sh. /bin/bash is non-standard. Approved by: Marko ------------------------------------------------------------ revno: 0.1.582 committer: sunny timestamp: Fri 2007-10-26 16:51:40 +0000 message: Fix for Bug# 31860, in the Bug 16979 fix there was an erroneous assertion that autoincrement columns can't contain negative values. With the fix, the autoincrement table counter is set to 0 if the maximum value read from the autoinc column index is negative. Add test for the bug fix but the test is not really useful as the server needs to be restarted half way through the test. It has been added for reference only. ------------------------------------------------------------ revno: 0.1.581 committer: sunny timestamp: Thu 2007-10-25 01:17:40 +0000 message: Remove ut_print_timestamp(), this should have been removed when the following changes were made by MySQL. ChangeSet@1.1810.467.1 2005-08-11 19:19:20+03:00 jani@omakaista.fi Fix error message so that it conforms to " InnoDB: Error: ...". ------------------------------------------------------------ revno: 0.1.580 committer: marko timestamp: Wed 2007-10-24 11:35:23 +0000 message: Use "InnoDB:" prefix in error messages. ------------------------------------------------------------ revno: 0.1.579 committer: marko timestamp: Wed 2007-10-24 10:49:11 +0000 message: UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Remove warnings on 64-bit systems. ------------------------------------------------------------ revno: 0.1.578 committer: sunny timestamp: Wed 2007-10-17 11:44:41 +0000 message: Suppress printing of deadlock errors while reading the autoinc value. DB_DEADLOCK errors are part of normal processing and excessive printing of these error messages could be disconcerting for users. ------------------------------------------------------------ revno: 0.1.577 committer: marko timestamp: Wed 2007-10-17 05:36:42 +0000 message: Set an error code when a deadlock occurs in semi-consistent read. (Bug #31494) innodb-semi-consistent: New tests for InnoDB semi-consistent reads. Unfortunately, these will not trigger Bug #31494, because there merely occur lock wait timeouts, not deadlocks. ------------------------------------------------------------ revno: 0.1.576 committer: sunny timestamp: Tue 2007-10-16 11:08:35 +0000 message: Bug fix: The problem was that when write_row() attempted to update the max autoinc value, and if it was rolled back because of a deadlock, the deadlock error (transaction rollback) was not being propagated back to MySQL. ------------------------------------------------------------ revno: 0.1.575 committer: sunny timestamp: Fri 2007-10-12 16:40:42 +0000 message: Prevent loading of tables that have unsupported features most notably FTS indexes. ------------------------------------------------------------ revno: 0.1.574 committer: marko timestamp: Fri 2007-10-12 08:29:45 +0000 message: ibuf_insert_to_index_page(): Fix typos in diagnostic output. ------------------------------------------------------------ revno: 0.1.573 committer: marko timestamp: Fri 2007-10-05 09:53:22 +0000 message: UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display also __FILE__ and __LINE__ when these Valgrind checks fail. ------------------------------------------------------------ revno: 0.1.572 committer: marko timestamp: Wed 2007-10-03 08:36:20 +0000 message: mem_heap_free_top(): Remove a bogus Valgrind warning. ------------------------------------------------------------ revno: 0.1.571 committer: marko timestamp: Wed 2007-10-03 07:36:33 +0000 message: ut_print_buf(): Add a Valgrind check that the buffer is wholly defined. ------------------------------------------------------------ revno: 0.1.570 committer: marko timestamp: Fri 2007-09-28 05:56:09 +0000 message: Improve Valgrind instrumentation. rec_offs_set_n_alloc(): Use UNIV_MEM_ASSERT_AND_ALLOC(). UNIV_MEM_ASSERT_AND_ALLOC(): New directive, similar to UNIV_MEM_ASSERT_AND_FREE(). ------------------------------------------------------------ revno: 0.1.569 committer: sunny timestamp: Tue 2007-09-25 07:16:56 +0000 message: Add debug lock checks to autoinc functions. Add lock guards around an invocation of dict_table_autoinc_initialize(). ------------------------------------------------------------ revno: 0.1.568 committer: marko timestamp: Mon 2007-09-24 11:28:51 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2560 2007-09-21 10:15:16+02:00 gkodinov@local ha_innodb.cc: fixed type conversion warnings revealed by bug 30639 ------------------------------------------------------------ revno: 0.1.567 committer: marko timestamp: Mon 2007-09-24 11:26:57 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2528.115.30 2007-08-28 10:17:15-06:00 tsmith@hindu.god Fix another compiler warning on Windows in InnoDB. ha_innodb.cc: Fix compiler warning: ::get_auto_increment takes a ulonglong for nb_desired_values, but InnoDB's trx struct stores it as a ulint (unsigned long). Probably harmless, as a single statement won't be asking for more than 2^32 rows. ------------------------------------------------------------ revno: 0.1.566 committer: marko timestamp: Mon 2007-09-24 11:23:24 +0000 message: Merge changes from MySQL AB: ChangeSet@1.2528.115.25 2007-08-27 18:18:14-06:00 tsmith@hindu.god Fix some Windows compiler warnings. dict0mem.c: Fix compiler warning with a cast. ha_innodb.cc: Change type to fix a compiler warning. ------------------------------------------------------------ revno: 0.1.565 committer: marko timestamp: Mon 2007-09-24 11:18:41 +0000 message: Merge changes from MySQL to the MySQL-owned file CMakeLists.txt: ChangeSet@1.2528.109.1 2007-08-06 23:16:01+02:00 kent@(none) Additional changes for bug#29903 ------------------------------------------------------------ revno: 0.1.564 committer: vasil timestamp: Fri 2007-09-21 13:35:00 +0000 message: snprintf() should always return non-negative result. According to Microsoft documentation about _vscprintf(): If format is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue, the functions return -1 and set errno to EINVAL. The UNIX variant of snprintf() segfaults if format is a NULL pointer (similar to strlen(NULL) for example), so it is better to conform to this behavior and crash our custom Windows version instead of returning -1. Noone would expect -1 to be returned from snprintf(). Cosmetic: Add a space after typecast. Approved by: Marko ------------------------------------------------------------ revno: 0.1.563 committer: vasil timestamp: Thu 2007-09-20 14:37:03 +0000 message: Revert r1850 as MySQL did not approve the addition. log for r1850: Implement this feature request: http://bugs.mysql.com/30706 * Add a function that returns the number of microseconds since epoch - ut_time_us(). * Add (innodb|innobase|srv)_replication_delay MySQL config parameter. * Add UT_WAIT_FOR() macro that waits for a specified condition to occur until a timeout elapses. * Using all of the above, handle the replication thread specially in srv_conc_enter_innodb(). ------------------------------------------------------------ revno: 0.1.562 committer: vasil timestamp: Wed 2007-09-19 17:13:46 +0000 message: Add ut_snprintf() function. On Windows this needs to be implemented using auxiliary functions because there is no snprintf-variant on Windows that behaves exactly as specified in the standard: * Always return the number of characters that would have been printed if the size were unlimited (not including the final `\0'). * Always '\0'-terminate the result * Do not touch the buffer if size=0, only return the number of characters that would have been printed. Can be used to estimate the size needed and to allocate it dynamically. See http://www.freebsd.org/cgi/query-pr.cgi?pr=87260 for the reason why 2 ap variables are used. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.561 committer: vasil timestamp: Mon 2007-09-17 18:15:44 +0000 message: Implement this feature request: http://bugs.mysql.com/30706 * Add a function that returns the number of microseconds since epoch - ut_time_us(). * Add (innodb|innobase|srv)_replication_delay MySQL config parameter. * Add UT_WAIT_FOR() macro that waits for a specified condition to occur until a timeout elapses. * Using all of the above, handle the replication thread specially in srv_conc_enter_innodb(). Approved by: Heikki ------------------------------------------------------------ revno: 0.1.560 committer: vasil timestamp: Fri 2007-09-14 08:19:48 +0000 message: Add config option innodb_use_adaptive_hash_indexes to enable/disable adaptive hash indexes. It is enabled by default (no change in default behavior). Approved by: Marko ------------------------------------------------------------ revno: 0.1.559 committer: marko timestamp: Thu 2007-09-13 09:08:58 +0000 message: Remove the prototypes of some functions inside #if 0. The function definitions were removed in r1746. ------------------------------------------------------------ revno: 0.1.558 committer: sunny timestamp: Wed 2007-09-12 23:24:49 +0000 message: Add test for Bug# 21409, the actual bug was fixed in r1334. ------------------------------------------------------------ revno: 0.1.557 committer: sunny timestamp: Mon 2007-09-10 20:26:01 +0000 message: Add /*== ... === */ decoration that was missing around some auto-inc functions. Add a missing comment, fix the length of a decoration. Initialize the *value out parameter in ha_innobase::innobase_get_auto_increment(). ------------------------------------------------------------ revno: 0.1.556 committer: marko timestamp: Mon 2007-09-10 08:44:51 +0000 message: Improve memory debugging. This is follow-up to r1819. mem_heap_validate(): Compile this function also if UNIV_MEM_DEBUG is defined. Previously, this function was only compiled with UNIV_DEBUG. mem_heap_free_heap_top(): Flag the memory allocated, not freed, for Valgrind. Otherwise, Valgrind would complain on the second call of mem_heap_empty(). UNIV_MEM_ASSERT_RW(), UNIV_MEM_ASSERT_W(): Display additional diagnostics for failed Valgrind checks. ------------------------------------------------------------ revno: 0.1.555 committer: sunny timestamp: Sun 2007-09-09 22:41:42 +0000 message: Add assertion to enforce check of an implicit invariant and add comment about retry of autoinc read semantics. We always reread the table's autoinc counter after attempting to initialize it i.e., we want to guarantee that a read of autoinc valus that is returned to the caller is always covered by the AUTOINC locking mechanism. ------------------------------------------------------------ revno: 0.1.554 committer: sunny timestamp: Sat 2007-09-08 20:40:10 +0000 message: Fix two bugs: Bug# 30907: We don't rely on *first_value to be 0 when checking whether get_auto_increment() has been invoked for the first time in a multi-row INSERT. We instead use trx_t::n_autoinc_rows. Initialize trx::n_autoinc_rows inside ha_innobase::start_stmt() too. Bug# 30888: While adding code for the low level read of the AUTOINC value from the index, the case for MEDIUM ints which are 3 bytes was missed triggering an assertion. ------------------------------------------------------------ revno: 0.1.553 committer: marko timestamp: Fri 2007-09-07 12:41:42 +0000 message: Merge r1826 from branches/zip: UNIV_MEM_ASSERT_AND_FREE(): Use UNIV_MEM_ASSERT_W() instead of UNIV_MEM_ASSERT_RW(). The memory area need not be initialized. This mistake was made in r1815. ------------------------------------------------------------ revno: 0.1.552 committer: sunny timestamp: Fri 2007-09-07 00:04:10 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2536.50.1 2007-08-02 12:45:56-07:00 igor@mysql.com Fixed bug#28404. This patch adds cost estimation for the queries with ORDER BY / GROUP BY and LIMIT. If there was a ref/range access to the table whose rows were required to be ordered in the result set the optimizer always employed this access though a scan by a different index that was compatible with the required order could be cheaper to produce the first L rows of the result set. Now for such queries the optimizer makes a choice between the cheapest ref/range accesses not compatible with the given order and index scans compatible with it. innodb.result: Adjusted results for test cases affected fy the fix for bug #28404. ------------------------------------------------------------ revno: 0.1.551 committer: sunny timestamp: Thu 2007-09-06 23:50:26 +0000 message: Use the clustered index and not the one selected by the optimizer in the plan, when building a previous version of the row. This bug is triggered when running queries via InnoDB's internal SQL parser; when InnoDB's optimizer selects a secondary index for the plan. ------------------------------------------------------------ revno: 0.1.550 committer: marko timestamp: Thu 2007-09-06 12:46:50 +0000 message: Merge r1815:1817 from branches/zip: Improve Valgrind instrumentation. UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory area is defined. UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable. UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is writable before declaring it free (unwritable). This replaces UNIV_MEM_FREE() in many places. mem_init_buf(): Check that the memory is writable, and declare it undefined. mem_erase_buf(): Check that the memory is writable, and declare it freed. ------------------------------------------------------------ revno: 0.1.549 committer: marko timestamp: Wed 2007-09-05 13:02:36 +0000 message: ha_innobase::external_lock(): Update prebuilt->mysql_has_locked and trx->n_mysql_tables_in_use only after row_lock_table_for_mysql() returns DB_SUCCESS. A timeout on LOCK TABLES would lead to an inconsistent state, which would cause trx_free() to print a warning. This was later reported as Bug #31444. ------------------------------------------------------------ revno: 0.1.548 committer: marko timestamp: Mon 2007-09-03 08:32:32 +0000 message: innodb.result: Revert r1655, which should have been reverted as part of r1781. ------------------------------------------------------------ revno: 0.1.547 committer: marko timestamp: Sat 2007-09-01 17:52:03 +0000 message: row_drop_table_for_mysql(): Before calling dict_table_remove_from_cache(table) and thus freeing the memory allocated for the table, copy the table name. This avoids reading freed memory when name == table->name. Approved by Sunny. ------------------------------------------------------------ revno: 0.1.546 committer: marko timestamp: Sat 2007-09-01 17:28:31 +0000 message: ut_print_namel(): Do not assume that all '/' are separators between database and table names. Approved by Heikki. ------------------------------------------------------------ revno: 0.1.545 committer: marko timestamp: Fri 2007-08-31 06:39:46 +0000 message: Move the prototype of innobase_print_identifier() from ut0ut.c to ha_prototypes.h. Enclose the definitions in ha_prototypes.h in #ifndef UNIV_HOTBACKUP. ------------------------------------------------------------ revno: 0.1.544 committer: marko timestamp: Thu 2007-08-30 14:27:47 +0000 message: row_create_table_for_mysql(), row_truncate_table_for_mysql(), row_drop_table_for_mysql(): Do not mention innodb_force_recovery when newraw is set. ------------------------------------------------------------ revno: 0.1.543 committer: marko timestamp: Thu 2007-08-30 12:28:23 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2536.10.2 2007-07-25 10:44:45+02:00 jperkin@mysql.com Fix for bug#29641 - $CC on Open Server is set to contain arguments for enabling threads. However, duplicate AC_PROG_* macros in the innobase plug.in file were resetting $CC and causing link errors. As AC_PROG_* macros are already used in the main configure.in file there should be no need for them to be duplicated here too. plug.in: Remove AC_PROG_* macros ------------------------------------------------------------ revno: 0.1.542 committer: marko timestamp: Thu 2007-08-30 09:01:24 +0000 message: Correct the function comments of row_create_table_for_mysql() and row_drop_table_for_mysql(). ------------------------------------------------------------ revno: 0.1.541 committer: sunny timestamp: Thu 2007-08-30 08:08:04 +0000 message: Add comment that the variable dest should be word aligned. After discussion on IM with Heikki. ------------------------------------------------------------ revno: 0.1.540 committer: sunny timestamp: Thu 2007-08-30 07:06:27 +0000 message: Fix a test case that was broken after Bug#16979 fix. See r1645 and r1735. The variable used in the tests below was introduced in r1735. ------------------------------------------------------------ revno: 0.1.539 committer: sunny timestamp: Thu 2007-08-30 05:46:21 +0000 message: Fix a bug that handles the case where the host specific byte order matches the InnoDB storage byte order, which is big-endian. ------------------------------------------------------------ revno: 0.1.538 committer: marko timestamp: Thu 2007-08-23 09:24:38 +0000 message: Enclose rw_lock_validate() in #ifdef UNIV_DEBUG. It is only called by debug assertions. ------------------------------------------------------------ revno: 0.1.537 committer: marko timestamp: Thu 2007-08-23 06:39:41 +0000 message: rw_lock_s_lock_func(): Correct a typo in a comment. ------------------------------------------------------------ revno: 0.1.536 committer: sunny timestamp: Thu 2007-08-23 03:40:42 +0000 message: We check whether the AUTOINC sub-system has been initialized (first) by holding the AUTOINC mutex and if initialization is required then we initialize using our normal procedure. This change is related to Bug#27950. ------------------------------------------------------------ revno: 0.1.535 committer: sunny timestamp: Thu 2007-08-23 03:37:37 +0000 message: Add a table level counter that tracks the number of AUTOINC locks that are pending and/or granted on a table. We peek at this value to determine whether a transaction doing a simple INSERT in innodb_autoinc_lock_mode = 1, needs to acquire the AUTOINC lock or not. This change is related to Bug# 16979. ------------------------------------------------------------ revno: 0.1.534 committer: marko timestamp: Wed 2007-08-22 18:28:26 +0000 message: Correct an outdated comment about dict_table_t:col_names that should have been adjusted in r1719, or r1264 in branches/zip. ------------------------------------------------------------ revno: 0.1.533 committer: marko timestamp: Wed 2007-08-22 11:36:55 +0000 message: Remove some code from ha_innodb.cc that was already enclosed in #if 0. The code was related to replication and group commit, and it was unreachable already as of MySQL 5.0. Approved by Heikki ------------------------------------------------------------ revno: 0.1.532 committer: marko timestamp: Wed 2007-08-22 08:19:06 +0000 message: Merge r1739 from branches/zip: mem_heap_free_heap_top(): Declare the memory freed with UNIV_MEM_FREE(). Before this change, the memory freed by mem_heap_empty() was not completely flagged free in UNIV_DEBUG_VALGRIND builds. After this change, Valgrind will hopefully catch all errors caught by UNIV_MEM_DEBUG. ------------------------------------------------------------ revno: 0.1.531 committer: marko timestamp: Wed 2007-08-22 06:50:16 +0000 message: trx_sys_print_mysql_binlog_offset_from_page(): Enclose the definition in #ifdef UNIV_HOTBACKUP, to match the function declaration. ------------------------------------------------------------ revno: 0.1.530 committer: marko timestamp: Wed 2007-08-22 06:49:07 +0000 message: Remove some unused fields of trx_t: mysql_master_log_file_name, mysql_master_log_pos, repl_wait_binlog_name, repl_wait_binlog_pos. Approved by Heikki. ------------------------------------------------------------ revno: 0.1.529 committer: sunny timestamp: Mon 2007-08-20 21:48:16 +0000 message: Add variable "innodb_autoinc_lock_mode" to control the behavior of the AUTOINC locking. There are three modes, 0 for backward compatibility, 1 for the new style locking (default, safe for statement-based replication) and 2 for no AUTOINC locking (unsafe for statement-based replication). ------------------------------------------------------------ revno: 0.1.528 committer: marko timestamp: Wed 2007-08-15 12:41:46 +0000 message: Merge r1264 from branches/zip: Avoid memory fragmentation when adding column definitions to tables. dict_mem_table_add_col(): Add the parameter "heap" for temporary memory allocation. Allow it and "name" to be NULL. These parameters are NULL when creating dummy indexes. dict_add_col_name(): Remove calls to ut_malloc() and ut_free(). dict_table_get_col_name(): Allow table->col_names to be NULL. dict_table_add_system_columns(), dict_table_add_to_cache(): Add the parameter "heap". --- Additional changes that had to be merged from branches/zip: dict_table_add_system_columns(): New function, factored out from dict_table_add_to_cache(). mlog_parse_index(): Add some consistency checks, and make use of dict_table_add_system_columns(). ------------------------------------------------------------ revno: 0.1.527 committer: marko timestamp: Wed 2007-08-15 12:29:46 +0000 message: Replace mysql_byte with uchar and remove the #define mysql_byte from ha_innodb.cc. This cleanup was made possible as of r1550: Merge changes from MySQL AB: ChangeSet@2007-05-10 12:59:39+03:00, monty@mysql.com WL#3817: Simplify string / memory area types and make things more consistent (first part) The following type conversions was done: - Changed byte to uchar ... ------------------------------------------------------------ revno: 0.1.526 committer: marko timestamp: Wed 2007-08-15 06:06:52 +0000 message: ibuf0ibuf.c: Remove the unused prototype for dict_index_print_low() that was inadvertently added in r832. ------------------------------------------------------------ revno: 0.1.525 committer: vasil timestamp: Tue 2007-08-14 08:32:12 +0000 message: Fix typo in comment. ------------------------------------------------------------ revno: 0.1.524 committer: marko timestamp: Wed 2007-08-01 10:35:06 +0000 message: lock_number_of_rows_locked(): Fix a typo in comment, and make the comments in lock0lock.c and lock0lock.h identical. The typo was incorrectly fixed in r1623. ------------------------------------------------------------ revno: 0.1.523 committer: marko timestamp: Tue 2007-07-31 18:46:55 +0000 message: check_trx_exists(): Remove a redundant function call and assignment that was added by someone at MySQL. ------------------------------------------------------------ revno: 0.1.522 committer: marko timestamp: Tue 2007-07-31 07:55:06 +0000 message: recv_init_crash_recovery(): remove trailing white space ------------------------------------------------------------ revno: 0.1.521 committer: marko timestamp: Tue 2007-07-31 06:45:39 +0000 message: Merge a change from MySQL AB: ChangeSet@1.1810.3176.1 2007-07-20 14:17:15+03:00 gkodinov@magare.gmz Bug #29644: alter table hangs if records locked in share mode by long running transaction On Windows opened files can't be deleted. There was a special upgraded lock mode (TL_WRITE instead of TL_WRITE_ALLOW_READ) in ALTER TABLE to make sure nobody has the table opened when deleting the old table in ALTER TABLE. This special mode was causing ALTER TABLE to hang waiting on a lock inside InnoDB. This special lock is no longer necessary as the server is closing the tables it needs to delete in ALTER TABLE. Fixed by removing the special lock. Note that this also reverses the fix for bug 17264 that deals with another consequence of this special lock mode being used. ha_innodb.cc@1.202.46.1 2007-07-20 14:17:14+03:00 gkodinov@magare.gmz Bug #29644: reverse the (now excessive) fix for bug 17264 (but leave the test case). ------------------------------------------------------------ revno: 0.1.520 committer: marko timestamp: Tue 2007-07-31 06:24:44 +0000 message: Fix the innodb.test failure mentioned in r1654. ------------------------------------------------------------ revno: 0.1.519 committer: marko timestamp: Tue 2007-07-31 05:56:17 +0000 message: Merge changes from MySQL AB, as of the following changeset: ChangeSet@1.2567, 2007-07-27 14:44:31+05:00, svoj@june.mysql.com +3 -0 Merge mysql.com:/home/svoj/devel/mysql/BUG29957/mysql-5.0-engines into mysql.com:/home/svoj/devel/mysql/BUG29957/mysql-5.1-engines MERGE: 1.1810.2871.44 One test case in innodb.test fails because of auto-increment changes in r1562:1653: $diff innodb.result innodb.reject 504c504 < 3 test2 this will work --- > 4 test2 this will work ------------------------------------------------------------ revno: 0.1.518 committer: marko timestamp: Mon 2007-07-30 18:51:59 +0000 message: lock_queue_iterator_get_prev(): Remove the unused local variable bit_no. ------------------------------------------------------------ revno: 0.1.517 committer: vasil timestamp: Tue 2007-07-24 06:45:26 +0000 message: * Use START_REV instead of $(($1 + 1)) and END_REV instead of $2 * Use standard while-loop instead of the seq command ------------------------------------------------------------ revno: 0.1.516 committer: sunny timestamp: Tue 2007-07-24 01:42:16 +0000 message: Fix for bug# 16979, this is a major change in InnoDB auto-inc handling. There is one test that fails as of this commit. The updated test case should be part of the snapshot from MySQL shortly. Fix for bug# 27950 - Init AUTOINC from delete_row(). Fix for bug# 28781 - Use value specified by MySQL, in update_row(). Summary of structural changes: ============================== InnoDB needs to hold a table level lock for AUTOINC allocations to overcome the non-determinism inherent in MySQL SBR for INSERT ... SELECT. In this fix for simple INSERT statements (including multi-value inserts), we try and avoid acquiring the special AUTOINC table level lock unless another transaction has already reserved the AUTOINC table level lock, in which case we fall back to the old behavior of acquiring the AUTOINC table level lock. The max AUTOINC value is now read directly using the low level interface of InnoDB. ------------------------------------------------------------ revno: 0.1.515 committer: vasil timestamp: Tue 2007-07-17 15:08:04 +0000 message: Introduce a lock queue iterator for easy (and opaque) traversing of lock queues. Supports table and record lock queues via the same interface. There is only "get previous" method because currently there is no need for "get next" - it would be unused. Feel free to add one if needed. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.514 committer: vasil timestamp: Tue 2007-07-17 13:58:16 +0000 message: Convert date to an unambiguous format. ------------------------------------------------------------ revno: 0.1.513 committer: vasil timestamp: Tue 2007-07-17 13:41:51 +0000 message: Move lock_get_type() from lock/lock0lock.c to include/lock0priv.ic: * lock0lock.c: remove lock_get_type() and include include/lock0priv.ic * lock0priv.h: include lock0priv.ic and add lock_get_type() prototype * Makefile.am: add lock0priv.ic to noinst_HEADERS * lock0priv.ic: introduce this new file containing the body of lock_get_type() This move is necessary in order to use lock_get_type() from other lock/ source files (it's going to be used in lock/lock0iter.c). Approved by: Heikki ------------------------------------------------------------ revno: 0.1.512 committer: vasil timestamp: Tue 2007-07-17 12:43:09 +0000 message: Convert date to an unambiguous format. ------------------------------------------------------------ revno: 0.1.511 committer: vasil timestamp: Tue 2007-07-17 07:42:43 +0000 message: Add include/lock0priv.h to noinst_HEADERS in Makefile.am. ------------------------------------------------------------ revno: 0.1.510 committer: vasil timestamp: Mon 2007-07-16 13:49:20 +0000 message: Move lock_rec_find_set_bit() and lock_rec_get_prev() from lock/lock0lock.c to include/lock0priv.h and make them non-static. They will be used in lock/lock0iter.c. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.509 committer: vasil timestamp: Mon 2007-07-16 12:48:45 +0000 message: Wrap to 72 chars. ------------------------------------------------------------ revno: 0.1.508 committer: vasil timestamp: Mon 2007-07-16 11:36:01 +0000 message: Add "const" qualifiers to lock_get_type() and lock_get_mode(). Approved by: Sunny ------------------------------------------------------------ revno: 0.1.507 committer: vasil timestamp: Fri 2007-07-13 12:15:14 +0000 message: lock_has_to_wait() is needed in the INFORMATION_SCHEMA implementation in order to determine which lock is blocking which. Make it non-static and put its definition in include/lock0lock.h. Approved by: Heikki (via IM) ------------------------------------------------------------ revno: 0.1.506 committer: vasil timestamp: Fri 2007-07-13 11:09:57 +0000 message: Cosmetic: indent comments so all of them start on one column. Suggested by: Sunny ------------------------------------------------------------ revno: 0.1.505 committer: vasil timestamp: Fri 2007-07-13 11:04:53 +0000 message: Move lock_*struct structures from lock/lock0lock.c to include/lock0priv.h. This is needed in order to add more code to lock/ that uses members of these structures (internal to the lock module) but in a separate file, rather than lock0lock.c. lock0lock.c is a way too big already. Approved by: Sunny ------------------------------------------------------------ revno: 0.1.504 committer: sunny timestamp: Tue 2007-07-10 21:29:56 +0000 message: Fix change missed as part of Bug# 15815. Use a function to check if a block needs to be made younger. ------------------------------------------------------------ revno: 0.1.503 committer: vasil timestamp: Mon 2007-07-09 13:19:51 +0000 message: Fix typo in comment. ------------------------------------------------------------ revno: 0.1.502 committer: vasil timestamp: Wed 2007-06-27 13:56:34 +0000 message: Fix Bug#29155 by enabling file locking on FreeBSD. It has been disabled because InnoDB has refused to start on FreeBSD & LinuxThreads, but now it starts just fine. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.501 committer: inaam timestamp: Tue 2007-06-26 16:54:07 +0000 message: Bug#23710 At InnoDB startup consider the case where log scan went beyond checkpoint_lsn as a crash and initiate crash recovery code path. reviewed by: Heikki ------------------------------------------------------------ revno: 0.1.500 committer: vasil timestamp: Tue 2007-06-26 13:08:11 +0000 message: Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB" by typecasting the variables before multiplying them, so that the result of the multiplication is of type "unsigned long long". I verified this fix by creating a sparse file of 6TB and forcing InnoDB to use it without overwriting it with zeroes (by commenting the code that overwrites :newraw files). New type ullint is introduced with the sole purpose of shortening "unsigned long long", please do not define it to something else than "unsigned long long". Approved by: Heikki ------------------------------------------------------------ revno: 0.1.499 committer: vasil timestamp: Thu 2007-06-21 12:29:42 +0000 message: Add some comments. Approved by: Heikki (via IM) ------------------------------------------------------------ revno: 0.1.498 committer: marko timestamp: Thu 2007-06-21 12:14:04 +0000 message: trx_commit_for_mysql(): Avoid acquiring and releasing kernel_mutex when trx->sess or trx_dummy_sess is non-NULL. ------------------------------------------------------------ revno: 0.1.497 committer: marko timestamp: Thu 2007-06-14 08:34:23 +0000 message: Port extra Valgrind instrumentation (UNIV_DEBUG_VALGRIND) from branches/zip. ------------------------------------------------------------ revno: 0.1.496 committer: marko timestamp: Wed 2007-06-13 10:18:12 +0000 message: innodb_check_for_record_too_big_error(): Divide the return value of page_get_free_space_of_empty_noninline() by 2. Until r1571, that function did not return the same value as page_get_free_space_of_empty(). ------------------------------------------------------------ revno: 0.1.495 committer: marko timestamp: Wed 2007-06-13 09:02:58 +0000 message: create_table_def(): Eliminate the inline function call to dict_table_is_comp() that was introduced in r1571. Inlining is disabled in ha_innodb.cc. ------------------------------------------------------------ revno: 0.1.494 committer: marko timestamp: Tue 2007-06-12 09:51:03 +0000 message: Fix a severe bug that was introduced in r1422 when fixing Bug #21101. When creating an index containing a too long record, InnoDB would dereference a NULL pointer when trying to determine the maximum row length. innodb_check_for_record_too_big_error(): Replace the dict_table_t* parameter with a Boolean flag. There is not always a dict_table_t object when this function is called. page_get_free_space_of_empty_noninline(): Move the definition and declaration from row0mysql (!) to page0page. Make the signature identical with page_get_free_space_of_empty(). create_clustered_index_when_no_primary(): Add the parameter "comp". Remove unnecessary casts. ------------------------------------------------------------ revno: 0.1.493 committer: vasil timestamp: Tue 2007-06-12 06:53:29 +0000 message: Fix some in:/out: comments. Approved by: Marko ------------------------------------------------------------ revno: 0.1.492 committer: marko timestamp: Wed 2007-06-06 12:13:59 +0000 message: mysql-test/innodb_trx_weight.inc: Add username root to the "connect" statement. The Unix user running mysql-test-run usually does not have any privileges on the MySQL test database. ------------------------------------------------------------ revno: 0.1.491 committer: marko timestamp: Wed 2007-06-06 11:18:33 +0000 message: rec_get_converted_size_new(): The total size of the infimum and supremum records in ROW_FORMAT=COMPACT is REC_N_NEW_EXTRA_BYTES + 8. The REC_N_NEW_EXTRA_BYTES was accidentally omitted in r1546. This function should never be called on those records, though. ------------------------------------------------------------ revno: 0.1.490 committer: vasil timestamp: Mon 2007-06-04 14:00:44 +0000 message: Fix Bug#20090 as suggested in the bug followup by Heikki. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.489 committer: marko timestamp: Mon 2007-06-04 12:25:32 +0000 message: ha_innobase::innobase_read_and_init_auto_inc(): Remember and restore prebuilt->sql_stat_start. In an ALTER TABLE statement in the innodb_gis test, an ut_ad() assertion failed, because no IX lock had been acquired on the table, because prebuilt->sql_stat_start was inadvertently reset to FALSE, by this function. This function was called via ha_innobase::info() and mysql_prepare_alter_table(). ------------------------------------------------------------ revno: 0.1.488 committer: marko timestamp: Mon 2007-06-04 08:45:27 +0000 message: Merge changes from MySQL AB: ChangeSet@2007-05-10 12:59:39+03:00, monty@mysql.com WL#3817: Simplify string / memory area types and make things more consistent (first part) The following type conversions was done: - Changed byte to uchar - Changed gptr to uchar* - Change my_string to char * - Change my_size_t to size_t - Change size_s to size_t Removed declaration of byte, gptr, my_string, my_size_t and size_s. [...] ha_innodb.cc: Removed some old types Updated hash-get-key function arguments Added missing casts for alloc() and printf() Removed some not needed casts ha_innodb.h: Removed some old types ------------------------------------------------------------ revno: 0.1.487 committer: marko timestamp: Fri 2007-06-01 06:01:15 +0000 message: When buffering an insert to a prefix index of a variable-length column, do not incorrectly mark the column as fixed-length. (Bug #28138) ibuf_entry_build(): Instead of prefix_len, pass fixed_len to dtype_new_store_for_order_and_null_size(). Add debug assertions. btr_index_rec_validate(): Correct a comment about prefix indexes. rec_get_converted_size_new(), rec_convert_dtuple_to_rec_new(): Add debug assertions and comments. dict_col_type_assert_equal(): New debug function. ------------------------------------------------------------ revno: 0.1.486 committer: inaam timestamp: Tue 2007-05-29 13:16:47 +0000 message: Do not return error in ha_innobase::info if srv_force_recovery >= 4. This is to allow for normal processing of the query by MySQL instead of generating an error. Reviewed by: Heikki ------------------------------------------------------------ revno: 0.1.485 committer: vasil timestamp: Tue 2007-05-29 12:38:20 +0000 message: Change the comment to a more appropriate one. Discussed with Heikki on IM. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.484 committer: marko timestamp: Tue 2007-05-29 12:10:44 +0000 message: Document that DICT_MAX_INDEX_COL_LEN must not be changed. ------------------------------------------------------------ revno: 0.1.483 committer: marko timestamp: Tue 2007-05-29 08:45:31 +0000 message: logs_empty_and_mark_files_at_shutdown(): Remove trailing whitespace that was added in r1521. ------------------------------------------------------------ revno: 0.1.482 committer: marko timestamp: Tue 2007-05-29 08:41:59 +0000 message: srv_lock_timeout_and_monitor_thread(): Correct the indentation that was broken in r1521. ------------------------------------------------------------ revno: 0.1.481 committer: marko timestamp: Tue 2007-05-29 07:25:16 +0000 message: rec_get_converted_size_new(): Simplify and move a debug assertion. ------------------------------------------------------------ revno: 0.1.480 committer: marko timestamp: Mon 2007-05-28 11:29:45 +0000 message: Revert r799, which was supposed to prevent similar cases as Bug #21638. In reality, the patch breaks the handling of prefix indexes of variable-length columns in ROW_FORMAT=COMPACT. Reverting the patch is only a partial fix of Bug #28138. ------------------------------------------------------------ revno: 0.1.479 committer: marko timestamp: Mon 2007-05-28 11:10:41 +0000 message: Define an auxiliary macro UT_BITS_IN_BYTES() and use it where possible. ------------------------------------------------------------ revno: 0.1.478 committer: marko timestamp: Mon 2007-05-28 11:07:03 +0000 message: Cleanup in ha_innodb.cc: thd_is_replication_slave_thread(), thd_has_edited_nontrans_tables(): Remove blank line between the function comment and the function definition. There should be exactly one line between the return type and the function comment, and this line should be one of '', 'static', 'UNIV_INLINE', and 'extern "C"'. ------------------------------------------------------------ revno: 0.1.477 committer: inaam timestamp: Fri 2007-05-25 18:00:57 +0000 message: Undo bad space formatting introduced in earlier commit r1521 spotted by: Marko ------------------------------------------------------------ revno: 0.1.476 committer: marko timestamp: Wed 2007-05-23 09:58:05 +0000 message: trx0trx.c: Add missing #include "ha_prototypes.h". ------------------------------------------------------------ revno: 0.1.475 committer: inaam timestamp: Wed 2007-05-23 01:23:34 +0000 message: Forward port r1520 from branches/5.0 Patch to allow monitor threads to stop before proceeding with normal shutdown. Also have a separate time counter for tablespace monitor. reviewed by: Heikki ------------------------------------------------------------ revno: 0.1.474 committer: vasil timestamp: Mon 2007-05-21 13:43:36 +0000 message: Split ut_a(a && b [&& c...]); into separate ut_a(a); ut_a(b); [ut_a(c); ...]. This makes it possible to see which expression was false by looking at the error message. Approved by: Marko ------------------------------------------------------------ revno: 0.1.473 committer: vasil timestamp: Tue 2007-05-15 14:53:04 +0000 message: Fix Bug#21293: Consider transactions that had edited non-transactional tables heavier than ones that had not. This helps killing the "right" transaction in case of a deadlock. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.472 committer: vasil timestamp: Mon 2007-05-14 12:41:47 +0000 message: Add a test about the behavior introduced in r1497. ------------------------------------------------------------ revno: 0.1.471 committer: vasil timestamp: Mon 2007-05-14 12:40:21 +0000 message: Add the number of locks acquired by a transaction to its weight when choosing the lightest transaction to kill when a deadlock occurs. This fixes Bug#21293 partially. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.470 committer: marko timestamp: Mon 2007-05-14 11:25:41 +0000 message: ha_innobase::extra(): Replace references to prebuilt->trx with thd_to_trx(ha_thd()), in order to avoid potential memory corruption. ------------------------------------------------------------ revno: 0.1.469 committer: marko timestamp: Mon 2007-05-14 11:08:44 +0000 message: Introduce the function reset_template() for resetting some fields of row_prebuilt_t; currently prebuilt->read_just_key and prebuilt->keep_other_fields_on_keyread. ------------------------------------------------------------ revno: 0.1.468 committer: marko timestamp: Mon 2007-05-14 07:12:31 +0000 message: ha_innodb.cc: Remove the declarations of some global InnoDB variables whose name starts with srv_. These variables are declared in the header files that are covered by #include directives in ha_innodb.cc. ------------------------------------------------------------ revno: 0.1.467 committer: vasil timestamp: Fri 2007-05-11 15:38:34 +0000 message: Convert innobase_buffer_pool_size and innobase_log_file_size types from longlong to long long because MYSQL_SYSVAR_LONGLONG marco expects long long type. Also change ((ulint)innobase_buffer_pool_size) / 1024 to (ulint)(innobase_buffer_pool_size / 1024) and remove comment which is no longer true. Provided that innobase_buffer_pool_size is always 64bits these statements are equivalent if ulint is 64 bit (well it will screw up if innobase_buffer_pool_size is negative). And if ulint is 32 bit the later variant gives a little more chance that the value will fit. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.466 committer: vasil timestamp: Fri 2007-05-11 11:26:30 +0000 message: Fix typo in comment. ------------------------------------------------------------ revno: 0.1.465 committer: marko timestamp: Fri 2007-05-11 08:43:06 +0000 message: Add #include . Apparently, this header is no longer included by the common headers. This may be related to WL#2936 (pluggable storage engines). ------------------------------------------------------------ revno: 0.1.464 committer: marko timestamp: Thu 2007-05-10 12:09:03 +0000 message: thd_to_trx(), check_trx_exists(): Remove the handlerton parameter. It is a singleton object whose address is stored into innodb_hton_ptr. ------------------------------------------------------------ revno: 0.1.463 committer: marko timestamp: Thu 2007-05-10 11:31:36 +0000 message: Make InnoDB pluggable. That is, merge the modifications from MySQL WL#2936 and adapt some things. Note that ha_innodb.cc depends on mysql_tmpfile() being declared in . Until the function is declared there, you can uncomment the buggy definition of mysql_tmpfile in ha_innodb.cc. Remove storage/innobase/*/Makefile.am. The whole compilation is driven by storage/innobase/Makefile.am and storage/innobase/plug.in. plug.in: Declare InnoDB as a dynamic plugin. ha_innodb.h: Remove the declarations of many global variables. The variables are no longer directly referenced outside of storage/innobase. trx_t: Add the field trx->duplicates. trx_create(): Initialize the fields trx->active_trans and trx->duplicates. innobase_query_is_update(): Remove. Consult trx->duplicates instead. ------------------------------------------------------------ revno: 0.1.462 committer: vasil timestamp: Wed 2007-05-09 14:09:57 +0000 message: Fix typo in comment. Spotted by: Marko ------------------------------------------------------------ revno: 0.1.461 committer: vasil timestamp: Tue 2007-05-08 13:34:35 +0000 message: Improve the comment for trx_struct::undo_no. Suggested by: Heikki ------------------------------------------------------------ revno: 0.1.460 committer: marko timestamp: Tue 2007-05-08 10:51:03 +0000 message: Minor cleanup. row_ins_check_foreign_constraint(), row_ins_scan_sec_index_for_duplicate(): Make use of the predicates page_rec_is_infimum() and page_rec_is_supremum(). ------------------------------------------------------------ revno: 0.1.459 committer: vasil timestamp: Tue 2007-05-08 07:20:02 +0000 message: Fix Bug#25078 by always letting the replication thread on the slave server to enter InnoDB. This can be made further customizable by the user if we introduce a new config parameter. This will wait until config parameters can be easily added. Approved by: Marko ------------------------------------------------------------ revno: 0.1.458 committer: vasil timestamp: Thu 2007-05-03 12:27:08 +0000 message: Fix typo in comment: the exact prototype is in include/data0type.ic, not in data/data0type.ic ------------------------------------------------------------ revno: 0.1.457 committer: vasil timestamp: Fri 2007-04-27 09:09:23 +0000 message: Fix typo in comment. ------------------------------------------------------------ revno: 0.1.456 committer: vasil timestamp: Wed 2007-04-25 04:47:10 +0000 message: Fix typo in the comment. ------------------------------------------------------------ revno: 0.1.455 committer: sunny timestamp: Mon 2007-04-23 02:00:46 +0000 message: Fix Bug#22819, remove assertion. (http://bugs.mysql.com/bug.php?id=22819) ------------------------------------------------------------ revno: 0.1.454 committer: vasil timestamp: Fri 2007-04-20 22:51:55 +0000 message: Reindent with tabs instead of spaces. Spotted by: Marko ------------------------------------------------------------ revno: 0.1.453 committer: vasil timestamp: Fri 2007-04-20 17:51:54 +0000 message: Bugfix: only call innobase_release_temporary_latches() in case of current_thd is not NULL, otherwise we get NULL pointer dereferencing. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.452 committer: vasil timestamp: Fri 2007-04-20 14:41:06 +0000 message: Fix phantom reads (http://bugs.mysql.com/27197) following Heikki's patch in the bug followup. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.451 committer: marko timestamp: Thu 2007-04-19 13:02:21 +0000 message: ha_innodb.cc: Remove ../storage/innobase/include/ prefix from #include directives. This could and should have been done when sql/ha_innodb.cc was renamed to storage/innobase/handler/ha_innodb.cc. ------------------------------------------------------------ revno: 0.1.450 committer: marko timestamp: Thu 2007-04-19 11:44:07 +0000 message: Merge a change from MySQL AB: ChangeSet@2007-04-03 16:13:27+05:00, gluh@mysql.com Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte ==== storage/innobase/handler/ha_innodb.cc ==== 2007-04-03 16:13:25+05:00, gluh@mysql.com +2 -2 removed unnecessary multiplication ------------------------------------------------------------ revno: 0.1.449 committer: marko timestamp: Thu 2007-04-19 11:29:38 +0000 message: Merge a change from MySQL AB, to fix a mistake made in Makefile.am in r1353 by marko (shame on him): ChangeSet@2007-03-30 06:57:58+02:00, msvensson@pilot.blaudden Add missing \ causing CMakelists.txt etc not to be included in dist ------------------------------------------------------------ revno: 0.1.448 committer: vasil timestamp: Wed 2007-04-18 11:35:51 +0000 message: Fix typo which was causing bogus symbolic link *.opt to be created and make install (in mysql dir) to fail. ------------------------------------------------------------ revno: 0.1.447 committer: vasil timestamp: Mon 2007-04-16 16:27:41 +0000 message: Potential fix for Bug#25645: "Move innobase_release_stat_resources(trx) outside the 'if' in ha_innobase::external_lock(). That would add more safety that whatever MySQL does at a query end, there would be no risk of a hang on the btr search latch." Also call innobase_release_temporary_latches() in the beginning of ha_innobase::close(). Approved by: Heikki ------------------------------------------------------------ revno: 0.1.446 committer: vasil timestamp: Thu 2007-04-12 11:19:36 +0000 message: Fix typo. ------------------------------------------------------------ revno: 0.1.445 committer: vasil timestamp: Wed 2007-04-11 17:59:31 +0000 message: Fix Bug#9709 by retrying (forever) if ERROR_SHARING_VIOLATION or ERROR_LOCK_VIOLATION is encountered during file operation. This is caused by backup software, so InnoDB should retry while the backup software is done with the file. Approved by: Heikki ------------------------------------------------------------ revno: 0.1.444 committer: sunny timestamp: Wed 2007-04-11 06:04:11 +0000 message: Fix code indentation from r1424. ------------------------------------------------------------ revno: 0.1.443 committer: sunny timestamp: Wed 2007-04-11 05:35:12 +0000 message: Fixed a missing function decoration that slipped into r1422. ------------------------------------------------------------ revno: 0.1.442 committer: sunny timestamp: Wed 2007-04-11 04:12:40 +0000 message: Bug# 20352. Added variable srv_insert_buffer_batch_size. We want to make this variable settable. Since the pluggable engine interface currently doesn't provide a usable mechanism, we will add the latter functionality once it's available. ------------------------------------------------------------ revno: 0.1.441 committer: sunny timestamp: Wed 2007-04-11 02:43:56 +0000 message: Fix for Bug # 18828. Return DB_TOO_MANY_CONCURRENT_TRXS when we run out of UNDO slots in the rollback segment. This is a partial fix since the MySQL error code requested to properly report the error condition back to the client has not yet materialized. Currently we have #ifdef'd the error code translation in ha_innodb.cc. This will have to be changed as and when MySQl add the new requested code or an equivalent code that we can then use. Given the above, currently we will get the old behaviour, not the "fixed" and intended behaviour. ------------------------------------------------------------ revno: 0.1.440 committer: sunny timestamp: Wed 2007-04-11 01:34:33 +0000 message: Fix for bug# 21101 - returns wrong error message when table column defs exceed the max row size. The fix returns a more appropriate error message. Add a test case to innodb.test and expected output to innodb.result. ------------------------------------------------------------ revno: 0.1.439 committer: vasil timestamp: Tue 2007-04-10 19:15:03 +0000 message: Fix the innodb test by shifting some of the contents of the .result file. Approved by: Marko ------------------------------------------------------------ revno: 0.1.438 committer: marko timestamp: Tue 2007-04-10 17:58:27 +0000 message: Output to the error log information about the limitations of UNIV_IBUF_DEBUG. innobase_start_or_create_for_mysql(): Note that crash recovery is broken when UNIV_IBUF_DEBUG is defined. ibuf_counts[]: Make this a two-dimensional array. No need to allocate anything from the heap. Eliminate ibuf_counts_inited, as the array will be zero-filled by the runtime environment. ibuf_count_check(): New function, to print out an explanation before assertion failure. ------------------------------------------------------------ revno: 0.1.437 committer: marko timestamp: Mon 2007-04-02 07:20:23 +0000 message: Report the current value of the AUTO_INCREMENT counter to MySQL. (Bug #23313, Bug #21404) ha_innobase::update_create_info(): New function, to report the auto_increment_value. ------------------------------------------------------------ revno: 0.1.436 committer: vasil timestamp: Thu 2007-03-29 19:05:09 +0000 message: * Fix Bug#26662 by not open(2)ing with O_DIRECT but rather calling fcntl(2) to set this flag immediately after open(2)ing. This way an error caused by O_DIRECT not being supported can easily be ignored. * Add support for skipping the OS caching on Solaris by calling directio() instead of fcntl(). Approved by: Heikki ------------------------------------------------------------ revno: 0.1.435 committer: vasil timestamp: Thu 2007-03-29 08:37:21 +0000 message: Merge the bodies of os_file_handle_error() and os_file_handle_error_no_exit() into a generic function which is called from both os_file_handle_error() and os_file_handle_error_no_exit() Approved by: Marko ------------------------------------------------------------ revno: 0.1.434 committer: marko timestamp: Tue 2007-03-27 17:59:15 +0000 message: innobase_commit(): Correct the comments and formatting that were broken when innodb_commit_concurrency was implemented. ------------------------------------------------------------ revno: 0.1.433 committer: marko timestamp: Tue 2007-03-27 13:17:47 +0000 message: Remove ha_innobase::last_query_id and references to thd->query_id. MySQL calls external_lock at the beginning and end of a statement when it is not calling start_stmt or commit or rollback. Thus, statement boundaries can be (and are already) detected without monitoring thd->query_id. The function innobase_commit() seemingly lacks the call to innobase_release_stat_resources(), which should be called at the end of every SQL statement. The call was replaced by equivalent statements by Vadim Tkachenko when he implemented innodb_commit_concurrency in MySQL 5.0: http://mysql.bkbits.net:8080/mysql-5.0/?PAGE=patch&REV=1.1886.70.1 ------------------------------------------------------------ revno: 0.1.432 committer: marko timestamp: Tue 2007-03-27 08:22:27 +0000 message: Add static qualifiers to some symbols in ha_innodb.cc that are not referenced from other modules. ------------------------------------------------------------ revno: 0.1.431 committer: marko timestamp: Tue 2007-03-27 06:03:03 +0000 message: Merge a change from MySQL AB: ChangeSet 2007/03/20 10:22:15-04:00 iggy@recycle.(none) Post Merge Fix. storage/innobase/CMakeLists.txt 2007/03/20 10:22:13-04:00 iggy@recycle.(none) +2 -2 Post Merge Fix. ------------------------------------------------------------ revno: 0.1.430 committer: marko timestamp: Tue 2007-03-27 05:49:15 +0000 message: Merge a change from MySQL AB: ChangeSet 2007/02/14 22:06:41-08:00 igor@olga.mysql.com Fixed bug #25971: indexes on text columns were ignored when ref accesses were evaluated. According to the new rules for string comparison partial indexes on text columns can be used in the same cases when partial indexes on varchar columns can be used. mysql-test/r/innodb.result 2007/02/14 22:06:39-08:00 igor@olga.mysql.com +1 -1 Adjusted results after the fix for bug #25971. ------------------------------------------------------------ revno: 0.1.429 committer: marko timestamp: Tue 2007-03-27 05:45:32 +0000 message: Merge a change from MySQL AB: ChangeSet 2007/02/15 15:39:03+01:00 guilhem@gbichot3.local Fix for BUG#25507 "multi-row insert delayed + auto increment causes duplicate key entries on slave" (two concurrrent connections doing multi-row INSERT DELAYED to insert into an auto_increment column, caused replication slave to stop with "duplicate key error" (and binlog was wrong)), and BUG#26116 "If multi-row INSERT DELAYED has errors, statement-based binlogging breaks" (the binlog was not accounting for all rows inserted, or slave could stop). The fix is that: if (statement-based) binlogging is on, a multi-row INSERT DELAYED is silently converted to a non-delayed INSERT. Note: it is not possible to test BUG#25507 in 5.0 (requires mysqlslap), so it is tested only in the changeset for 5.1. However, BUG#26116 is tested here, and the fix for BUG#25507 is the same code change. mysql-test/r/innodb-replace.result 2007/02/15 15:39:01+01:00 guilhem@gbichot3.local +2 -2 result update mysql-test/t/innodb-replace.test 2007/02/15 15:39:01+01:00 guilhem@gbichot3.local +2 -2 now that multi-row delayed inserts are converted to normal inserts if the statement-based binlog is enabled, no error is issued even if this engine does not support INSERT DELAYED, as the insert does not go through the INSERT DELAYED code. To preserve the goal of this test, we change the statements to single- row inserts. ------------------------------------------------------------ revno: 0.1.428 committer: marko timestamp: Tue 2007-03-27 05:37:36 +0000 message: Port r1372 from branches/5.0: Merge a change from MySQL AB, and remove the innodb_gis test case. ChangeSet 2007/02/19 13:57:06+03:00 kaa@polly.local Bug#18743: Several test cases fails if "classic" configuration in 5.0 The problem happened because those tests were using "cp932" and "ucs2" without checking whether these character sets are available. This fix moves test parts to make character set specific parts be tested only if they are: - some parts were moved to "ctype_ucs.test" and "ctype_cp932.test" - some parts were moved to the newly added tests "innodb-ucs2.test", "mysqlbinglog-cp932.test" and "sp-ucs2.test" mysql-test/t/innodb.test 2007/02/19 13:57:02+03:00 kaa@polly.local +0 -222 Moved ucs2-specific test cases to innodb-ucs2.test ------------------------------------------------------------ revno: 0.1.427 committer: marko timestamp: Mon 2007-03-26 08:16:35 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2409.1.83 2007-03-06 10:36:15-07:00 tsmith@hindu.god Bug #26598: Create variable to allow turning off of statistic gathering on metadata commands Add innodb_stats_on_metadata option, which enables gathering index statistics when processing metadata commands such as SHOW TABLE STATUS. Default behavior of the server does not change (this option is enabled by default). ------------------------------------------------------------ revno: 0.1.426 committer: vasil timestamp: Sun 2007-03-25 18:32:51 +0000 message: Fix Bug#27381 by calling os_file_handle_error_no_exit() instead of os_file_handle_error(). Approved by: Heikki ------------------------------------------------------------ revno: 0.1.425 committer: marko timestamp: Wed 2007-03-21 10:02:00 +0000 message: Minor cleanup. innobase_query_caching_of_table_permitted(): Make static. ha_innobase::register_query_cache_table(): Move the function definition from ha_innodb.h to ha_innodb.cc. Add comments. ------------------------------------------------------------ revno: 0.1.424 committer: marko timestamp: Mon 2007-03-19 09:28:49 +0000 message: class ha_innobase: Replace statistic_increment() with ha_statistic_increment(). ha_innobase::change_active_index(): Do not call current_thd unless UNIV_DEBUG is defined. ------------------------------------------------------------ revno: 0.1.423 committer: marko timestamp: Thu 2007-03-15 20:47:58 +0000 message: Makefile.am: EXTRA_DIST: Add the grammar source files to the source distribution of MySQL. ------------------------------------------------------------ revno: 0.1.422 committer: vasil timestamp: Thu 2007-03-15 15:00:11 +0000 message: Fix typo in comment in os/os0file.c Approved by: heikki ------------------------------------------------------------ revno: 0.1.421 committer: marko timestamp: Wed 2007-03-14 13:45:49 +0000 message: Lock the data dictionary during rollback. This removes the rare debug assertion failure ut_ad(mutex_own(&(dict_sys->mutex))) in dict_table_get_on_id() after the rollback following crash recovery. ------------------------------------------------------------ revno: 0.1.420 committer: marko timestamp: Thu 2007-03-08 10:10:28 +0000 message: Rename the Boolean field trx->type to trx->is_purge and remove the constants TRX_USER and TRX_PURGE. ------------------------------------------------------------ revno: 0.1.419 committer: marko timestamp: Thu 2007-03-08 10:08:35 +0000 message: trx_sig_struct: Remove state. It is always assigned to TRX_SIG_WAITING and never tested. ------------------------------------------------------------ revno: 0.1.418 committer: marko timestamp: Thu 2007-03-08 07:54:54 +0000 message: Minor cleanup in ha_innodb.cc. Remove the unused constants HA_INNOBASE_ROWS_IN_TABLE and HA_INNOBASE_RANGE_COUNT. Declare innobase_active_counter static. ------------------------------------------------------------ revno: 0.1.417 committer: marko timestamp: Mon 2007-03-05 15:43:58 +0000 message: innodb.test, innodb.result: Add test case for Bug #26835. The bug could be reproduced as follows: Define a table so that the first column of the clustered index is a VARCHAR or a UTF-8 CHAR in a collation where sequences of bytes of differing length are considered equivalent. Insert and delete a record. Before the delete-marked record is purged, insert another record whose first column is of different length but equivalent to the first record. Under certain conditions, the insertion can be incorrectly performed as update-in-place. Likewise, an operation that could be done as update-in-place can unnecessarily be performed as delete and insert, but that would not cause corruption but merely degraded performance. ------------------------------------------------------------ revno: 0.1.416 committer: marko timestamp: Mon 2007-03-05 14:26:34 +0000 message: rec_offs_nth_size(): Treat n==0 as a special case. (Bug #26835) ------------------------------------------------------------ revno: 0.1.415 committer: sunny timestamp: Mon 2007-03-05 00:37:57 +0000 message: Fix for Bug# 21409. At low transaction isolation levels we let each consistent read set its own snapshot ------------------------------------------------------------ revno: 0.1.414 committer: marko timestamp: Fri 2007-03-02 14:55:52 +0000 message: lock_deadlock_recursive(): When aborting the search, display a note regardless of start->undo_no. Otherwise, aborted searches may show up as genuine deadlocks. This mistake was made in r1330. ------------------------------------------------------------ revno: 0.1.413 committer: marko timestamp: Fri 2007-03-02 14:35:55 +0000 message: lock_deadlock_recursive(): When the search depth or length is exceeded, rewind lock_latest_err_file and display the two transactions at the point of aborting the search. (Bug #25494) ------------------------------------------------------------ revno: 0.1.412 committer: marko timestamp: Fri 2007-03-02 13:23:21 +0000 message: Merge changes from MySQL AB to mysql-test directives. The results are not affected. ------------------------------------------------------------ revno: 0.1.411 committer: marko timestamp: Thu 2007-03-01 15:24:14 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2456.1.3, 2007-02-27 20:06:37+02:00, monty@mysql.com +2 -0 Fix (last) compiler warnings storage/innobase/pars/lexyy.c@1.23, 2007-02-27 20:06:36+02:00, monty@mysql.com +1 -1 Fix compiler warnings (fix is also in pars0lex.l) ------------------------------------------------------------ revno: 0.1.410 committer: marko timestamp: Thu 2007-03-01 15:21:12 +0000 message: Merge changes from MySQL AB: ChangeSet@1.2452, 2007-02-23 13:13:55+02:00, monty@mysql.com +177 -0 Fixed compiler warnings ... Fixed compiler warnings detected on windows64 ------------------------------------------------------------ revno: 0.1.409 committer: marko timestamp: Thu 2007-03-01 13:28:36 +0000 message: ha_innodb.cc: Remove the unused innobase_repl_ variables. ------------------------------------------------------------ revno: 0.1.408 committer: marko timestamp: Thu 2007-03-01 09:59:37 +0000 message: Add a test case for r1316 (Bug #25927). ------------------------------------------------------------ revno: 0.1.407 committer: marko timestamp: Thu 2007-03-01 08:21:16 +0000 message: Prevent ALTER TABLE ... MODIFY ... NOT NULL on columns for which there is a foreign key constraint ON ... SET NULL. (Bug #25927) dict_foreign_find_index(): Add paramettter check_null. dict_foreign_add_to_cache(): Do not allow ON DELETE SET NULL or ON UPDATE SET NULL if any of the referencing columns are declared NOT NULL. ------------------------------------------------------------ revno: 0.1.406 committer: marko timestamp: Thu 2007-02-15 14:10:41 +0000 message: ha_innodb.cc: Replace thd->tablespace_op with thd_tablespace_op(thd). Plugins must treat class THD as an opaque type. ------------------------------------------------------------ revno: 0.1.405 committer: marko timestamp: Thu 2007-02-15 14:09:49 +0000 message: ha_innodb.cc: Replace thd->in_lock_tables with thd_in_lock_tables(thd). Plugins must treat class THD as an opaque type. ------------------------------------------------------------ revno: 0.1.404 committer: marko timestamp: Wed 2007-02-14 20:03:58 +0000 message: ha_innodb.cc: Remove all references to thd->ha_data[hton->slot]. thd_to_trx(thd, hton): Accessor for getting the InnoDB trx object of a MySQL thread object and an InnoDB handlerton. ------------------------------------------------------------ revno: 0.1.403 committer: sunny timestamp: Mon 2007-02-12 23:15:38 +0000 message: Fixed inline asm code, it didn't work with GCC > ver 3.x. ------------------------------------------------------------ revno: 0.1.402 committer: marko timestamp: Mon 2007-02-12 13:08:02 +0000 message: Remove the declarations of some global functions in ha_innodb.h and declare them static in ha_innodb.cc. These functions are invoked via function pointers in handlerton. ------------------------------------------------------------ revno: 0.1.401 committer: marko timestamp: Wed 2007-02-07 10:10:13 +0000 message: Merge a change from MySQL AB: ChangeSet 2006/10/26 15:41:47-04:00 iggy@amd64. Post Merge Cleanup storage/innobase/include/univ.i 2006/10/26 15:38:50-04:00 iggy@amd64. +9 -0 Post Merge Cleanup ------------------------------------------------------------ revno: 0.1.400 committer: marko timestamp: Wed 2007-02-07 09:57:17 +0000 message: Merge changes from MySQL AB: ChangeSet 2007/01/24 14:49:36+04:00 holyfoot@mysql.com bug #22682 Test fails --without-geometry geometry dependent parts moved to proper .test files mysql-test/r/innodb.result 2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -2 result fixed mysql-test/r/innodb_gis.result 2007/01/24 14:49:34+04:00 holyfoot@mysql.com +2 -0 result fixed mysql-test/t/innodb.test 2007/01/24 14:49:34+04:00 holyfoot@mysql.com +0 -6 HAVE_GEOMETRY dependent part moved to innodb_gis.test mysql-test/t/innodb_gis.test 2007/01/24 14:49:35+04:00 holyfoot@mysql.com +6 -0 HAVE_GEOMETRY dependent part moved here from innodb.test ------------------------------------------------------------ revno: 0.1.399 committer: marko timestamp: Wed 2007-02-07 09:48:42 +0000 message: Merge changes from MySQL AB: ChangeSet 2007/01/22 18:42:52+02:00 monty@mysql.com Give warnings for unused objects Changed error message to be compatible with old error file Added new error message for new DUP_ENTRY syntax mysql-test/t/innodb.test 2007/01/22 18:42:49+02:00 monty@mysql.com +14 -14 Changed to use new error message ------------------------------------------------------------ revno: 0.1.398 committer: marko timestamp: Fri 2007-02-02 11:14:02 +0000 message: Merge changes from MySQL AB: Rename some FIELD_TYPE_ constants to MYSQL_TYPE_. Change the scope of a type cast of two dividends. ------------------------------------------------------------ revno: 0.1.397 committer: marko timestamp: Fri 2007-02-02 10:52:40 +0000 message: Rename hash_create to hash0_create by a #define. This fixes a symbol collision when building PHP with IMAP and MySQL (Bug #13859). The bug was originally fixed by MySQL in a more obtrusive way, by replacing all occurrences of hash_create with hash0_create. This change was applied to the MySQL tree as follows: ChangeSet@1.1616.2924.6, 2007-01-11 12:31:52+01:00, kent@mysql.com +9 -0 Many files: Reverted change for bug#13859, applied smaller patch from Marko ------------------------------------------------------------ revno: 0.1.396 committer: sunny timestamp: Wed 2007-01-24 23:05:06 +0000 message: Fix for Bug# 23666. On Windows ut_usectime returns secs and usecs relative to the UNIX epoch (which is Jan, 1 1970). ------------------------------------------------------------ revno: 0.1.395 committer: osku timestamp: Mon 2007-01-22 09:03:59 +0000 message: Rename mutex_enter_nowait to mutex_enter_nowait_func and add macro mutex_enter_nowait that supplies the default __FILE__ and __LINE__ arguments. Adjust callers. ------------------------------------------------------------ revno: 0.1.394 committer: marko timestamp: Fri 2007-01-19 12:22:24 +0000 message: Add ut_ad() debug assertions. UT_LIST_ADD_FIRST(), UT_LIST_ADD_LAST(), UT_LIST_INSERT_AFTER(): Assert against some trivial cases of cyclic lists. mutex_enter_func(): Assert that the current thread is not holding the mutex. ------------------------------------------------------------ revno: 0.1.393 committer: marko timestamp: Thu 2007-01-18 21:27:31 +0000 message: Merge r1239 from branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG. ------------------------------------------------------------ revno: 0.1.392 committer: marko timestamp: Thu 2007-01-18 20:33:47 +0000 message: Remove the unused function mem_strdupq(). ------------------------------------------------------------ revno: 0.1.391 committer: osku timestamp: Fri 2007-01-12 12:18:53 +0000 message: Delete innodb_mysql.[test|result], as keeping them in our codebase achieves nothing but more merge work for us. ------------------------------------------------------------ revno: 0.1.390 committer: osku timestamp: Thu 2007-01-11 14:24:53 +0000 message: Change this in ha_innobase: void* innobase_prebuilt; to this: row_prebuilt_t* prebuilt; by introducing the typedef in ha_innodb.h, and remove all the now needless local variables and casts in ha_innodb.cc. ------------------------------------------------------------ revno: 0.1.389 committer: osku timestamp: Thu 2007-01-11 11:45:58 +0000 message: Apply patch from MySQL: ChangeSet@1.2353, 2006-12-19 16:57:51-07:00, tsmith@siva.hindu.god +13 -0 Added innodb_rollback_on_timeout option to restore the 4.1 InnoDB timeout behavior (Bug #24200) ------------------------------------------------------------ revno: 0.1.388 committer: marko timestamp: Thu 2007-01-11 09:36:27 +0000 message: Merge a change from MySQL AB: ChangeSet@1.2372, 2006-12-31 02:29:11+01:00, kent@mysql.com +79 -0 Many files: Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header Adjusted year(s) in copyright header Added GPL copyright text ------------------------------------------------------------ revno: 0.1.387 committer: marko timestamp: Tue 2007-01-09 07:40:40 +0000 message: dict_load_foreign(): Use a local variable instead of the 10-bit field foreign->n_fields in order to preserve ON UPDATE CASCADE and ON DELETE CASCADE flags. For some reason, gcc does not warn about shifting a 10-bit field to right by 24 bits. (Bug #24741) This bug was introduced while reducing the memory footprint of the InnoDB data dictionary (Bug #20877). innodb.test, innodb.result: Add a test case. ------------------------------------------------------------ revno: 0.1.386 committer: marko timestamp: Tue 2007-01-02 21:37:41 +0000 message: buf_flush_batch(): Remove the test page_count != ULINT_UNDEFINED. The variable is initialized to zero, and after that it is only added to. Maybe the one who introduced the variable srv_buf_pool_flushed overlooked that there is a separate return statement for returning ULINT_UNDEFINED? ------------------------------------------------------------ revno: 0.1.385 committer: marko timestamp: Tue 2007-01-02 14:07:54 +0000 message: ut_2_power_up(): Add __attribute__((const)), because otherwise this function is repeatedly called in buf_flush_free_margin() due to the definitions of BUF_READ_AHEAD_AREA and other macros starting with BUF_READ_AHEAD_. ------------------------------------------------------------ revno: 0.1.384 committer: sunny timestamp: Fri 2006-12-22 20:18:44 +0000 message: Modify que_fork_start_command() to do only one pass over the thread list instead of three. ------------------------------------------------------------ revno: 0.1.383 committer: sunny timestamp: Fri 2006-12-15 04:23:43 +0000 message: Fix a potential bug in ha_innodb.cc:innobase_query_is_update() where the function can be called with "current_thd == NULL". Minor non-functional fix in log0recv.c ------------------------------------------------------------ revno: 0.1.382 committer: osku timestamp: Tue 2006-12-12 09:37:18 +0000 message: Unify dict_table_get_and_increment_handle_count() with dict_table_get() by adding a second parameter, adjust callers. ------------------------------------------------------------ revno: 0.1.381 committer: osku timestamp: Thu 2006-12-07 12:45:26 +0000 message: ha_innodb.cc: Remove unused define MAX_ULONG_BIT. ------------------------------------------------------------ revno: 0.1.380 committer: heikki timestamp: Fri 2006-12-01 15:38:56 +0000 message: Fix bug #24712: SHOW TABLE STATUS for file-per-table showing incorrect time fields ------------------------------------------------------------ revno: 0.1.379 committer: marko timestamp: Thu 2006-11-30 10:24:10 +0000 message: Replace the Latin abbreviation "cf." in comments. ------------------------------------------------------------ revno: 0.1.378 committer: marko timestamp: Wed 2006-11-29 14:51:54 +0000 message: Remove the unused constants SYNC_INFINITE_TIME and SYNC_TIME_EXCEEDED. ------------------------------------------------------------ revno: 0.1.377 committer: marko timestamp: Wed 2006-11-29 14:03:47 +0000 message: univ.i: Document the debug flags (UNIV_DEBUG et al). ------------------------------------------------------------ revno: 0.1.376 committer: heikki timestamp: Tue 2006-11-28 16:14:12 +0000 message: Merge r1079 from branches/5.0: recv_recovery_from_checkpoint_finish(): Add 1 sec delay before switching on the sync order checks in crash recovery, so that file I/O threads have time to suspend themselves. ------------------------------------------------------------ revno: 0.1.375 committer: heikki timestamp: Tue 2006-11-28 14:37:05 +0000 message: Merge r1067:1077 from branches/5.0: innobase_start_or_create_for_mysql(): Remove unnecessary delay now that we moved the setting sync_order_checks_on=TRUE to log0recv.c, to the start of the rollback phase in crash recovery. Fix assertion failure sync0sync.c line 1239 (the latter ut_error in sync_thread_reset_level()) in crash recovery when UNIV_SYNC_DEBUG is enabled. ------------------------------------------------------------ revno: 0.1.374 committer: heikki timestamp: Mon 2006-11-27 15:14:35 +0000 message: Remove another accidentally committed change to srv0start.c. The change was accidentally committed with the merge in r1068. This revision corresponds to r1051 with a properly merged r1067 of branches/5.0. ------------------------------------------------------------ revno: 0.1.373 committer: heikki timestamp: Mon 2006-11-27 15:09:50 +0000 message: Remove an accidentally committed change to srv0start.c. The change was accidentally committed with the merge in r1068. ------------------------------------------------------------ revno: 0.1.372 committer: heikki timestamp: Mon 2006-11-27 15:06:43 +0000 message: Merge r1067 from branches/5.0: trx_rollback_for_mysql(), trx_commit_for_mysql(): Protect the creation of trx_dummy_sess with kernel_mutex. This error was introduced in r1046 and r1050. ------------------------------------------------------------ revno: 0.1.371 committer: heikki timestamp: Thu 2006-11-23 13:25:12 +0000 message: Merge r1048:1050 from branches/5.0: trx_rollback_for_mysql(): Fix the comment introduced in r1046. trx_commit_for_mysql(): Use the dummy trx->sess also for committing a prepared transaction in XA recovery, just in case our code would need the session object also in that case (does not seem to need it right now). ------------------------------------------------------------ revno: 0.1.370 committer: heikki timestamp: Thu 2006-11-23 13:08:16 +0000 message: Merge r1048 from branches/5.0: trx_rollback_for_mysql(): Do not set trx->sess back to NULL. This bug was introduced in r1046. ------------------------------------------------------------ revno: 0.1.369 committer: heikki timestamp: Thu 2006-11-23 12:55:55 +0000 message: Merge r1046 from branches/5.0: branches/5.0: trx_rollback_for_mysql(): Ensure that trx->sess is non-NULL when calling trx_general_rollback_for_mysql(). This removes a segmentation fault when rolling back a prepared transaction in XA recovery. (Bug #21468) ------------------------------------------------------------ revno: 0.1.368 committer: marko timestamp: Thu 2006-11-23 12:25:51 +0000 message: buf_page_init_for_read(): Correct the indentation. ------------------------------------------------------------ revno: 0.1.367 committer: marko timestamp: Tue 2006-11-21 13:56:18 +0000 message: Port r1034 from branches/zip: Remove some instrumentation and reduce the output of SHOW MUTEX STATUS in non-debug builds. (Bug #24386) ------------------------------------------------------------ revno: 0.1.366 committer: marko timestamp: Tue 2006-11-21 13:53:48 +0000 message: Port r983 from branches/zip: Enclose some more debug code in #ifdef UNIV_SYNC_DEBUG to allow the code to be built with UNIV_DEBUG but without UNIV_SYNC_DEBUG. ------------------------------------------------------------ revno: 0.1.365 committer: marko timestamp: Tue 2006-11-21 13:53:05 +0000 message: Port r972 from branches/zip: Enclose some debug code in #ifdef UNIV_SYNC_DEBUG. The code was previously unused in non-debug builds. ------------------------------------------------------------ revno: 0.1.364 committer: marko timestamp: Thu 2006-11-16 15:05:23 +0000 message: Merge a change from MySQL AB. ChangeSet 2006/11/10 17:22:43+02:00 aelkin@dsl-hkibras-fe30f900-107.dhcp.inet.fi Bug #24190 many exportable definitions of field_in_record_is_null mysql had several(2) exportable definitions of field_in_record_is_null function. Fixed with adding static. storage/innobase/handler/ha_innodb.cc 2006/11/10 17:22:36+02:00 aelkin@dsl-hkibras-fe30f900-107.dhcp.inet.fi +1 -1 made static ------------------------------------------------------------ revno: 0.1.363 committer: osku timestamp: Fri 2006-11-10 10:39:00 +0000 message: Remove duplicate printing of row lock counts in SHOW INNODB STATUS, and in the remaining print, add a comma so it doesn't get combined with the heap size. Both problems were introduced in r383. ------------------------------------------------------------ revno: 0.1.362 committer: marko timestamp: Fri 2006-11-10 10:09:41 +0000 message: Minor cleanup. ha_innobase::rnd_pos(): Use correct format in DBUG_PRINT statements. buf_page_release(): Remove the local variable buf_fix_count. ------------------------------------------------------------ revno: 0.1.361 committer: marko timestamp: Thu 2006-11-09 16:50:10 +0000 message: Merge changes from MySQL AB to innodb_mysql.result. ------------------------------------------------------------ revno: 0.1.360 committer: marko timestamp: Thu 2006-11-09 12:52:45 +0000 message: Introduce #define UNIV_LIST_DEBUG for enabling the debug code in UT_LIST_REMOVE_CLEAR(). ------------------------------------------------------------ revno: 0.1.359 committer: marko timestamp: Wed 2006-11-08 14:31:47 +0000 message: UT_LIST_REMOVE(): Invalidate the node pointers #ifdef UNIV_DEBUG. buf_LRU_invalidate_tablespace(): Invoke UT_LIST_GET_PREV(LRU, block) before UT_LIST_REMOVE(LRU, buf_pool->LRU, block). ------------------------------------------------------------ revno: 0.1.358 committer: marko timestamp: Wed 2006-11-08 13:33:24 +0000 message: fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an array while holding the mutex. This removes the crash-triggering race condition that was introduced when fixing Bug #15653. (Bug #24089) ------------------------------------------------------------ revno: 0.1.357 committer: marko timestamp: Wed 2006-11-08 12:49:15 +0000 message: Reduce buffer pool mutex contention under >= 4 big concurrent CPU-bound SELECT queries. (Bug #15815) Fix: replace the mutex by one mutex protecting the 'flush list' (and the free list) and several mutexes protecting portions of the buffer pool, where we keep several indivudual LRU lists of pages. This patch is from Sunny Bains and Heikki Tuuri. ------------------------------------------------------------ revno: 0.1.356 committer: osku timestamp: Fri 2006-11-03 11:44:29 +0000 message: Merge changes from MySQL to get the code compiling again: Change return type of ha_innobase::info to int. plug.in: Add MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS. ------------------------------------------------------------ revno: 0.1.355 committer: marko timestamp: Mon 2006-10-30 13:15:46 +0000 message: Do not break the latching order in TRUNCATE TABLE. dict_truncate_index_tree(): Replace parameter rec_t* rec with btr_pcur_t* pcur. Reposition pcur before calling btr_create(). sync_thread_add_level(): Remove the relaxation of the assertion added in r968. ------------------------------------------------------------ revno: 0.1.354 committer: marko timestamp: Mon 2006-10-30 08:46:53 +0000 message: sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching order to be violated if the thread holds dict_operation_lock, whose level is SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE #ifdef UNIV_SYNC_DEBUG. ------------------------------------------------------------ revno: 0.1.353 committer: marko timestamp: Thu 2006-10-26 11:37:56 +0000 message: innodb.result, innodb_mysql.result: Merge changes from MySQL AB: ChangeSet 2006/10/09 19:51:41+04:00 gkodinov@macbook.local Bug #22781: SQL_BIG_RESULT fails to influence sort plan Currently SQL_BIG_RESULT is checked only at compile time. However, additional optimizations may take place after this check that change the sort method from 'filesort' to sorting via index. As a result the actual plan executed is not the one specified by the SQL_BIG_RESULT hint. Similarly, there is no such test when executing EXPLAIN, resulting in incorrect output. The patch corrects the problem by testing for SQL_BIG_RESULT both during the explain and execution phases. ------------------------------------------------------------ revno: 0.1.352 committer: osku timestamp: Thu 2006-10-19 10:43:14 +0000 message: btr_lift_page_up(): Set new page levels in all ancestor pages, not just in the father page. btr0btr.h: Add a BTR_MAX_LEVELS define. ------------------------------------------------------------ revno: 0.1.351 committer: marko timestamp: Wed 2006-10-18 11:24:58 +0000 message: dict_print_info_on_foreign_key_in_create_format(): Use ut_print_name() instead of passing the wrong length to ut_print_namel(). (Bug #23368) ut_print_name(), ut_print_namel(): Document the special treatment of '/'. ut_print_namel(): Replace strchr() with memchr(), as the string might not be NUL-terminated. ------------------------------------------------------------ revno: 0.1.350 committer: marko timestamp: Mon 2006-10-16 12:19:36 +0000 message: ha_innobase::store_lock(): When downgrading table locks, do not check thd->in_lock_tables but test if thd->lex->sql_command == SQLCOM_LOCK_TABLES instead. Otherwise, stored functions will use table locks. (Bug #18077) This patch is from Heikki. ------------------------------------------------------------ revno: 0.1.349 committer: marko timestamp: Mon 2006-10-16 07:29:59 +0000 message: btr_page_get_father_for_rec(): Remove bogus comment about removed dict_tree_t. ------------------------------------------------------------ revno: 0.1.348 committer: marko timestamp: Thu 2006-10-12 10:26:25 +0000 message: Send all SHOW ENGINE INNODB STATUS information to the client also when UNIV_SYNC_DEBUG is defined. rw_lock_list_print_info(): Add parameter "file". mutex_list_print_info(): Add parameter "file". Make the function static. ------------------------------------------------------------ revno: 0.1.347 committer: marko timestamp: Tue 2006-10-10 09:58:47 +0000 message: mem0dbg.c: Enclose some more function definitions in #ifdef UNIV_MEM_DEBUG. The declarations were already enclosed in #ifdef UNIV_MEM_DEBUG. ------------------------------------------------------------ revno: 0.1.346 committer: marko timestamp: Tue 2006-10-10 08:27:08 +0000 message: Enclose some mem debug functions in #ifdef UNIV_DEBUG or #ifdef UNIV_MEM_DEBUG. ------------------------------------------------------------ revno: 0.1.345 committer: marko timestamp: Mon 2006-10-09 11:47:02 +0000 message: dict_index_get_if_in_cache(): Enclose in #ifdef UNIV_DEBUG. Replace the search loop with a call to dict_index_find_on_id_low(). ------------------------------------------------------------ revno: 0.1.344 committer: marko timestamp: Mon 2006-10-09 09:45:47 +0000 message: mem0pool.c: Remove obsolete comments about the dictionary cache being managed with an LRU algorithm. ------------------------------------------------------------ revno: 0.1.343 committer: marko timestamp: Mon 2006-10-09 09:08:50 +0000 message: Merge changes from MySQL AB, and remove two compilation warnings. ha_innodb.cc: innodb_mutex_show_status(): Add (ulong) casts to ulonglong expressions being passed to fprintf %lu. The warnings were apparently introduced by MySQL AB developers. mysql_declare_plugin(innobase): Add PLUGIN_LICENSE_GPL. have_innodb.inc: Merge changes from MySQL AB. ------------------------------------------------------------ revno: 0.1.342 committer: marko timestamp: Fri 2006-10-06 19:51:33 +0000 message: univ.i: Indent some of the directives, and remove conditions about Windows in the "#else" branch of "#if building on Windows". ------------------------------------------------------------ revno: 0.1.341 committer: marko timestamp: Thu 2006-10-05 11:00:06 +0000 message: Merge changes from MySQL AB. dict_col_copy_type_noninline(): Remove the return statement. Some compilers do not allow return expressions of void type. innobase_start_or_create_for_mysql(): Do not cap srv_max_threads to 1000 on Windows. Makefile.am (EXTRA_DIST): Add plug.in ------------------------------------------------------------ revno: 0.1.340 committer: marko timestamp: Thu 2006-10-05 09:07:49 +0000 message: Merge changes to mysql-test from MySQL AB. innodb_unsafe_binlog, innodb_handler, innodb-big, innodb_cache-master, innodb-deadlock, innodb_cache: Remove. These have been renamed in the MySQL tree. innodb_mysql: Update. ------------------------------------------------------------ revno: 0.1.339 committer: marko timestamp: Tue 2006-10-03 12:46:23 +0000 message: storage/innobase/handler: Merge changes from MySQL AB: ChangeSet 2006/09/30 18:44:42-07:00 brian@zim.(none) Merge zim.(none):/home/brian/mysql/merge-5.1 into zim.(none):/home/brian/mysql/arch-5.1 ChangeSet 2006/09/30 12:49:46-07:00 brian@zim.(none) This patch adds handlerton passing to functions. NDB and Innodb still require a global hanlderton in the main code due to the nature of the sql_cache call back function (should be solveable... another patch). Partitioning now has a flag to allow disabling of engines from being compatible with partitioning. Cleaned up heap naming convention on panic call. ChangeSet 2006/09/29 17:19:02-07:00 brian@zim.(none) This removes the passing of global hton to engine instance. ChangeSet 2006/09/28 13:22:56+02:00 gbichot@dl145h.mysql.com Merge gbichot@bk-internal:/home/bk/mysql-5.1-arch into dl145h.mysql.com:/users/gbichot/mysql-5.1-arch ChangeSet 2006/09/28 13:19:43+02:00 gbichot@dl145h.mysql.com In the handlerton, cursor creation function don't have an argument and so the engine calls current_thd to derive transaction information; instead we now pass THD to those functions, it looks more logical (it makes the implicit current_thd parameter more visible). Approved by Brian and Monty. ChangeSet 2006/09/26 22:51:53-07:00 brian@zim.(none) Merge zim.(none):/home/brian/mysql/merge-5.1 into zim.(none):/home/brian/mysql/arch-5.1 ------------------------------------------------------------ revno: 0.1.338 committer: marko timestamp: Tue 2006-10-03 12:20:10 +0000 message: setup.sh: Once more. Remember that the glob expansion works relative to the current directory. ------------------------------------------------------------ revno: 0.1.337 committer: marko timestamp: Tue 2006-10-03 12:17:28 +0000 message: setup.sh: Correctly link the test files. This was broken in r882. ------------------------------------------------------------ revno: 0.1.336 committer: marko timestamp: Mon 2006-10-02 09:02:03 +0000 message: Make storage/innobase the working directory of Subversion. ------------------------------------------------------------ revno: 0.1.335 committer: marko timestamp: Tue 2006-09-26 11:37:58 +0000 message: row_purge_parse_undo_rec(): Correct a faulty condition. Luckily, this bug would only surface if the InnoDB SQL interpreter were used for updating fixed-length columns. Currently (as the UPD_NODE_NO_SIZE_CHANGE flag is never set), cmpl_info can only be 0 or UPD_NODE_NO_ORD_CHANGE. Luckily, UPD_NODE_NO_ORD_CHANGE is 1, and the condition was simplified to !cmpl_info. ------------------------------------------------------------ revno: 0.1.334 committer: marko timestamp: Tue 2006-09-26 07:08:48 +0000 message: mtr_print(), mtr_memo_contains(): Disable unless #ifdef UNIV_DEBUG. ------------------------------------------------------------ revno: 0.1.333 committer: marko timestamp: Fri 2006-09-22 06:48:56 +0000 message: row_build_index_entry(): Declare variables in the beginning of a block, to comply with ISO/IEC 9899:1989. This error was made in r834. (Bug #22575) ------------------------------------------------------------ revno: 0.1.332 committer: osku timestamp: Thu 2006-09-21 09:44:03 +0000 message: export.sh: Adapt to ha_innodb now living in storage/innobase in the MySQL tree. ------------------------------------------------------------ revno: 0.1.331 committer: osku timestamp: Wed 2006-09-20 11:05:12 +0000 message: row_upd_sec_step(): Fix false comment. ------------------------------------------------------------ revno: 0.1.330 committer: marko timestamp: Wed 2006-09-20 10:52:02 +0000 message: Merge changes from MySQL AB to the innodb_mysql test. ------------------------------------------------------------ revno: 0.1.329 committer: marko timestamp: Wed 2006-09-20 09:38:09 +0000 message: Merge code from MySQL AB: Make innobase_hton a pointer. ------------------------------------------------------------ revno: 0.1.328 committer: marko timestamp: Wed 2006-09-20 08:52:00 +0000 message: ha_innobase::start_stmt(): Remove the check for prebuilt->stored_select_lock_type being LOCK_X or LOCK_S. This would cause false alarms with INSERT ... SELECT, which would use LOCK_NONE in innodb_locks_unsafe_for_binlog mode. (Bug #10746) ------------------------------------------------------------ revno: 0.1.327 committer: osku timestamp: Wed 2006-09-20 06:41:30 +0000 message: Split long lines with [] operators better. ------------------------------------------------------------ revno: 0.1.326 committer: osku timestamp: Tue 2006-09-19 07:22:21 +0000 message: Revamp the line splits done in r763 and r764 that can now be done better, thanks to r826. ------------------------------------------------------------ revno: 0.1.325 committer: marko timestamp: Tue 2006-09-19 05:55:10 +0000 message: page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE) calls. dict_index_build_node_ptr(): Correct a typo in a comment. ------------------------------------------------------------ revno: 0.1.324 committer: osku timestamp: Tue 2006-09-19 04:36:56 +0000 message: Remove dict_col_t::name, replace it with a packed array of column names in dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit machines. ------------------------------------------------------------ revno: 0.1.323 committer: marko timestamp: Mon 2006-09-18 12:02:43 +0000 message: Change the recently introduced ulint bit-fields to unsigned. ------------------------------------------------------------ revno: 0.1.322 committer: marko timestamp: Mon 2006-09-18 11:51:38 +0000 message: dict_col_t: Copy the fields of "dtype_t type" directly to this structure, so that all integer fields can be packed into 64 bits. (Bug #20877) dtype_t: Change the type of all bit-fields to unsigned. dict_table_get_nth_col(), dict_table_get_sys_col_noninline(), dict_table_get_sys_col(), dict_field_get_col(): Return const dict_col_t*, so that changes to dict_col_t can be detected more easily. Add const to many dict_col_t* declarations. dict_index_get_nth_type(): Replace with dict_index_get_nth_col(). dict_col_get_type(): Replace with dict_col_copy_type(). dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(), dict_col_get_sql_null_size(): New functions. dtype_get_at_most_n_mbchars(): Replace the parameter dtype with the parameters prtype, mbminlen, mbmaxlen. dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(), cmp_whole_field(): Replace the dtype_t* parameter with the ulint parameters mtype, prtype. dtype_copy(): Add a const qualifier to type2 (the one being copied from). dtype_set_mblen(): Replaced with dtype_get_mblen(). dtype_get_fixed_size_low(), dtype_get_min_size_low(), dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(), dtype_get_min_size(), and dtype_get_max_size(). These are used by the dict_col_get_{fixed,min,max}_size() functions. cmp_types_are_equal(): Replace with cmp_cols_are_equal(). dict_table_get_col_name(): Add a const qualifier parameter to the parameter "table". dtype_binary, dtype_binary_val: Remove. dtype_is_fixed_size(): Remove. ------------------------------------------------------------ revno: 0.1.321 committer: marko timestamp: Mon 2006-09-18 10:31:51 +0000 message: Tweak the bit-field definitions introduced since r813 to address Bug #20877. rw_lock_t: Do not make writer_is_wait_ex a bit-field. There are no fields yet that could be fused to the same machine word, but we play it safe, because the field writer_is_wait_ex may be modified by several threads simultaneously. Such fields should always be allocated an own machine word. dict_table_t: Change the type of all bit-fields to "unsigned". Make "space" a bit-field of 32 bits. Move name_hash and id_hash after all bit-fields, so that the bit-fields can be allocated together. Do not make autoinc_inited a bit-field, as we cannot allocate any field from the same machine word. dict_build_table_def_step(): Pass a local variable to fil_create_new_single_table_tablespace() and initialize table->space from it after the call, now that table->space is a bit-field. ------------------------------------------------------------ revno: 0.1.320 committer: osku timestamp: Mon 2006-09-18 09:46:05 +0000 message: Add dict_table_get_col_name() in preparation for getting rid of dict_col_t::name, and use it instead of col->name everywhere. ------------------------------------------------------------ revno: 0.1.319 committer: marko timestamp: Mon 2006-09-18 08:50:31 +0000 message: Add dict_col_get_clust_pos_noninline(), which was forgotten from r820. ------------------------------------------------------------ revno: 0.1.318 committer: marko timestamp: Mon 2006-09-18 07:14:41 +0000 message: page_align(ptr): New utility function to replace ut_align_down(ptr, UNIV_PAGE_SIZE) calls. ------------------------------------------------------------ revno: 0.1.317 committer: heikki timestamp: Fri 2006-09-15 12:43:40 +0000 message: Erase the magic number in the trx sys header using a redo-logged write; it should be redo-logged because the data structure is file-based; this patch does not fix any bug; the original erase operation was added in r781 to fix Valgrind Bug #20791 ------------------------------------------------------------ revno: 0.1.316 committer: marko timestamp: Fri 2006-09-15 11:04:01 +0000 message: Remove dict_tree_t, which should have been removed in r453. There always was a one-to-one mapping between dict_tree_t and dict_index_t. This saves 6 machine words per B-tree index in the data dictionary cache plus the memory allocation overhead. We save one mem_heap_t object per index (15 machine words). Considering the internal fragmentation of the buddy allocator in mem_area_alloc(), this should save 32 machine words per index (128 bytes on 32-bit systems and 256 bytes on 64-bit systems). (Bug #20877) struct dict_tree_struct, dict_tree_t: Remove. struct dict_index_struct: Add page and lock. dict_tree_create(): Remove. Replace the invocation with assignment to index->page and a call to rw_lock_create(&index->lock). dict_tree_free(): Remove. Replace the invocation wtih a call to rw_lock_free(&index->lock). dict_index_get_tree(): Remove. dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve() and remove the parameter, which was unused. btr_level_list_remove(): Remove the unused parameter "tree". Replace the occurrences of "tree" with "index" in names of variables, functions and data types, e.g. "dict_tree_t tree" becomes "dict_index_t index". Remove local variables "tree" or "index" of functions that needed both "tree" and "index". ------------------------------------------------------------ revno: 0.1.315 committer: osku timestamp: Fri 2006-09-15 07:37:10 +0000 message: Make dict_index_find_cols() always succeed. ------------------------------------------------------------ revno: 0.1.314 committer: osku timestamp: Fri 2006-09-15 07:32:15 +0000 message: The code base was reindented in r763 and automatic .emacs indentation settings introduced. Some problems were found, so from this commit on one additional indentation rule is introduced: (add-to-list 'c-offsets-alist '(arglist-intro . +)) Note that fixing some of the unfortunate line-splits done in r764 will be done in a future change. ------------------------------------------------------------ revno: 0.1.313 committer: sunny timestamp: Fri 2006-09-15 06:09:20 +0000 message: row_search_for_mysql(): Skip setting the next-key lock on an already delete-marked record in a clustered index where the search criteria is unique, within the same transaction (Bug #13544). ------------------------------------------------------------ revno: 0.1.312 committer: marko timestamp: Thu 2006-09-14 20:42:46 +0000 message: Reduce the size of btr_search_t from 13 machine words to 7. This structure is reserved for every index in the data dictionary cache. (Bug #20877) We could shrink the structure further to three 32-bit words or two 64-bit words by turning the remaining fields to bit-fields. Unfortunately, the fields are not protected by any mutex, and thus we would better keep each field aligned to a machine word. btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side". Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename some local variables and function parameters from "ulint side" to "ibool left_side". btr_search_t: Remove the unused fields last_search, n_direction, direction, and modify_clock. Remove the unused constants BTR_SEA_NO_DIRECTION, BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC. btr_search_t: Remove magic_n unless #defined UNIV_DEBUG. Turn an assertion about the magic number into a debug assertion. ------------------------------------------------------------ revno: 0.1.311 committer: marko timestamp: Thu 2006-09-14 20:37:15 +0000 message: Minor cleanup related to Bug #20877. btr_print_recursive(): Replace tree->tree_indexes with tree->index. This should have been done in r453. univ.i: Add UNIV_BTR_PRINT. rw_lock_t: Reduce writer_is_wait_ex to a bit and move it close to other bitfields. Change the types to unsigned, in case ulint or ibool bitfields will not work. ------------------------------------------------------------ revno: 0.1.310 committer: marko timestamp: Thu 2006-09-14 13:10:46 +0000 message: Turn ha_innobase::build_template() from a non-static member function to a static plain function. ------------------------------------------------------------ revno: 0.1.309 committer: marko timestamp: Thu 2006-09-14 12:06:43 +0000 message: dict_table_t: Rename the integer field max_row_size to the Boolean field big_rows. (Bug #20877) BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache(). ------------------------------------------------------------ revno: 0.1.308 committer: marko timestamp: Thu 2006-09-14 11:51:34 +0000 message: Remove dict_col_t::clust_pos. dict_col_get_clust_pos(): Add parameter clust_index. Replace the look-up with a linear search of all columns in the clustered index. row_upd_index_replace_new_col_vals(): Compute clust_index outside the loops. Compute clust_pos outside the inner loop. row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary(): Compute clust_index outside the loops. Declare the auxiliary variables inside the loop scope. ------------------------------------------------------------ revno: 0.1.307 committer: marko timestamp: Thu 2006-09-14 11:49:09 +0000 message: dict_col_t: Reduce ord_part to one bit. dict_index_add_to_cache(): Instead of incrementing ord_part, set it. dict_index_remove_from_cache(): Do not touch ord_part. dtype_t: Reduce mbminlen from 3 to 2 bits. row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface. ------------------------------------------------------------ revno: 0.1.306 committer: marko timestamp: Thu 2006-09-14 11:46:47 +0000 message: Remove dict_col_t::hash, dict_col_t::table, dict_sys->col_hash, and DICT_POOL_PER_COL_HASH. (Bug #20877) The col->table pointer was only needed for maintaining a hash table of all defined columns in all tables. The hash table was only looked up in dict_index_find_cols(). Removing the col->hash and col->table pointers reduces the size of a table column by two machine words (usually 8 or 16 bytes). dict_col_add_to_cache(), dict_col_reposition_in_cache(), dict_col_remove_from_cache(): Remove. These only updated dict_sys->col_hash. dict_index_find_cols(): Use a linear search instead of the hash table. The time complexity is affected, but this function is only invoked by dict_index_add_to_cache(), and we only search the columns of a single table (typically at most a few dozen) as opposed to all columns of all tables. ------------------------------------------------------------ revno: 0.1.305 committer: osku timestamp: Thu 2006-09-14 09:19:41 +0000 message: btr0pcur.h: Change FIXME to TODO. ------------------------------------------------------------ revno: 0.1.304 committer: osku timestamp: Thu 2006-09-14 09:07:54 +0000 message: Remove more remnants of mixed indexes. ------------------------------------------------------------ revno: 0.1.303 committer: marko timestamp: Wed 2006-09-13 18:41:13 +0000 message: dict_index_t: Remove tree_indexes. It should have been removed in r453 when the list in dict_tree_t was replaced with the pointer tree_index. ------------------------------------------------------------ revno: 0.1.302 committer: marko timestamp: Wed 2006-09-13 11:35:34 +0000 message: mysql_declare_plugin(innobase): Initialize the fields reserved1 (apparently the system variables) and reserved2 (apparently the configuration options). ------------------------------------------------------------ revno: 0.1.301 committer: marko timestamp: Tue 2006-09-12 14:06:46 +0000 message: Reduce the size of the data dictionary cache. (Bug #20877) dtype_t: Remove unused field "prec", which was supposed to be used for the precision of decimal columns in stand-alone InnoDB. dtype_get_prec(): Remove. dtype_set(), dict_mem_table_add_col(): Remove parameter "prec". dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len) into bit-fields. dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds. dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields. Replace the default clust_pos value ULINT_UNDEFINED with REC_MAX_N_FIELDS and replace all references to clust_pos with calls to the accessor function dict_col_get_clust_pos(). dict_field_t: Turn prefix_len and fixed_len into bit-fields. dict_tree_t: Remove pad[64]. dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded, cached, flags, stat_initialized, and autoinc_inited into bit-fields. Remove does_not_fit_in_memory from non-debug builds. dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols, n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields. dict_foreign_struct: Turn n_fields and type into bit-fields. rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields. Omit level unless #defined UNIV_SYNC_DEBUG. Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED) from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic. dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED. ------------------------------------------------------------ revno: 0.1.300 committer: marko timestamp: Mon 2006-09-11 08:58:43 +0000 message: Merge code cleanup from MySQL AB: ChangeSet 2006/09/07 08:23:58-07:00 brian@zim.(none) Moves Innodb handler to the Innodb storage directory. storage/innobase/handler/ha_innodb.cc 2006/09/07 08:23:53-07:00 brian@zim.(none) +2 -3 Adjusted include files, also disabled replication code which was not being used. ChangeSet 2006/09/07 12:34:12-07:00 brian@zim.(none) Fix for a compile problem in Windows. storage/innobase/handler/ha_innodb.cc 2006/09/07 12:34:10-07:00 brian@zim.(none) +0 -28 Removed some dead code (Marko approved) ------------------------------------------------------------ revno: 0.1.299 committer: marko timestamp: Mon 2006-09-11 08:51:46 +0000 message: Move ha_innodb.cc and ha_innodb.h from sql to storage/innobase/handler. This was submitted by Marko to MySQL AB and merged to the MySQL tree by Brian Aker in the following two changesets: ChangeSet 2006/09/07 08:23:58-07:00 brian@zim.(none) Moves Innodb handler to the Innodb storage directory. ChangeSet 2006/09/07 16:17:16-07:00 brian@zim.(none) Warning fixes for Windows, and an include fix for Windows for Innodb. storage/innobase/CMakeLists.txt 2006/09/07 16:17:13-07:00 brian@zim.(none) +6 -1 Fixed includes for Windows ------------------------------------------------------------ revno: 0.1.298 committer: marko timestamp: Wed 2006-09-06 09:23:47 +0000 message: On data tuples being updated or inserted (but not searched for), set type->len to the prefix_len of the index column, if it is a prefix index. This should prevent bugs similar to Bug #21638 from occurring. dict_index_copy_types(): Set type->len to prefix_len if prefix_len != 0. row_build_index_entry(): Set type->len to prefix_len if prefix_len != 0, also when the column in the tuple is SQL NULL, because the type information may be used for interpreting other records during btr_page_reorganize(). ------------------------------------------------------------ revno: 0.1.297 committer: marko timestamp: Tue 2006-09-05 19:29:18 +0000 message: Merge changes to the "innodb_mysql" test from MySQL AB ------------------------------------------------------------ revno: 0.1.296 committer: marko timestamp: Tue 2006-09-05 19:25:38 +0000 message: Merge change from MySQL AB: ChangeSet 2006/08/23 15:12:42-07:00 brian@zim.(none) This is a cleanup of warnings that windows is complaining about. sql/ha_innodb.cc 2006/08/23 15:12:39-07:00 brian@zim.(none) +0 -1 Removed unused variables ------------------------------------------------------------ revno: 0.1.295 committer: marko timestamp: Tue 2006-09-05 12:18:27 +0000 message: Merge changes from MySQL AB to the innodb_mysql test files. ------------------------------------------------------------ revno: 0.1.294 committer: marko timestamp: Tue 2006-09-05 11:43:42 +0000 message: ibuf_entry_build(): Write prefix_len to the insert buffer instead of type->len when prefix_len is specified. Otherwise, btr_page_reorganize() during insert buffer merge would fail on ROW_FORMAT=COMPACT tables. (Bug #21638) ------------------------------------------------------------ revno: 0.1.293 committer: marko timestamp: Mon 2006-09-04 19:18:52 +0000 message: setup.sh: Do not bail out if BUILD/compile-innodb* exist already. ------------------------------------------------------------ revno: 0.1.292 committer: marko timestamp: Mon 2006-09-04 10:48:23 +0000 message: Merge code from MySQL AB: ChangeSet 2006/08/25 13:31:15-07:00 brian@zim.(none) Cleanup of unused variables. sql/ha_innodb.h 2006/08/25 13:31:11-07:00 brian@zim.(none) +0 -6 Unused variable ------------------------------------------------------------ revno: 0.1.291 committer: marko timestamp: Mon 2006-09-04 10:45:05 +0000 message: Merge code from MySQL AB: ChangeSet 2006/08/22 16:24:12-07:00 brian@zim.(none) This changest: Plugins now when compiled or not compiled work correctly with status variables. Status variables from plugins now set their own names (removed bit where plugin name was pre-appended this broke Innodb and Cluster) A few Makefile cleanups. sql/ha_innodb.cc 2006/08/22 16:24:08-07:00 brian@zim.(none) +16 -6 Cleanup to make status variables directly in engine ------------------------------------------------------------ revno: 0.1.290 committer: marko timestamp: Mon 2006-09-04 10:40:43 +0000 message: ha_innodb.cc: Adjust the comment related to r784. Apparently it was changed after review on the MySQL side. ------------------------------------------------------------ revno: 0.1.289 committer: marko timestamp: Fri 2006-09-01 08:29:44 +0000 message: Merge a patch from MySQL AB: ChangeSet@1.2288, 2006-08-29 15:35:05+02:00, guilhem@gbichot3.local +2 -0 Fix for BUG#20866 "show table status on innodb raises assertion" and its duplicate BUG#19057 "Test 'rpl_row_func003' fails on SuSE SLES9 x86". It was an assertion failure, only in debug builds, not present in released versions (nothing to document). It happened when doing SHOW TABLE STATUS on an InnoDB table having an auto_increment column, right after creating the table. sql/ha_innodb.cc@1.288, 2006-08-29 15:35:02+02:00, guilhem@gbichot3.local +7 -1 Before a val_() calls on a Field object, if that field was not marked for read, we need to mark it. This is explained here: ChangeSet 1.2119.601.1 2006/06/04 18:52:22 monty@mysql.com quoting the changeset's comment: - If a handler needs to call Field->val() or Field->store() on columns that are not used in the query, one should install a temporary all-columns-used map while doing so. For this, we provide the following functions: my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set); field->val(); dbug_tmp_restore_column_map(table->read_set, old_map); and similar for the write map: my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->write_set); field->val(); dbug_tmp_restore_column_map(table->write_set, old_map); If this is not done, you will sooner or later hit a DBUG_ASSERT in the field store() / val() functions. (For not DBUG binaries, the dbug_tmp_restore_column_map() and dbug_tmp_restore_column_map() are inline dummy functions and should be optimized away be the compiler). Note that I verified that the bug didn't exist in non-debug builds. ------------------------------------------------------------ revno: 0.1.288 committer: marko timestamp: Fri 2006-09-01 08:19:47 +0000 message: Revert the hunk on ha_innobase::innobase_read_and_init_auto_inc() that was accidentally committed in r782. ------------------------------------------------------------ revno: 0.1.287 committer: heikki timestamp: Thu 2006-08-31 19:52:25 +0000 message: Fix bug #21784 of a crash in DROP TABLE with concurrent queries on the table ------------------------------------------------------------ revno: 0.1.286 committer: heikki timestamp: Thu 2006-08-31 19:19:22 +0000 message: Remove Valgrind warning of Bug #20791 : in new database creation, we read the doublewrite buffer magic number from uninitialized memory; the code worked because it was extremely unlikely that the memory would contain the magic number. ------------------------------------------------------------ revno: 0.1.285 committer: osku timestamp: Thu 2006-08-31 11:01:15 +0000 message: Add a warning comment above the place where we set srv_main_thread_op_info to "waiting for server activity" that mentions that this string should not be changed. ------------------------------------------------------------ revno: 0.1.284 committer: marko timestamp: Thu 2006-08-31 10:47:31 +0000 message: Remove unused code. univ.i: Do not #define YYDEBUG, because it is only useful for debugging the grammar of the Bison-generated InnoDB SQL parser. row_build(): Remove type==ROW_COPY_ALSO_EXTERNALS, because it is never passed. ------------------------------------------------------------ revno: 0.1.283 committer: marko timestamp: Thu 2006-08-31 09:36:45 +0000 message: compile-innodb, compile-innodb-debug: Replace max-no-ndb compilation flags with --with-plugin=innobase. ------------------------------------------------------------ revno: 0.1.282 committer: marko timestamp: Thu 2006-08-31 07:26:30 +0000 message: Adapt the InnoDB build scripts to r772. setup.sh: Create symbolic links to the build scripts instead of copying them. ------------------------------------------------------------ revno: 0.1.281 committer: marko timestamp: Wed 2006-08-30 20:29:01 +0000 message: Merge changes from MySQL AB: ChangeSet 2006/08/23 13:59:16-07:00 brian@zim.(none) This patch removes need for a innodb to have its own configure. univ.i: Replace ../ib_config.h with config.h. Makefile.i, Makefile.am: Change directory paths. configure.in: Delete. plug.in: New file, included from the top-level configure.in. setup.sh: Replace configure.in with plug.in. ------------------------------------------------------------ revno: 0.1.280 committer: marko timestamp: Tue 2006-08-29 12:11:56 +0000 message: Remove dict_col_t::aux, which was only used when copying an index definition to the data dictionary cache. ------------------------------------------------------------ revno: 0.1.279 committer: marko timestamp: Tue 2006-08-29 08:27:56 +0000 message: Split lines before binary operators, not after them. ------------------------------------------------------------ revno: 0.1.278 committer: marko timestamp: Tue 2006-08-29 07:33:51 +0000 message: Split lines before an opening parenthesis, not after one. Replace some printf(...) in debug builds with fprintf(stderr, ...). ------------------------------------------------------------ revno: 0.1.277 committer: marko timestamp: Mon 2006-08-28 17:42:45 +0000 message: Reindent the code base (except for ha_innodb.{cc,h} and generated parser and lexer files). From now on, the following Emacs cc-mode settings apply when indenting C function bodies in InnoDB: (setq c-basic-offset 8) (setq c-label-minimum-indentation 0) (add-to-list 'c-offsets-alist '(c . 0)) (add-to-list 'c-offsets-alist '(label . [0])) The indentation rules for function declarations still have not been formalized, and they must be formatted manually. Try to limit all lines to at most 79 characters (assuming TAB stops every 8 characters) by splitting lines before opening parenthesis, or at string constants. Fix some grammar mistakes in diagnostic output: match to, match with -> match found from -> found in trying rename -> trying to rename Fix an error in page_check_dir(): it said "supremum not pointed to" when the infimum was not pointed to. Enclose commented-out code snippets in #if 0 ... #endif instead of /* ... */. Add (void*) casts to some %p parameters in fprintf() calls. Try to split lines before a binary operator, not after one. (These three fixes were not made everywhere.) ------------------------------------------------------------ revno: 0.1.276 committer: osku timestamp: Mon 2006-08-28 07:07:13 +0000 message: page_validate(): Add missing space to error print, for real this time, following an error in r761. ------------------------------------------------------------ revno: 0.1.275 committer: osku timestamp: Mon 2006-08-28 06:15:42 +0000 message: btr_cur_search_to_nth_level(): Document where cursor is left at in PAGE_CUR_LE searches. page_validate(): Add missing space to error print. ------------------------------------------------------------ revno: 0.1.274 committer: marko timestamp: Tue 2006-08-22 07:20:52 +0000 message: Merge a patch from MySQL AB (Mats Kindal): Lock and unlock prepare_commit_mutex under the same conditions. ------------------------------------------------------------ revno: 0.1.273 committer: marko timestamp: Thu 2006-08-17 12:46:19 +0000 message: dfield_print_raw(): Make static. Print at most 1000 bytes to avoid excessive space usage of the error log. ------------------------------------------------------------ revno: 0.1.272 committer: marko timestamp: Thu 2006-08-17 08:51:42 +0000 message: srv_master_thread(): Add OS_THREAD_DUMMY_RETURN to get rid of a compiler warning "no return value from a function returning non-void". ------------------------------------------------------------ revno: 0.1.271 committer: osku timestamp: Wed 2006-08-16 08:01:37 +0000 message: Remove all traces of the obsolete concept of replicate spaces. ------------------------------------------------------------ revno: 0.1.270 committer: marko timestamp: Mon 2006-08-14 11:18:18 +0000 message: row_vers_build_for_semi_consistent_read(): rec_trx_id was uninitialized in a comparison. Initialize it. ------------------------------------------------------------ revno: 0.1.269 committer: osku timestamp: Mon 2006-08-14 10:36:58 +0000 message: btr_cur_get_page(): Remove buggy assertion. ------------------------------------------------------------ revno: 0.1.268 committer: marko timestamp: Mon 2006-08-14 07:52:28 +0000 message: innodb.result: Adjust Innodb_rows_inserted and Innodb_rows_updated to reflect the deleted statements in r420, which somehow reappeared in the MySQL tree. ------------------------------------------------------------ revno: 0.1.267 committer: marko timestamp: Mon 2006-08-14 07:34:26 +0000 message: Merge code from MySQL: ChangeSet@1.2181.173.1 2006-08-02 17:57:06+02:00 ingo@local Bug#18775 - Temporary table from alter table visible to other threads Continued implementation of WL#1324 (table name to filename encoding) Changed back the encoded temp file prefix to #sql. ------------------------------------------------------------ revno: 0.1.266 committer: marko timestamp: Fri 2006-08-11 09:20:10 +0000 message: Merge changes to test files from MySQL AB. The suite innodb.test fails due to this MySQL change to row0mysql.c not being merged: http://mysql.bkbits.net:8080/mysql-5.1/diffs/storage/innobase/row/row0mysql.c@1.126.1.1 ------------------------------------------------------------ revno: 0.1.265 committer: marko timestamp: Fri 2006-08-11 08:44:10 +0000 message: ha_innobase::delete_all_rows(): Correct an error introduced in r705: Replace the local variable "trx" with "prebuilt->trx". Also, replace the second invocation of the macro current_thd with the local variable thd. ------------------------------------------------------------ revno: 0.1.264 committer: marko timestamp: Fri 2006-08-11 08:08:54 +0000 message: Merge a change from MySQL AB: # ChangeSet # 2006/07/30 05:16:08+04:00 aivanov@mysql.com # Make innodb_thread_concurrency 0 by default. # Fixing test result. # # mysql-test/r/innodb.result # 2006/07/30 05:16:05+04:00 aivanov@mysql.com +1 -1 # Make innodb_thread_concurrency 0 by default. # Fixing test result. ------------------------------------------------------------ revno: 0.1.263 committer: marko timestamp: Fri 2006-08-11 08:05:40 +0000 message: Merge a change from MySQL AB (originally implemented by Marko in the 5.0 tree and now merged to the 5.1 tree): # ChangeSet # 2006/07/29 07:17:33+04:00 aivanov@mysql.com # Make innodb_flush_log_at_trx_commit a settable global variable. # # sql/ha_innodb.cc # 2006/07/29 07:17:29+04:00 aivanov@mysql.com +1 -3 # Remove innobase_flush_log_at_trx_commit # (set srv_flush_log_at_trx_commit directly). # # sql/ha_innodb.h # 2006/07/29 07:17:29+04:00 aivanov@mysql.com +1 -1 # Remove innobase_flush_log_at_trx_commit. # Declare srv_flush_log_at_trx_commit. # # storage/innobase/include/srv0srv.h # 2006/07/29 07:17:30+04:00 aivanov@mysql.com +1 -1 # Change the type of srv_flush_log_at_trx_commit. # # storage/innobase/srv/srv0srv.c # 2006/07/29 07:17:30+04:00 aivanov@mysql.com +1 -1 # Change the type of srv_flush_log_at_trx_commit. # ------------------------------------------------------------ revno: 0.1.262 committer: marko timestamp: Fri 2006-08-11 08:02:26 +0000 message: Merge a change from MySQL AB: # ChangeSet # 2006/07/28 21:27:01+04:00 sergefp@mysql.com # BUG#14940 "MySQL choose wrong index", v.2 # mysql-test/r/innodb_gis.result # 2006/07/28 21:26:56+04:00 sergefp@mysql.com +15 -15 # BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column ------------------------------------------------------------ revno: 0.1.261 committer: heikki timestamp: Tue 2006-08-08 11:38:34 +0000 message: Remove redundant check_trx_exists() and ut_a() from r701, as suggested by Marko ------------------------------------------------------------ revno: 0.1.260 committer: marko timestamp: Tue 2006-08-08 11:33:49 +0000 message: setup.sh: Link also CMakeLists.txt. ------------------------------------------------------------ revno: 0.1.259 committer: marko timestamp: Tue 2006-08-08 10:54:57 +0000 message: Correct all URLs pointing to the MySQL manual. (Bug #21467) ------------------------------------------------------------ revno: 0.1.258 committer: heikki timestamp: Mon 2006-08-07 15:39:40 +0000 message: Add update_thd() to several places in ha_innodb.cc to make sure prebuilt->trx points to the right trx object; in other functions add assertions that prebuilt->trx is for this thd; when 5.1 stabilizes, we can change these assertions to ut_ad() debug version assertions ------------------------------------------------------------ revno: 0.1.257 committer: heikki timestamp: Mon 2006-08-07 15:23:32 +0000 message: Fix Bug #20493 : we must prepare prebuilt->trx to point to the trx of this thd before using it ------------------------------------------------------------ revno: 0.1.256 committer: heikki timestamp: Mon 2006-08-07 15:18:22 +0000 message: Fix Bug#20213 and its duplicates: stress test crashes of InnoDB-5.1 ------------------------------------------------------------ revno: 0.1.255 committer: marko timestamp: Wed 2006-08-02 08:01:41 +0000 message: Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD. ------------------------------------------------------------ revno: 0.1.254 committer: marko timestamp: Wed 2006-08-02 06:52:44 +0000 message: After ut_print_timestamp(), always display " InnoDB:" (note two spaces). ------------------------------------------------------------ revno: 0.1.253 committer: osku timestamp: Tue 2006-08-01 10:20:14 +0000 message: ut_dbg_assertion_failed(): Print space between timestamp and start of error message. ------------------------------------------------------------ revno: 0.1.252 committer: marko timestamp: Mon 2006-07-31 11:17:32 +0000 message: innodb.result: Set the default value of innodb_thread_concurrency to 8. This has already been changed in the MySQL source code tree. ------------------------------------------------------------ revno: 0.1.251 committer: marko timestamp: Mon 2006-07-31 11:05:14 +0000 message: row_rename_table_for_mysql(): Restore the row_mysql_unlock_data_dictionary() call that was accidentally removed in r674. ------------------------------------------------------------ revno: 0.1.250 committer: marko timestamp: Fri 2006-07-28 10:17:55 +0000 message: ha_innobase::start_stmt(): patch from Heikki: Do not call read_view_close_for_mysql(). (Bug #19834) ------------------------------------------------------------ revno: 0.1.249 committer: marko timestamp: Thu 2006-07-27 18:41:37 +0000 message: Remove the special treatment of tables rsql_IDENTIFIER_recover_innodb_tmp_table, which is redundant and was broken with the introduction of the "safe" file name encoding of identifiers. (Bug #21313) ------------------------------------------------------------ revno: 0.1.248 committer: osku timestamp: Fri 2006-07-21 05:15:49 +0000 message: Make the tablespace cache hash size 100 or 1000 times bigger. Fixes bug #21112. ------------------------------------------------------------ revno: 0.1.247 committer: osku timestamp: Fri 2006-07-21 05:14:14 +0000 message: ibuf_print(): Don't print redundant information. Fixes bug #21113. ------------------------------------------------------------ revno: 0.1.246 committer: osku timestamp: Thu 2006-06-15 04:43:58 +0000 message: Makefile.am: Add some missing files to EXTRA_DIST. ------------------------------------------------------------ revno: 0.1.245 committer: osku timestamp: Thu 2006-06-15 04:41:52 +0000 message: mem_heap_cat(): Remove void* arithmetic. ------------------------------------------------------------ revno: 0.1.244 committer: osku timestamp: Thu 2006-06-15 04:41:15 +0000 message: Add -Wpointer-arith to CFLAGS when using GCC. ------------------------------------------------------------ revno: 0.1.243 committer: marko timestamp: Tue 2006-06-13 12:50:11 +0000 message: Merge changes from MySQL AB: innodb_mysql.test, innodb_mysql.result: Bug #16798: Uninitialized row buffer reads in ref-or-null optimizer Bug #12882: min/max inconsistent on empty table Test of behaviour with CREATE ... SELECT Moved from group_min_max.test: Bug #12672: primary key implicitly included in every innodb index Bug #6142: a problem with empty innodb table Bug #9798: group by with rollup ChangeSet@2006/06/01 21:47:15+03:00 bell@sanja.is.com.ua # interface for transaction log management added to handlerton # iterators creation interface added to handlerton ha_innodb.cc: Add get_log_status = create_iterator = NULL ChangeSet@2006/06/04 18:52:22+03:00 monty@mysql.com # This changeset is largely a handler cleanup changeset (WL#3281), # but includes fixes and cleanups that was found necessary while # testing the handler changes # sql/ha_innodb.h # 2006/06/04 18:52:09+03:00 monty@mysql.com +6 -13 # Update to 'newer' table handler interface # - table_flags are now ulonglong # - Added reset() method # - Removed not needed ha_retrieve_all_cols() and ha_retrieve_all_pk() # columns. # - Made build_template() a class function to be able to easier access # class variables # sql/ha_innodb.cc # 2006/06/04 18:52:09+03:00 monty@mysql.com +37 -44 # Update to 'newer' table handler interface # - Update innobase_create_handler() to new interface # - Removed HA_NOT_EXACT_COUNT (not needed) # - Renamed HA_PRIMARY_KEY_ALLOW_RANDOM_ACCESS # to HA_PRIMARY_KEY_REQUIRED_FOR_POSITION. # - Prefixed base status variables with 'stats' # - Use table column bitmaps instead of ha_get_bit_in_read_set() # - Added ::reset(), with code from ::extra(HA_EXTRA_RESET) # - Removed HA_EXTRA_RETRIVE_ALL_COLS and HA_EXTRA_RETRIEVE_PRIMARY_KEY as # the table->read_set and table->write_set bitmaps now are accurate ChangeSet@2006/06/02 22:21:32+02:00 guilhem@mysql.com # First push for WL#3146 "less locking in auto_increment". It is a # 0-real-change patch. # New prototype for get_auto_increment() (but new arguments not yet used), # to be able to reserve a finite interval of auto_increment values from # cooperating engines. # A hint on how many values to reserve is found in # handler::estimation_rows_to_insert, # filled by ha_start_bulk_insert(), new wrapper around start_bulk_insert(). # NOTE: this patch changes nothing, for all engines. # But it makes the API ready for those # engines which will want to do reservation. # More csets will come to complete WL#3146. ha_innodb.h, ha_innodb.cc: update to new prototype of get_auto_increment ChangeSet@2006/05/28 14:51:01+02:00 serg@sergbook.mysql.com # handlerton cleanup: # duplicate fields removed, st_mysql_storage_engine added to support # run-time handlerton initialization (no compiler warnings), handler API # is now tied to MySQL version, handlerton->plugin mapping added # (slot-based), dummy default_hton removed, plugin-type-specific # initialization generalized, built-in plugins are now initialized too, # --default-storage-engine no longer needs a list of storage engines # in handle_options(). # # sql/ha_innodb.h # 2006/05/28 14:50:53+02:00 serg@sergbook.mysql.com +1 -1 # handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine, # initialize handlerton run-time to avoid compiler warnings # # sql/ha_innodb.cc # 2006/05/28 14:50:53+02:00 serg@sergbook.mysql.com +37 -52 # handlerton cleanup: remove duplicate fields, add st_mysql_storage_engine, # initialize handlerton run-time to avoid compiler warnings ChangeSet@2006/06/01 23:59:34+02:00 serg@serg.mylan # second patch for make distcheck ha_innodb.cc: enclose in #ifdef WITH_INNOBASE_STORAGE_ENGINE / #endif ------------------------------------------------------------ revno: 0.1.242 committer: marko timestamp: Fri 2006-06-09 19:57:03 +0000 message: dtype_get_max_size(): Remove UNIV_INLINE qualifier, as the function is defined inside a .c file rather than an .ic file. ------------------------------------------------------------ revno: 0.1.241 committer: marko timestamp: Fri 2006-06-09 19:54:58 +0000 message: btr_cur_search_to_nth_level(): Reacquire btr_search_latch after inserting to the insert buffer. This was noticed while analyzing Bug #19081, but this should not fix Bug #19081, since according to Heikki, btr_search_latch is not reserved during an insert. ------------------------------------------------------------ revno: 0.1.240 committer: marko timestamp: Fri 2006-06-09 10:14:20 +0000 message: rw_lock_s_unlock_func(): Change a debug assertion to a production assertion in order to track down Bug #19081. ------------------------------------------------------------ revno: 0.1.239 committer: osku timestamp: Fri 2006-06-09 06:37:41 +0000 message: Revert r622 (innodb_sql table) as it was decided it's not appropriate for the GPL InnoDB version. ------------------------------------------------------------ revno: 0.1.238 committer: osku timestamp: Thu 2006-06-08 06:14:09 +0000 message: Don't take unnecessary locks on supremum records when the srv_locks_unsafe_for_binlog option is enabled. Fixes an assertion failure in the innodb_unsafe_binlog testcase when compiled with UNIV_DEBUG. ------------------------------------------------------------ revno: 0.1.237 committer: osku timestamp: Thu 2006-06-08 06:12:29 +0000 message: Add special 'innodb_sql' table that can be used to pass SQL commands to InnoDB through MySQL. ------------------------------------------------------------ revno: 0.1.236 committer: osku timestamp: Thu 2006-06-08 06:08:23 +0000 message: Add support for lock waits in the SQL parser. ------------------------------------------------------------ revno: 0.1.235 committer: marko timestamp: Mon 2006-06-05 11:38:05 +0000 message: Merge r614 from branches/5.0: Merge r32 from innodb-4.1: ibuf_fixed_addr_page(): Add parameter space. As the insert buffer B-tree is only located in the system tablespace (space 0), IBUF_TREE_ROOT_PAGE_NO is only special in space 0. ------------------------------------------------------------ revno: 0.1.234 committer: osku timestamp: Fri 2006-06-02 07:22:40 +0000 message: From MySQL: Rename cmakelists.txt to CMakeLists.txt. ------------------------------------------------------------ revno: 0.1.233 committer: osku timestamp: Fri 2006-06-02 07:10:14 +0000 message: From MySQL: Fix bug #17264. For alter table on win32 for succesful operation completion it is used TL_WRITE(=10) lock instead of TL_WRITE_ALLOW_READ(=6), however in InnoDB handler TL_WRITE is lifted to TL_WRITE_ALLOW_WRITE, which causes race condition when several clients do alter table simultaneously. ------------------------------------------------------------ revno: 0.1.232 committer: osku timestamp: Thu 2006-06-01 09:25:31 +0000 message: Make dict_remove_db_name non-static. ------------------------------------------------------------ revno: 0.1.231 committer: osku timestamp: Thu 2006-06-01 07:19:16 +0000 message: SQL parser: Modify syntax so that the only valid top-level statement is a procedure definition, since it's the only the one that actually works. ------------------------------------------------------------ revno: 0.1.230 committer: osku timestamp: Wed 2006-05-31 10:20:38 +0000 message: pars_sql(): Remove redundant call to strlen. ------------------------------------------------------------ revno: 0.1.229 committer: marko timestamp: Wed 2006-05-31 07:35:02 +0000 message: Document better the "bool table_id" flags introduced in r590. ------------------------------------------------------------ revno: 0.1.228 committer: osku timestamp: Wed 2006-05-31 06:00:56 +0000 message: trx_sig_send() always succeeds or asserts, so remove return value and adjust callers. ------------------------------------------------------------ revno: 0.1.227 committer: osku timestamp: Wed 2006-05-31 05:35:50 +0000 message: Revert r598, it is incompatible with the upcoming support for lock waits in InnoDB's SQL parser. ------------------------------------------------------------ revno: 0.1.226 committer: osku timestamp: Wed 2006-05-31 05:34:18 +0000 message: Changes to InnoDB's SQL parser: -Change default mode of SELECT from "lock in share mode" to "consistent read". -Remove support from SELECT for specifying "consistent read". -Add support in SELECT for specifying "lock in share mode". -Change all uses of SQL parser to specify "lock in share mode". ------------------------------------------------------------ revno: 0.1.225 committer: osku timestamp: Tue 2006-05-30 06:16:32 +0000 message: que_run_threads(): Check we haven't accidentally left an active transaction in e.g. TRX_LOCK_WAIT state. ------------------------------------------------------------ revno: 0.1.224 committer: marko timestamp: Mon 2006-05-29 12:02:24 +0000 message: Merge r596 from branches/5.0: row_sel_try_search_shortcut(): Do not return SEL_FOUND when the record was not found. This bug was introduced in MySQL/InnoDB 5.0.3, but luckily it should never manifest itself, given that existing InnoDB SQL code never makes use of consistent reads. ------------------------------------------------------------ revno: 0.1.223 committer: osku timestamp: Fri 2006-05-26 11:01:39 +0000 message: Disable prefetch and adaptive hash index for tables with rows over 1024 bytes in InnoDB's SQL parser. ------------------------------------------------------------ revno: 0.1.222 committer: marko timestamp: Fri 2006-05-26 09:14:54 +0000 message: Clean up r590: dict_scan_table_name(): Remove fallback to differently encoded name when the table is not found. The encoding is handled at a higher level. innodb.result: Adjust the results for changes in the foreign key error messages. ------------------------------------------------------------ revno: 0.1.221 committer: osku timestamp: Fri 2006-05-26 05:52:59 +0000 message: Add max_row_size to dict_table_t. ------------------------------------------------------------ revno: 0.1.220 committer: marko timestamp: Wed 2006-05-24 10:58:43 +0000 message: innobase_print_identifier(): Remove TODO comment before calling get_quote_char_for_identifier(). That function apparently assumes the identifier to be encoded in UTF-8. ------------------------------------------------------------ revno: 0.1.219 committer: marko timestamp: Wed 2006-05-24 10:27:17 +0000 message: Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1. ut_print_name(), ut_print_namel(): Add parameter table_id for distinguishing names of tables from other identifiers (names of indexes, columns and constraints). innobase_convert_from_table_id(), innobase_convert_from_id(), innobase_convert_from_filename(), innobase_get_charset(): New functions. dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(), dict_skip_word(), dict_create_foreign_constraints_low(): Add parameter "cs", so that isspace() can be replaced with my_isspace(), whose operation depends on the connection character set. dict_scan_id(): Convert the identifier to UTF-8. dict_str_starts_with_keyword(): New extern function, to replace dict_accept() in row_search_for_mysql(). mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier(). ha_innobase::create(): Remove the thd->convert_string() call. Pass the statement to InnoDB in the connection character set and let InnoDB convert the identifiers to UTF-8. ------------------------------------------------------------ revno: 0.1.218 committer: osku timestamp: Tue 2006-05-23 11:35:58 +0000 message: Optimize BLOB selects by using prebuilt->blob_heap directly instead of first reading BLOB data to a temporary heap and then copying it to prebuilt->blob_heap. ------------------------------------------------------------ revno: 0.1.217 committer: osku timestamp: Tue 2006-05-23 05:49:17 +0000 message: Fetch externally stored fields when using InnoDB's internal SQL parser. ------------------------------------------------------------ revno: 0.1.216 committer: marko timestamp: Mon 2006-05-22 08:11:38 +0000 message: Implement InnoDB assertions (ut_a and ut_error) with abort() when the code is compiled with GCC 3 or later on other platforms than Windows or Netware. Also disable the variable ut_dbg_stop_threads and the function ut_dbg_stop_thread() in this case, unless UNIV_SYNC_DEBUG is defined. This should allow the compiler to generate more compact code for assertions. ------------------------------------------------------------ revno: 0.1.215 committer: osku timestamp: Mon 2006-05-22 07:50:05 +0000 message: btr_copy_externally_stored_field(): Only set the 'offset' variable when needed. ------------------------------------------------------------ revno: 0.1.214 committer: osku timestamp: Mon 2006-05-22 07:29:00 +0000 message: row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field when handling an externally stored column. ------------------------------------------------------------ revno: 0.1.213 committer: osku timestamp: Thu 2006-05-18 10:02:01 +0000 message: Add ib_list_create_heap(). ------------------------------------------------------------ revno: 0.1.212 committer: marko timestamp: Tue 2006-05-16 06:47:06 +0000 message: recv_parse_or_apply_log_rec_body(): Remove bogus debug assertion. ------------------------------------------------------------ revno: 0.1.211 committer: marko timestamp: Fri 2006-05-12 19:25:18 +0000 message: srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and 'g' as abbreviations of megabyte and gigabyte. (Bug #19609) srv_parse_megabytes(): New function. ------------------------------------------------------------ revno: 0.1.210 committer: osku timestamp: Fri 2006-05-12 11:13:18 +0000 message: Move trx_commit_for_mysql(trx) calls in row0mysql.c before calls to row_mysql_unlock_data_dictionary(trx), fixing bug #19727. ------------------------------------------------------------ revno: 0.1.209 committer: marko timestamp: Thu 2006-05-11 16:59:18 +0000 message: Define UNIV_BTR_DEBUG for enabling consistency checks of FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling pages of B-tree indexes. btr_validate_level(): Check the validity of the doubly linked list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV. ------------------------------------------------------------ revno: 0.1.208 committer: marko timestamp: Thu 2006-05-11 12:44:01 +0000 message: Improve the documentation of FIL_PAGE_PREV, FIL_PAGE_NEXT, and REC_INFO_MIN_REC_FLAG. ------------------------------------------------------------ revno: 0.1.207 committer: osku timestamp: Thu 2006-05-11 04:55:18 +0000 message: Add mem_heap_printf() and mem_heap_cat(). ------------------------------------------------------------ revno: 0.1.206 committer: osku timestamp: Thu 2006-05-11 04:51:52 +0000 message: Add innobase_convert_string wrapper function to ha_innodb.cc, and a new file ha_prototypes.h. ------------------------------------------------------------ revno: 0.1.205 committer: osku timestamp: Wed 2006-05-10 06:37:13 +0000 message: Add support for DATA_CHAR type in bound literals in the SQL parser. ------------------------------------------------------------ revno: 0.1.204 committer: marko timestamp: Tue 2006-05-09 08:37:14 +0000 message: Port r543 from innodb/branches/5.0: Port r29 from innodb-4.1/trunk: export.sh: Generate the files to-mysql/patches/r$REV.patch containing the output of "svn log" and "svn diff" for each change. ------------------------------------------------------------ revno: 0.1.203 committer: osku timestamp: Tue 2006-05-09 06:37:11 +0000 message: Increment statistic counter in ha_innobase::index_prev(). Fixes bug #19542. ------------------------------------------------------------ revno: 0.1.202 committer: marko timestamp: Mon 2006-05-08 09:33:28 +0000 message: Merge a change from MySQL AB to Makefile.am: ChangeSet@2006/04/29 09:33:34-07:00 serg@sergbook.mysql.com make distcheck and cosmetic fixes ------------------------------------------------------------ revno: 0.1.201 committer: marko timestamp: Mon 2006-05-08 08:08:27 +0000 message: Merge changes by MySQL AB to ha_innodb.cc: WL#2257 REFERENTIAL_CONSTRAINTS view WL#3201 pluggable storage engines ------------------------------------------------------------ revno: 0.1.200 committer: osku timestamp: Mon 2006-05-08 05:13:09 +0000 message: Add support for bound ids in InnoDB's SQL parser. ------------------------------------------------------------ revno: 0.1.199 committer: marko timestamp: Fri 2006-05-05 15:19:32 +0000 message: buf_page_io_complete(): Write to the error log if the page number or the space id on the disk do not match those in the memory. Also write to the error log if a page was read from the doublewrite buffer. The doublewrite buffer should be only read by the lower-level function fil_io() at database startup. ------------------------------------------------------------ revno: 0.1.198 committer: marko timestamp: Fri 2006-05-05 12:52:08 +0000 message: Port r529 of branches/5.0: Port r27 of innodb-4.1/trunk: Check the page trailers also after writing to disk. This improves the chances of diagnosing Bug #18886. os_file_check_page_trailers(): New function for checking that the two copies of the LSN stamped on the pages match. os_aio_simulated_handle(): Call os_file_check_page_trailers() before and after os_file_write(). ------------------------------------------------------------ revno: 0.1.197 committer: marko timestamp: Fri 2006-05-05 11:39:44 +0000 message: ibuf_count_get(), ibuf_counts[], ibuf_counts_inited: Define these only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB. The function is only being called #ifdef UNIV_IBUF_DEBUG. ------------------------------------------------------------ revno: 0.1.196 committer: marko timestamp: Fri 2006-05-05 11:28:25 +0000 message: Improve the comments of the space low address map. ------------------------------------------------------------ revno: 0.1.195 committer: osku timestamp: Fri 2006-05-05 07:24:03 +0000 message: row_fetch_print: Handle SQL NULL values without crashing. ------------------------------------------------------------ revno: 0.1.194 committer: marko timestamp: Thu 2006-05-04 11:25:58 +0000 message: Fix a typo in a comment. ------------------------------------------------------------ revno: 0.1.193 committer: osku timestamp: Sat 2006-04-29 04:43:37 +0000 message: srv_master_thread(): Remove unreachable code. ------------------------------------------------------------ revno: 0.1.192 committer: osku timestamp: Fri 2006-04-28 11:57:13 +0000 message: Add parens to return statements where they are missing (except in ha_innodb.cc). ------------------------------------------------------------ revno: 0.1.191 committer: osku timestamp: Fri 2006-04-28 05:49:59 +0000 message: Add 'level' parameter to rw_lock_create(), remove rw_lock_set_level(). ------------------------------------------------------------ revno: 0.1.190 committer: osku timestamp: Fri 2006-04-28 05:43:08 +0000 message: Add 'level' parameter to mutex_create(), remove mutex_set_level(). Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING, add comment clarifying what it is used for. ------------------------------------------------------------ revno: 0.1.189 committer: osku timestamp: Fri 2006-04-28 05:35:56 +0000 message: univ.i: Make debug checks easily togglable. ------------------------------------------------------------ revno: 0.1.188 committer: osku timestamp: Wed 2006-04-26 12:17:36 +0000 message: Add mem_heap_dup(). ------------------------------------------------------------ revno: 0.1.187 committer: osku timestamp: Wed 2006-04-26 12:14:50 +0000 message: Add a work queue implementation. ------------------------------------------------------------ revno: 0.1.186 committer: osku timestamp: Wed 2006-04-26 11:58:07 +0000 message: Add a normal linked-list implementation. ------------------------------------------------------------ revno: 0.1.185 committer: osku timestamp: Wed 2006-04-26 07:08:21 +0000 message: From MySQL: Add innodb_mysql.[test|result]. ------------------------------------------------------------ revno: 0.1.184 committer: osku timestamp: Mon 2006-04-24 11:58:30 +0000 message: From MySQL: Updates to innodb.[test|result]. ------------------------------------------------------------ revno: 0.1.183 committer: osku timestamp: Mon 2006-04-24 11:34:49 +0000 message: From MySQL: Added new function to handlerton. ------------------------------------------------------------ revno: 0.1.182 committer: osku timestamp: Mon 2006-04-24 11:33:51 +0000 message: From MySQL: Refactored some code to remove ifdef and removed dead code related to un-useable sync code. ------------------------------------------------------------ revno: 0.1.181 committer: osku timestamp: Mon 2006-04-24 11:33:00 +0000 message: From MySQL: After merge fixes. ------------------------------------------------------------ revno: 0.1.180 committer: osku timestamp: Mon 2006-04-24 09:39:13 +0000 message: Remove remnants of the obsolete concept of memoryfixing tables and indexes. Remove unused dict_table_LRU_trim(). Remove unused 'trx' parameter from the functions dict_table_get_on_id_low, dict_table_get and dict_table_get_and_increment_handle_count. ------------------------------------------------------------ revno: 0.1.179 committer: osku timestamp: Mon 2006-04-24 05:18:28 +0000 message: From MySQL: Add cmakelists.txt to Makefile.Am. ------------------------------------------------------------ revno: 0.1.178 committer: osku timestamp: Fri 2006-04-21 12:09:12 +0000 message: Add platform-specific os_thread_ret_t and OS_THREAD_DUMMY_RETURN, and convert thread start functions to use them. ------------------------------------------------------------ revno: 0.1.177 committer: osku timestamp: Fri 2006-04-21 12:06:23 +0000 message: Make 'thread_id' parameter in os_thread_create() optional. ------------------------------------------------------------ revno: 0.1.176 committer: marko timestamp: Fri 2006-04-21 08:00:26 +0000 message: Merge r487 from branches/5.0: dict_load_indexes(): pass comp=0 to rec_get_deleted_flag(), because SYS_INDEXES always is in ROW_FORMAT=REDUNDANT. (Bug #19217) ------------------------------------------------------------ revno: 0.1.175 committer: osku timestamp: Fri 2006-04-21 07:04:02 +0000 message: Remove srv_sys->operational since it is unused. ------------------------------------------------------------ revno: 0.1.174 committer: osku timestamp: Thu 2006-04-20 11:06:41 +0000 message: Remove obsolete and unused global variables from srv0srv.c. ------------------------------------------------------------ revno: 0.1.173 committer: osku timestamp: Tue 2006-04-18 07:16:14 +0000 message: dict_remove_db_name: Remove useless 'if'. ------------------------------------------------------------ revno: 0.1.172 committer: osku timestamp: Tue 2006-04-18 06:48:47 +0000 message: export.sh: Automate snapshot creation process. Update "files internal to innobase" list. ------------------------------------------------------------ revno: 0.1.171 committer: osku timestamp: Tue 2006-04-18 06:33:03 +0000 message: Remove temporary work-arounds from innodb.result now that ALTER TABLE DROP FOREIGN KEY works once again. ------------------------------------------------------------ revno: 0.1.170 committer: osku timestamp: Mon 2006-04-17 08:14:04 +0000 message: Use bound literals in row_rename_table_for_mysql. ------------------------------------------------------------ revno: 0.1.169 committer: osku timestamp: Mon 2006-04-17 08:13:07 +0000 message: Add mem_heap_strcat(). ------------------------------------------------------------ revno: 0.1.168 committer: osku timestamp: Sat 2006-04-15 14:58:17 +0000 message: pars_info_add_*(): In debug builds (UNIV_DEBUG), check that the given name is not already used. ------------------------------------------------------------ revno: 0.1.167 committer: osku timestamp: Thu 2006-04-13 11:02:52 +0000 message: Use que_eval_sql() in dict_create_or_check_foreign_constraint_tables. ------------------------------------------------------------ revno: 0.1.166 committer: osku timestamp: Thu 2006-04-13 06:22:52 +0000 message: Use bound literals in row_discard_tablespace_for_mysql. ------------------------------------------------------------ revno: 0.1.165 committer: osku timestamp: Wed 2006-04-12 18:17:47 +0000 message: Use bound literals in row_drop_table_for_mysql. ------------------------------------------------------------ revno: 0.1.164 committer: osku timestamp: Wed 2006-04-12 18:14:06 +0000 message: Use bound literals in row_truncate_table_for_mysql. ------------------------------------------------------------ revno: 0.1.163 committer: marko timestamp: Wed 2006-04-12 12:37:48 +0000 message: dict_table_copy_types(): Remove a bogus debug assertion. DICT_UNIVERSAL can be set for index->type, not for table->type. ------------------------------------------------------------ revno: 0.1.162 committer: marko timestamp: Wed 2006-04-12 12:18:54 +0000 message: dict_table_t: Remove the field "type". dict_load_table(): Refuse to load tables with other TYPE than DICT_TABLE_ORDINARY. ------------------------------------------------------------ revno: 0.1.161 committer: jan timestamp: Wed 2006-04-12 10:40:22 +0000 message: Add general function to evaluate a sql query. Add function to evaluate dulints in host variables. ------------------------------------------------------------ revno: 0.1.160 committer: osku timestamp: Tue 2006-04-11 14:01:17 +0000 message: Fix bug #18934, "InnoDB crashes when table uses column names like DB_ROW_ID", by refusing tables that use reserved column names. Add dict_mem_table_free(), use it instead of duplicating the code everywhere. Use already existing dict_mem_index_free(). Fix memory leaks in row_create_table_for_mysql() in rare corner cases. ------------------------------------------------------------ revno: 0.1.159 committer: osku timestamp: Tue 2006-04-11 13:56:12 +0000 message: Print dictionary memory size in SHOW INNODB STATUS. ------------------------------------------------------------ revno: 0.1.158 committer: marko timestamp: Tue 2006-04-11 12:53:18 +0000 message: sync_array_detect_deadlock(): Remove bogus debug assertion. ------------------------------------------------------------ revno: 0.1.157 committer: marko timestamp: Tue 2006-04-11 12:51:34 +0000 message: Remove code related to clustered tables. They were never implemented, and the implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions. dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name. plan_t: Remove mixed_index. dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0 and CLUSTER_NAME=NULL when inserting into SYS_TABLES. dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG. ------------------------------------------------------------ revno: 0.1.156 committer: osku timestamp: Tue 2006-04-11 06:53:19 +0000 message: row_mysql_is_system_table(): Use strncmp, not memcmp, since we don't know how long the input string is. ------------------------------------------------------------ revno: 0.1.155 committer: osku timestamp: Mon 2006-04-10 14:54:05 +0000 message: Remove too strict assertions from some dict_table_t accessor functions. ------------------------------------------------------------ revno: 0.1.154 committer: osku timestamp: Mon 2006-04-10 12:05:03 +0000 message: Allow access to system columns like DB_ROW_ID in InnoDB's SQL parser. ------------------------------------------------------------ revno: 0.1.153 committer: osku timestamp: Fri 2006-04-07 07:15:03 +0000 message: Add row_fetch_store_uint4(). ------------------------------------------------------------ revno: 0.1.152 committer: osku timestamp: Fri 2006-04-07 07:12:42 +0000 message: Add ib_uint32_t typedef. ------------------------------------------------------------ revno: 0.1.151 committer: osku timestamp: Fri 2006-04-07 05:27:02 +0000 message: From MySQL: Add Windows makefile 'cmakelists.txt' (Note that I had to add ut0vec.c to it.) Modify univ.i to not include ib_config.h on Windows. ------------------------------------------------------------ revno: 0.1.150 committer: osku timestamp: Thu 2006-04-06 15:13:17 +0000 message: univ.i: Remove unused 'utfloat' typedef. ------------------------------------------------------------ revno: 0.1.149 committer: osku timestamp: Thu 2006-04-06 10:02:44 +0000 message: Rename ib_vector typedef to ib_vector_t. ------------------------------------------------------------ revno: 0.1.148 committer: osku timestamp: Thu 2006-04-06 07:52:14 +0000 message: Since the function definitions in pars_info_t are accessed after pars_sql() returns in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead, make pars_sql() transfer ownership of pars_info_t to the created query graph, and make que_graph_free() free it if needed. ------------------------------------------------------------ revno: 0.1.147 committer: osku timestamp: Thu 2006-04-06 05:22:33 +0000 message: dict0crea.c: Use bound literals in all SQL statements instead of elaborately constructing correctly allocated and quoted strings to pass the data in in ASCII form. ------------------------------------------------------------ revno: 0.1.146 committer: osku timestamp: Thu 2006-04-06 05:20:59 +0000 message: Rewrite pars_info datatypes and APIs, add a few helper functions. ------------------------------------------------------------ revno: 0.1.145 committer: osku timestamp: Thu 2006-04-06 05:20:06 +0000 message: Add ib_vector datatype. ------------------------------------------------------------ revno: 0.1.144 committer: jan timestamp: Wed 2006-04-05 10:11:00 +0000 message: Make innodb_unsafe_binlog test case faster. Group all consistent read test cases to a one test case and wait their lock timeout after all have been send to the server. Remove unnecessary option --loose_innodb_lock_wait_timeout. ------------------------------------------------------------ revno: 0.1.143 committer: osku timestamp: Wed 2006-04-05 09:47:17 +0000 message: Decrease amount of rows inserted in a certain test in innodb.test. This has no effect on the effectiveness of the test and reduces the running time by ~10 seconds on my machine. ------------------------------------------------------------ revno: 0.1.142 committer: jan timestamp: Wed 2006-04-05 09:37:01 +0000 message: Make innodb test case faster. Group all consistent read test cases to a one test case and wait their lock timeout after all have been send to the server. ------------------------------------------------------------ revno: 0.1.141 committer: osku timestamp: Tue 2006-04-04 05:05:19 +0000 message: Allow bound literals of type non-INTEGER to be of length 0. ------------------------------------------------------------ revno: 0.1.140 committer: marko timestamp: Mon 2006-04-03 11:29:59 +0000 message: sym_tab_add_bound_lit(): Remove warning about possibly uninitialized 'len'. ------------------------------------------------------------ revno: 0.1.139 committer: marko timestamp: Mon 2006-04-03 11:28:43 +0000 message: Disable the statistics variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail, n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT. ------------------------------------------------------------ revno: 0.1.138 committer: osku timestamp: Sat 2006-04-01 09:41:58 +0000 message: Support DATA_VARCHAR for bound literals. pars_bound_lit_t: Change 'address' from 'void*' to 'const void*'. ------------------------------------------------------------ revno: 0.1.137 committer: osku timestamp: Sat 2006-04-01 06:06:59 +0000 message: Add support for bound literals in the SQL parser. ------------------------------------------------------------ revno: 0.1.136 committer: osku timestamp: Fri 2006-03-31 11:28:59 +0000 message: dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types. Print known flags from prtype. Use a switch statement, not an else-if chain. ------------------------------------------------------------ revno: 0.1.135 committer: osku timestamp: Fri 2006-03-31 07:43:13 +0000 message: Add revert_gen.sh. ------------------------------------------------------------ revno: 0.1.134 committer: osku timestamp: Fri 2006-03-31 05:50:42 +0000 message: pars_set_dfield_type(): Remove never-reached duplicate code. Replace "if (!cond) ut_error" with "ut_a(cond)". ------------------------------------------------------------ revno: 0.1.133 committer: osku timestamp: Fri 2006-03-31 04:58:45 +0000 message: Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t. ------------------------------------------------------------ revno: 0.1.132 committer: osku timestamp: Fri 2006-03-31 04:58:02 +0000 message: Move calling of thr_local_free() from trx_free_for_mysql() to innobase_close_connection(). ------------------------------------------------------------ revno: 0.1.131 committer: jan timestamp: Wed 2006-03-29 11:23:10 +0000 message: Port r388 from trunk: Remove assertion ut_error which crashes the mysqld server if it prints a warning about the adaptive latch. ------------------------------------------------------------ revno: 0.1.130 committer: osku timestamp: Wed 2006-03-29 11:20:29 +0000 message: Support user-function callbacks for processing results of FETCH statements in InnoDB's SQL parser. ------------------------------------------------------------ revno: 0.1.129 committer: osku timestamp: Wed 2006-03-29 11:18:20 +0000 message: Support quoted identifiers in InnoDB's SQL parser. Original patch by marko, testing and a few fixes by me. ------------------------------------------------------------ revno: 0.1.128 committer: jan timestamp: Wed 2006-03-29 07:18:44 +0000 message: Print approximate number or record locks (bits set in the bitmap) for this transaction to innodb_lock_monitor and show innodb status. Since delete-marked records maybe removed, the record count will not be precise. ------------------------------------------------------------ revno: 0.1.127 committer: osku timestamp: Tue 2006-03-28 09:35:33 +0000 message: sym_tab_add_id(): Fix bug where we generated a string one character too long. ------------------------------------------------------------ revno: 0.1.126 committer: osku timestamp: Tue 2006-03-28 09:32:48 +0000 message: Add make_flex.sh and update lexer/parser generation documentation. ------------------------------------------------------------ revno: 0.1.125 committer: osku timestamp: Tue 2006-03-28 06:41:31 +0000 message: Port r371 and r372 from branches/fts: Add support for the EXIT keyword in InnoDB's SQL parser. Add short introduction to query graphs. ------------------------------------------------------------ revno: 0.1.124 committer: jan timestamp: Tue 2006-03-28 06:34:12 +0000 message: Port r375 from branches/5.0: Fix bug #15650 additional error InnoDB: Error: unlock row could not find a 0 mode lock on the record. ------------------------------------------------------------ revno: 0.1.123 committer: jan timestamp: Mon 2006-03-27 05:33:30 +0000 message: Setting a isolation level of the transaction to read committed weakens the locks for this session similarly like the option innodb_locks_unsafe_for_binlog. This patch removes almost all gap locking (used in next-key locking) and makes MySQL to release the row locks on the rows which does not belong to result set. Additionally, nonlocking selects on INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking consistent read. If a binlog is used, then binlog format should be set to row based binloging to make the execution of the complex SQL statements. ------------------------------------------------------------ revno: 0.1.122 committer: osku timestamp: Wed 2006-03-22 13:23:07 +0000 message: fetch_step(): Print a more useful error message when the cursor is closed. ------------------------------------------------------------ revno: 0.1.121 committer: heikki timestamp: Wed 2006-03-22 12:28:19 +0000 message: Remove yet another typo from my last commit. ------------------------------------------------------------ revno: 0.1.120 committer: heikki timestamp: Wed 2006-03-22 09:47:01 +0000 message: Fix yet another typo in my previous commit. ------------------------------------------------------------ revno: 0.1.119 committer: heikki timestamp: Tue 2006-03-21 16:08:43 +0000 message: Fix a typo in my previous commit. ------------------------------------------------------------ revno: 0.1.118 committer: heikki timestamp: Tue 2006-03-21 15:57:55 +0000 message: Fix MySQL-5.1 bug http://bugs.mysql.com/bug.php?id=17992 and its duplicate http://bugs.mysql.com/bug.php?id=17134 : MySQL's partitioned table code does not set prebuilt->sql_stat_start right if it does an insert in the same statement after doing a search first in the same partition table. We now write trx id always to the buffer, not just when flag sql_stat_start is on. This will waste CPU time very slightly. ------------------------------------------------------------ revno: 0.1.117 committer: jan timestamp: Tue 2006-03-21 10:00:30 +0000 message: Merge r357 from branches/5.0: Fix bug #18350 Use consistent read in CREATE ... SELECT... if innodb_locks_unsafe_for_binlog is used. This patch is from Heikki. ------------------------------------------------------------ revno: 0.1.116 committer: marko timestamp: Tue 2006-03-21 09:15:28 +0000 message: Merge r355 from branches/5.0: Remove a memory leak when trying to insert a duplicate record to a clustered index comprising more than about 90 columns. (Bug #18384) row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at func_exit if needed. ------------------------------------------------------------ revno: 0.1.115 committer: osku timestamp: Fri 2006-03-17 12:44:34 +0000 message: Add support for UNSIGNED types in InnoDB's SQL parser. Remove trailing whitespace from flex/bison input files. ------------------------------------------------------------ revno: 0.1.114 committer: osku timestamp: Fri 2006-03-17 11:36:16 +0000 message: Add "-Werror-implicit-function-declaration" to CFLAGS when using gcc. ------------------------------------------------------------ revno: 0.1.113 committer: marko timestamp: Fri 2006-03-17 08:20:14 +0000 message: Merge r328:340 from branches/5.0: r340: Fix http://bugs.mysql.com/bug.php?id=18283 in ha_innodb.cc and http://bugs.mysql.com/bug.php?id=18238 in InnoDB r339: Remove disk space leak on update of BLOB columns (Bug #18252). btr_cur_pessimistic_update(): Invoke rec_get_offsets() after rec_set_field_extern_bits(). btr_store_big_rec_extern_fields(): Note that offsets will no longer be valid after calling this function. r338: Fix bug 18238 : check in pessimistic insert and update if the buffer pool is exhausted by locks ------------------------------------------------------------ revno: 0.1.112 committer: osku timestamp: Thu 2006-03-16 07:47:55 +0000 message: Add (void*) casts when using the %p printf format specifier. When using GCC, use __inline__ instead of inline. Add disabled-by-default logic to configure.in to switch GCC to a strict C89-mode. ------------------------------------------------------------ revno: 0.1.111 committer: marko timestamp: Wed 2006-03-15 11:02:14 +0000 message: Merge r328 from branches/5.0: Remove UNIV_RELEASE_NOT_YET_STABLE and related checks. page_rec_is_comp(): Remove the bounds check. row_sel_field_store_in_mysql_format(): Turn the assertions on mbminlen, mbmaxlen and templ->type into debug assertions. ------------------------------------------------------------ revno: 0.1.110 committer: osku timestamp: Tue 2006-03-14 07:58:35 +0000 message: Fix compilation problem with non-C99 compilers in btr0sea.c. ------------------------------------------------------------ revno: 0.1.109 committer: jan timestamp: Mon 2006-03-13 09:51:38 +0000 message: Forward port r315 from branches/5.0: Fix a bug #18077 InnoDB uses full explicit table locks in stored FUNCTION. ------------------------------------------------------------ revno: 0.1.108 committer: marko timestamp: Mon 2006-03-13 09:27:34 +0000 message: Do not use inlined functions in ha_innodb.cc. Add dict_table_is_comp_noninline(). Replace calls to dict_table_is_comp() in ha_innodb.cc with dict_table_is_comp_noninline(). ------------------------------------------------------------ revno: 0.1.107 committer: marko timestamp: Fri 2006-03-10 14:41:44 +0000 message: Replace buf_block_align(btr_cur_get_page()) with buf_block_align(btr_cur_get_rec()). ------------------------------------------------------------ revno: 0.1.106 committer: marko timestamp: Fri 2006-03-10 14:26:08 +0000 message: Merge changes from MySQL that were identified when merging r269 to MySQL. ------------------------------------------------------------ revno: 0.1.105 committer: osku timestamp: Fri 2006-03-10 11:06:33 +0000 message: Port parts of r297 from branches/fts: row_upd_index_replace_new_col_vals_index_pos(): Add a parameter, "ibool order_only", for limiting the replacement to the ordering fields of the index. Adjust callers. In this port, the comment for the parameter was adjusted to make it clear that it only supports clustered indexes. ------------------------------------------------------------ revno: 0.1.104 committer: osku timestamp: Fri 2006-03-10 11:01:41 +0000 message: Port parts of r262 from branches/fts: Add HASH_MIGRATE(). ------------------------------------------------------------ revno: 0.1.103 committer: osku timestamp: Fri 2006-03-10 11:00:58 +0000 message: Port parts of r211 from branches/fts: Add ut_strcount() and ut_strreplace(). ------------------------------------------------------------ revno: 0.1.102 committer: osku timestamp: Fri 2006-03-10 10:58:58 +0000 message: Port parts of r211 from branches/fts: Add dict_table_get_low_noninlined(). ------------------------------------------------------------ revno: 0.1.101 committer: osku timestamp: Wed 2006-03-08 13:30:54 +0000 message: Port r292 from branches/fts: Move printing of dfield_t values from dtuple_print to a new function, dfield_print_raw. ------------------------------------------------------------ revno: 0.1.100 committer: osku timestamp: Tue 2006-03-07 14:04:52 +0000 message: Print dict_index_t->n_uniq in table monitor. ------------------------------------------------------------ revno: 0.1.99 committer: osku timestamp: Tue 2006-03-07 12:57:02 +0000 message: sync0arr.c: Fix compilation error on some systems by introducing all variables at the start of a block. ------------------------------------------------------------ revno: 0.1.98 committer: osku timestamp: Mon 2006-03-06 12:51:50 +0000 message: Remove two redundant casts from calls to ut_print_buf. ------------------------------------------------------------ revno: 0.1.97 committer: osku timestamp: Mon 2006-03-06 09:45:04 +0000 message: Change ut_print_buf() and mem_analyze_corruption() to take a void*, not a byte*. Remove redundant casts from callers. ------------------------------------------------------------ revno: 0.1.96 committer: jan timestamp: Thu 2006-03-02 07:57:10 +0000 message: Remove trailing whitespaces and fix style on function comments. ------------------------------------------------------------ revno: 0.1.95 committer: osku timestamp: Thu 2006-03-02 07:35:23 +0000 message: row0mysql.c: Replace tabs within strings with spaces. ------------------------------------------------------------ revno: 0.1.94 committer: jan timestamp: Wed 2006-03-01 07:47:14 +0000 message: Fix for bug #12456: Cursor shows incorrect data - DML does not affect, probably caching. Fixed test results. This patch implements a high-granularity read view to be used with cursors. In this high-granularity consistent read view modifications done by the creating transaction after the cursor is created or future transactions are not visible. But those modifications that transaction did before the cursor was created are visible. ------------------------------------------------------------ revno: 0.1.93 committer: osku timestamp: Tue 2006-02-28 13:32:12 +0000 message: Fix assert in HASH_DELETE so it actually tests something useful. ------------------------------------------------------------ revno: 0.1.92 committer: osku timestamp: Mon 2006-02-27 09:11:57 +0000 message: Remove "ibool comp" from dict_table_t and replace it with "ulint flags" which can contain the new flag DICT_TF_COMPACT. Change dict_mem_table_create to take a flags argument. Add dict_table_is_comp(). Adapt all users. Change some places to explicitly assume that system tables do not use the compact page format. ------------------------------------------------------------ revno: 0.1.91 committer: osku timestamp: Fri 2006-02-24 09:53:01 +0000 message: Fix invalid brace positioning and spaces before tabs. ------------------------------------------------------------ revno: 0.1.90 committer: osku timestamp: Fri 2006-02-24 09:41:20 +0000 message: Remove tabs from within printed strings and two instances of trailing whitespace. ------------------------------------------------------------ revno: 0.1.89 committer: osku timestamp: Fri 2006-02-24 07:18:44 +0000 message: Add TAGS to svn:ignore. ------------------------------------------------------------ revno: 0.1.88 committer: marko timestamp: Thu 2006-02-23 13:12:36 +0000 message: Add dummy return statements to the #ifdef UNIV_HOTBACKUP branches of some functions that are excluded from InnoDB Hot Backup builds. ------------------------------------------------------------ revno: 0.1.87 committer: osku timestamp: Thu 2006-02-23 11:35:28 +0000 message: Fix wrong placement of static keyword in a few places. ------------------------------------------------------------ revno: 0.1.86 committer: marko timestamp: Wed 2006-02-22 20:57:10 +0000 message: Merge r103 from hotbackup/trunk. os_file_create_tmpfile(): Remove the implementation #ifdef UNIV_HOTBACKUP. ------------------------------------------------------------ revno: 0.1.85 committer: osku timestamp: Wed 2006-02-22 12:48:49 +0000 message: Port r225 from branches/5.0: Fix memory allocation bug (by changing MY_WME to MY_FAE) in ha_innodb.cc:get_share. ------------------------------------------------------------ revno: 0.1.84 committer: osku timestamp: Tue 2006-02-21 12:37:54 +0000 message: Style cleanups: Convert spaces to tabs, remove trailing whitespace, other misc cleanups. ------------------------------------------------------------ revno: 0.1.83 committer: marko timestamp: Tue 2006-02-21 08:43:31 +0000 message: Merge r102 from hotbackup/trunk. Corrected some comments. os_file_create_tmpfile(): Remove the implementation from InnoDB Hot Backup. In InnoDB Hot Backup builds, do not define dict_casedn_str(), which is invoked in fil_load_single_table_tablespace() on Windows. This function depends on innobase_casedn_str() and my_casedn_str(). Define btr_check_node_ptr() and data_error only #ifdef UNIV_DEBUG. They are only being used in ut_ad() assertions. Replace the occurrences of the type uint with ulint, because InnoDB Hot Backup does not define any uint data type. Disable lock_validate() in InnoDB Hot Backup builds. Disable some unused static variables of srv0srv.c in InnoDB Hot Backup builds. Disable some srv_table_...() functions in InnoDB Hot Backup builds. Disable some unused static variables in srv0start.c in InnoDB Hot Backup builds. Disable io_handler_thread() in InnoDB Hot Backup builds. Disable srv_calc_low32() and srv_calc_high32() in InnoDB Hot Backup builds to avoid warnings about unused functions. In fil_node_open_file(), avoid bogus assertions in InnoDB Hot Backup builds. In fil_load_single_table_tablespace(), remove the call to dict_casedn_str(), as it depends on MySQL code. Copy the code of recv_reset_log_files_for_backup() from InnoDB Hot Backup. Disable innobase_mysql_cmp(), cmp_whole_field(), cmp_data_data_slow(), cmp_dtuple_rec_with_match() and cmp_rec_rec_with_match() in InnoDB Hot Backup builds, as they depend on MySQL code. Adapt dtype_set_mblen() and dtype_get_fixed_size() for InnoDB Hot Backup builds, assuming that they will only be called on system tables, which do not contain multi-byte characters. Disable the static functions row_ins_set_exclusive_rec_lock() and row_ins_dupl_error_with_rec() in InnoDB Hot Backup builds to avoid warnings about unused functions. In row_sel_field_store_in_mysql_format(), disable some UTF-8 related assertions #ifndef UNIV_RELEASE_NOT_YET_STABLE. ------------------------------------------------------------ revno: 0.1.82 committer: marko timestamp: Mon 2006-02-20 15:51:49 +0000 message: Fix typo in r216: replace 5.1.19 with 5.1.7 ------------------------------------------------------------ revno: 0.1.81 committer: marko timestamp: Mon 2006-02-20 15:42:49 +0000 message: Set FIL_PAGE_TYPE for every page, so that the field can be relied on in new tablespaces created from now on. btr_store_big_rec_extern_fields(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_BLOB. buf_page_print(): Decode FIL_PAGE_TYPE. Replace if-else with switch(). buf_page_create(): Set FIL_PAGE_PREV, FIL_PAGE_NEXT and FIL_PAGE_TYPE. trx_sysf_create(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_TRX_SYS. Initialize TRX_SYS_RSEG_SPACE. FIL_PAGE_TYPE: Document that the field cannot be relied on in older versions of MySQL/InnoDB. Add new type codes. ibuf_bitmap_page_init(): Document that the rest of the page is uninitialized. ibuf_add_free_page(): Log the setting of FIL_PAGE_TYPE. fsp_header_init(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_FSP_HDR. Initialize FSP_NOT_USED. fsp_fill_free_list(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_XDES. fsp_alloc_seg_inode_page(): Set FIL_PAGE_TYPE to FIL_PAGE_INODE. fseg_create_general(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_SYS. ------------------------------------------------------------ revno: 0.1.80 committer: osku timestamp: Mon 2006-02-20 12:38:10 +0000 message: Remove the concept of "field order", as we will not support descending order indexes. ------------------------------------------------------------ revno: 0.1.79 committer: osku timestamp: Mon 2006-02-20 12:12:22 +0000 message: Fix all function declarations to have the correct number of '=' characters. ------------------------------------------------------------ revno: 0.1.78 committer: osku timestamp: Mon 2006-02-20 07:51:37 +0000 message: Enhance InnoDB SQL parser: Add support for NOT NULL in column definitions. Support INTEGER as an alias for INT. Add pars/make_bison.sh to automate parser generation. ------------------------------------------------------------ revno: 0.1.77 committer: osku timestamp: Fri 2006-02-17 12:58:39 +0000 message: dtype_print(): Fix printing of prtype. ------------------------------------------------------------ revno: 0.1.76 committer: jan timestamp: Fri 2006-02-17 07:37:51 +0000 message: Merge r199 from branches/5.0: Port a change from MySQL. Bug#8841 - CHECKSUM TABLE is broken in MyISAM Fixed test results. ------------------------------------------------------------ revno: 0.1.75 committer: jan timestamp: Fri 2006-02-17 07:10:22 +0000 message: Port a change from MySQL: WL#1563 - Modify MySQL to support fast CREATE/DROP INDEX Change "duplicate key" message to print key name instead of key number. ------------------------------------------------------------ revno: 0.1.74 committer: osku timestamp: Thu 2006-02-16 14:01:42 +0000 message: Add support for BINARY(n) and BLOB types in the InnoDB SQL parser. ------------------------------------------------------------ revno: 0.1.73 committer: marko timestamp: Thu 2006-02-16 07:27:54 +0000 message: buf_block_init(): Reset magic_n, buf_fix_count and io_fix to avoid testing uninitialized variables. (Bug #17405) ------------------------------------------------------------ revno: 0.1.72 committer: marko timestamp: Wed 2006-02-15 09:15:54 +0000 message: sync_thread_add_level(): Replace the if-else if-else if-...-else chain with an equivalent switch block. ------------------------------------------------------------ revno: 0.1.71 committer: marko timestamp: Wed 2006-02-15 09:00:03 +0000 message: Replace assertions on constant conditions with preprocessor conditions. ------------------------------------------------------------ revno: 0.1.70 committer: marko timestamp: Mon 2006-02-13 12:07:01 +0000 message: Revert the changes to os0file.c that were accidentally committed in r181: os_file_create_tmpfile(): Replace the UNIV_HOTBACKUP specific implementation with a run-time assertion failure. ------------------------------------------------------------ revno: 0.1.69 committer: marko timestamp: Mon 2006-02-13 11:57:38 +0000 message: Revert r148 until MySQL AB has finally merged the code to the 5.1 tree: Port r146 from branches/5.0: Make innodb_flush_log_at_trx_commit a settable global variable. ------------------------------------------------------------ revno: 0.1.68 committer: osku timestamp: Mon 2006-02-13 09:44:33 +0000 message: Fix failing innodb.test (missing "connection default;"). ------------------------------------------------------------ revno: 0.1.67 committer: marko timestamp: Fri 2006-02-10 10:16:50 +0000 message: Merge r175 from branches/5.0: fil_extend_space_to_desired_size(): in UNIV_HOTBACKUP builds, do not touch srv_data_file_sizes[] or srv_n_data_files. ------------------------------------------------------------ revno: 0.1.66 committer: osku timestamp: Fri 2006-02-10 09:16:35 +0000 message: Apply InnoDB-specific parts of the fix for bug #9680, wrong error from cascading update. ------------------------------------------------------------ revno: 0.1.65 committer: osku timestamp: Thu 2006-02-09 15:44:27 +0000 message: Port r172 from branches/5.0: Fix bug #17126, CHECK TABLE blocking other queries, by releasing the btr_search_latch periodically during the adaptive hash table validation. ------------------------------------------------------------ revno: 0.1.64 committer: osku timestamp: Thu 2006-02-09 12:46:53 +0000 message: Port r170 from branches/5.0: Fix bug #16827, better error message if ibdata files omitted from my.cnf. ------------------------------------------------------------ revno: 0.1.63 committer: marko timestamp: Tue 2006-02-07 13:08:46 +0000 message: Remove the unused field fixed_offs from dict_field_t. ------------------------------------------------------------ revno: 0.1.62 committer: marko timestamp: Mon 2006-02-06 10:36:04 +0000 message: Merge r167 from branches/5.0: Add a missing newline to the LAST FOREIGN KEY ERROR section in SHOW INNODB STATUS output (Bug #16814). dict_foreign_error_report(): Always print a newline after invoking dict_print_info_on_foreign_key_in_create_format(). ------------------------------------------------------------ revno: 0.1.61 committer: marko timestamp: Mon 2006-02-06 09:08:58 +0000 message: Port r165 from branches/5.0: Port a change from MySQL: innodb_cache.test: save and restore query_cache_size ------------------------------------------------------------ revno: 0.1.60 committer: marko timestamp: Fri 2006-01-27 14:43:12 +0000 message: Port r161 from branches/5.0: Avoid breaking --with-debug builds on QNX and other systems whose compiler pretends to be GCC 2. univ.i: Outside __WIN__, define UNIV_INLINE as static inline. ------------------------------------------------------------ revno: 0.1.59 committer: marko timestamp: Fri 2006-01-27 10:17:02 +0000 message: Import mysql-5.1-new changeset 1.1945.48.1 (Anthony Curtis): Finalize storage engine plugins ha_innodb.cc: remove unwanted handlerton entries; changes for show status ------------------------------------------------------------ revno: 0.1.58 committer: marko timestamp: Fri 2006-01-27 09:57:01 +0000 message: Import mysql-5.1-new changeset 1.2012.1.8 (Sergei Golubchik): WL#2935 - SHOW STATUS support in plugins ha_innodb.cc, ha_innodb.h: s/struct show_var_st/SHOW_VAR/ ------------------------------------------------------------ revno: 0.1.57 committer: marko timestamp: Fri 2006-01-27 09:45:57 +0000 message: Import mysql-5.1-new changeset 1.2012.1.6 (Sergei Golubchik): Remove the declaration of innodb_export_status(), as it will from now on be invoked via a function pointer in innobase_hton. ------------------------------------------------------------ revno: 0.1.56 committer: marko timestamp: Fri 2006-01-27 09:41:19 +0000 message: Import mysql-5.1-new changeset 1.2011.1.1 (Alexander Barkov): WL#1324 table name to file name encoding ha_innobase::create(): do not remove .frm extension row_is_mysql_tmp_table_name(): replace '#' with '@0023' ------------------------------------------------------------ revno: 0.1.55 committer: marko timestamp: Fri 2006-01-27 09:34:55 +0000 message: Import those changes from mysql-5.1-new ChangeSet 1.1979 (Lars Thalmann) that were not part of r154. (Bug #3300) innodb.test, innodb.result: Remove binlog related tests, because they are not InnoDB specific; they merely require a transactional table. ha_innobase::ha_innobase(): Add HA_PRIMARY_KEY_ALLOW_RANDOM_ACCESS to table_flags. ha_innobase::rnd_init(): Disable semi-consistent read for random access. ------------------------------------------------------------ revno: 0.1.54 committer: marko timestamp: Thu 2006-01-26 13:12:11 +0000 message: Port r142 of branches/5.0 (from MySQL): NetWare specific change to increase thread stack size. ------------------------------------------------------------ revno: 0.1.53 committer: marko timestamp: Thu 2006-01-26 10:45:27 +0000 message: Implement semi-consistent read to reduce lock conflicts at the cost of breaking serializability. (Bug #3300) ha_innobase::unlock_row(): reset the "did semi consistent read" flag ha_innobase::was_semi_consistent_read(), ha_innobase::try_semi_consistent_read(): new methods row_prebuilt_t, row_create_prebuilt(): add field row_read_type for keeping track of semi-consistent reads row_vers_build_for_semi_consistent_read(), row_sel_build_committed_vers_for_mysql(): new functions row_search_for_mysql(): implement semi-consistent reads ------------------------------------------------------------ revno: 0.1.52 committer: marko timestamp: Tue 2006-01-24 12:13:44 +0000 message: Port r152 from branches/5.0: Account for a race condition when dropping the adaptive hash index for a B-tree page. (Bug #16582) btr_search_drop_page_hash_index(): Retry the operation if a hash index with different parameters was built meanwhile. Add diagnostics for the case that hash node pointers to the page remain. This fix is from Heikki. btr_search_info_update_hash(), btr_search_info_update_slow(): Document the parameter "info" as in/out. ------------------------------------------------------------ revno: 0.1.51 committer: marko timestamp: Mon 2006-01-23 13:47:55 +0000 message: Port r150 from branches/5.0: Port r19 from innodb-4.1/trunk: Keep track on unflushed modifications to file spaces. When there are tens of thousands of file spaces, flushing all files in fil_flush_file_spaces() would be very slow. (Bug #15653) fil_flush_file_spaces(): Only flush unflushed file spaces. fil_space_t, fil_system_t: Add a list of unflushed spaces. ------------------------------------------------------------ revno: 0.1.50 committer: osku timestamp: Fri 2006-01-20 17:20:52 +0000 message: Sync array optimizations, most importantly signal_object changed to not call os_event_set while holding the sync array mutex. Idea by Heikki, implementation by Osku, bug-fixes and other changes by Heikki, and final review and cleanup by Osku. ------------------------------------------------------------ revno: 0.1.49 committer: marko timestamp: Thu 2006-01-19 13:31:02 +0000 message: Port r146 from branches/5.0: Make innodb_flush_log_at_trx_commit a settable global variable. ------------------------------------------------------------ revno: 0.1.48 committer: marko timestamp: Thu 2006-01-19 13:30:20 +0000 message: Port r145 from branches/5.0: Make innodb_thread_concurrency 0 by default, and extend the useable range from 0 to 1000 (0 disables the thread throttling). Remove SRV_CONCURRENCY_THRESHOLD (20). The magic value to disable the thread throttling is 0 from now on. ------------------------------------------------------------ revno: 0.1.47 committer: osku timestamp: Wed 2006-01-18 10:56:36 +0000 message: Do not reset cell->wait_object to NULL when a cell in sync array is freed since this can lead to problems. ------------------------------------------------------------ revno: 0.1.46 committer: osku timestamp: Wed 2006-01-18 10:52:53 +0000 message: Port r139 from branches/5.0: From MySQL: Fix bug #15108 (mysqld crashes when innodb_log_file_size is set > 4GB). ------------------------------------------------------------ revno: 0.1.45 committer: osku timestamp: Tue 2006-01-17 14:49:11 +0000 message: Remove incorrect warning printed in sync0arr.c. ------------------------------------------------------------ revno: 0.1.44 committer: osku timestamp: Tue 2006-01-17 14:02:20 +0000 message: Port r136 from branches/5.0 (slightly tweaked for 5.1): Add BUILD/compile-innodb script. ------------------------------------------------------------ revno: 0.1.43 committer: jan timestamp: Tue 2006-01-17 13:08:48 +0000 message: Forward port r133 from branches/5.0: Remember to use noninlined versions of the functions on ha_innodb.cc ! ------------------------------------------------------------ revno: 0.1.42 committer: marko timestamp: Thu 2006-01-12 16:48:34 +0000 message: Port r132 from branches/5.0: Port r15 from innodb-4.1: Do not mistake TABLENAME_ibfk_0 for auto-generated id (Bug #16387). dict_table_get_highest_foreign_id(): Ignore foreign constraint identifiers starting with the pattern TABLENAME_ibfk_0. innodb.test, innodb.result: Add test case. ------------------------------------------------------------ revno: 0.1.41 committer: osku timestamp: Thu 2006-01-12 09:20:15 +0000 message: Forward port r123 from branches/5.0: Replace goto in os_event_wait with a normal loop. ------------------------------------------------------------ revno: 0.1.40 committer: jan timestamp: Thu 2006-01-12 09:16:11 +0000 message: Forward port r127 from branches/5.0: Fixed a bug #16229 MySQL/InnoDB uses full explicit table locks in trigger processing. Take a InnoDB table lock only if user has explicitly requested a table lock. Added some additional comments to store_lock() and external_lock(). Added test cases for a bug. Fixed some code style errors. ------------------------------------------------------------ revno: 0.1.39 committer: jan timestamp: Thu 2006-01-12 08:58:56 +0000 message: Forward port r108 from from branches/5.0: Fixed bug #15308: Problem of Order with Enum Column in Primary Key. Added a new test case for bug #14056. ------------------------------------------------------------ revno: 0.1.38 committer: jan timestamp: Thu 2006-01-12 08:42:46 +0000 message: Forward port r120 from branches/5.0: Added diagnostic code trx_print() to innobase_query_caching_of_table_permitted() to find reason why we are holding adaptive search latch. ------------------------------------------------------------ revno: 0.1.37 committer: marko timestamp: Wed 2006-01-11 13:19:16 +0000 message: Port r125 from branches/5.0: dict_load_columns(): Set the charset-collation code DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns that lack a charset-collation code, i.e., the tables were created with an older version of MySQL/InnoDB than 4.1.2. (Bug #16298) ------------------------------------------------------------ revno: 0.1.36 committer: osku timestamp: Tue 2006-01-10 11:38:47 +0000 message: Forward port r121 from branches/5.0: Optimize sync array behavior by not having the woken threads reserve the sync array mutex. ------------------------------------------------------------ revno: 0.1.35 committer: marko timestamp: Thu 2006-01-05 07:54:34 +0000 message: Port r118 from branches/5.0: Remove some declarations of unused global variables and member variables of class ha_innobase. ------------------------------------------------------------ revno: 0.1.34 committer: osku timestamp: Wed 2006-01-04 12:52:45 +0000 message: Forward port r115 from branches/5.0: Fix bug #16157, a crash when innodb_log_group_home_dir is set to an empty string. This patch is from Heikki. ------------------------------------------------------------ revno: 0.1.33 committer: marko timestamp: Tue 2006-01-03 13:54:05 +0000 message: Port r114 from branches/5.0: lock_rec_unlock(): Initialize local variable release_lock, in order to avoid dereferencing an uninitialized pointer when no lock exists on rec. This bug was introduced in r103 of branches/5.0, ported as r104 to trunk. ------------------------------------------------------------ revno: 0.1.32 committer: marko timestamp: Tue 2006-01-03 13:36:55 +0000 message: Merge r112 from branches/5.0: os_file_handle_error(): Map the error codes EXDEV, ENOTDIR, and EISDIR to the new code OS_FILE_PATH_ERROR. Treat this code as OS_FILE_PATH_ERROR. This fixes the crash on RENAME TABLE when the .ibd file is a symbolic link to a different file system. (Bug #15991) ------------------------------------------------------------ revno: 0.1.31 committer: marko timestamp: Fri 2005-12-30 12:39:17 +0000 message: Port r110 from branches/5.0: Do not log empty binlog file name at transaction commit. trx_commit_off_kernel(): Do not write empty trx->mysql_log_file_name. ------------------------------------------------------------ revno: 0.1.30 committer: marko timestamp: Tue 2005-12-20 15:22:49 +0000 message: Port r106 from branches/5.0: Protect the increment and decrement operations on the statistic variables os_n_pending_writes and os_n_pending_reads with os_file_count_mutex. ------------------------------------------------------------ revno: 0.1.29 committer: osku timestamp: Tue 2005-12-20 09:41:30 +0000 message: From MySQL: Restore "make dist" for the header files in "innobase/include". ------------------------------------------------------------ revno: 0.1.28 committer: jan timestamp: Fri 2005-12-16 07:21:33 +0000 message: Port r103 from braches/5.0 to trunk. Fixed a bug on unlock_row. In a unlock_row we may unlock only the latest lock granted to this transaction to the row. ------------------------------------------------------------ revno: 0.1.27 committer: osku timestamp: Thu 2005-12-15 10:53:54 +0000 message: From MySQL: Fix for BUG#11704: "Found locks from different thread" warnings: The source of warnings was this scenario in OPTIMIZE: thr1: lock table with TL_WRITE_ONLY (InnoDB converts lock to TL_WRITE_ALLOW_WRITE) thr2: (UPDATE command) obtains a TL_WRITE_ALLOW_WRITE lock thr1: call mysql_lock_abort(). This function sets type of thr'1 lock to TL_WRITE_ONLY thr2: try to release thr2's lock. See two locks: TL_WRITE_ONLY, TL_WRITE_ALLOW_WRITE and produce a warning. The fix: Make InnoDB not to convert TL_WRITE_ONLY locks to TL_WRITE_ALLOW_WRITE in OPTIMIZE TABLE. ------------------------------------------------------------ revno: 0.1.26 committer: jan timestamp: Thu 2005-12-15 07:00:12 +0000 message: Port r100 from branches/5.0 to trunk. ------------------------------------------------------------ revno: 0.1.25 committer: marko timestamp: Wed 2005-12-14 14:05:34 +0000 message: Port r98 from branches/5.0: INCOMPATIBLE CHANGE: Do not pad VARBINARY or BINARY columns. (Bug #14189) innodb.test, innodb.result: Add test cases for foreign key constraints between VARBINARY and BINARY columns, and between VARCHAR BINARY and CHAR BINARY columns. innobase_init(): Assert that DATA_MYSQL_BINARY_CHARSET_COLL == my_charset_bin.number. dtype_get_pad_char(): Do not pad VARBINARY or BINARY columns. row_ins_cascade_calc_update_vec(): Refuse ON UPDATE CASCADE when trying to change the length of a VARBINARY column that refers to or is referenced by a BINARY column. BINARY columns are no longer padded on comparison, and thus they cannot be padded on storage either. ------------------------------------------------------------ revno: 0.1.24 committer: osku timestamp: Mon 2005-12-12 12:42:41 +0000 message: Port r95 and r96 from branches/5.0 to trunk: Add tests for >1K keys on 32-bit platforms. Clean up innodb_gis.test. ------------------------------------------------------------ revno: 0.1.23 committer: jan timestamp: Mon 2005-12-12 11:18:31 +0000 message: trunk: Port a fix for bug #15308 Problem of Order with Enum Column in Primary Key from branches/5.0. ------------------------------------------------------------ revno: 0.1.22 committer: marko timestamp: Fri 2005-12-09 12:57:48 +0000 message: row_ins_foreign_report_add_err(): When printing the parent record, use the index in the parent table rather than the index in the child table. (Bug #15550) innodb.test, innodb.result: Add test cases for foreign key errors. ------------------------------------------------------------ revno: 0.1.21 committer: marko timestamp: Fri 2005-12-09 07:46:45 +0000 message: trunk: Remove error introduced in r87 of branches/5.0, ported in r88: In row_ins_set_detailed(), truncate the tmpfile by os_file_set_eof(), because trx_set_detailed_error_from_file() does not call ftell() to determine the actual length of the file. This bug resulted in trash being appended to foreign key error messages. ------------------------------------------------------------ revno: 0.1.20 committer: osku timestamp: Thu 2005-12-08 14:27:09 +0000 message: Port r87 from branches/5.0: Work around Bug #12071: Do not call os_file_create_tmpfile() at runtime. Instead, create all tempfiles at startup and guard access to them with mutexes. ------------------------------------------------------------ revno: 0.1.19 committer: osku timestamp: Fri 2005-12-02 08:22:49 +0000 message: innodb.result: Fix things to match with latest MySQL changes. ------------------------------------------------------------ revno: 0.1.18 committer: osku timestamp: Thu 2005-12-01 14:20:36 +0000 message: Reintroduce geometry support that was temporarily removed in r4. ------------------------------------------------------------ revno: 0.1.17 committer: osku timestamp: Wed 2005-11-30 12:31:55 +0000 message: From MySQL: We new use TABLE_SHARE instead of TABLE when creating engine handlers. ------------------------------------------------------------ revno: 0.1.16 committer: osku timestamp: Wed 2005-11-30 12:30:36 +0000 message: From MySQL: innobase_savepoint(): Replaced check which always failed due to similar check in caller with assertion. ------------------------------------------------------------ revno: 0.1.15 committer: osku timestamp: Wed 2005-11-30 12:29:46 +0000 message: From MySQL: Fixed compiler error for Win32 build. ------------------------------------------------------------ revno: 0.1.14 committer: osku timestamp: Tue 2005-11-29 11:10:15 +0000 message: Support >4GB buffer pool and log files on 64-bit Windows. Fixes bug #12701. Synced from MySQL. ------------------------------------------------------------ revno: 0.1.13 committer: marko timestamp: Thu 2005-11-17 09:00:25 +0000 message: Port r53 from branches/5.0: Make comments about buf_block_t::index more accurate. ------------------------------------------------------------ revno: 0.1.12 committer: marko timestamp: Wed 2005-11-16 15:10:37 +0000 message: Merge patch to MySQL/InnoDB 5.0: Fix Bug #14747. Note that buf_block_t::index should be protected by btr_search_latch or an s-latch or x-latch on the index page. btr_search_drop_page_hash_index(): Read block->index while holding btr_search_latch and use the cached value in the loop. Remove some redundant assertions. ------------------------------------------------------------ revno: 0.1.11 committer: osku timestamp: Wed 2005-11-16 07:26:20 +0000 message: Forward-port r46 from branches/5.0: Mostly fix bug #13778, when FOREIGN_KEY_CHECKS=0 we still need to check that datatypes between foreign key references are compatible. Add test cases (also for bug #9802). ------------------------------------------------------------ revno: 0.1.10 committer: osku timestamp: Mon 2005-11-07 13:52:11 +0000 message: export.sh: Store log messages in export directory and refactor operations to avoid warnings. ------------------------------------------------------------ revno: 0.1.9 committer: osku timestamp: Fri 2005-11-04 14:20:11 +0000 message: Fix comments for memory allocation functions and add some extra checks. Adapt callers. ------------------------------------------------------------ revno: 0.1.8 committer: osku timestamp: Fri 2005-11-04 10:57:22 +0000 message: Check index column sizes in a better way (bug #13315). ------------------------------------------------------------ revno: 0.1.7 committer: osku timestamp: Fri 2005-11-04 07:53:04 +0000 message: Add compile-innodb-debug and modify setup.sh to copy it to ../BUILD. ------------------------------------------------------------ revno: 0.1.6 committer: osku timestamp: Fri 2005-11-04 07:44:33 +0000 message: Delete db/db0err.h and db directory. ------------------------------------------------------------ revno: 0.1.5 committer: marko timestamp: Thu 2005-11-03 11:23:49 +0000 message: Remove include/Makefile.am and the references to it. ------------------------------------------------------------ revno: 0.1.4 committer: osku timestamp: Thu 2005-10-27 09:37:17 +0000 message: include/Makefile.am: Remove reference to removed makefilewin.i. ------------------------------------------------------------ revno: 0.1.3 committer: osku timestamp: Thu 2005-10-27 07:51:34 +0000 message: Add 5.0 -> 5.1 changes. ------------------------------------------------------------ revno: 0.1.2 committer: osku timestamp: Thu 2005-10-27 07:29:40 +0000 message: Import 5.0 code. ------------------------------------------------------------ revno: 0.1.1 committer: osku timestamp: Thu 2005-10-27 07:02:45 +0000 message: Create directory structure. ------------------------------------------------------------ revno: 2555.764.14 committer: Kristofer Pettersson branch nick: mysql-5.1-bugteam timestamp: Mon 2010-05-03 18:14:39 +0200 message: Bug#50373 --secure-file-priv="" Iterative patch improvement. Previously committed patch caused wrong result on Windows. The previous patch also broke secure_file_priv for symlinks since not all file paths which must be compared against this variable are normalized using the same norm. The server variable opt_secure_file_priv wasn't normalized properly and caused the operations LOAD DATA INFILE .. INTO TABLE .. and SELECT load_file(..) to do different interpretations of the --secure-file-priv option. The patch moves code to the server initialization routines so that the path always is normalized once and only once. It was also intended that setting the option to an empty string should be equal to lifting all previously set restrictions. This is also fixed by this patch. ------------------------------------------------------------ revno: 2555.764.13 [merge] committer: Alexey Kopytov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-04-30 15:27:17 +0400 message: Automerge. ------------------------------------------------------------ revno: 2555.771.1 committer: Alexey Kopytov branch nick: my51-bug48419 timestamp: Fri 2010-04-30 15:10:48 +0400 message: Bug #48419: another explain crash.. WHERE predicates containing references to empty tables in a subquery were handled incorrectly by the optimizer when executing EXPLAIN. As a result, the optimizer could try to evaluate such predicates rather than just stop with "Impossible WHERE noticed after reading const tables" as it would do in a non-subquery case. This led to valgrind errors and crashes. Fixed the code checking the above condition so that subqueries are not excluded and hence are handled in the same way as top level SELECTs. ------------------------------------------------------------ revno: 2555.764.12 [merge] committer: Davi Arnaut branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-29 20:18:19 -0300 message: Manual merge. ------------------------------------------------------------ revno: 1810.3989.14 committer: Davi Arnaut branch nick: 50974-5.0 timestamp: Thu 2010-04-29 10:28:16 -0300 message: Bug#50974: Server keeps receiving big (> max_allowed_packet) packets indefinitely. The server could be tricked to read packets indefinitely if it received a packet larger than the maximum size of one packet. This problem is aggravated by the fact that it can be triggered before authentication. The solution is to no skip big packets for non-authenticated sessions. If a big packet is sent before a session is authen- ticated, a error is returned and the connection is closed. ------------------------------------------------------------ revno: 2555.764.11 committer: Davi Arnaut branch nick: 50755-5.1 timestamp: Thu 2010-04-01 10:15:22 -0300 message: Bug#50755: Crash if stored routine def contains version comments The problem was that a syntactically invalid trigger could cause the server to crash when trying to list triggers. The crash would happen due to a mishap in the backup/restore procedure that should protect parser items which are not associated with the trigger. The backup/restore is used to isolate the parse tree (and context) of a statement from the load (and parsing) of a trigger. In this case, a error during the parsing of a trigger could cause the improper backup/restore sequence. The solution is to properly restore the original statement context before the parser is exited due to syntax errors in the trigger body. ------------------------------------------------------------ revno: 2555.764.10 [merge] committer: Ramil Kalimullin branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-29 08:54:09 +0400 message: Manual merge. ------------------------------------------------------------ revno: 1810.3989.13 committer: Ramil Kalimullin branch nick: b53237-5.0-bugteam timestamp: Thu 2010-04-29 08:42:32 +0400 message: Fix for bug #53237: mysql_list_fields/COM_FIELD_LIST stack smashing Problem: "COM_FIELD_LIST is an old command of the MySQL server, before there was real move to only SQL. Seems that the data sent to COM_FIELD_LIST( mysql_list_fields() function) is not checked for sanity. By sending long data for the table a buffer is overflown, which can be used deliberately to include code that harms". Fix: check incoming data length. ------------------------------------------------------------ revno: 2555.764.9 committer: Georgi Kodinov branch nick: B47453-5.1-bugteam timestamp: Wed 2010-04-28 15:55:54 +0300 message: Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when JOINed during an UPDATE Extended the fix for bug 29310 to multi-table update: When a table is being updated it has two set of fields - fields required for checks of conditions and fields to be updated. A storage engine is allowed not to retrieve columns marked for update. Due to this fact records can't be compared to see whether the data has been changed or not. This makes the server always update records independently of data change. Now when an auto-updatable timestamp field is present and server sees that a table handle isn't going to retrieve write-only fields then all of such fields are marked as to be read to force the handler to retrieve them. ------------------------------------------------------------ revno: 2555.764.8 [merge] committer: Vladislav Vaintroub branch nick: mysql-5.1-bugteam timestamp: Tue 2010-04-27 11:29:45 +0200 message: merge ------------------------------------------------------------ revno: 2555.770.1 [merge] committer: Alexey Kopytov branch nick: mysql-5.1-bugteam timestamp: Tue 2010-04-27 00:46:52 +0400 message: Null merge. ------------------------------------------------------------ revno: 1810.3989.12 committer: Alexey Kopytov branch nick: mysql-5.0-bugteam timestamp: Tue 2010-04-27 00:06:00 +0400 message: Backport of the fix for bug #50335 to 5.0. The problem was in an incorrect debug assertion. The expression used in the failing assertion states that when finding references matching ORDER BY expressions, there can be only one reference to a single table. But that does not make any sense, all test cases for this bug are valid examples with multiple identical WHERE expressions referencing the same table which are also present in the ORDER BY list. Fixed by removing the failing assertion. We also have to take care of the 'found' counter so that we count multiple references only once. We rely on this fact later in eq_ref_table(). ------------------------------------------------------------ revno: 2555.764.7 committer: Vladislav Vaintroub branch nick: mysql-5.1-bugteam timestamp: Mon 2010-04-26 23:59:50 +0200 message: Bug #48042 The description for Event ID ( 100 ) in Source ( MySQL ) cannot be found. The problem is that message resource (message.rc) is compiled as part of static library sql.lib rather than with executable mysqld.exe. resource files do not work in static libraries. The fix is to add message.rc to mysqld.exe source files list. ------------------------------------------------------------ revno: 2555.764.6 committer: Ramil Kalimullin branch nick: b50946-5.1-bugteam timestamp: Sun 2010-04-25 15:06:40 +0400 message: Fix for bug#50946: fast index creation still seems to copy the table Problem: ALTER TABLE ADD INDEX may lead to table copying if there's numeric field(s) with non-default display width modificator specified. Fix: compare numeric field's storage lenghts when we decide whether they can be considered 'equal' for table alteration purposes. ------------------------------------------------------------ revno: 2555.764.5 committer: Staale Smedseng branch nick: 46261-51 timestamp: Thu 2010-04-22 15:52:00 +0200 message: Bug#46261 Plugins can be installed with --skip-grant-tables Previously installed dynamic plugins are explicitly not loaded on startup with --skip-grant-tables enabled. However, INSTALL PLUGIN/UNINSTALL PLUGIN commands are allowed, and result in inconsistent error messages (reporting duplicate plugin or plugin does not exist). This patch adds a check for --skip-grant-tables mode, and returns error ER_OPTION_PREVENTS_STATEMENT to the user when the above commands are attempted. ------------------------------------------------------------ revno: 2555.764.4 [merge] committer: Kristofer Pettersson branch nick: mysql-5.1-bugteam timestamp: Tue 2010-04-20 20:19:20 +0200 message: automerge ------------------------------------------------------------ revno: 2555.769.1 committer: Staale Smedseng branch nick: 51591-51 timestamp: Mon 2010-04-19 15:48:37 +0200 message: Bug#51591 deadlock in the plugins+status+variables Unlocking/locking of LOCK_plugin in ha_ndbcluster.cc not needed anymore (but missing from the initial patch). ------------------------------------------------------------ revno: 2555.764.3 committer: Kristofer Pettersson branch nick: mysql-5.1-bugteam timestamp: Tue 2010-04-20 16:17:34 +0200 message: Bug#50373 --secure-file-priv="" Correcting a patch misstake. The converted file path is placed in 'buff' not in opt_secure_file_priv. ------------------------------------------------------------ revno: 2555.764.2 [merge] committer: Kristofer Pettersson branch nick: mysql-5.1-bugteam timestamp: Fri 2010-04-16 16:56:16 +0200 message: Automerge ------------------------------------------------------------ revno: 2555.725.94 committer: Staale Smedseng branch nick: 51591-51 timestamp: Fri 2010-04-16 15:02:23 +0200 message: Bug#51591 deadlock in the plugins+status+variables Potential deadlock situation involving LOCK_plugin, LOCK_global_system_variables and LOCK_status. This patch backports the fix from next-mr, unlocking LOCK_plugin before calling plugin->init() and add_status_vars(). ------------------------------------------------------------ revno: 2555.725.93 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-04-16 16:42:34 +0500 message: Bug#52124 memory leaks like a sieve in datetime, timestamp, time, date fields + warnings Arg_comparator initializes 'comparators' array in case of ROW comparison and does not free this array on destruction. It leads to memory leaks. The fix: -added Arg_comparator::cleanup() method which frees 'comparators' array. -added Item_bool_func2::cleanup() method which calls Arg_comparator::cleanup() method ------------------------------------------------------------ revno: 2555.725.92 committer: Georgi Kodinov branch nick: B52629-5.1-bugteam timestamp: Fri 2010-04-16 10:30:53 +0300 message: Bug #52629: memory leak from sys_var_thd_dbug in binlog.binlog_write_error When re-setting (SET GLOBAL debug='') the GLOBAL debug settings the server was not freeing the data elements from the top (initial) frame before setting them to 0 without freeing the underlying memory. As these are global settings there's a chance that something is there already. Fixed by : 1. making sure the allocated data are cleaned up before re-setting them while parsing a debug string 2. making sure the stuff allocated in the global settings is freed on shutdown. ------------------------------------------------------------ revno: 2555.725.91 [merge] committer: Luis Soares branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-04-16 01:59:21 +0100 message: automerge: merged bug clone into latest mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.768.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Mon 2010-03-22 09:51:16 +0000 message: BUG#51987: revoke privileges logs wrong error code A failed REVOKE statement is logged with error=0, thus causing the slave to stop. The slave should not stop as this was an expected error. Given that the execution failed on the master as well the error code should be logged so that the slave can replay the statement, get an error and compare with the master's execution outcome. If errors match, then slave can proceed with replication, as the error it got, when replaying the statement, was expected. In this particular case, the bug surfaces because the error code is pushed to the THD diagnostics area after writing the event to the binary log. Therefore, it would be logged with the THD diagnostics area clean, hence its error code would not contain the correct code. We fix this by moving the error reporting ahead of the call to the routine that writes the event to the binary log. ------------------------------------------------------------ revno: 2555.725.90 [merge] committer: Georgi Kodinov branch nick: vers_upd-5.1-bugteam timestamp: Thu 2010-04-15 14:00:07 +0300 message: merge ------------------------------------------------------------ revno: 2555.766.2 [merge] author: sunanda.menon@sun.com committer: MySQL Build Team branch nick: mysql-5.1 timestamp: Mon 2010-04-12 12:12:20 +0200 message: Merge from mysql-5.1.43sp1-release ------------------------------------------------------------ revno: 2555.767.13 tags: mysql-5.1.43sp1 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Thu 2010-03-25 11:17:29 +0100 message: Backport of "Bug #50409 Solaris 8 compatibility broken by assumption about printstack() being present" ------------------------------------------------------------ revno: 2555.767.12 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:53:23 +0100 message: Backport into build-201003230706-5.1.43sp1 > ------------------------------------------------------------ > revno: 3345.2.1 > revision-id: joro@sun.com-20100218084815-53nb9oonzd7r4gmj > parent: sergey.glukhov@sun.com-20100217121457-jqx19u6x387rgk7e > committer: Georgi Kodinov > branch nick: fix-5.1-bugteam > timestamp: Thu 2010-02-18 10:48:15 +0200 > message: > Bug #51049: main.bug39022 fails in mysql-trunk-merge > > Fixed the test to behave correctly with ps-protocol > and binlog format row. > ------------------------------------------------------------ > revno: 3333.1.6 > revision-id: joro@sun.com-20100129093628-sze9cv0neu0xbabm > parent: davi.arnaut@sun.com-20100128215140-x0w6fe2de0b28opp > committer: Georgi Kodinov > branch nick: B49552-5.1-bugteam > timestamp: Fri 2010-01-29 11:36:28 +0200 > message: > Bug #49552 : sql_buffer_result cause crash + not found records > in multitable delete/subquery > > SQL_BUFFER_RESULT should not have an effect on non-SELECT > statements according to our documentation. > Fixed by not passing it through to multi-table DELETE (similarly > to how it's done for multi-table UPDATE). ------------------------------------------------------------ revno: 2555.767.11 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:50:26 +0100 message: Backporting for 5.1.43sp1 ,file added mysql-test/include/not_binlog_format_row.inc ------------------------------------------------------------ revno: 2555.767.10 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:18:38 +0100 message: Backport into build-201003230706-5.1.43sp1 > ------------------------------------------------------------ > revno: 3333.1.31 > revision-id: joro@sun.com-20091223104518-o29t0i3thgs7wgm1 > parent: sergey.glukhov@sun.com-20100205093946-bx1hsljxlm12h7uf > committer: Georgi Kodinov > branch nick: B39022-5.1-bugteam > timestamp: Wed 2009-12-23 12:45:18 +0200 > message: > Bug #39022: Mysql randomly crashing in lock_sec_rec_cons_read_sees > > flush_cached_records() was not correctly checking for errors after calling > Item::val_xxx() methods. The expressions may contain subqueries > or stored procedures that cause errors that should stop the statement. > Fixed by correctly checking for errors and propagating them up the call stack. > ------------------------------------------------------------ > revno: 3358 > revision-id: sergey.glukhov@sun.com-20100226113925-mxwn1hfxe3l8khc4 > parent: gshchepa@mysql.com-20100225191311-1x71dkk0h5e1alvx > committer: Sergey Glukhov > branch nick: mysql-5.1-bugteam > timestamp: Fri 2010-02-26 15:39:25 +0400 > message: > Bug#50995 Having clause on subquery result produces incorrect results. > The problem is that cond->fix_fields(thd, 0) breaks > condition(cuts off 'having'). The reason of that is > that NULL valued Item pointer is present in the > middle of Item list and it breaks the Item processing > loop. ------------------------------------------------------------ revno: 2555.767.9 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:16:49 +0100 message: Backporting of 5.1.43sp1 release, files mysql-test/r/bug39022.result, mysql-test/t/bug39022.test added ------------------------------------------------------------ revno: 2555.767.8 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:11:57 +0100 message: Backport into build-201003230706-5.1.43sp1 > ------------------------------------------------------------ > revno: 3333.1.11 [merge] > revision-id: joro@sun.com-20100201115030-hgvq6489bt0w3rty > parent: li-bing.song@sun.com-20100130124925-o6sfex42b6noyc6x > parent: joro@sun.com-20100201114016-jylx4hivgqbs0vg2 > committer: Georgi Kodinov > branch nick: test-5.1-bugteam > timestamp: Mon 2010-02-01 13:50:30 +0200 > message: > merge > ------------------------------------------------------------ > Use --include-merges or -n0 to see merged revisions. ------------------------------------------------------------ revno: 2555.767.7 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:10:21 +0100 message: Backport into build-201003230706-5.1.43sp1 > ------------------------------------------------------------ > revno: 3333.1.7 [merge] > revision-id: ramil@mysql.com-20100129110849-1nm85j95594epnme > parent: joro@sun.com-20100129093628-sze9cv0neu0xbabm > parent: ramil@mysql.com-20100129091757-81r640na2t5bzbiz > committer: Ramil Kalimullin > branch nick: mysql-5.1-bugteam > timestamp: Fri 2010-01-29 15:08:49 +0400 > message: > Auto-merge. > ------------------------------------------------------------ > Use --include-merges or -n0 to see merged revisions. ------------------------------------------------------------ revno: 2555.767.6 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:08:44 +0100 message: Backport into build-201003230706-5.1.43sp1 > ------------------------------------------------------------ > revno: 3329.2.3 > revision-id: svoj@sun.com-20100122095702-e18xzhmyll1e5s25 > parent: svoj@sun.com-20100122095632-j8ssd5csnlzp1zpf > committer: Sergey Vojtovich > branch nick: mysql-5.1-bugteam > timestamp: Fri 2010-01-22 13:57:02 +0400 > message: > Applying InnoDB snapshot, fixes BUG#46193. > > Detailed revision comments: > > r6424 | marko | 2010-01-12 12:22:19 +0200 (Tue, 12 Jan 2010) | 16 lines > branches/5.1: In innobase_initialize_autoinc(), do not attempt to read > the maximum auto-increment value from the table if > innodb_force_recovery is set to at least 4, so that writes are > disabled. (Bug #46193) > > innobase_get_int_col_max_value(): Move the function definition before > ha_innobase::innobase_initialize_autoinc(), because that function now > calls this function. > > ha_innobase::innobase_initialize_autoinc(): Change the return type to > void. Do not attempt to read the maximum auto-increment value from > the table if innodb_force_recovery is set to at least 4. Issue > ER_AUTOINC_READ_FAILED to the client when the auto-increment value > cannot be read. > > rb://144 by Sunny, revised by Marko ------------------------------------------------------------ revno: 2555.767.5 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:06:50 +0100 message: Backport into build-201003230706-5.1.43sp1 > ------------------------------------------------------------ > revno: 3324 > revision-id: joro@sun.com-20091223151122-ada73up1yydh0emt > parent: joro@sun.com-20100119124841-38vva51cuq3if7dc > committer: Georgi Kodinov > branch nick: B49512-5.1-bugteam > timestamp: Wed 2009-12-23 17:11:22 +0200 > message: > Bug #49512 : subquery with aggregate function crash > subselect_single_select_engine::exec() > > When a subquery doesn't need to be evaluated because > it returns only aggregate functions and these aggregates > can be calculated from the metadata about the table it > was not updating all the relevant members of the JOIN > structure to reflect that this is a constant query. > This caused problems to the enclosing subquery > ('<> SOME' in the test case above) trying to read some > data about the tables. > > Fixed by setting const_tables to the number of tables > when the SELECT is optimized away. ------------------------------------------------------------ revno: 2555.767.4 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:05:17 +0100 message: Backport into build-201003230706-5.1.43sp1 > ------------------------------------------------------------ > revno: 3315.1.1 > revision-id: mattias.jonsson@sun.com-20100118164918-afjah8vmey4ya4ox > parent: joro@sun.com-20100115090646-0g4tjrmqf20axlpv > committer: Mattias Jonsson > branch nick: b47343-51-bt > timestamp: Mon 2010-01-18 17:49:18 +0100 > message: > Bug#47343: InnoDB fails to clean-up after lock wait timeout on > REORGANIZE PARTITION > > There were several problems which lead to this this, > all related to bad error handling. > > 1) There was several bugs preventing the ddl-log to be used for > cleaning up created files on error. > > 2) The error handling after the copy partition rows did not close > and unlock the tables, resulting in deletion of partitions > which were in use, which lead InnoDB to put the partition to > drop in a background queue. > ------------------------------------------------------------ > revno: 3325 > revision-id: mattias.jonsson@sun.com-20100119160251-0xvcgzw0y08xwk6r > parent: joro@sun.com-20091223151122-ada73up1yydh0emt > committer: Mattias Jonsson > branch nick: topush-51-bugteam > timestamp: Tue 2010-01-19 17:02:51 +0100 > message: > post-push patch for bug#47343. > > Missing ha_rnd_end in copy_partitions, found due to a > DBUG_ASSERT in mysql-pe ------------------------------------------------------------ revno: 2555.767.3 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 13:02:25 +0100 message: Backporting to 5.1.43sp1 patch ------------------------------------------------------------ revno: 2555.767.2 committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Wed 2010-03-24 10:45:18 +0100 message: Backport into build-201003230706-5.1.43sp1 > ------------------------------------------------------------ > revno: 3302.1.1 > revision-id: kristofer.pettersson@sun.com-20100113113900-o3m4jcm4l6qzum57 > parent: dao-gang.qu@sun.com-20091231040419-i5dnn06ahs256qcy > committer: Kristofer Pettersson > branch nick: mysql-5.1-bugteam > timestamp: Wed 2010-01-13 12:39:00 +0100 > message: > Bug#33982 debug assertion and crash reloading grant tables after sighup or kill > > In certain rare cases when a process was interrupted > during a FLUSH PRIVILEGES operation the diagnostic > area would be set to an error state but the function > responsible for the operation would still signal > success. This would lead to a debug assertion error > later on when the server would attempt to reset the > DA before sending the error message. > > This patch fixes the issue by assuring that > reload_acl_and_cache() always fails if an error > condition is raised. > > The second issue was that a KILL could cause > a console error message which referred to a DA > state without first making sure that such a > state existed. > > This patch fixes this issue in two different > palces by first checking DA state before > fetching the error message. > > ------------------------------------------------------------ revno: 2555.767.1 author: sunanda.menon@sun.com committer: MySQL Build Team branch nick: mysql-5.1.43sp1-release timestamp: Tue 2010-03-23 08:18:05 +0100 message: Set version number for mysql-5.1.43sp1 release ------------------------------------------------------------ revno: 2555.766.1 author: hery.ramilison@sun.com committer: MySQL Build Team branch nick: mysql-5.1 timestamp: Tue 2010-04-06 15:57:33 +0200 message: Raise version number after cloning 5.1.46 ------------------------------------------------------------ revno: 2555.725.89 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Wed 2010-04-14 15:53:43 +0400 message: Merge fix for BUG39053 to 5.1-bugteam. ------------------------------------------------------------ revno: 2555.765.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug39053 timestamp: Wed 2010-04-14 13:53:59 +0400 message: BUG#39053 - UNISTALL PLUGIN does not allow the storage engine to cleanup open connections It was possible to UNINSTALL storage engine plugin when binding between THD object and storage engine is still active (e.g. in the middle of transaction). To avoid unclean deactivation (uninstall) of storage engine plugin in the middle of transaction, additional storage engine plugin lock is acquired by thd_set_ha_data(). If ha_data is not null and storage engine plugin was not locked by thd_set_ha_data() in this connection before, storage engine plugin gets locked. If ha_data is null and storage engine plugin was locked by thd_set_ha_data() in this connection before, storage engine plugin lock gets released. If handlerton::close_connection() didn't reset ha_data, server does it immediately after calling handlerton::close_connection(). Note that this is just a framework fix, storage engines must switch to thd_set_ha_data() from thd_ha_data() if they want to see fit. ------------------------------------------------------------ revno: 2555.725.88 committer: Georgi Kodinov branch nick: B43594-5.1-bugteam timestamp: Mon 2010-04-12 11:56:28 +0300 message: Bug #43594: mysqlhotcopy does not ignore log tables and others in mysql database Added a filter to mysqlhotcopy to filter out the same tables in the 'mysql' database that mysqldump filters out. ------------------------------------------------------------ revno: 2555.725.87 committer: Davi Arnaut branch nick: mysql-5.1-bugteam timestamp: Fri 2010-04-09 14:57:11 -0300 message: Backport revision alik@sun.com-20100223131824-comthndat57kx8s5: Add ignore pattern for valgrind messages. ------------------------------------------------------------ revno: 2555.725.86 committer: Georgi Kodinov branch nick: B47095-5.1-bugteam timestamp: Fri 2010-04-09 14:47:18 +0300 message: Bug #47095: Can't open_files_limit really be larger than 65535? Several problems addressed: 1. The maximum value for --open_files_limit on non-windows boxes is now raised to UINT_MAX (the maximum possible without significant changes in the code). The maximum value on windows is kept to be 2048 due to a known limitation (bug 24509). 2. mysqld_safe now supports --open_files_limit=xx in addition to --open-files-limit=xx 3. mysqld_safe always passes through --open[_-]files[_-]limit to the underlying mysqld. It used to pass it through only if it the user running the script has access to the root directory or there was an --user argument specified. 4. Fixed a prototype in my_file.c to match its counterpart in the other #ifdef branch. ------------------------------------------------------------ revno: 2555.725.85 committer: Omer BarNir branch nick: bug-5.1 timestamp: Wed 2010-04-07 11:28:28 -0700 message: Correction to the disabled.def file in engines/iuds that got overwritten by mistake in previous push ------------------------------------------------------------ revno: 2555.725.84 committer: Omer BarNir branch nick: bug-5.1 timestamp: Tue 2010-04-06 11:06:34 -0700 message: Updates to test files in the 'engines' suite following changes in 5.1.46 ------------------------------------------------------------ revno: 2555.725.83 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Tue 2010-04-06 12:26:59 +0500 message: Bug#52120 create view cause Assertion failed: 0, file .\item_subselect.cc, line 817 We should disable const subselect item evaluation because subselect transformation does not happen in view_prepare_mode and thus val_...() methods can not be called. ------------------------------------------------------------ revno: 2555.725.82 [merge] committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Tue 2010-04-06 11:00:04 +0300 message: merge ------------------------------------------------------------ revno: 1810.3989.11 committer: Georgi Kodinov branch nick: merge-5.0-bugteam timestamp: Tue 2010-04-06 10:58:45 +0300 message: changed the version back ------------------------------------------------------------ revno: 2555.764.1 committer: Kristofer Pettersson branch nick: mysql-5.1-bugteam timestamp: Fri 2010-04-16 16:10:47 +0200 message: Bug#50373 --secure-file-priv="" The server variable opt_secure_file_priv wasn't normalized properly and caused the operations LOAD DATA INFILE .. INTO TABLE .. and SELECT load_file(..) to do different interpretations of the --secure-file-priv option. The patch moves code to the server initialization routines so that the path always is normalized once and only once. It was also intended that setting the option to an empty string should be equal to lifting all previously set restrictions. This is also fixed by this patch. ------------------------------------------------------------ revno: 2572.82.2 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Wed 2010-06-09 23:11:56 +0200 message: Merged in 5.1.46 ------------------------------------------------------------ revno: 2555.725.81 [merge] tags: mysql-5.1.46, clone-5.1.46-build committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Tue 2010-04-06 10:56:11 +0300 message: merge ------------------------------------------------------------ revno: 1810.3989.10 [merge] committer: Georgi Kodinov branch nick: merge-5.0-bugteam timestamp: Tue 2010-04-06 10:51:52 +0300 message: merge ------------------------------------------------------------ revno: 2555.725.80 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Mon 2010-04-05 16:10:26 +0500 message: Bug#52336 Segfault / crash in 5.1 copy_fields (param=0x9872980) at sql_select.cc:15355 The problem is that we can not use make_cond_for_table(). This function relies on used_tables() condition which is not set properly for subqueries. As result subquery is not filtered out. The fix is to use remove_eq_conds() function instead of make_cond_for_table() func. 'remove_eq_conds()' algorithm relies on const_item() value and it allows to handle subqueries in right way. ------------------------------------------------------------ revno: 2555.725.79 committer: Gleb Shchepa branch nick: mysql-5.1-bugteam timestamp: Sat 2010-04-03 00:30:22 +0400 message: Bug #40625: Concat fails on DOUBLE values in a Stored Procedure, while DECIMAL works Selecting of the CONCAT(......) result into a user variable may return wrong data. Item_func_concat::val_str contains a number of memory allocation-saving tricks. One of them concatenates strings inplace inserting the value of one string at the beginning of the other string. However, this trick didn't care about strings those points to the same data buffer: this is possible when a CONCAT() parameter is a stored procedure variable - Item_sp_variable::val_str() uses the intermediate Item_sp_variable::str_value field, where it may store a reference to an external buffer. The Item_func_concat::val_str function has been modified to take into account val_str functions (such as Item_sp_variable::val_str) that return a pointer to an internal Item member variable that may reference to a buffer provided. ------------------------------------------------------------ revno: 2555.725.78 committer: Anurag Shekhar branch nick: mysql-5.1-bugteam timestamp: Fri 2010-04-02 01:35:36 +0530 message: Bug #47904 Incorrect results w/ table subquery, derived SQs, and LEFT JOIN on index 'my_decimal' class has two members which can be used to access the value. The member variable buf (inherited from parent class decimal_t) is set to member variable buffer so that both are pointing to same value. Item_copy_decimal::copy() uses memcpy to clone 'my_decimal'. The member buffer is declared as an array and memcpy results in copying the values of the array, but the inherited member buf, which should be pointing at the begining of the array 'buffer' starts pointing to the begining of buffer in original object (which is being cloned). Further updates on 'my_decimal' updates only the inherited member 'buf' but leaves buffer unchanged. Later when the new object (which now holds a inconsistent value) is cloned again using proper cloning function 'my_decimal2decimal' the buf pointer is fixed resulting in loss of the current value. Using my_decimal2decimal instead of memcpy in Item_copy_decimal::copy() fixed this problem. ------------------------------------------------------------ revno: 2555.725.77 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 22:17:34 +0400 message: Merge fix for BUG40980 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.763.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug40980 timestamp: Thu 2010-04-01 18:49:02 +0400 message: BUG#40980 - Drop table can remove another MyISAM table's data and index files It was possible if DATA/INDEX DIRECTORY is pointing to symlinked MySQL data home directory. Do not allow to drop data/index files implicitly symlinked to data home directory. For such tables remove symlink only. ------------------------------------------------------------ revno: 2555.725.76 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 19:10:05 +0400 message: Merge innodb-zip-ss6900 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.762.117 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 17:02:01 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6900 | mmakela | 2010-03-29 13:54:57 +0300 (Mon, 29 Mar 2010) | 5 lines branches/zip: Merge c6899 from branches/innodb+: Add debug assertions to track down Bug #52360. hash_table_t::magic_n: Add HASH_TABLE_MAGIC_N checks, which were fully absent. ut_hash_ulint(): Assert table_size > 0 before division. ------------------------------------------------------------ revno: 2555.762.116 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 17:01:43 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6897 | mmakela | 2010-03-29 11:36:19 +0300 (Mon, 29 Mar 2010) | 3 lines branches/zip: innodb_mutex_show_status(): Fix a condition that was accidentally negated in r6781, making SHOW ENGINE INNODB MUTEX STATUS display only locks with no OS waits. ------------------------------------------------------------ revno: 2555.762.115 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 17:01:22 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6891 | vdimov | 2010-03-26 16:19:01 +0200 (Fri, 26 Mar 2010) | 5 lines Non-functional change: update copyright year to 2010 of the files that have been modified after 2010-01-01 according to svn. for f in $(svn log -v -r{2010-01-01}:HEAD |grep "^ M " |cut -b 16- |sort -u) ; do sed -i "" -E 's/(Copyright \(c\) [0-9]{4},) [0-9]{4}, (.*Innobase Oy.+All Rights Reserved)/\1 2010, \2/' $f ; done ------------------------------------------------------------ revno: 2555.762.114 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 17:00:43 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6875 | vdimov | 2010-03-25 18:18:15 +0200 (Thu, 25 Mar 2010) | 4 lines branches/zip: Wrap line at 78 column in ChangeLog. ------------------------------------------------------------ revno: 2555.762.113 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 17:00:23 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6874 | vdimov | 2010-03-25 17:17:52 +0200 (Thu, 25 Mar 2010) | 4 lines branches/zip: Wrap ChangeLog at 78th column ------------------------------------------------------------ revno: 2555.762.112 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 17:00:03 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6873 | vdimov | 2010-03-25 17:06:56 +0200 (Thu, 25 Mar 2010) | 4 lines branches/zip: Use Bug#N instead of Bug #N to be consistent with the rest of the fil. ------------------------------------------------------------ revno: 2555.762.111 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:59:41 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6872 | vdimov | 2010-03-25 17:03:17 +0200 (Thu, 25 Mar 2010) | 4 lines branches/zip: Fix ChangeLog - write only the bug title in bugs.mysql.com-related entires. ------------------------------------------------------------ revno: 2555.762.110 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:58:34 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6871 | vdimov | 2010-03-25 16:39:44 +0200 (Thu, 25 Mar 2010) | 4 lines branches/zip: Whitespace fixup to be consistent with the rest of the file. ------------------------------------------------------------ revno: 2555.762.109 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:58:02 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6868 | mmakela | 2010-03-25 13:03:08 +0200 (Thu, 25 Mar 2010) | 1 line branches/zip: page_validate(): Check the buf[] bounds. ------------------------------------------------------------ revno: 2555.762.108 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:57:39 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6864 | mmakela | 2010-03-24 14:05:53 +0200 (Wed, 24 Mar 2010) | 1 line branches/zip: dtype_new_store_for_order_and_null_size(): Add ut_ad() on mtype. ------------------------------------------------------------ revno: 2555.762.107 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:57:08 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6861 | vdimov | 2010-03-23 19:31:02 +0200 (Tue, 23 Mar 2010) | 36 lines branches/zip: Merge joerg@mysql.com-20100322150231-vdq0afbqtmbs6phy from BZR, Including univ.i before mysql/plugin.h is needed to avoid this compiler error: o This is how gcc puts it: o > > ccache /usr/local/gcc-4.3.2/bin/gcc -static-libgcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -I../../include -I../../regex -I./include -I../../sql -I. -I../../zlib -g -O3 -march=i686 -DUNIV_LINUX -MT libinnobase_a-trx0i_s.o -MD -MP -MF .deps/libinnobase_a-trx0i_s.Tpo -c -o libinnobase_a-trx0i_s.o `test -f 'trx/trx0i_s.c' || echo './'`trx/trx0i_s.c o > > In file included from ./include/univ.i:114, o > > from trx/trx0i_s.c:36: o > > ../../include/my_pthread.h:628: error: expected ')' before '*' token o > > In file included from ../../include/my_pthread.h:732, o > > from ./include/univ.i:114, o > > from trx/trx0i_s.c:36: o > > ../../include/mysql/psi/mysql_thread.h:100: error: expected specifier-qualifier-list before 'pthread_rwlock_t' o > > ../../include/mysql/psi/mysql_thread.h:116: error: expected specifier-qualifier-list before 'pthread_rwlock_t' o > > ../../include/mysql/psi/mysql_thread.h: In function 'inline_mysql_rwlock_init': o > > ../../include/mysql/psi/mysql_thread.h:711: error: 'mysql_rwlock_t' has no member named 'm_psi' o > > ../../include/mysql/psi/mysql_thread.h:716: error: 'mysql_rwlock_t' has no member named 'm_rwlock' o > > .... ((continued)) o o Intel's icc gives slightly clearer messages: o > > icc -static-intel -static-libgcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -I../../include -I../../regex -I./include -I../../sql -I. -I../../zlib -O3 -g -unroll2 -ip -mp -restrict -no-ftz -no-prefetch -DUNIV_LINUX -MT libinnobase_a-trx0i_s.o -MD -MP -MF .deps/libinnobase_a-trx0i_s.Tpo -c -o libinnobase_a-trx0i_s.o `test -f 'trx/trx0i_s.c' || echo './'`trx/trx0i_s.c o > > ../../include/my_pthread.h(628): error: identifier "pthread_rwlock_t" is undefined o > > extern int rw_pr_init(rw_pr_lock_t *); o > > ^ o > > o > > ../../include/mysql/psi/mysql_thread.h(100): error: identifier "pthread_rwlock_t" is undefined o > > rw_lock_t m_rwlock; o > > ^ o > > o > > ../../include/mysql/psi/mysql_thread.h(116): error: identifier "pthread_rwlock_t" is undefined o > > rw_pr_lock_t m_prlock; o > > ^ ------------------------------------------------------------ revno: 2555.762.106 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:56:22 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6860 | jyang | 2010-03-23 18:20:36 +0200 (Tue, 23 Mar 2010) | 5 lines branches/zip: This is patch from Inaam that uses red-black tree to speed up insertions into the flush_list and thus the recovery process. The patch has been tested by Nokia. ------------------------------------------------------------ revno: 2555.762.105 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:55:08 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6858 | mmakela | 2010-03-23 14:09:24 +0200 (Tue, 23 Mar 2010) | 1 line branches/zip: innodb_read_ahead_threshold: Add missing space to help string. ------------------------------------------------------------ revno: 2555.762.104 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:54:42 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6857 | mmakela | 2010-03-23 14:07:53 +0200 (Tue, 23 Mar 2010) | 1 line branches/zip: innodb_change_buffering: Correct the documentation. ------------------------------------------------------------ revno: 2555.762.103 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:54:22 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6853 | marko | 2010-03-22 13:35:29 +0200 (Mon, 22 Mar 2010) | 1 line branches/zip: mutex_own(), rw_lock_own(): Add attribute((warn_unused_result)). ------------------------------------------------------------ revno: 2555.762.102 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:53:56 +0400 message: Applying InnoDB snapshot, fixes BUG#52102. Detailed revision comments: r6840 | calvin | 2010-03-19 00:32:23 +0200 (Fri, 19 Mar 2010) | 6 lines branches/zip: Fix Bug #52102 InnoDB Plugin shows performance drop comparing to builtin InnoDB (Windows only). Disable Windows atomics by default. Approved by: Inaam ------------------------------------------------------------ revno: 2555.762.101 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:52:37 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6830 | marko | 2010-03-18 09:48:18 +0200 (Thu, 18 Mar 2010) | 3 lines branches/zip: buf_page_peek_if_too_old(): Use 32-bit arithmetics when comparing the age of access_time to buf_LRU_old_threshold_ms. This fixes a bug on 64-bit systems. ------------------------------------------------------------ revno: 2555.762.100 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:52:14 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6828 | calvin | 2010-03-17 17:16:38 +0200 (Wed, 17 Mar 2010) | 7 lines branches/zip: rename IB_HAVE_PAUSE_INSTRUCTION to HAVE_IB_PAUSE_INSTRUCTION in CMakeLists.txt. The rename was done as r5871, but CMakeLists.txt was forgotten. Also, add INNODB_RW_LOCKS_USE_ATOMICS to CMake. ------------------------------------------------------------ revno: 2555.762.99 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:27:53 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6805 | inaam | 2010-03-11 23:15:17 +0200 (Thu, 11 Mar 2010) | 6 lines branches/zip issue#463 Fixed compiler warning about uninitialized variable. Non-functional change. ------------------------------------------------------------ revno: 2555.762.98 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:27:34 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6801 | marko | 2010-03-11 13:34:28 +0200 (Thu, 11 Mar 2010) | 2 lines branches/zip: mtr_memo_contains(): Relax the assertion of r6800, allowing mtr->state == MTR_COMMITTING. ------------------------------------------------------------ revno: 2555.762.97 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:27:13 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6800 | marko | 2010-03-11 12:02:57 +0200 (Thu, 11 Mar 2010) | 1 line branches/zip: Add ut_ad(mtr->state == MTR_ACTIVE) to various places. ------------------------------------------------------------ revno: 2555.762.96 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:22:36 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6799 | jyang | 2010-03-11 09:59:42 +0200 (Thu, 11 Mar 2010) | 5 lines branches/zip: Once change in bug #47621 merges into zip branch, zip only test innodb_bug44571 needs to be updated to reflect the column name change would be successful be done in InnoDB as well. ------------------------------------------------------------ revno: 2555.762.95 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:21:00 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6798 | marko | 2010-03-11 09:53:01 +0200 (Thu, 11 Mar 2010) | 14 lines branches/zip: Fix and clarify the latching of some buf_block_t members. buf_block_t::check_index_page_at_flush: Note that this field is not protected by any mutex. Make it a separate field, not a bitfield that could share the machine word with other fields. buf_block_t::lock_hash_val: Note that this field is protected by buf_block_t::lock (or during block creation, by buf_pool_mutex and buf_block_t::mutex). buf_block_get_lock_hash_val(): Assert that block->lock is held by the current thread. Issue #465, rb://267 approved by Inaam Rana ------------------------------------------------------------ revno: 2555.762.94 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:20:37 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6792 | marko | 2010-03-10 13:56:41 +0200 (Wed, 10 Mar 2010) | 1 line branches/zip: Copy tests from branches/5.1 that were lost in some merge. r6793 | marko | 2010-03-10 14:02:19 +0200 (Wed, 10 Mar 2010) | 60 lines branches/zip: Merge revisions 6669:6788 from branches/5.1: ------------------------------------------------------------------------ r6774 | calvin | 2010-03-03 23:56:10 +0200 (Wed, 03 Mar 2010) | 2 lines Changed paths: M /branches/5.1/trx/trx0sys.c branches/5.1: fix bug#51653: outdated reference to set-variable Non functional change. ------------------------------------------------------------------------ r6780 | vasil | 2010-03-08 19:13:20 +0200 (Mon, 08 Mar 2010) | 4 lines Changed paths: M /branches/5.1/plug.in branches/5.1: Whitespace fixup. ------------------------------------------------------------------------ r6783 | jyang | 2010-03-09 17:54:14 +0200 (Tue, 09 Mar 2010) | 9 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb_bug21704.result A /branches/5.1/mysql-test/innodb_bug47621.result A /branches/5.1/mysql-test/innodb_bug47621.test branches/5.1: Fix bug #47621 "MySQL and InnoDB data dictionaries will become out of sync when renaming columns". MySQL does not provide new column name information to storage engine to update the system table. To avoid column name mismatch, we shall just request a table copy for now. rb://246 approved by Marko. ------------------------------------------------------------------------ r6785 | vasil | 2010-03-10 09:04:38 +0200 (Wed, 10 Mar 2010) | 11 lines Changed paths: M /branches/5.1/mysql-test/innodb_bug38231.test branches/5.1: Add the missing --reap statements in innodb_bug38231.test. Probably MySQL enforced the presence of those recently and the test started failing like: main.innodb_bug38231 [ fail ] Test ended at 2010-03-10 08:48:32 CURRENT_TEST: main.innodb_bug38231 mysqltest: At line 49: Cannot run query on connection between send and reap ------------------------------------------------------------------------ r6788 | vasil | 2010-03-10 10:53:21 +0200 (Wed, 10 Mar 2010) | 8 lines Changed paths: M /branches/5.1/mysql-test/innodb_bug38231.test branches/5.1: In innodb_bug38231.test: replace the fragile sleep 0.2 that depends on timing with a more robust condition which waits for the TRUNCATE and LOCK commands to appear in information_schema.processlist. This could also break if there are other sessions executing the same SQL commands, but there are none during the execution of the mysql test. ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 2555.762.93 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:15:15 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6791 | marko | 2010-03-10 13:39:06 +0200 (Wed, 10 Mar 2010) | 1 line branches/zip: Add ChangeLog entries for r6789, r6790. ------------------------------------------------------------ revno: 2555.762.92 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:14:51 +0400 message: Applying InnoDB snapshot, fixes BUG#51356. Detailed revision comments: r6790 | jyang | 2010-03-10 13:09:41 +0200 (Wed, 10 Mar 2010) | 7 lines branches/zip: Fix bug #51356: "many valgrind errors in error messages with concurrent ddl". Null terminate the name string returned from innobase_convert_identifier() call when reporting DB_DUPLICATE_KEY error in create_table_def(). rb://266 approved by Marko ------------------------------------------------------------ revno: 2555.762.91 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:12:44 +0400 message: Applying InnoDB snapshot, fixes BUG#51378. Detailed revision comments: r6789 | jyang | 2010-03-10 11:18:18 +0200 (Wed, 10 Mar 2010) | 10 lines branches/zip: If a unique index is on a column prefix, such unique index cannot be upgrade to primary index even if there is no primary index already defined. Also fix possible corruption when initialize "ref_length" value in case there is a mismatch between MySQL and InnoDB primary key. Fix bug #51378: "Init 'ref_length' to correct value, in case an out of bound MySQL primary_key". rb://262 approved by Marko. ------------------------------------------------------------ revno: 2555.762.90 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:07:58 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6787 | marko | 2010-03-10 10:35:06 +0200 (Wed, 10 Mar 2010) | 10 lines branches/zip: recv_parse_log_rec(): Remove a bogus assertion about page_no. TODO: We might also consider removing recv_max_parsed_page_no, because it does not make much sense with *.ibd files. recv_report_corrupt_log(), recv_scan_log_recs(): Abort when a corrupted log record has been found, unless innodb_force_recovery has been set. This fixes Issue #464. rb://265 approved by Heikki Tuuri ------------------------------------------------------------ revno: 2555.762.89 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:07:40 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6786 | vasil | 2010-03-10 09:16:50 +0200 (Wed, 10 Mar 2010) | 4 lines branches/zip: Fix typo in comment ------------------------------------------------------------ revno: 2555.762.88 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:07:16 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6782 | marko | 2010-03-09 14:09:26 +0200 (Tue, 09 Mar 2010) | 1 line branches/zip: fil0fil.c: Update comments on table->flags as of r6252. ------------------------------------------------------------ revno: 2555.762.87 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:06:59 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6781 | marko | 2010-03-09 09:41:08 +0200 (Tue, 09 Mar 2010) | 4 lines branches/zip: Make SHOW ENGINE INNODB MUTEX display SUM(os_waits) for block mutexes and blocks. Designed by Michael and Marko. rb://188, Issue #358 ------------------------------------------------------------ revno: 2555.762.86 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:06:36 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6779 | marko | 2010-03-08 14:35:42 +0200 (Mon, 08 Mar 2010) | 6 lines branches/zip: Fix IMPORT TABLESPACE of compressed tables. Previously, a wrong parameter was passed to buf_flush_init_for_writing(). fil_reset_too_high_lsns(): Set up page_zip and use it if needed. rb://264, Issue #352 ------------------------------------------------------------ revno: 2555.762.85 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:06:16 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6777 | marko | 2010-03-04 13:01:25 +0200 (Thu, 04 Mar 2010) | 2 lines branches/zip: trx_undo_update_rec_get_update(): Silence a bogus GCC warning about a possibly uninitialized variable. ------------------------------------------------------------ revno: 2555.762.84 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:05:52 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6773 | marko | 2010-03-03 15:31:54 +0200 (Wed, 03 Mar 2010) | 2 lines branches/zip: row_raw_format(): Silence a GCC 4.4.2 warning of possibly uninitialized variable format_in_hex. ------------------------------------------------------------ revno: 2555.762.83 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:05:25 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6771 | marko | 2010-03-03 14:52:43 +0200 (Wed, 03 Mar 2010) | 1 line Document r6770. ------------------------------------------------------------ revno: 2555.762.82 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:04:43 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6770 | marko | 2010-03-03 12:52:55 +0200 (Wed, 03 Mar 2010) | 12 lines branches/zip: Disallow duplicate index name when creating an index. This should fix Mantis Issue #461. innodb.test, innodb.result, innodb-index.test, innodb-index.result: Adjust the test result and mention that the introduced restriction has been reported as MySQL Bug #51451. innobase_check_index_keys(): Add a parameter for the InnoDB table and check that no duplicate index name is added. Report errors by my_error() instead of sql_print_error(). rb://260 approved by Sunny Bains ------------------------------------------------------------ revno: 2555.762.81 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:02:34 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6768 | vasil | 2010-03-02 18:20:48 +0200 (Tue, 02 Mar 2010) | 5 lines branches/zip: Add a NOTE to the comment of btr_node_ptr_get_child_page_no() to prevent mysterious bugs. ------------------------------------------------------------ revno: 2555.762.80 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:01:33 +0400 message: Applying InnoDB snashot, fixes BUG#51587. Detailed revision comments: r6767 | calvin | 2010-03-01 18:16:10 +0200 (Mon, 01 Mar 2010) | 3 lines branches/zip: fix bug#51587 Non-functional change. ------------------------------------------------------------ revno: 2555.762.79 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:01:10 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6754 | marko | 2010-02-24 10:56:43 +0200 (Wed, 24 Feb 2010) | 17 lines branches/zip: Allocate the merge sort buffers from a heap, not stack. The merge sort can use up to 48KiB of buffers when merging blocks. That can cause a stack overflow, especially on 64-bit systems when not building with inlined functions. This was reported as Issue #462. row_merge_dup_report(): Allocate buf and offsets from a heap. row_merge_heap_create(): Allocate space for buf[3] too. Fix bogus sizeof arithmetics that happened to work, because sizeof(ulint)==sizeof(void*). row_merge_blocks(), row_merge_blocks_copy(): Allocate buf[3] from heap. row_merge_insert_index_tuples(): Allocate buf from graph_heap. rb://258 approved and tested by Sunny Bains ------------------------------------------------------------ revno: 2555.762.78 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 16:00:18 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6750 | marko | 2010-02-22 08:57:23 +0200 (Mon, 22 Feb 2010) | 2 lines branches/zip: row_fetch_store_uint4(): Remove unused function. This was added to trunk in r435. ------------------------------------------------------------ revno: 2555.762.77 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:59:25 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6749 | vasil | 2010-02-20 18:45:41 +0200 (Sat, 20 Feb 2010) | 5 lines Non-functional change: update copyright year to 2010 of the files that have been modified after 2010-01-01 according to svn. for f in $(svn log -v -r{2010-01-01}:HEAD |grep "^ M " |cut -b 16- |sort -u) ; do sed -i "" -E 's/(Copyright \(c\) [0-9]{4},) [0-9]{4}, (.*Innobase Oy.+All Rights Reserved)/\1 2010, \2/' $f ; done ------------------------------------------------------------ revno: 2555.762.76 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:58:48 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6740 | sunny | 2010-02-18 13:44:31 +0200 (Thu, 18 Feb 2010) | 6 lines branches/zip: Don't print the entire lock bit set if the block was not found in the buffer pool. Only print the bits that are set and that information is in the lock and not in the block. See rb://256 approved by Marko. ------------------------------------------------------------ revno: 2555.762.75 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:58:26 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6728 | marko | 2010-02-17 18:54:04 +0200 (Wed, 17 Feb 2010) | 3 lines branches/zip: Remove UNIV_BASIC_LOG_DEBUG. This fixes the FILE_FLUSH_LSN printouts mentioned in Issue #341. Suggested by Heikki. ------------------------------------------------------------ revno: 2555.762.74 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:58:03 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6727 | marko | 2010-02-17 18:50:20 +0200 (Wed, 17 Feb 2010) | 2 lines branches/zip: fsp_init_file_page_low(): Declare the page uninitialized for Valgrind. ------------------------------------------------------------ revno: 2555.762.73 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:57:40 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6726 | marko | 2010-02-17 18:49:21 +0200 (Wed, 17 Feb 2010) | 3 lines branches/zip: FIL_PAGE_FILE_FLUSH_LSN: Note that the field is only valid for the first page of each ibdata* file, not *.ibd files. Suggested by Heikki, in connection with the LSN warning noted in Issue #341. ------------------------------------------------------------ revno: 2555.762.72 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:57:04 +0400 message: Applying InnoDB snapshot, fixes BUG#50691. Detailed revision comments: r6724 | marko | 2010-02-17 15:52:05 +0200 (Wed, 17 Feb 2010) | 11 lines branches/zip: Merge revisions 6613:6669 from branches/5.1: ------------------------------------------------------------------------ r6669 | jyang | 2010-02-11 12:24:19 +0200 (Thu, 11 Feb 2010) | 7 lines branches/5.1: Fix bug #50691, AIX implementation of readdir_r causes InnoDB errors. readdir_r() returns an non-NULL value in the case of reaching the end of a directory. It should not be treated as an error return. rb://238 approved by Marko ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 2555.762.71 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:56:38 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6723 | marko | 2010-02-17 11:48:34 +0200 (Wed, 17 Feb 2010) | 3 lines branches/zip: lock_table_other_has_incompatible(): Return an incompatible lock or NULL instead of TRUE or FALSE. Approved by Sunny over IM. ------------------------------------------------------------ revno: 2555.762.70 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:56:02 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6718 | marko | 2010-02-16 15:06:16 +0200 (Tue, 16 Feb 2010) | 1 line branches/zip: Fix a comment. ------------------------------------------------------------ revno: 2555.762.69 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:55:42 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6717 | marko | 2010-02-16 14:53:20 +0200 (Tue, 16 Feb 2010) | 2 lines branches/zip: log_reserve_and_write_fast(): Correct a race condition in UNIV_LOG_LSN_DEBUG. This could have caused Issue #440. ------------------------------------------------------------ revno: 2555.762.68 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:55:20 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6715 | sunny | 2010-02-16 10:14:21 +0200 (Tue, 16 Feb 2010) | 1 line branches/zip: Fix comment. Non functional change. ------------------------------------------------------------ revno: 2555.762.67 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:55:01 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6714 | sunny | 2010-02-16 10:12:25 +0200 (Tue, 16 Feb 2010) | 2 lines branches/zip: Update the comments and fix the whitespace issues. See rb://255 Approved by: Marko ------------------------------------------------------------ revno: 2555.762.66 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:54:41 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6713 | sunny | 2010-02-16 10:12:17 +0200 (Tue, 16 Feb 2010) | 7 lines branches/zip: Change the bit fields back to ulint. Bit fields were causing problems with concurrency on SMP systems because of word packing issues. The number of trx_t's in a system is not sufficient enough to require that we try and save a few bytes in the data structure. See rb://255 for details. ------------------------------------------------------------ revno: 2555.762.65 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:54:23 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6712 | marko | 2010-02-16 10:05:36 +0200 (Tue, 16 Feb 2010) | 2 lines branches/zip: trx_lists_init_at_db_start(): Assert that the kernel_mutex is held by the caller. ------------------------------------------------------------ revno: 2555.762.64 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:54:01 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6707 | inaam | 2010-02-12 19:22:35 +0200 (Fri, 12 Feb 2010) | 4 lines branches/zip ChangeLog entry for r6674. ------------------------------------------------------------ revno: 2555.762.63 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:53:41 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6675 | marko | 2010-02-11 22:41:11 +0200 (Thu, 11 Feb 2010) | 1 line branches/zip: Remove bogus debug assertions introduced in r6660. ------------------------------------------------------------ revno: 2555.762.62 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:52:35 +0400 message: Applying InnoDB snapshot, fixes BUG#49535. Detailed revision comments: r6674 | inaam | 2010-02-11 17:54:44 +0200 (Thu, 11 Feb 2010) | 16 lines branches/zip bug# 49535 This is a backport of r4924. mem_heap_get_size() scans all allocated blocks to calculate the total size of the heap. This patch introduces a new, total_size, field in mem_block_info_struct. This field is valid only for base block (i.e.: the first block allocated for the heap) and is set to ULINT_UNDEFINED in other blocks. This considerably improves the performance of redo scan during recovery. rb://108 issue#216 Approved by: Heikki ------------------------------------------------------------ revno: 2555.762.61 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:52:08 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6673 | marko | 2010-02-11 13:09:48 +0200 (Thu, 11 Feb 2010) | 9 lines branches/zip: Relax a debug assertion about a missing BLOB. (Issue #452) When rolling back an incomplete transaction in purge, tolerate missing BLOBs also in update undo, when undoing an INSERT by updating a delete-marked record, and the delete-marked record is no longer needed. Previously, we only tolerated missing BLOBs in insert undo. This merely fixes a debug assertion; the code performed correctly without UNIV_DEBUG. rb://249 approved by Sunny Bains. ------------------------------------------------------------ revno: 2555.762.60 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:51:48 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6672 | marko | 2010-02-11 13:01:18 +0200 (Thu, 11 Feb 2010) | 1 line branches/zip: Introduce thr_is_recv(). ------------------------------------------------------------ revno: 2555.762.59 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:51:26 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6660 | marko | 2010-02-11 11:21:11 +0200 (Thu, 11 Feb 2010) | 7 lines branches/zip: Clarify the rollback of INSERT by UPDATE of delete-marked rec. row_undo_mod_remove_clust_low(): Augment the function comment. row_undo_mod_remove_clust_low(), row_undo_mod_del_mark_or_remove_sec_low(), row_undo_mod_del_mark_or_remove_sec(), row_undo_mod_upd_del_sec(): Add ut_ad(node->rec_type == TRX_UNDO_UPD_DEL_REC); ------------------------------------------------------------ revno: 2555.762.58 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:51:08 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6639 | marko | 2010-02-10 13:11:04 +0200 (Wed, 10 Feb 2010) | 1 line branches/zip: trx_rseg_create(): Unused function, remove. ------------------------------------------------------------ revno: 2555.762.57 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:42:55 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6635 | marko | 2010-02-10 11:07:05 +0200 (Wed, 10 Feb 2010) | 4 lines branches/zip: Clean up after r6559. Now that btr_pcur_open_with_no_init() is a macro, do not mix preprocessor directives in the macro invocation, because it is implementation-defined whether that is going to work. ------------------------------------------------------------ revno: 2555.762.56 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:42:24 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6633 | marko | 2010-02-10 10:40:55 +0200 (Wed, 10 Feb 2010) | 31 lines branches/zip: Merge revisions 6538:6613 from branches/5.1: ------------------------------------------------------------------------ r6545 | jyang | 2010-02-03 03:57:32 +0200 (Wed, 03 Feb 2010) | 8 lines Changed paths: M /branches/5.1/lock/lock0lock.c branches/5.1: Fix bug #49001, "SHOW INNODB STATUS deadlock info incorrect when deadlock detection aborts". Print the correct lock owner when recursive function lock_deadlock_recursive() exceeds its maximum depth LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK. rb://217, approved by Marko. ------------------------------------------------------------------------ r6613 | inaam | 2010-02-09 20:23:09 +0200 (Tue, 09 Feb 2010) | 11 lines Changed paths: M /branches/5.1/buf/buf0buf.c M /branches/5.1/buf/buf0rea.c M /branches/5.1/include/buf0rea.h branches/5.1: Fix Bug #38901 InnoDB logs error repeatedly when trying to load page into buffer pool In buf_page_get_gen() if we are unable to read a page (because of corruption or some other reason) we keep on retrying. This fills up error log with millions of entries in no time and we'd eventually run out of disk space. This patch limits the number of attempts that we make (currently set to 100) and after that we abort with a message. rb://241 Approved by: Heikki ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 2555.762.55 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:42:04 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6631 | marko | 2010-02-10 09:19:52 +0200 (Wed, 10 Feb 2010) | 1 line branches/zip: Document r6614 in ChangeLog. ------------------------------------------------------------ revno: 2555.762.54 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:41:47 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6614 | inaam | 2010-02-09 20:26:23 +0200 (Tue, 09 Feb 2010) | 7 lines branches/plugin rb://242 Let the master thread sleep if the amount of work to be done is calibrated as taking less than a second. Approved by: Heikki ------------------------------------------------------------ revno: 2555.762.53 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:41:23 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6612 | marko | 2010-02-09 14:32:39 +0200 (Tue, 09 Feb 2010) | 3 lines branches/zip: recv_recovery_rollback_active(): Drop the temporary tables and indexes after enabling sync order checks. This should not make any difference. This could have been done in r6611. ------------------------------------------------------------ revno: 2555.762.52 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:41:04 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6611 | marko | 2010-02-09 14:28:25 +0200 (Tue, 09 Feb 2010) | 11 lines branches/zip: Roll back dictionary transaction(s) before scanning *.ibd files innobase_start_or_create_for_mysql(): Roll back data dictionary transactions before scanning the *.ibd files. Then, data dictionary records can be loaded to the cache before opening the *.ibd files. recv_recovery_rollback_active(): Refactored from recv_recovery_from_checkpoint_finish(). rb://235, committing without review, because this is needed for TablespaceDictionary. ------------------------------------------------------------ revno: 2555.762.51 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:40:44 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6610 | marko | 2010-02-09 13:53:59 +0200 (Tue, 09 Feb 2010) | 17 lines branches/zip: When dropping temporary indexes and tables at startup, first load them to the data dictionary cache and use the normal routines for dropping tables or indexes. This should reduce the risk of bugs and also make the code compatible with the upcoming TablespaceDictionary implementation. DICT_SYS_INDEXES_NAME_FIELD: The clustered index position of SYS_INDEXES.NAME. row_merge_drop_temp_indexes(): Scan SYS_INDEXES for tables containing temporary indexes, and load the tables as needed. Invoke row_merge_drop_index() to drop the indexes. row_mysql_drop_temp_tables(): Scan SYS_TABLES for temporary tables, load them with dict_load_table() and drop them with row_drop_table_for_mysql(). rb://251, not yet reviewed ------------------------------------------------------------ revno: 2555.762.50 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:40:13 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6609 | marko | 2010-02-09 13:45:40 +0200 (Tue, 09 Feb 2010) | 1 line branches/zip: dict_field_print_low(): Add const qualifier. ------------------------------------------------------------ revno: 2555.762.49 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:39:56 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6608 | marko | 2010-02-09 11:02:37 +0200 (Tue, 09 Feb 2010) | 1 line branches/zip: ha_innobase::add_index(): Check for !innodb_table. ------------------------------------------------------------ revno: 2555.762.48 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:39:29 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6595 | marko | 2010-02-08 13:53:02 +0200 (Mon, 08 Feb 2010) | 1 line branches/zip: btr_pcur_commit(): Unused function, remove. ------------------------------------------------------------ revno: 2555.762.47 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:39:03 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6594 | marko | 2010-02-08 12:55:04 +0200 (Mon, 08 Feb 2010) | 2 lines branches/zip: rec_get_nth_field_offs_old(): Replace if (!cond) ut_error; tests with ut_a(cond). ------------------------------------------------------------ revno: 2555.762.46 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:38:35 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6591 | marko | 2010-02-08 10:06:39 +0200 (Mon, 08 Feb 2010) | 3 lines branches/zip: row_merge_drop_index(): Remove redundant condition on SYS_INDEXES.TABLE_ID. INDEX_ID must be instance-widely unique, because SYS_FIELDS is not indexed by TABLE_ID. ------------------------------------------------------------ revno: 2555.762.45 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:38:11 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6560 | sunny | 2010-02-04 16:11:23 +0200 (Thu, 04 Feb 2010) | 7 lines branches/zip: Remove the additional check introduced in r6534 which tries to check if the joining transaction has any other transactions waiting on its locks. This optimization results in excessive deadlocks when running Sysbench with a large number of threads. The function seems to return FALSE positives. rb://250 ------------------------------------------------------------ revno: 2555.762.44 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:37:45 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6559 | marko | 2010-02-04 13:21:18 +0200 (Thu, 04 Feb 2010) | 14 lines branches/zip: Pass the file name and line number of the caller of the b-tree cursor functions to the buffer pool requests, in order to make the latch diagnostics more accurate. buf_page_optimistic_get_func(): Renamed to buf_page_optimistic_get(). btr_page_get_father_node_ptr(), btr_insert_on_non_leaf_level(), btr_pcur_open(), btr_pcur_open_with_no_init(), btr_pcur_open_on_user_rec(), btr_pcur_open_at_rnd_pos(), btr_pcur_restore_position(), btr_cur_open_at_index_side(), btr_cur_open_at_rnd_pos(): Rename the function to _func and add the parameters file, line. Define wrapper macros with __FILE__, __LINE__. btr_cur_search_to_nth_level(): Add the parameters file, line. ------------------------------------------------------------ revno: 2555.762.43 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:36:54 +0400 message: Applying InnoDB snapshot, fixes BUG#35077. Detailed revision comments: r6548 | marko | 2010-02-03 15:01:39 +0200 (Wed, 03 Feb 2010) | 11 lines branches/zip: buf_LRU_invalidate_tablespace(): Ensure that prev_bpage is not relocated when freeing a compressed block. This avoids the costly rescan of the LRU list. (Bug #35077, Issue #449) At most one buffer-fix will be active at a time, affecting two blocks: the buf_page_t and the compressed page frame. This should not block the memory defragmentation in buf0buddy.c too much. In fact, it may avoid unnecessary copying if also prev_bpage belongs to the tablespace that is being invalidated. rb://240 ------------------------------------------------------------ revno: 2555.762.42 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:36:27 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6547 | marko | 2010-02-03 14:43:38 +0200 (Wed, 03 Feb 2010) | 14 lines branches/zip: Clean up CHECK TABLE error handling. (Issue #220) ha_innobase::change_active_index(): Clean up code formatting. ha_innobase::check(): Incorporate the code from row_check_table_for_mysql(). Report errors to the client connection instead of writing them to the error log. row_check_table_for_mysql(): Remove. row_check_index_for_mysql(): Renamed from row_scan_and_check_index(). Let the caller initialize prebuilt, and assume that the index is usable. rb://178 approved by Sunny Bains ------------------------------------------------------------ revno: 2555.762.41 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:36:02 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6546 | jyang | 2010-02-03 11:05:24 +0200 (Wed, 03 Feb 2010) | 9 lines branches/zip: Relax assertion on the number of index defined in InnoDB must be comparable with that of MySQL to tolerate possible dictionary inconsistency. Fix Mantis issue #455, "UNIV_DEBUG+ assert ha_innodb.cc:3152 ib_num_index >= mysql_num_index". rb://248 Approved by Marko. ------------------------------------------------------------ revno: 2555.762.40 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:35:30 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6540 | marko | 2010-02-01 11:35:13 +0200 (Mon, 01 Feb 2010) | 1 line branches/zip: ChangeLog: Document the merge of 6471:6538 from branches/5.1. ------------------------------------------------------------ revno: 2555.762.39 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:34:53 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6539 | marko | 2010-02-01 11:31:12 +0200 (Mon, 01 Feb 2010) | 75 lines branches/zip: Merge revisions 6471:6538 from branches/5.1: ------------------------------------------------------------------------ r6488 | sunny | 2010-01-21 02:55:08 +0200 (Thu, 21 Jan 2010) | 2 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Factor out test for bug#44030 from innodb-autoinc.test into a separate test/result files. ------------------------------------------------------------------------ r6489 | sunny | 2010-01-21 02:57:50 +0200 (Thu, 21 Jan 2010) | 2 lines Changed paths: A /branches/5.1/mysql-test/innodb-autoinc-44030.result A /branches/5.1/mysql-test/innodb-autoinc-44030.test branches/5.1: Factor out test for bug#44030 from innodb-autoinc.test into a separate test/result files. ------------------------------------------------------------------------ r6492 | sunny | 2010-01-21 09:38:35 +0200 (Thu, 21 Jan 2010) | 1 line Changed paths: M /branches/5.1/mysql-test/innodb-autoinc-44030.test branches/5.1: Add reference to bug#47621 in the comment. ------------------------------------------------------------------------ r6535 | sunny | 2010-01-30 00:08:40 +0200 (Sat, 30 Jan 2010) | 11 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Undo the change from r6424. We need to return DB_SUCCESS even if we were unable to initialize the tabe autoinc value. This is required for the open to succeed. The only condition we currently treat as a hard error is if the autoinc field instance passed in by MySQL is NULL. Previously if the table autoinc value was 0 and the next value was requested we had an assertion that would fail. Change that assertion and treat a value of 0 to mean that the autoinc system is unavailable. Generation of next value will now return failure. rb://237 ------------------------------------------------------------------------ r6536 | sunny | 2010-01-30 00:13:42 +0200 (Sat, 30 Jan 2010) | 6 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Check *first_value everytime against the column max value and set *first_value to next autoinc if it's > col max value. ie. not rely on what is passed in from MySQL. [49497] Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value rb://236 ------------------------------------------------------------------------ r6537 | sunny | 2010-01-30 00:35:00 +0200 (Sat, 30 Jan 2010) | 2 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Undo r6536. ------------------------------------------------------------------------ r6538 | sunny | 2010-01-30 00:43:06 +0200 (Sat, 30 Jan 2010) | 6 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Check *first_value every time against the column max value and set *first_value to next autoinc if it's > col max value. ie. not rely on what is passed in from MySQL. [49497] Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value rb://236 ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 2555.762.38 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:32:13 +0400 message: Applying InnoDB snapshot, fixes BUG#49047. Detailed revision comments: r6534 | sunny | 2010-01-29 23:42:49 +0200 (Fri, 29 Jan 2010) | 15 lines branches/zip: Two changes to fix the problem: 1. First scan the joining transaction's locks and check if no other transaction is waiting for a lock held by the joining transaction. If no other transaction is waiting then no deadlock an occur and we avoid doing an exhaustive search. 2. Change the direction of the lock traversal from backward to forward. Previously we traversed backward from the lock that has to wait, the function to that fetched the previous node was very inefficient resulting in O(n^2) access to the rec lock list. Fix Bug #49047 InnoDB deadlock detection is CPU intensive with many locks on a single row. rb://218 ------------------------------------------------------------ revno: 2555.762.37 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:31:37 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6533 | calvin | 2010-01-29 23:31:59 +0200 (Fri, 29 Jan 2010) | 4 lines branches/zip: remove duplicated copyright and license info. ------------------------------------------------------------ revno: 2555.762.36 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:31:17 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6527 | vasil | 2010-01-29 14:39:48 +0200 (Fri, 29 Jan 2010) | 6 lines branches/zip: Extend the comment about row_mysql_handle_errors(). Suggested by: Heikki ------------------------------------------------------------ revno: 2555.762.35 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:30:11 +0400 message: Applying InnoDB snapshot, fixes BUG#47622. Detailed revision comments: r6526 | jyang | 2010-01-28 18:12:40 +0200 (Thu, 28 Jan 2010) | 8 lines branches/zip: Add index translation table to map mysql index number to InnoDB index structure directly. Fix Bug #47622: "the new index is added before the existing ones in MySQL, but after one in SE". rb://215, approved by Marko ------------------------------------------------------------ revno: 2555.762.34 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:27:18 +0400 message: Applying InnoDB snapshot, fixes BUG#35077. Detailed revision comments: r6525 | marko | 2010-01-28 16:23:15 +0200 (Thu, 28 Jan 2010) | 11 lines branches/zip: buf_LRU_invalidate_tablespace(): Do not unnecessarily acquire the block_mutex for every block in the LRU list. Only acquire it when holding buf_pool_mutex is not sufficient. This should speed up the function and considerably reduce traffic on the memory bus and caches. I noticed this deficiency when working on Issue #157. This deficiency popped up again in Issue #449 (Bug #35077), which this fix does not fully address. rb://78 revision 1 approved by Heikki Tuuri. ------------------------------------------------------------ revno: 2555.762.33 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:26:39 +0400 message: Applying InnoDB snapshot, fixes BUG#41609. Detailed revision comments: r6521 | marko | 2010-01-27 10:49:01 +0200 (Wed, 27 Jan 2010) | 17 lines branches/zip: Drop temporary tables at startup. This addresses the third aspect of Bug #41609. row_mysql_drop_temp_tables(): New function, to drop all temporary tables. These can be distinguished by the least significant bit of MIX_LEN. However, we will skip ROW_FORMAT=REDUNDANT tables, because in the records for those tables, that bit may be garbage. recv_recovery_from_checkpoint_finish(): Invoke row_mysql_drop_temp_tables(). Normally, if the .frm files for the temporary tables exist at startup, MySQL will ask InnoDB to drop the temporary tables. However, if the files are deleted, for instance, by the boot scripts of the operating system, the tables would remain in the InnoDB data dictionary unless someone digs them up by innodb_table_monitor and creates .frm files for dropping the tables. rb://221 approved by Sunny Bains. ------------------------------------------------------------ revno: 2555.762.32 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:25:39 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6498 | marko | 2010-01-21 11:22:52 +0200 (Thu, 21 Jan 2010) | 15 lines branches/zip: buf_page_get_gen(): Obey recv_no_ibuf_operations and do not call ibuf_merge_or_delete_for_page() in crash recovery, before the redo log has been applied. This could cure some hard-to-repeat, hard-to-explain bugs related to secondary indexes. A possible recipe to repeat the bug: 1. update a secondary index leaf page on a compressed table 2. evict the page from the buffer pool while it is still dirty 3. ibuf_insert() something for the page 4. crash 5. crash recovery; ibuf merge would be done too early, before applying redo log to the sec index page or the ibuf pages ------------------------------------------------------------ revno: 2555.762.31 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:25:06 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6472 | calvin | 2010-01-16 01:53:47 +0200 (Sat, 16 Jan 2010) | 12 lines branches/zip: Merge revisions 6425:6471 from branches/5.1 to pick up the first part fix of bug49396. ------------------------------------------------------------------------ r6471 | calvin | 2010-01-15 17:43:27 -0600 (Fri, 15 Jan 2010) | 4 lines branches/5.1: fix bug#49396: main.innodb test fails in embedded mode Change replace_result by using $MYSQLD_DATADIR. Tested in both embedded mode and normal server mode. ------------------------------------------------------------------------ r6473 | calvin | 2010-01-16 01:58:16 +0200 (Sat, 16 Jan 2010) | 6 lines branches/zip: fix bug#49396: innodb.innodb-index test fails in embedded mode This is 2nd part of the fix for bug#49396. The 1st part is innodb.test. Tested in both embedded mode and normal server mode. ------------------------------------------------------------ revno: 2555.762.30 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:23:04 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6467 | inaam | 2010-01-14 20:46:00 +0200 (Thu, 14 Jan 2010) | 10 lines branches/zip rb://226 log_sys->written_to_all_lsn does not accurately represent the LSN upto which write and flush has taken place. Under a race condition it can fall behind log_sys->flushed_to_disk_lsn which is accurate. Besides written_to_all_lsn is redundant as currently InnoDB supports only one log group. Approved by: Heikki ------------------------------------------------------------ revno: 2555.762.29 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:22:39 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6463 | marko | 2010-01-14 15:43:37 +0200 (Thu, 14 Jan 2010) | 5 lines branches/zip: page_copy_rec_list_end(), page_copy_rec_list_start(): Update PAGE_MAX_TRX_ID before attempting to compress the page. This fixes Issue #382 (a debug assertion failure in page_zip_reorganize()) and reduces the generated redo log. There was no bug or crash in non-debug builds. ------------------------------------------------------------ revno: 2555.762.28 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:22:07 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6449 | marko | 2010-01-13 22:38:53 +0200 (Wed, 13 Jan 2010) | 18 lines branches/zip: lock_rec_validate_page(): Only validate the record queues when the thread is not holding a space->latch. When UNIV_DEBUG is defined while UNIV_SYNC_DEBUG is not, latching order violations will still occur and deadlocks will be possible. sync_thread_levels_nonempty_gen(): Renamed from sync_thread_levels_empty_gen(). Return the violating latch or NULL instead of FALSE or TRUE, except that there will be a ut_error before the non-NULL return. sync_thread_levels_empty_gen(): A macro that negates the return value of sync_thread_levels_nonempty_gen(). sync_thread_levels_contains(): New function, based on sync_thread_levels_nonempty_gen(). This should fix Issue #441. ------------------------------------------------------------ revno: 2555.762.27 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:21:36 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6447 | marko | 2010-01-13 17:43:44 +0200 (Wed, 13 Jan 2010) | 5 lines branches/zip: row_sel_get_clust_rec_for_mysql(): On the READ UNCOMMITTED isolation level, do not attempt to access a clustered index record that has been marked for deletion. This fixes Issue #433. Approved by Heikki over the IM. ------------------------------------------------------------ revno: 2555.762.26 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:21:13 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6446 | marko | 2010-01-13 17:20:10 +0200 (Wed, 13 Jan 2010) | 3 lines branches/zip: Treat mem_hash_mutex specially in mutex_free(), and explicitly free mem_hash_mutex in mem_close(). This fixes the breakage of UNIV_MEM_DEBUG that was filed as Issue #434. ------------------------------------------------------------ revno: 2555.762.25 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:20:54 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6445 | marko | 2010-01-13 17:15:29 +0200 (Wed, 13 Jan 2010) | 3 lines branches/zip: buf_pool_drop_hash_index(): Check block->page.state before checking block->is_hashed, because the latter may be uninitialized right after server startup. ------------------------------------------------------------ revno: 2555.762.24 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:20:36 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6433 | marko | 2010-01-13 13:19:00 +0200 (Wed, 13 Jan 2010) | 2 lines branches/zip: dict_sys_tables_get_flags(), dict_create_sys_*_tuple(): Add some const qualifiers and comments. ------------------------------------------------------------ revno: 2555.762.23 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:20:10 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6426 | marko | 2010-01-12 15:36:14 +0200 (Tue, 12 Jan 2010) | 2 lines branches/zip: row_sel_sec_rec_is_for_clust_rec(): Document the return value more accurately. ------------------------------------------------------------ revno: 2555.762.22 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:19:38 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6425 | marko | 2010-01-12 13:47:11 +0200 (Tue, 12 Jan 2010) | 45 lines branches/zip: Merge revisions 6350:6424 from branches/5.1: ------------------------------------------------------------------------ r6421 | jyang | 2010-01-12 07:59:16 +0200 (Tue, 12 Jan 2010) | 8 lines Changed paths: M /branches/5.1/row/row0mysql.c branches/5.1: Fix bug #49238: Creating/Dropping a temporary table while at 1023 transactions will cause assert. Handle possible DB_TOO_MANY_CONCURRENT_TRXS when deleting metadata in row_drop_table_for_mysql(). rb://220, approved by Marko ------------------------------------------------------------------------ r6422 | marko | 2010-01-12 11:34:27 +0200 (Tue, 12 Jan 2010) | 3 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/handler/ha_innodb.h branches/5.1: Non-functional change: Make innobase_get_int_col_max_value() a static function. It does not access any fields of class ha_innobase. ------------------------------------------------------------------------ r6424 | marko | 2010-01-12 12:22:19 +0200 (Tue, 12 Jan 2010) | 16 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/handler/ha_innodb.h branches/5.1: In innobase_initialize_autoinc(), do not attempt to read the maximum auto-increment value from the table if innodb_force_recovery is set to at least 4, so that writes are disabled. (Bug #46193) innobase_get_int_col_max_value(): Move the function definition before ha_innobase::innobase_initialize_autoinc(), because that function now calls this function. ha_innobase::innobase_initialize_autoinc(): Change the return type to void. Do not attempt to read the maximum auto-increment value from the table if innodb_force_recovery is set to at least 4. Issue ER_AUTOINC_READ_FAILED to the client when the auto-increment value cannot be read. rb://144 by Sunny, revised by Marko ------------------------------------------------------------------------ ------------------------------------------------------------ revno: 2555.762.21 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:19:18 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6367 | marko | 2009-12-28 15:39:19 +0200 (Mon, 28 Dec 2009) | 2 lines branches/zip: dict_index_add_to_cache(): Always free the index object, also when returning DB_CORRUPTION. ------------------------------------------------------------ revno: 2555.762.20 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:17:10 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6348 | marko | 2009-12-22 11:04:34 +0200 (Tue, 22 Dec 2009) | 37 lines branches/zip: Merge a change from MySQL: r6351 | marko | 2009-12-22 11:11:18 +0200 (Tue, 22 Dec 2009) | 1 line branches/zip: Remove an obsolete declaration of LOCK_thread_count. r6352 | marko | 2009-12-22 12:33:01 +0200 (Tue, 22 Dec 2009) | 104 lines branches/zip: Merge revisions 6206:6350 from branches/5.1, except r6347, r6349, r6350 which were committed separately to both branches, and r6310, which was backported from zip to 5.1. ------------------------------------------------------------------------ r6206 | jyang | 2009-11-20 09:38:43 +0200 (Fri, 20 Nov 2009) | 3 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Non-functional change, fix formatting. ------------------------------------------------------------------------ r6230 | sunny | 2009-11-24 23:52:43 +0200 (Tue, 24 Nov 2009) | 3 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result branches/5.1: Fix autoinc failing test results. (this should be skipped when merging 5.1 into zip) ------------------------------------------------------------------------ r6231 | sunny | 2009-11-25 10:26:27 +0200 (Wed, 25 Nov 2009) | 7 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test M /branches/5.1/row/row0sel.c branches/5.1: Fix BUG#49032 - auto_increment field does not initialize to last value in InnoDB Storage Engine. We use the appropriate function to read the column value for non-integer autoinc column types, namely float and double. rb://208. Approved by Marko. ------------------------------------------------------------------------ r6232 | sunny | 2009-11-25 10:27:39 +0200 (Wed, 25 Nov 2009) | 2 lines Changed paths: M /branches/5.1/row/row0sel.c branches/5.1: This is an interim fix, fix white space errors. ------------------------------------------------------------------------ r6233 | sunny | 2009-11-25 10:28:35 +0200 (Wed, 25 Nov 2009) | 2 lines Changed paths: M /branches/5.1/include/mach0data.h M /branches/5.1/include/mach0data.ic M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test M /branches/5.1/row/row0sel.c branches/5.1: This is an interim fix, fix tests and make read float/double arg const. ------------------------------------------------------------------------ r6234 | sunny | 2009-11-25 10:29:03 +0200 (Wed, 25 Nov 2009) | 2 lines Changed paths: M /branches/5.1/row/row0sel.c branches/5.1: This is an interim fix, fix whitepsace issues. ------------------------------------------------------------------------ r6235 | sunny | 2009-11-26 01:14:42 +0200 (Thu, 26 Nov 2009) | 9 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Fix Bug#47720 - REPLACE INTO Autoincrement column with negative values. This bug is similiar to the negative autoinc filter patch from earlier, with the additional handling of filtering out the negative column values set explicitly by the user. rb://184 Approved by Heikki. ------------------------------------------------------------------------ r6242 | vasil | 2009-11-27 22:07:12 +0200 (Fri, 27 Nov 2009) | 4 lines Changed paths: M /branches/5.1/export.sh branches/5.1: Minor changes to support plugin snapshots. ------------------------------------------------------------------------ r6306 | calvin | 2009-12-14 15:12:46 +0200 (Mon, 14 Dec 2009) | 5 lines Changed paths: M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: fix bug#49267: innodb-autoinc.test fails on windows because of different case mode There is no change to the InnoDB code, only to fix test case by changing "T1" to "t1". ------------------------------------------------------------------------ r6324 | jyang | 2009-12-17 06:54:24 +0200 (Thu, 17 Dec 2009) | 8 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/lock0lock.h M /branches/5.1/include/srv0srv.h M /branches/5.1/lock/lock0lock.c M /branches/5.1/log/log0log.c M /branches/5.1/srv/srv0srv.c M /branches/5.1/srv/srv0start.c branches/5.1: Fix bug #47814 - Diagnostics are frequently not printed after a long lock wait in InnoDB. Separate out the lock wait timeout check thread from monitor information printing thread. rb://200 Approved by Marko. ------------------------------------------------------------------------ r6364 | marko | 2009-12-26 21:06:31 +0200 (Sat, 26 Dec 2009) | 4 lines branches/zip: ibuf_bitmap_get_map_page(): Define a wrapper macro that passes __FILE__, __LINE__ of the caller to buf_page_get_gen(). This will ease the diagnosis of the likes of Issue #135. ------------------------------------------------------------ revno: 2555.762.19 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:10:01 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6346 | marko | 2009-12-21 12:03:25 +0200 (Mon, 21 Dec 2009) | 2 lines branches/zip: recv_recovery_from_checkpoint_finish(): Revert a change that was accidentally committed in r6345. ------------------------------------------------------------ revno: 2555.762.18 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:09:37 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6345 | marko | 2009-12-21 10:46:14 +0200 (Mon, 21 Dec 2009) | 7 lines branches/zip: recv_scan_log_recs(): Non-functional change: Replace a debug assertion ut_ad(len > 0) with ut_ad(len >= OS_FILE_LOG_BLOCK_SIZE). This change is only for readability, for Issue #428. Another assertion on len being an integer multiple of OS_FILE_LOG_BLOCK_SIZE already ensured together with the old ut_ad(len > 0) that actually len must be at least OS_FILE_LOG_BLOCK_SIZE. ------------------------------------------------------------ revno: 2555.762.17 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:09:15 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6321 | marko | 2009-12-16 16:16:33 +0200 (Wed, 16 Dec 2009) | 4 lines branches/zip: row_merge_drop_temp_indexes(): Revert a hack to transaction isolation level that was made unnecessary by r5826 (Issue #337). When this function is called, any active data dictionary transaction should have been rolled back. ------------------------------------------------------------ revno: 2555.762.16 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:08:47 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6312 | marko | 2009-12-16 10:10:36 +0200 (Wed, 16 Dec 2009) | 6 lines branches/zip: fil_close(): Add #ifndef UNIV_HOTBACKUP around a debug assertion on mutex.magic_n. InnoDB Hot Backup is a single-threaded program and does not contain mutexes. This change allows InnoDB Hot Backup to be compiled with UNIV_DEBUG. Suggested by Michael Izioumtchenko. ------------------------------------------------------------ revno: 2555.762.15 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:08:06 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6309 | marko | 2009-12-15 14:05:50 +0200 (Tue, 15 Dec 2009) | 3 lines branches/zip: lock_rec_insert_check_and_lock(): Avoid casting away constness. Use page_rec_get_next_const() instead. This silences a gcc 4.2.4 warning. Reported by Sunny Bains. ------------------------------------------------------------ revno: 2555.762.14 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:07:37 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6305 | marko | 2009-12-14 13:03:57 +0200 (Mon, 14 Dec 2009) | 2 lines branches/zip: row_undo_mod_del_unmark_sec_and_undo_update(): Add a missing const qualifier. ------------------------------------------------------------ revno: 2555.762.13 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:03:27 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6285 | marko | 2009-12-09 09:24:50 +0200 (Wed, 09 Dec 2009) | 13 lines branches/zip: row_sel_fetch_columns(): Remove redundant code that was accidentally added in r1591, which introduced dfield_t::ext in order to make the merge sort of fast index creation support externally stored columns, Initially, I tried to allocate the bit for dfield_t::ext from dfield_t::len by making the length 31 bits and mapping UNIV_SQL_NULL to something that would fit in it. Then I decided that it would be too risky. The redundant check was part of the mapping. The condition may have been dfield_is_null() initially. This redundant code was noticed by Sergey Petrunya on the MySQL internals list. r6288 | marko | 2009-12-09 09:51:00 +0200 (Wed, 09 Dec 2009) | 15 lines branches/zip: row_upd_copy_columns(): Remove redundant code that was accidentally added in r1591, which introduced dfield_t::ext in order to make the merge sort of fast index creation support externally stored columns. Initially, I tried to allocate the bit for dfield_t::ext from dfield_t::len by making the length 31 bits and mapping UNIV_SQL_NULL to something that would fit in it. Then I decided that it would be too risky. The redundant check was part of the mapping. The condition may have been dfield_is_null() initially. This is similar to the redundant code in row_sel_fetch_columns() that was noticed by Sergey Petrunya on the MySQL internals list and removed in r6285. As far as I can tell, there are no redundant UNIV_SQL_NULL assignments remaining after this change. ------------------------------------------------------------ revno: 2555.762.12 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:01:56 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6277 | marko | 2009-12-08 11:13:36 +0200 (Tue, 08 Dec 2009) | 1 line branches/zip: fsp0fsp.c: Add some missing in/out and const qualifiers. ------------------------------------------------------------ revno: 2555.762.11 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:01:13 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6275 | pekka | 2009-12-03 18:32:47 +0200 (Thu, 03 Dec 2009) | 10 lines branches/zip: Minor changes which allow build with UNIV_HOTBACKUP defined to succeed: include/trx0sys.h: Allow Hot Backup build to see some TRX_SYS_DOUBLEWRITE_... macros. trx/trx0sys.c: Exclude trx_sys_close() function from Hot Backup build. log/log0recv.[ch]: Exclude recv_sys_var_init() function from Hot Backup build. This change should not affect !UNIV_HOTBACKUP build. ------------------------------------------------------------ revno: 2555.762.10 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:00:30 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6274 | marko | 2009-12-03 14:47:12 +0200 (Thu, 03 Dec 2009) | 6 lines branches/zip: dict_table_check_for_dup_indexes(): Assert that the data dictionary mutex is being held while table->indexes is accessed. This is already the case. Currently, only dict_table_get_next_index() and dict_table_get_first_index() are being invoked without holding dict_sys->mutex. ------------------------------------------------------------ revno: 2555.762.9 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 15:00:09 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6272 | marko | 2009-12-02 11:46:05 +0200 (Wed, 02 Dec 2009) | 1 line branches/zip: Revert changes that were accidentally committed in r6271. ------------------------------------------------------------ revno: 2555.762.8 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 14:58:37 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6271 | marko | 2009-12-02 11:43:49 +0200 (Wed, 02 Dec 2009) | 2 lines branches/zip: ChangeLog: Document that since r6270, the zlib version number will be displayed at start-up. ------------------------------------------------------------ revno: 2555.762.7 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 14:53:07 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6270 | marko | 2009-12-02 11:36:47 +0200 (Wed, 02 Dec 2009) | 1 line branches/zip: innobase_start_or_create_for_mysql(): Log the zlib version. ------------------------------------------------------------ revno: 2555.762.6 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 14:52:21 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6269 | marko | 2009-12-02 11:35:22 +0200 (Wed, 02 Dec 2009) | 2 lines branches/zip: innobase_start_or_create_for_mysql(): UNIV_IBUF_DEBUG should not break crash recovery, but UNIV_IBUF_COUNT_DEBUG will. ------------------------------------------------------------ revno: 2555.762.5 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 14:51:49 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6264 | vasil | 2009-12-01 16:19:44 +0200 (Tue, 01 Dec 2009) | 1 line branches/zip: Add ChangeLog entry for the release of 1.0.6. ------------------------------------------------------------ revno: 2555.762.4 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 14:50:16 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6263 | vasil | 2009-12-01 14:49:05 +0200 (Tue, 01 Dec 2009) | 4 lines branches/zip: Increment version number from 1.0.6 to 1.0.7 1.0.6 has been released ------------------------------------------------------------ revno: 2555.762.3 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 14:45:58 +0400 message: Applying InnoDB snapshot, fixes BUG#41609. Detailed revision comments: r6252 | marko | 2009-11-30 12:50:11 +0200 (Mon, 30 Nov 2009) | 23 lines branches/zip: Suppress errors about non-found temporary tables. Write the is_temp flag to SYS_TABLES.MIX_LEN. dict_table_t::flags: Add a flag for is_temporary, DICT_TF2_TEMPORARY. Unlike other flags, this will not be written to the tablespace flags or SYS_TABLES.TYPE, but only to SYS_TABLES.MIX_LEN. dict_build_table_def_step(): Only pass DICT_TF_BITS to tablespaces. dict_check_tablespaces_and_store_max_id(), dict_load_table(): Suppress errors about temporary tables not being found. dict_create_sys_tables_tuple(): Write the DICT_TF2_TEMPORARY flag to SYS_TABLES.MIX_LEN. fil_space_create(), fil_create_new_single_table_tablespace(): Add assertions about space->flags. row_drop_table_for_mysql(): Do not complain about non-found temporary tables. rb://160 approved by Heikki Tuuri. This addresses the second part of Bug #41609 Crash recovery does not work for InnoDB temporary tables. ------------------------------------------------------------ revno: 2555.762.2 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-04-01 14:44:32 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6248 | marko | 2009-11-30 12:19:50 +0200 (Mon, 30 Nov 2009) | 1 line branches/zip: ChangeLog: Document r4922 that was forgotten. ------------------------------------------------------------ revno: 2555.725.75 [merge] committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Thu 2010-04-01 14:19:15 +0300 message: merge ------------------------------------------------------------ revno: 2555.738.3 [merge] author: hery.ramilison@sun.com committer: MySQL Build Team branch nick: mysql-5.1 timestamp: Wed 2010-03-17 00:26:26 +0100 message: Merge from mysql-5.1.45-release ------------------------------------------------------------ revno: 2555.725.74 [merge] committer: Georgi Kodinov branch nick: B37168-5.1-bugteam timestamp: Thu 2010-04-01 14:04:45 +0300 message: merge ------------------------------------------------------------ revno: 2555.762.1 committer: Ramil Kalimullin branch nick: b52397-5.1-bugteam timestamp: Wed 2010-03-31 17:00:56 +0400 message: Fix for bug#52397: another crash with explain extended and group_concat Problem: EXPLAIN EXTENDED was trying to resolve references to freed temporary table fields for GROUP_CONCAT()'s ORDER BY arguments. Fix: use stored original GROUP_CONCAT()'s arguments in such a case. ------------------------------------------------------------ revno: 2555.725.73 committer: Georgi Kodinov branch nick: B37168-5.1-bugteam timestamp: Wed 2010-03-31 16:12:37 +0300 message: Bug #37168: Missing variable - skip_name_resolve Added a read-only global boolean variable skip_name_resolve. ------------------------------------------------------------ revno: 2555.725.72 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Mon 2010-03-29 18:42:49 +0500 message: fixed compiler warning ------------------------------------------------------------ revno: 2555.725.71 [merge] committer: Georgi Kodinov branch nick: B51893-take2-5.1-bugteam timestamp: Tue 2010-03-30 15:10:25 +0300 message: merge ------------------------------------------------------------ revno: 1810.3989.9 committer: Georgi Kodinov branch nick: B51893-take2-5.0-bugteam timestamp: Tue 2010-03-30 15:03:50 +0300 message: Bug #51893: crash with certain characters given to load_file function on windows When making sure that the directory path ends up with a slash/backslash we need to check for the correct length of the buffer and trim at the appropriate location so we don't write past the end of the buffer. ------------------------------------------------------------ revno: 2555.725.70 committer: Georgi Kodinov branch nick: B51893-take2-5.1-bugteam timestamp: Tue 2010-03-23 16:54:16 +0200 message: Bug #51893: crash with certain characters given to load_file function on windows When making sure that the directory path ends up with a slash/backslash we need to check for the correct length of the buffer and trim at the appropriate location so we don't write past the end of the buffer. ------------------------------------------------------------ revno: 2555.725.69 [merge] committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-03-26 11:46:18 +0400 message: 5.0-bugteam->5.1-bugteam merge ------------------------------------------------------------ revno: 1810.3989.8 committer: Sergey Glukhov branch nick: mysql-5.0-bugteam timestamp: Fri 2010-03-26 11:44:24 +0400 message: Bug#52177 crash with explain, row comparison, join, text field The crash is the result of an attempt made by JOIN::optimize to evaluate the WHERE condition when no records have been actually read. The fix is to remove erroneous 'outer_join' variable check. ------------------------------------------------------------ revno: 2555.725.68 committer: Tatiana A. Nurnberg branch nick: 51-48525_ timestamp: Mon 2010-03-29 03:32:30 +0100 message: Bug#48525: trigger changes "Column 'id' cannot be null" behaviour CHECK_FIELD_IGNORE was treated as CHECK_FIELD_ERROR_FOR_NULL; UPDATE...SET...NULL on NOT NULL fields behaved differently after a trigger. Now distinguishes between IGNORE and ERROR_FOR_NULL and save/restores check-field options. ------------------------------------------------------------ revno: 2555.725.67 committer: branch nick: mysql-5.1-bugteam timestamp: Sun 2010-03-28 19:57:33 +0800 message: Bug #50407 mysqlbinlog --database=X produces bad output for SAVEPOINTs When mysqlbinlog was given the --database=X flag, it always printed 'ROLLBACK TO', but the corresponding 'SAVEPOINT' statement was not printed. The replicated filter(replicated-do/ignore-db) and binlog filter (binlog-do/ignore-db) has the same problem. They are solved in this patch together. After this patch, We always check whether the query is 'SAVEPOINT' statement or not. Because this is a literal check, 'SAVEPOINT' and 'ROLLBACK TO' statements are also binlogged in uppercase with no any comments. The binlog before this patch can be handled correctly except one case that any comments are in front of the keywords. for example: /* bla bla */ SAVEPOINT a; /* bla bla */ ROLLBACK TO a; ------------------------------------------------------------ revno: 2555.725.66 committer: branch nick: mysql-5.1-bugteam timestamp: Sun 2010-03-28 16:37:47 +0800 message: Bug #50095 Multi statement including CREATE EVENT causes rotten binlog entry The log event of 'CREATE EVENT' was being binlogged with garbage at the end of the query if 'CREATE EVENT' is followed by another SQL statement and they were executed as one command. for example: DELIMITER |; CREATE EVENT e1 ON EVERY DAY DO SELECT 1; SELECT 'a'; DELIMITER ;| When binlogging 'CREATE EVENT', we always create a new statement with definer and write it into the log event. The new statement is made from cpp_buf(preprocessed buffer). which is not a c string(end with '\0'), but it is copied as a c string. In this patch, cpp_buf is copied with its length. ------------------------------------------------------------ revno: 2555.725.65 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-03-26 15:20:11 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6884 | vdimov | 2010-03-26 13:05:03 +0200 (Fri, 26 Mar 2010) | 6 lines branches/5.1: Fix a non-determinism in innodb_bug38231. Reported by: Sergey Vojtovich r6884 | vdimov | 2010-03-26 13:05:03 +0200 (Fri, 26 Mar 2010) | 6 lines branches/5.1: Fix a non-determinism in innodb_bug38231. Reported by: Sergey Vojtovich ------------------------------------------------------------ revno: 2555.725.64 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-03-26 14:21:10 +0400 message: Merge fix for BUG51868 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.761.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug51868 timestamp: Mon 2010-03-22 16:30:27 +0400 message: BUG#51868 - crash with myisam_use_mmap and partitioned myisam tables Queries following TRUNCATE of partitioned MyISAM table may crash server if myisam_use_mmap is true. Internally this is MyISAM bug, but limited to partitioned tables, because MyISAM doesn't use ::delete_all_rows() method for TRUNCATE, but goes via table recreate instead. MyISAM didn't properly fall back to non-mmaped I/O after mmap() failure. Was not repeatable on linux before, likely because (quote from man mmap): SUSv3 specifies that mmap() should fail if length is 0. However, in kernels before 2.6.12, mmap() succeeded in this case: no mapping was created and the call returned addr. Since kernel 2.6.12, mmap() fails with the error EINVAL for this case. ------------------------------------------------------------ revno: 2555.725.63 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-03-26 14:20:10 +0400 message: Merge fix for BUG46565 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.760.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug46565 timestamp: Thu 2010-03-25 23:57:06 +0400 message: BUG#46565 - repair of partition fail for archive engine There was no way to repair corrupt ARCHIVE data file, when unrecoverable data loss is inevitable. With this fix REPAIR ... EXTENDED attempts to restore as much rows as possible, ignoring unrecoverable data. Normal REPAIR is still able to repair meta-data file only. ------------------------------------------------------------ revno: 2555.725.62 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-03-26 09:49:35 +0400 message: Bug#52164 Assertion failed: param.sort_length, file .\filesort.cc, line 149 The crash happens because of incorrect max_length calculation in QUOTE function(due to overflow). max_length is set to 0 and it leads to assert failure. The fix is to cast expression result to ulonglong variable and adjust it if the result exceeds MAX_BLOB_WIDTH. ------------------------------------------------------------ revno: 2555.725.61 committer: Ramil Kalimullin branch nick: mysql-5.1-bugteam timestamp: Thu 2010-03-25 20:35:07 +0400 message: An addition to fix for BUG#51866 - crash with repair by sort and fulltext keys. Min value for myisam_sort_buffer_size is 4096. ------------------------------------------------------------ revno: 2555.725.60 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Thu 2010-03-25 18:13:23 +0200 message: merge from 5.1-bt rep ------------------------------------------------------------ revno: 2555.759.1 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Thu 2010-03-25 19:59:54 +0400 message: Merge fixes for BUG51877, BUG51866, BUG47598 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.757.3 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Thu 2010-03-25 16:11:16 +0400 message: Merge fix for BUG51866 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.740.4 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug51866 timestamp: Thu 2010-03-25 16:08:21 +0400 message: BUG#51866 - crash with repair by sort and fulltext keys Repairing MyISAM table with fulltext indexes and low myisam_sort_buffer_size may crash the server. Estimation of number of index entries was done incorrectly, causing further assertion failure or server crash. Docs note: min value for myisam_sort_buffer_size has been changed from 4 to 4096. ------------------------------------------------------------ revno: 2555.757.2 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Thu 2010-03-25 15:50:36 +0400 message: Merge fix for BUG51877 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.758.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug51877 timestamp: Thu 2010-03-25 15:49:01 +0400 message: BUG#51877 - HANDLER interface causes invalid memory read Invalid memory read if HANDLER ... READ NEXT is executed after failed (e.g. empty table) HANDLER ... READ FIRST. The problem was that we attempted to perform READ NEXT, whereas there is no pivot available from failed READ FIRST. With this fix READ NEXT after failed READ FIRST equals to READ FIRST. This bug affects MyISAM tables only. ------------------------------------------------------------ revno: 2555.757.1 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Thu 2010-03-25 15:20:35 +0400 message: Merge fix for BUG47598 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.756.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug47598 timestamp: Thu 2010-03-25 15:18:14 +0400 message: BUG#47598 - MyISAM may write uninitialized data to disk When MyISAM writes newly created index page it may be initialized partially. In other words some bytes of sensible data and uninitialized tail of the page may go into index file. Under certain rare circumstances these hunks of memory may contain data that would be otherwise inaccessible to user, like passwords or data from other tables. Fixed by initializing memory for temporary MyISAM key buffer to '\0'. No test case for this fix as it is heavily covered by existing tests. ------------------------------------------------------------ revno: 2555.725.59 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Thu 2010-03-25 14:49:24 +0200 message: merging bug#52304 to 5.1-bt,pe ------------------------------------------------------------ revno: 2555.755.1 committer: Andrei Elkin branch nick: 5.1-bt-bug_rpl_show_slave_running timestamp: Tue 2010-03-23 17:00:50 +0200 message: Bug #52304 valgrind does not like to print un-inited string in Protocol_text::store() The reason of the failure was apparent flaw in that a pointer to an uninitialized buffer was passed to DBUG_PRINT of Protocol_text::store(). Fixed with splitting the print-out into two branches: one with length zero of the problematic arg and the rest. ------------------------------------------------------------ revno: 2555.725.58 [merge] committer: Alexey Botchkov branch nick: 51mrg timestamp: Wed 2010-03-24 16:14:47 +0400 message: merging. ------------------------------------------------------------ revno: 2555.754.1 [merge] committer: Kristofer Pettersson branch nick: mysql-5.1-bugteam timestamp: Thu 2010-03-25 13:26:48 +0100 message: Automerge ------------------------------------------------------------ revno: 2555.753.1 committer: Kristofer Pettersson branch nick: 51-bug46615 timestamp: Wed 2010-03-24 17:37:41 +0100 message: Bug#46615 Assertion in Query_cache::invalidate in INSERT in a VIEW of a MERGE table If the listed columns in the view definition of the table used in a 'INSERT .. SELECT ..' statement mismatched, a debug assertion would trigger in the cache invalidation code following the failing statement. Although the find_field_in_view() function correctly generated ER_BAD_FIELD_ERROR during setup_fields(), the error failed to propagate further than handle_select(). This patch fixes the issue by adding a check for the return value. ------------------------------------------------------------ revno: 2555.725.57 [merge] committer: Alexey Botchkov branch nick: 51mrg timestamp: Wed 2010-03-24 16:03:29 +0400 message: merging. ------------------------------------------------------------ revno: 2555.752.1 committer: Alexey Botchkov branch nick: 51377 timestamp: Tue 2010-03-09 14:19:10 +0400 message: Bug#51377 Crash in information_schema / processlist on concurrent DDL workload the fill_schema_processlist function accesses THD::query() without proper protection so the parallel thread killing can lead to access to the freed meemory. per-file comments: sql/sql_load.cc Bug#51377 Crash in information_schema / processlist on concurrent DDL workload the THD::set_query_inner() call needs to be protected. But here we don't need to change the original thd->query() at all. sql/sql_show.cc Bug#51377 Crash in information_schema / processlist on concurrent DDL workload protect the THD::query() access with the THD::LOCK_thd_data mutex. ------------------------------------------------------------ revno: 2555.725.56 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Wed 2010-03-24 23:09:23 +0400 message: More exceptions for InnoDB plugin tests. ------------------------------------------------------------ revno: 2555.725.55 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Wed 2010-03-24 18:52:28 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6822 | vasil | 2010-03-15 10:17:31 +0200 (Mon, 15 Mar 2010) | 12 lines branches/5.1: Typecast to silence a compiler warning: row/row0sel.c: 4548 C4244: '=' : conversion from 'float' to 'ib_ulonglong', possible loss of data row/row0sel.c: 4553 C4244: '=' : conversion from 'double' to 'ib_ulonglong', possible loss of data Reported by: Jonas Oreland Discussed with: Sunny Bains ------------------------------------------------------------ revno: 2555.725.54 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Wed 2010-03-24 18:51:57 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6785 | vasil | 2010-03-10 09:04:38 +0200 (Wed, 10 Mar 2010) | 11 lines branches/5.1: Add the missing --reap statements in innodb_bug38231.test. Probably MySQL enforced the presence of those recently and the test started failing like: main.innodb_bug38231 [ fail ] Test ended at 2010-03-10 08:48:32 CURRENT_TEST: main.innodb_bug38231 mysqltest: At line 49: Cannot run query on connection between send and reap r6788 | vasil | 2010-03-10 10:53:21 +0200 (Wed, 10 Mar 2010) | 8 lines branches/5.1: In innodb_bug38231.test: replace the fragile sleep 0.2 that depends on timing with a more robust condition which waits for the TRUNCATE and LOCK commands to appear in information_schema.processlist. This could also break if there are other sessions executing the same SQL commands, but there are none during the execution of the mysql test. ------------------------------------------------------------ revno: 2555.725.53 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Wed 2010-03-24 18:39:23 +0400 message: Applying InnoDB snapshot, fixes BUG#47621. Detailed revision comments: r6783 | jyang | 2010-03-09 17:54:14 +0200 (Tue, 09 Mar 2010) | 9 lines branches/5.1: Fix bug #47621 "MySQL and InnoDB data dictionaries will become out of sync when renaming columns". MySQL does not provide new column name information to storage engine to update the system table. To avoid column name mismatch, we shall just request a table copy for now. rb://246 approved by Marko. ------------------------------------------------------------ revno: 2555.725.52 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Wed 2010-03-24 18:37:23 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6780 | vasil | 2010-03-08 19:13:20 +0200 (Mon, 08 Mar 2010) | 4 lines branches/5.1: Whitespace fixup. ------------------------------------------------------------ revno: 2555.725.51 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Wed 2010-03-24 18:36:05 +0400 message: Applying InnoDB snapshot, fixes BUG#51653 Detailed revision comments: r6774 | calvin | 2010-03-03 23:56:10 +0200 (Wed, 03 Mar 2010) | 2 lines branches/5.1: fix bug#51653: outdated reference to set-variable Non functional change. ------------------------------------------------------------ revno: 2555.725.50 [merge] committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Wed 2010-03-24 14:45:09 +0400 message: 5.0-bugteam->5.1-bugteam merge ------------------------------------------------------------ revno: 1810.3989.7 committer: Sergey Glukhov branch nick: mysql-5.0-bugteam timestamp: Wed 2010-03-24 14:37:28 +0400 message: Bug#48483 crash in get_best_combination() The crash happens because greedy_serach can not determine best plan due to wrong inner table dependences. These dependences affects join table sorting which performs before greedy_search starting. In our case table which has real 'no dependences' should be put on top of the list but it does not happen as inner tables have no dependences as well. The fix is to exclude RAND_TABLE_BIT mask from condition which checks if table dependences should be updated. ------------------------------------------------------------ revno: 2555.725.49 committer: Georgi Kodinov branch nick: B51850-5.1-bugteam timestamp: Tue 2010-03-23 17:07:00 +0200 message: Bug #51850: crash/memory overlap when using load data infile and set col equal to itself! There's no need to copy the value of a field into itself. While generally harmless (except for some performance penalties) it may be dangerous when the copy code doesn't expect this. Fixed by checking if the source field is the same as the destination field before copying the data. Note that we must preserve the order of assignment of the null flags (hence the null_value assignment addition). ------------------------------------------------------------ revno: 2555.725.48 [merge] committer: Alexander Barkov branch nick: mysql-5.1-bugteam.b51976 timestamp: Mon 2010-03-22 16:29:53 +0400 message: Merging the latest changes ------------------------------------------------------------ revno: 2555.750.9 [merge] committer: Mats Kindahl branch nick: b49618-mysql-5.1-bugteam timestamp: Mon 2010-03-22 13:12:57 +0100 message: Merging with mysql-5.1-bugfixing. ------------------------------------------------------------ revno: 2555.750.8 committer: Mats Kindahl branch nick: b49618-mysql-5.1-bugteam timestamp: Mon 2010-03-22 13:10:18 +0100 message: BUG#49618: Field length stored incorrectly in binary log for InnoDB Patch to fix result files for the binlog suite under row- based replication. ------------------------------------------------------------ revno: 2555.725.47 committer: Alexander Barkov branch nick: mysql-5.1-bugteam.b51976 timestamp: Mon 2010-03-22 16:27:59 +0400 message: Bug #51976 LDML collations issue Problem: caseup_multiply and casedn_multiply members were not initialized for a dynamic collation, so UPPER() and LOWER() functions returned empty strings. Fix: initializing the members properly. Adding tests: mysql-test/r/ctype_ldml.result mysql-test/t/ctype_ldml.test Applying the fix: mysys/charset.c ------------------------------------------------------------ revno: 2555.725.46 [merge] committer: John H. Embretsen branch nick: mysql-5.1-bugteam timestamp: Mon 2010-03-22 10:06:56 +0100 message: Merge fix for bug 52060 into tip of 5.1-bugteam. ------------------------------------------------------------ revno: 2555.750.7 committer: Gleb Shchepa branch nick: mysql-5.1-bugteam timestamp: Mon 2010-03-22 12:33:25 +0400 message: Bug #49910: Behavioural change in SELECT/WHERE on YEAR(4) data type (Original patch by Sinisa Milivojevic) The YEAR(4) value of 2000 was equal to the "bad" YEAR(4) value of 0000. The get_year_value() function has been modified to not adjust bad YEAR(4) value to 2000. ------------------------------------------------------------ revno: 2555.750.6 committer: Andrei Elkin branch nick: 5.1-bt timestamp: Mon 2010-03-22 07:50:19 +0200 message: bug#51648 comments to rpl_show_slave_running test are added to ease merging ------------------------------------------------------------ revno: 2555.750.5 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Sun 2010-03-21 21:30:49 +0200 message: merging bug@51648 to 5.1-bt, pe from local bugfixing branch ------------------------------------------------------------ revno: 2555.751.1 committer: Andrei Elkin branch nick: 5.1-bt-bug_rpl_show_slave_running timestamp: Fri 2010-03-19 11:06:40 +0200 message: Bug #51648 DBUG_SYNC_POINT is not defined on all platforms and mtr cant pre-check that DBUG_SYNC_POINT has at least one strong limitation that it's not defined on all platforms. It has issues cooperating with @@debug. All in all its functionality is superseded by DEBUG_SYNC facility and there is no reason to maintain the old less flexible one. Fixed with adding debug_sync_set_action() function as a facility to set up a sync-action in the server sources code and re-writing existing simulations (found 3) to use it. Couple of tests have been reworked as well. The patch offers a pattern for setting sync-points in replication threads where the standard DEBUG_SYNC does not suffice to reach goals. ------------------------------------------------------------ revno: 2555.750.4 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-03-19 13:09:22 +0400 message: Bug#51242 HAVING clause on table join produce incorrect results The problem is that when we make conditon for grouped result const part of condition is cut off. It happens because some parts of 'having' condition which refer to outer join become const after make_join_statistics. These parts may be lost during further having condition transformation in JOIN::exec. The fix is adding 'having' condition check for const tables after make_join_statistics is performed. ------------------------------------------------------------ revno: 2555.750.3 committer: Martin Hansson branch nick: 5.1bt-post_push timestamp: Fri 2010-03-19 09:23:44 +0100 message: Post-push fix to disable a subset of the test case for Bug#47762. This has been back-ported from 6.0 as the problems proved to afflict 5.1 as well. The fix exposed two new bugs. They were reported as follows. Bug no 52174: Sometimes wrong plan when reading a MAX value from non-NULL index Bug no 52173: Reading NULL value from non-NULL index gives wrong result in embedded server Both bugs taken together affect a much smaller class of queries than #47762, so the fix stays for now. ------------------------------------------------------------ revno: 2555.750.2 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-03-19 10:21:37 +0400 message: Bug#51598 Inconsistent behaviour with a COALESCE statement inside an IN comparison Optimizer erroneously translated LEFT JOIN into INNER JOIN. It leads to cutting rows with NULL right side. It happens because Item_row uses not_null_tables() method form the base(Item) class and does not calculate 'null tables' properly. The fix is adding calculation of 'not null tables' to Item_row. ------------------------------------------------------------ revno: 2555.750.1 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-03-19 10:01:02 +0400 message: Bug#51494 crash with join, explain and 'sounds like' operator The crash happens because of discrepancy between values of conts_tables and join->const_table_map(make_join_statisctics). Calculation of conts_tables used condition with HA_STATS_RECORDS_IS_EXACT flag check. Calculation of join->const_table_map does not use this flag check. In case of MERGE table without union with index the table does not become const table and thus join_read_const_table() is not called for the table. join->const_table_map supposes this table is const and later in make_join_select this table is used for making&calculation const condition. As table record buffer is not populated it leads to crash. The fix is adding a check if an engine supports HA_STATS_RECORDS_IS_EXACT flag before updating join->const_table_map. ------------------------------------------------------------ revno: 2555.725.45 committer: John H. Embretsen branch nick: mysql-5.1-bugteam timestamp: Thu 2010-03-18 11:26:27 +0100 message: Bug#52060 - test udf fails on Snow Leopard reverse DNS lookup of "localhost" returns "broadcasthost" on Snow Leopard, and NULL on most others. Simply ignore the output, as this is not an essential part of UDF testing. ------------------------------------------------------------ revno: 2555.725.44 committer: Omer BarNir branch nick: v2_bug-5.1 timestamp: Wed 2010-03-17 23:42:07 -0700 message: Test suites for engine testing, moved from test-extra so will be available for general use. ------------------------------------------------------------ revno: 2555.725.43 [merge] committer: Mats Kindahl branch nick: b49618-mysql-5.1-bugteam timestamp: Wed 2010-03-17 19:15:41 +0100 message: Merging with mysql-5.1-bugteam ------------------------------------------------------------ revno: 2555.749.1 committer: Mats Kindahl branch nick: b49618-mysql-5.1 timestamp: Wed 2010-03-17 15:28:49 +0100 message: BUG#49618: Field length stored incorrectly in binary log for InnoDB The class Field_bit_as_char stores the metadata for the field incorrecly because bytes_in_rec and bit_len are set to (field_length + 7 ) / 8 and 0 respectively, while Field_bit has the correct values field_length / 8 and field_length % 8. Solved the problem by re-computing the values for the metadata based on the field_length instead of using the bytes_in_rec and bit_len variables. To handle compatibility with old server, a table map flag was added to indicate that the bit computation is exact. If the flag is clear, the slave computes the number of bytes required to store the bit field and compares that instead, effectively allowing replication *without conversion* from any field length that require the same number of bytes to store. ------------------------------------------------------------ revno: 2555.725.42 committer: Georgi Kodinov branch nick: B49838-5.1-bugteam timestamp: Wed 2010-03-17 16:18:46 +0200 message: Bug #49838: DROP INDEX and ADD UNIQUE INDEX for same index may corrupt definition at engine If a single ALTER TABLE contains both DROP INDEX and ADD INDEX using the same index name (a.k.a. index modification) we need to disable in-place alter table because we can't ask the storage engine to have two copies of the index with the same name even temporarily (if we first do the ADD INDEX and then DROP INDEX) and we can't modify indexes that are needed by e.g. foreign keys if we first do DROP INDEX and then ADD INDEX. Fixed the problem by disabling in-place ALTER TABLE for these cases. ------------------------------------------------------------ revno: 2555.725.41 committer: Davi Arnaut branch nick: 47761-5.1 timestamp: Tue 2010-03-09 09:51:56 -0300 message: Bug#47761: crash when killing a query during subquery execution... The problem was that killing a query during the optimization phase of a subselect would lead to crashes. The root of the problem is that the subselect execution engine ignores failures (eg: killed) during the optimization phase (JOIN::optimize), leading to a crash once the subquery is executed due to partially initialized structures (in this case a join tab). The optimal solution would be to cleanup certain optimizer structures if the optimization phase fails, but currently there is no infrastructure to properly to track and cleanup the structures. To workaround the whole problem one somewhat good solution is to avoid executing a subselect if the query has been killed. Cutting short any problems caused by failures during the optimization phase. ------------------------------------------------------------ revno: 2555.725.40 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Tue 2010-03-16 21:33:56 +0400 message: Merge fix for BUG47444 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.748.1 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Tue 2010-03-16 18:06:03 +0400 message: Merge fix for BUG47444 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.747.2 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug47444 timestamp: Tue 2010-03-16 17:15:19 +0400 message: Plugin author, description and version are available via I_S.PLUGINS, not via SHOW PLUGINS. ------------------------------------------------------------ revno: 2555.747.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug47444 timestamp: Fri 2010-03-12 14:43:30 +0400 message: BUG#47444 - --myisam_repair_threads>1can result in all index cardinalities=1 Parallel repair didn't poroperly update index cardinality in certain cases. When myisam_sort_buffer_size is not enough to store all keys, index cardinality was updated before index was actually written, when no index statistic is available. ------------------------------------------------------------ revno: 2555.725.39 [merge] committer: Martin Hansson branch nick: 5.1bt timestamp: Tue 2010-03-16 17:21:38 +0100 message: Merge of fix for Bug#47762. ------------------------------------------------------------ revno: 2555.740.3 [merge] committer: Mattias Jonsson branch nick: topush-51-bugteam_2 timestamp: Tue 2010-03-16 15:09:58 +0100 message: merge ------------------------------------------------------------ revno: 2555.743.5 [merge] committer: Mattias Jonsson branch nick: topush-51-bugteam timestamp: Fri 2010-03-12 11:52:38 +0100 message: merge ------------------------------------------------------------ revno: 2555.746.1 committer: Mattias Jonsson branch nick: b51830-51-bugteam timestamp: Wed 2010-03-10 12:56:05 +0100 message: Bug#51830: Incorrect partition pruning on range partition (regression) Problem was that partition pruning did not exclude the last partition if the range was beyond it (i.e. not using MAXVALUE) Fix was to not include the last partition if the partitioning function value was not within the partition range. ------------------------------------------------------------ revno: 2555.743.4 [merge] committer: Mattias Jonsson branch nick: topush-51-bugteam timestamp: Fri 2010-03-12 11:41:29 +0100 message: merge ------------------------------------------------------------ revno: 2555.742.2 committer: Mattias Jonsson branch nick: b48229-51-bugteam timestamp: Fri 2010-03-12 11:14:04 +0100 message: Bug#48229: group by performance issue of partitioned table Additional result file update ------------------------------------------------------------ revno: 2555.743.3 [merge] committer: Mattias Jonsson branch nick: topush-51-bugteam timestamp: Fri 2010-03-12 11:14:40 +0100 message: merged ------------------------------------------------------------ revno: 2555.745.1 committer: Mattias Jonsson branch nick: b50392-51-bugteam timestamp: Thu 2010-03-04 18:16:10 +0100 message: Bug#50392: insert_id is not reset for partitioned tables auto_increment on duplicate entry The bug was that when INSERT_ID was used and the storage engine was told to release any reserved but not used auto_increment values, it set the highest auto_increment value to INSERT_ID. The fix was to check if the auto_increment value was forced by user (INSERT_ID) or by slave-thread, i.e. not auto- generated. So that it is only allowed to release generated values. ------------------------------------------------------------ revno: 2555.743.2 [merge] committer: Mattias Jonsson branch nick: topush-51-bugteam timestamp: Thu 2010-03-11 14:25:33 +0100 message: merge ------------------------------------------------------------ revno: 2555.744.1 committer: Mattias Jonsson branch nick: b50104-51-bugteam_2 timestamp: Thu 2010-03-04 12:29:22 +0100 message: Bug#50104: Partitioned table with just 1 partion works with fk There was no check for foreign keys when altering partitioned tables. Added check for FK when altering partitioned tables. ------------------------------------------------------------ revno: 2555.743.1 [merge] committer: Mattias Jonsson branch nick: topush-51-bugteam timestamp: Thu 2010-03-11 14:18:44 +0100 message: merge ------------------------------------------------------------ revno: 2555.742.1 committer: Mattias Jonsson branch nick: b48229-51-bugteam timestamp: Thu 2010-03-04 12:09:09 +0100 message: Bug#48229: group by performance issue of partitioned table Problem was block_size on partitioned tables was not set, resulting in keys_per_block was not correct which affects the cost calculation for read time of indexes (including cost for group min/max).Which resulted in a bad optimizer decision. Fixed by setting stats.block_size correctly. ------------------------------------------------------------ revno: 2555.740.2 [merge] committer: Luis Soares branch nick: mysql-5.1-bugteam-push timestamp: Tue 2010-03-16 11:47:15 +0000 message: Automerge: mysql-5.1-bugteam bug branch --> mysql-5.1-bugteam latest. ------------------------------------------------------------ revno: 2555.741.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Thu 2010-03-04 10:18:06 +0000 message: BUG#51055: Replication failure on duplicate key + traditional SQL mode When the master was executing in sql_mode='traditional' (which implies that really_abort_on_warning returns TRUE - because of MODE_STRICT_ALL_TABLES), the error code (ER_DUP_ENTRY in the reported case) was not being set in the Query_log_event. Therefore, even if a failure was to be expected when replaying the statement on the slave, a failure would occur, because the Query_log_event was not transporting the expected error code, but 0 instead. This was because when the master was getting the error code to set it in the Query_log_event, the executing thread would be assumed to have been killed: THD::killed==THD::KILL_BAD_DATA. This would make the error code fetch routine not to check thd->main_da.sql_errno(), but instead the thd->killed value. What's more, is that the server would thd->killed value if thd->killed == THD::KILL_BAD_DATA and return 0 instead. So this is a double inconsistency, as the we should not even check thd->killed but rather thd->main_da.sql_errno(). We fix this by extending the condition used to choose whether to check the thd->main_da.sql_errno() or thd->killed, so that it takes into consideration the case when: thd->killed==THD::KILL_BAD_DATA. ------------------------------------------------------------ revno: 2555.740.1 committer: Martin Hansson branch nick: 5.1bt-commit timestamp: Tue 2010-03-16 10:20:07 +0100 message: Bug#50918: Date columns treated differently in Views than in Base Tables The type inferrence of a view column caused the result to be interpreted as the wrong type: DATE colums were interpreted as TIME and TIME as DATETIME. This happened because view columns are represented by Item_ref objects as opposed to Item_field's. Item_ref had no method for retrieving a TIME value and thus was forced to depend on the default implementation for any expression, which caused the expression to be evaluated as a string and then parsed into a TIME/DATETIME value. Fixed by letting Item_ref classes forward the request for a TIME value to the referred Item - which is a field in this case - this reads the TIME value directly without conversion. ------------------------------------------------------------ revno: 2555.725.38 committer: Martin Hansson branch nick: 5.1bt timestamp: Tue 2010-03-16 15:51:00 +0100 message: Bug#47762: Incorrect result from MIN() when WHERE tests NOT NULL column for NULL The optimization to read MIN() and MAX() values from an index did not properly handle comparisons with NULL values. Fixed by giving up the particular optimization step if there are non-NULL safe comparisons with NULL values, as the result is NULL anyway. Also, Oracle copyright notice was added to all files. ------------------------------------------------------------ revno: 2555.725.37 committer: Davi Arnaut branch nick: mysql-5.1-bugteam timestamp: Mon 2010-03-15 09:07:16 -0300 message: Bug#51289: double Item_cache_decimal::val_real() is broken Fix up function return value, it must return a double. ------------------------------------------------------------ revno: 2555.725.36 committer: Staale Smedseng branch nick: 49829-51 timestamp: Sun 2010-03-14 17:01:45 +0100 message: Bug #49829 Many "hides virtual function" warnings with SunStudio SunStudio compilers of late warn about methods that might hide methods in base classes due to the use of overloading combined with overriding. SunStudio also warns about variables defined in local socpe or method arguments that have the same name as a member attribute of the class. This patch renames methods that might hide base class methods, to make it easier both for humans and compilers to see what is actually called. It also renames variables in local scope. ------------------------------------------------------------ revno: 2555.725.35 committer: Davi Arnaut branch nick: mysql-5.1-bugteam timestamp: Sun 2010-03-14 08:16:59 -0300 message: Post-merge fix: replace plugin extension output. ------------------------------------------------------------ revno: 2555.725.34 committer: Davi Arnaut branch nick: 51770-5.1 timestamp: Sat 2010-03-13 18:32:42 -0300 message: Post-merge fix: remove unnecessary flush privileges. ------------------------------------------------------------ revno: 2555.725.33 committer: Davi Arnaut branch nick: 51770-5.1 timestamp: Tue 2010-03-09 09:16:17 -0300 message: Bug#51770: UNINSTALL PLUGIN requires no privileges The problem was that UNINSTALL PLUGIN wasn't performing privilege checks before removing a plugin. Any user (including users without any kind of privileges) could uninstall any plugin. The solution is to verify if the user has the DELETE privilege for the mysql.plugin table before uninstalling a plugin. ------------------------------------------------------------ revno: 2555.725.32 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-03-12 10:33:16 +0400 message: Bug#41788 mysql_fetch_field returns org_table == table by a view The problem is that Item_direct_view_ref which is inherited from Item_ident updates orig_table_name and table_name with the same values. The fix is introduction of new constructor into Item_ident and up which updates orig_table_name and table_name separately. ------------------------------------------------------------ revno: 2555.725.31 committer: Georgi Kodinov branch nick: B44178-5.1-bugteam timestamp: Thu 2010-03-11 15:16:54 +0200 message: Bug #44178: mysql cli does not comply with GPLv2 clause 2c Applied a path from Jim Winstead : Added a GPL notice. Added the missing '(c)' and 'v2'. ------------------------------------------------------------ revno: 2555.725.30 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Thu 2010-03-11 18:28:39 +0400 message: Merge fix for BUG48265 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.739.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug48265 timestamp: Wed 2010-03-03 14:49:03 +0400 message: BUG#48265 - MRG_MYISAM problem (works in 5.0.85, does't work in 5.1.40) MERGE engine fails to open child table from a different database if child table/database name contains characters that are subject for table name to filename encoding (WL1324). Another problem is that MERGE engine didn't properly open child table from the same database if child table name contains characters like '/', '#'. The problem was that table name to file name encoding was applied inconsistently: * On CREATE: encode table name + database name if child table is in different database; do not encode table name if child table is in the same database; * No decoding on open. With this fix child table/database names are always encoded on CREATE and decoded on open. Compatibility with older tables preserved. Along with this patch comes fix for SHOW CREATE TABLE, which used to show child table/database path instead of child table/database names. ------------------------------------------------------------ revno: 2555.725.29 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Thu 2010-03-11 15:19:01 +0400 message: Merge mysql-5.1 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.738.2 committer: Joerg Bruehe branch nick: mysql-5.1 timestamp: Thu 2010-03-04 14:26:27 +0100 message: Use a new version of "COPYING", the GPL text. This is *no* change in contents, the differences are formatting only and an address update of the FSF. It continues to be Version 2, June 1991. ------------------------------------------------------------ revno: 2555.738.1 author: hery.ramilison@sun.com committer: MySQL Build Team branch nick: mysql-5.1 timestamp: Mon 2010-03-01 11:58:26 +0100 message: Raise version number after cloning 5.1.45 ------------------------------------------------------------ revno: 2555.725.28 committer: Martin Hansson branch nick: 5.1bt-test_only timestamp: Wed 2010-03-10 17:10:05 +0100 message: Bug#50545: Single table UPDATE IGNORE crashes on join view in sql_safe_updates mode. This bug was unexpectedly fixed along with bug number 49534. This patch contains only the test case. ------------------------------------------------------------ revno: 2555.725.27 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Wed 2010-03-10 19:31:22 +0400 message: Merge an addition to BUG51342 5.0-bugteam -> 5.1-bugteam. ------------------------------------------------------------ revno: 1810.3989.6 committer: Sergey Vojtovich branch nick: mysql-5.0-bugteam-push timestamp: Wed 2010-03-10 19:28:49 +0400 message: An addition to fix for BUG#51342 - more xid crashing Restore autocommit variable by supplying explicit value. ------------------------------------------------------------ revno: 2555.725.26 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Wed 2010-03-10 16:32:12 +0400 message: Merge fix for BUG51307 to 5.1-bugteam. ------------------------------------------------------------ revno: 2555.737.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug51307 timestamp: Tue 2010-03-02 13:45:50 +0400 message: BUG#51307 - widespread corruption with partitions and insert...select Queries following bulk insert into an empty MyISAM table may break it. This was pure MyISAM problem. When bulk insert into an empty table is complete, MyISAM may want to enable indexes via repair by sort. If repair by sort fails (e.g. insufficient buffer), MyISAM failover to repair with key cache, requesting repair of data file. Repair of data file performs data file substitution. This means that current table instance will point to new data file. Other cached table instances are still pointing to an old, deleted data file. This is fixed by not requesting repair of data file during enable indexes. Explicit REPAIR is not affected, since it flushes all table instances. ------------------------------------------------------------ revno: 2555.725.25 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Wed 2010-03-10 16:26:39 +0400 message: Merge fix for BUG51342 to 5.1-bugteam. ------------------------------------------------------------ revno: 1810.3989.5 [merge] committer: Sergey Vojtovich branch nick: mysql-5.0-bugteam-push timestamp: Wed 2010-03-10 15:07:35 +0400 message: Merge fix for BUG51342 to 5.0-bugteam. ------------------------------------------------------------ revno: 1810.3990.1 committer: Sergey Vojtovich branch nick: mysql-5.0-bugteam-bug51342 timestamp: Wed 2010-03-10 15:04:32 +0400 message: BUG#51342 - more xid crashing SET autocommit=1 while XA transaction is active may cause various side effects, including memory corruption and server crash. The problem is that SET autocommit=1 and further queries attempt to commit local transaction, whereas XA transaction is still active. As local and XA transactions are mutually exclusive, this patch forbids enabling autocommit mode while XA transaction is active. ------------------------------------------------------------ revno: 2555.725.24 [merge] committer: Georgi Kodinov branch nick: B35250-5.1-bugteam timestamp: Wed 2010-03-10 12:22:08 +0200 message: merge ------------------------------------------------------------ revno: 1810.3989.4 committer: Georgi Kodinov branch nick: fix-5.0-bugteam timestamp: Wed 2010-03-10 12:11:39 +0200 message: merged the test disablement because of bug 51357 to 5.0-bugteam ------------------------------------------------------------ revno: 2555.725.23 [merge] committer: Georgi Kodinov branch nick: B35250-5.1-bugteam timestamp: Wed 2010-03-10 12:19:49 +0200 message: merge ------------------------------------------------------------ revno: 2555.736.1 committer: Georgi Kodinov branch nick: B41057-5.1-bugteam timestamp: Tue 2010-03-09 11:18:46 +0200 message: Bug #41057: mysql_update fails FATAL ERROR: Failed to create temporary file for defaults mysql_upgrade was passing an non-initialized non-null tmpdir to create_temp_file() if no --tmpdir was specified. This prevents create_temp_file() from taking the system temporary file path and as a result mysql_upgrade was trying to open a file in a directory that it may not have write access to. Fixed by making sure mysql_upgrade will pass a zero length temp dir string to create_temp_file() if no --tmpdir is specified. ------------------------------------------------------------ revno: 2555.725.22 committer: Georgi Kodinov branch nick: B35250-5.1-bugteam timestamp: Tue 2010-03-09 17:51:31 +0200 message: Bug #35250: readline check breaks when doing vpath build MySQL uses two source layouts when building : the bzr layout and the source package layout. The previous fix for bug 35250 contained 1 change that is valid for both modes and a number of changes that are valid only for the bzr source layout. The important thing was to fix the source package layout. And for this the change in configure.in was sufficient. It's not trivial (and not requested by this bug) to support VPATH builds from the bzr trees. This is why the other changes are reverted and the change to fix the VPATH build for source distributions is left intact. ------------------------------------------------------------ revno: 2555.725.21 [merge] committer: Luis Soares branch nick: mysql-5.1-bugteam-pp-fix timestamp: Wed 2010-03-10 00:07:33 +0000 message: Automerge: bzr bundle (post-push fix) in bug report --> mysql-5.1-bugteam-pp-fix ------------------------------------------------------------ revno: 2555.735.1 committer: Luis Soares branch nick: mysql-5.1-bugteam-pp-fix timestamp: Tue 2010-03-09 23:41:21 +0000 message: Post-push fix for BUG#51251. The test case added in previous patch missed a RESET MASTER on test start up. Without it, showing binary log contents can sometimes show spurious entries from previously executed tests, ultimately causing test failure - result mismatch. The test file was added in: revid:luis.soares@sun.com-20100224190153-k0bpdx9abe88uoo2 This patch also moves the test case into binlog_innodb_row.test file. This way we avoid having yet another test file, binlog_row_innodb_truncate.test, whose only purpose is to host one test case. This had been actually suggested during original patch review, but somehow the binlog_innodb_row was missed when searching for a file to host the test case. ------------------------------------------------------------ revno: 2555.725.20 committer: Davi Arnaut branch nick: 37316-5.1 timestamp: Mon 2010-03-08 11:30:20 -0300 message: Bug#37316: Anonymous error messages noticed sometimes, while running tests in MTR The problem was that mysqltest could attempt to execute a SHOW WARNINGS statement through a connection that was not properly reaped, thus violating its own rules. The solution is to skip SHOW WARNINGS if a connection has not been properly repeaed. ------------------------------------------------------------ revno: 2555.725.19 committer: Davi Arnaut branch nick: 40277-5.1 timestamp: Tue 2010-03-09 07:36:26 -0300 message: Bug#40277: SHOW CREATE VIEW returns invalid SQL The problem is that not all column names retrieved from a SELECT statement can be used as view column names due to length and format restrictions. The server failed to properly check the conformity of those automatically generated column names before storing the final view definition on disk. Since columns retrieved from a SELECT statement can be anything ranging from functions to constants values of any format and length, the solution is to rewrite to a pre-defined format any names that are not acceptable as a view column name. The name is rewritten to "Name_exp_%u" where %u translates to the position of the column. To avoid this conversion scheme, define explict names for the view columns via the column_list clause. Also, aliases are now only generated for top level statements. ------------------------------------------------------------ revno: 2555.725.18 committer: Davi Arnaut branch nick: 51650-5.1 timestamp: Tue 2010-03-09 18:55:08 -0300 message: Bug#51650: crash with user variables and triggers The problem was that bits of the destructive equality propagation optimization weren't being undone after the execution of a stored program. Modifications to the parse tree that are based on transient properties must be undone to enable the re-execution of stored programs. The solution is to cleanup any references to predicates generated by the equality propagation during the execution of a stored program. ------------------------------------------------------------ revno: 2555.725.17 committer: Georgi Kodinov branch nick: fix-5.1-bugteam timestamp: Tue 2010-03-09 19:00:15 +0200 message: Disable the second part of the test for bug #51357 until bug #51877 is fixed. ------------------------------------------------------------ revno: 2555.725.16 committer: Georgi Kodinov branch nick: fix-5.1-bugteam timestamp: Tue 2010-03-09 15:46:27 +0200 message: Addendum to the test for bug 51357 : disable the (possibly binary) output from HANDLER ... READ .. NEXT ... ------------------------------------------------------------ revno: 2555.725.15 [merge] committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Tue 2010-03-09 00:03:15 +0000 message: Automerge BUG 51251 incremental bundle --> mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.734.2 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 12:58:33 +0000 message: BUG#51251: Wrong binlogging in case of TRUNCATE Incremental commit based on previous patch. Addresses reviewer comments to move reseting of thd->current_stmt_binlog_row_based to after binlog_query takes place. ------------------------------------------------------------ revno: 2555.725.14 [merge] committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Tue 2010-03-09 00:02:28 +0000 message: Automerge BUG 51251 bundle from bug report --> mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.734.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Wed 2010-02-24 19:01:53 +0000 message: BUG#51251: Wrong binlogging in case of TRUNCATE For temporary tables that are created with an engine that does not provide the HTON_CAN_RECREATE, the truncate operation is performed resorting to the optimized handler::ha_delete_all_rows method. However, this means that the truncate will share execution path, from mysql_delete, with truncate on regular tables and other delete operations. As a consequence the truncate operation, for the temporary table is logged, even if in row mode because there is no distinction between this and the other delete operations at binlogging time. We fix this by checking if: (i) the binlog format, when the truncate operation was issued, is ROW; (ii) if the operation is a truncate; and (iii) if the table is a temporary table; before writing to the binary log. If all three conditions are met, we skip writing to the binlog. A side effect of this fix is that we limit the scope of setting and resetting the current_stmt_binlog_row_based. Now we just set and reset it inside mysql_delete in the boundaries of the handler::ha_write_row loop. This way we have access to thd->current_stmt_binlog_row_based real value inside mysql_delete. ------------------------------------------------------------ revno: 2555.725.13 [merge] committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Mon 2010-03-08 23:57:26 +0000 message: Automerge BUG 51226 bzr bundle from bug report --> myqsl-5.1-bugteam. ------------------------------------------------------------ revno: 2555.733.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Wed 2010-03-03 12:16:18 +0000 message: BUG#51226: mysqlbinlog replay: ERROR 1146 when using temp tables + failing statements Implicit DROP event for temporary table is not getting LOG_EVENT_THREAD_SPECIFIC_F flag, because, in the previous executed statement in the same thread, which might even be a failed statement, the thread_specific_used flag is set to FALSE (in mysql_reset_thd_for_next_command) and not set to TRUE before connection is shutdown. This means that implicit DROP event will take the FALSE value from thread_specific_used and will not set LOG_EVENT_THREAD_SPECIFIC_F in the event header. As a consequence, mysqlbinlog will not print the pseudo_thread_id from the DROP event, because one of the requirements for the printout is that this flag is set to TRUE. We fix this by setting thread_specific_used whenever we are binlogging a DROP in close_temporary_tables, and resetting it to its previous value afterward. ------------------------------------------------------------ revno: 2555.725.12 [merge] committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Mon 2010-03-08 23:55:19 +0000 message: Automerge: BUG 48993 bundle from bug report --> mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.732.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Wed 2010-02-17 18:07:28 +0000 message: BUG#48993: valgrind errors in mysqlbinlog I found three issues during the analysis: 1. Memory leak caused by temp_buf not being freed; 2. Memory leak caused when handling argv; 3. Conditional jump that depended on unitialized values. Issue #1 -------- DESCRIPTION: when mysqlbinlog is reading from a remote location the event temp_buf references the incoming stream (in NET object), which is not freed by mysqlbinlog explicitly. On the other hand, when it is reading local binary log, it points to a temporary buffer that needs to be explicitly freed. For both cases, the temp_buf was not freed by mysqlbinlog, instead was set to 0. This clearly disregards the free required in the second case, thence creating a memory leak. FIX: we make temp_buf to be conditionally freed depending on the value of remote_opt. Found out that similar fix is already in most recent codebases. Issue #2 -------- DESCRIPTION: load_defaults is called by parse_args, and it reads default options from configuration files and put them BEFORE the arguments that are already in argc and argv. This is done resorting to MEM_ROOT. However, parse_args calls handle_options immediately after which changes argv. Later when freeing the defaults, pointers to MEM_ROOT won't match, causing the memory not to be freed: void free_defaults(char **argv) { MEM_ROOT ptr memcpy_fixed((char*) &ptr,(char *) argv - sizeof(ptr), sizeof(ptr)); free_root(&ptr,MYF(0)); } FIX: we remove load_defaults from parse_args and call it before. Then we save argv with defaults in defaults_argv BEFORE calling parse_args (which inside can then call handle_options at will). Actually, found out that this is in fact kind of a backport for BUG#38468 into 5.1, so I merged in the test case as well and added error check for load_defaults call. Fix based on: revid:zhenxing.he@sun.com-20091002081840-uv26f0flw4uvo33y Issue #3 -------- DESCRIPTION: the structure st_print_event_info constructor would not initialize the sql_mode member, although it did for sql_mode_inited (set to false). This would later raise the warning in valgrind when printing the sql_mode in the event header, as this print out is protected by a check against sql_mode_inited and sql_mode variables. Given that sql_mode was not initialized valgrind would output the warning. FIX: we add initialization of sql_mode to the st_print_event_info constructor. ------------------------------------------------------------ revno: 2555.725.11 [merge] committer: Georgi Kodinov branch nick: B51357-5.1-bugteam timestamp: Mon 2010-03-08 12:42:01 +0200 message: null merge ------------------------------------------------------------ revno: 1810.3989.3 committer: Georgi Kodinov branch nick: B51357-5.0-bugteam timestamp: Mon 2010-03-08 12:39:57 +0200 message: Backport of the fix for bug #51357 to 5.0-bugteam.: Spatial indexes were not checking for out-of-record condition in the handler next command when the previous command didn't found rows. Fixed by making the rtree index to check for end of rows condition before re-using the key from the previous search. Fixed another crash if the tree has changed since the last search. Added a test case for the other error. ------------------------------------------------------------ revno: 1810.3989.2 [merge] committer: Tatiana A. Nurnberg branch nick: 50-1 timestamp: Thu 2010-03-04 12:39:29 +0000 message: auto-merge ------------------------------------------------------------ revno: 1810.3989.1 [merge] committer: Tatiana A. Nurnberg branch nick: 50-1 timestamp: Thu 2010-03-04 12:23:05 +0000 message: auto-merge ------------------------------------------------------------ revno: 2555.725.10 committer: Georgi Kodinov branch nick: B51357-5.1-bugteam timestamp: Thu 2010-03-04 18:13:08 +0200 message: Bug #51357: crash when using handler commands on spatial indexes Spatial indexes were not checking for out-of-record condition in the handler next command when the previous command didn't found rows. Fixed by making the rtree index to check for end of rows condition before re-using the key from the previous search. Fixed another crash if the tree has changed since the last search. Added a test case for the other error. ------------------------------------------------------------ revno: 2555.725.9 committer: Gleb Shchepa branch nick: mysql-5.1-bugteam timestamp: Fri 2010-03-05 23:45:55 +0400 message: Bug #39653: find_shortest_key in sql_select.cc does not consider clustered primary keys Choosing a shortest index for the covering index scan, the optimizer ignored the fact, that the clustered primary key read involves whole table data. The find_shortest_key function has been modified to take into account that fact that a clustered PK has a longest key of possible covering indices. ------------------------------------------------------------ revno: 2555.725.8 [merge] committer: Tatiana A. Nurnberg branch nick: 51-1 timestamp: Fri 2010-03-05 17:45:29 +0000 message: auto-merge ------------------------------------------------------------ revno: 2555.731.1 committer: Ramil Kalimullin branch nick: b32426-5.1-bugteam timestamp: Fri 2010-03-05 14:51:37 +0400 message: Fix for bug#32426: "FEDERATED query returns corrupt results for ORDER BY on a TEXT or VARCHAR field" backported to 5.1. ------------------------------------------------------------ revno: 2555.725.7 [merge] committer: Tatiana A. Nurnberg branch nick: 51-1 timestamp: Fri 2010-03-05 16:44:37 +0000 message: manual merge ------------------------------------------------------------ revno: 2555.730.1 [merge] committer: Tatiana A. Nurnberg branch nick: 51-48295_ timestamp: Tue 2010-03-02 18:13:43 +0000 message: manual merge ------------------------------------------------------------ revno: 1810.3988.1 committer: Tatiana A. Nurnberg branch nick: 50-48295_ timestamp: Tue 2010-03-02 18:00:53 +0000 message: Bug#48295: explain extended crash with subquery and ONLY_FULL_GROUP_BY sql If an outer query is broken, a subquery might not even get set up. EXPLAIN EXTENDED did not expect this and merrily tried to de-ref all of the half-setup info. We now catch this case and print as much as we have, as it doesn't cost us anything (doesn't make regular execution slower). backport from 5.1 ------------------------------------------------------------ revno: 2555.725.6 [merge] committer: Tatiana A. Nurnberg branch nick: 51-1 timestamp: Thu 2010-03-04 12:47:58 +0000 message: auto-merge ------------------------------------------------------------ revno: 2555.704.4 [merge] committer: Tatiana A. Nurnberg branch nick: 51-49487__ timestamp: Tue 2010-03-02 20:59:50 +0000 message: auto-merge ------------------------------------------------------------ revno: 1810.3983.5 [merge] committer: Tatiana A. Nurnberg branch nick: 50-49487__ timestamp: Tue 2010-03-02 16:18:16 +0000 message: auto-merge ------------------------------------------------------------ revno: 2555.704.3 [merge] committer: Tatiana A. Nurnberg branch nick: 51-49487__ timestamp: Tue 2010-03-02 20:40:11 +0000 message: auto-merge ------------------------------------------------------------ revno: 2555.725.5 committer: Georgi Kodinov branch nick: fix-5.1-bugteam timestamp: Tue 2010-03-02 14:43:21 +0200 message: Moved the ndb related tests out of the per-push pb2 run to the daily pb2 run. ------------------------------------------------------------ revno: 2555.725.4 committer: Staale Smedseng branch nick: 49417-51 timestamp: Mon 2010-03-01 14:49:51 +0100 message: Bug#49417 some complaints about mysqld --help --verbose output This patch fixes some typos and poorly formulated sentences in the output from mysqld --help --verbose. Some of the problems described in the bug report are already handled by the patch for Bug#49447, and are therefore not included in this patch. ------------------------------------------------------------ revno: 2555.725.3 committer: Andrei Elkin branch nick: mysql-5.1-bugteam timestamp: Mon 2010-03-01 14:33:15 +0200 message: Bug #51600 rpl_slave_skip waits for slave to stop incorrectly START SLAVE UNTIL MASTER ... specifies only SQL thread to stop. rpl_slave_skip erronously deployed waiting for stop of both threads. Corrected with deploying the correct macro. Notice, earlier a similar bug@47749 was fixed in mysql-trunk. ------------------------------------------------------------ revno: 2555.725.2 [merge] committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Mon 2010-03-01 10:44:34 +0200 message: merge ------------------------------------------------------------ revno: 2555.727.11 committer: Ramil Kalimullin branch nick: b51304-5.1-bugteam timestamp: Sun 2010-02-28 21:29:19 +0400 message: Fix for bug#51304: checksum table gives different results for same data when using bit fields Problem: checksum for BIT fields may be computed incorrectly in some cases due to its storage peculiarity. Fix: convert a BIT field to a string then calculate its checksum. ------------------------------------------------------------ revno: 2555.727.10 committer: Andrei Elkin branch nick: 5.1-bt timestamp: Sat 2010-02-27 17:08:53 +0200 message: Bug #51574 rpl_row_create_table fails in ps-protocol at CREATE TABLE IF NOT EXISTS bug48506 disabling the test to not run on PB ------------------------------------------------------------ revno: 2555.727.9 committer: Davi Arnaut branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 23:19:59 -0300 message: Force execution now that another test case might run mysql_upgrade first. ------------------------------------------------------------ revno: 2555.727.8 committer: Davi Arnaut branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 23:09:36 -0300 message: Workaround the pthread_once_t static initialization. Per the POSIX standard, reinitialization of a pthread_once is a gray area, but it is needed to support subsequent initializations of the client library. ------------------------------------------------------------ revno: 2555.727.7 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Fri 2010-02-26 22:00:03 +0200 message: merging from 5.1 rep to a local branch ------------------------------------------------------------ revno: 2555.729.3 committer: Davi Arnaut branch nick: 49823-5.1 timestamp: Fri 2010-02-26 09:22:48 -0300 message: Bug#49823: mysql_upgrade fatal error due to general_log / slow_low CSV NULL The problem was that the CSV storage engine does not support NULL fields, yet in some early 5.1 version the log tables (general_log and slow_log) were created with null fields. On top of this, when altering a CSV table column, all fields of the table must be NOT NULL otherwise the alteration fails. The solution is to ensure that during upgrade all columns of the log tables are NOT NULL. ------------------------------------------------------------ revno: 2555.727.6 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Fri 2010-02-26 21:07:26 +0200 message: merging from 5.1 rep to a local branch ------------------------------------------------------------ revno: 2555.729.2 committer: Staale Smedseng branch nick: 45058-akonadi-51 timestamp: Fri 2010-02-26 15:30:14 +0100 message: Bug #45058 init_available_charsets uses double checked locking A client doing multiple mysql_library_init() and mysql_library_end() calls over the lifetime of the process may experience lost character set data, potentially even a SIGSEGV. This patch reinstates the reloading of character set data when a mysql_library_init() is done after a mysql_library_end(). ------------------------------------------------------------ revno: 2555.729.1 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 17:40:01 +0400 message: Bug#47669 Query showed by EXPLAIN EXTENDED gives different result from original query Item_field::print method does not take into account fields whose values may be null. The fix is to print 'NULL' if field value is null. ------------------------------------------------------------ revno: 2555.727.5 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Fri 2010-02-26 15:14:34 +0200 message: merging from 5.1-bt rep to local branch ------------------------------------------------------------ revno: 2555.727.4 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Fri 2010-02-26 14:19:49 +0200 message: merging fixes of bug@45576 to 5.1-bt ------------------------------------------------------------ revno: 2555.728.1 committer: Andrei Elkin branch nick: 5.1-bt-bug45576-row_create_table-fails timestamp: Fri 2010-02-26 14:18:13 +0200 message: Bug #45576 rpl_row_create_table fails on PB2 The test failed due to Bug #29790. However, logics of the failing part does not need I_S selecting. Fixing to remove the non-deterministic I_S selecting as redundant from a part of the test dealing with BUG@22864. ------------------------------------------------------------ revno: 2555.727.3 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Fri 2010-02-26 14:10:08 +0200 message: merging fixes of bug@51089 to 5.1-bt ------------------------------------------------------------ revno: 2555.726.3 committer: Andrei Elkin branch nick: 5.1-bt-bug51089-slave_running-backport timestamp: Fri 2010-02-26 14:09:26 +0200 message: bug#51089 correcting c&p typos in the results ------------------------------------------------------------ revno: 2555.727.2 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Fri 2010-02-26 14:09:47 +0200 message: merging fixes of bug@51089 to 5.1-bt ------------------------------------------------------------ revno: 2555.726.2 committer: Andrei Elkin branch nick: 5.1-bt-bug51089-slave_running-backport timestamp: Fri 2010-02-26 14:07:47 +0200 message: bug#51089 correcting c&p typos in the test ------------------------------------------------------------ revno: 2555.727.1 [merge] committer: Andrei Elkin branch nick: 5.1-bt timestamp: Fri 2010-02-26 14:02:16 +0200 message: merging fixes of bug@51089 to 5.1-bt ------------------------------------------------------------ revno: 2555.726.1 committer: Andrei Elkin branch nick: 5.1-bt-bug51089-slave_running-backport timestamp: Thu 2010-02-25 12:39:43 +0200 message: Bug #51089 SHOW STATUS LIKE 'Slave_running' is not compatible with `SHOW SLAVE STATUS' backporting of bug@30703 to 5.1. The fixes are backed up with a regression test. ------------------------------------------------------------ revno: 2555.725.1 committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Mon 2010-03-01 10:43:24 +0200 message: tree name change ------------------------------------------------------------ revno: 2572.82.1 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.2 timestamp: Wed 2010-06-09 16:07:08 +0200 message: Merged in 5.1.45 ------------------------------------------------------------ revno: 2555.690.32 tags: mysql-5.1.45 committer: Kent Boortz branch nick: mysql-5.1.45-release timestamp: Mon 2010-03-01 20:18:09 +0100 message: Revert untested VPATH changes ------------------------------------------------------------ revno: 2555.690.31 tags: clone-5.1.45-build committer: Joerg Bruehe branch nick: mysql-5.1 timestamp: Mon 2010-03-01 11:42:44 +0100 message: Spec file for RPMs: Now that Oracle has legally acquired Sun, change the copyright owner and the vendor. ------------------------------------------------------------ revno: 2555.690.30 [merge] committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Mon 2010-03-01 10:38:27 +0200 message: merge ------------------------------------------------------------ revno: 1810.3987.4 committer: Georgi Kodinov branch nick: merge-5.0-bugteam timestamp: Mon 2010-03-01 10:35:14 +0200 message: tree version change ------------------------------------------------------------ revno: 2555.690.29 [merge] committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Mon 2010-03-01 10:37:38 +0200 message: merge ------------------------------------------------------------ revno: 2555.723.2 committer: Georgi Kodinov branch nick: B51468-5.1-bugteam timestamp: Fri 2010-02-26 14:49:13 +0200 message: Bug #51468: mysqld_multi is broken in 5.1.44 Fixed a syntax error in mysqld_multi.sh ------------------------------------------------------------ revno: 2555.690.28 [merge] committer: Georgi Kodinov branch nick: merge-5.1-bugteam timestamp: Fri 2010-02-26 15:16:46 +0200 message: merge 5.0-bugteam -> 5.1-bugteam ------------------------------------------------------------ revno: 1810.3987.3 [merge] committer: Georgi Kodinov branch nick: merge-5.0-bugteam timestamp: Fri 2010-02-26 15:10:25 +0200 message: merge ------------------------------------------------------------ revno: 1810.3982.9 [merge] author: sunanda.menon@sun.com committer: MySQL Build Team branch nick: mysql-5.0 timestamp: Sat 2010-02-20 18:08:35 +0100 message: Null-merge from mysql-5.0.87sp1-release ------------------------------------------------------------ revno: 1810.3964.19 tags: mysql-5.0.87sp1 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:43:18 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2840 [merge] > revision-id: ramil@mysql.com-20100113101142-pda4phrsyh1rjp85 > parent: joerg@mysql.com-20100112114118-zfpofgcu0j49j839 > parent: ramil@mysql.com-20100113052045-een35iazzk8023w2 > committer: Ramil Kalimullin > branch nick: mysql-5.0-bugteam > timestamp: Wed 2010-01-13 14:11:42 +0400 > message: > Auto-merge. > ------------------------------------------------------------ > Use --include-merges or -n0 to see merged revisions. ------------------------------------------------------------ revno: 1810.3964.18 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:42:25 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.48 > revision-id: joro@sun.com-20091210092838-zbz9ugqay1tn7rxm > parent: joro@sun.com-20091207143856-ojmmqr0bm1haxvca > committer: Georgi Kodinov > branch nick: B49250-5.0-bugteaam > timestamp: Thu 2009-12-10 11:28:38 +0200 > message: > Bug #49250 : spatial btree index corruption and crash > > SPATIAL and FULLTEXT indexes don't support algorithm > selection. > Disabled by creating a special grammar rule for these > in the parser. > Added some encasulation of duplicate parser code. ------------------------------------------------------------ revno: 1810.3964.17 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:41:24 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.41 [merge] > revision-id: epotemkin@mysql.com-20091203132153-k8xwk3nh02n8npg4 > parent: epotemkin@mysql.com-20091202134712-4muwnr152xqkcwm7 > parent: epotemkin@mysql.com-20091203131520-93uiop1a81o9z8mb > committer: Evgeny Potemkin > branch nick: mysql-5.0-bugteam > timestamp: Thu 2009-12-03 16:21:53 +0300 > message: > Auto-merged. > ------------------------------------------------------------ > Use --include-merges or -n0 to see merged revisions. ------------------------------------------------------------ revno: 1810.3964.16 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:40:24 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.40 [merge] > revision-id: epotemkin@mysql.com-20091202134712-4muwnr152xqkcwm7 > parent: gshchepa@mysql.com-20091201102444-yw166t3audrojo9s > parent: epotemkin@mysql.com-20091201182845-aw0uawt6c6gwi98c > committer: Evgeny Potemkin > branch nick: mysql-5.0-bugteam > timestamp: Wed 2009-12-02 16:47:12 +0300 > message: > Auto-merged fix for the bug#48508. > ------------------------------------------------------------ > Use --include-merges or -n0 to see merged revisions. ------------------------------------------------------------ revno: 1810.3964.15 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:38:46 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.39 > revision-id: gshchepa@mysql.com-20091201102444-yw166t3audrojo9s > parent: joro@sun.com-20091127160731-6h2fahbh4409i841 > committer: Gleb Shchepa > branch nick: mysql-5.0-bugteam > timestamp: Tue 2009-12-01 14:24:44 +0400 > message: > Bug #38883 (reopened): thd_security_context is not thread safe, crashes? > > The bug 38816 changed the lock that protects THD::query from > LOCK_thread_count to LOCK_thd_data, but didn't update the associated > InnoDB functions. > > 1. The innobase_mysql_prepare_print_arbitrary_thd and the > innobase_mysql_end_print_arbitrary_thd InnoDB functions have been > removed, since now we have a per-thread mutex: now we don't need to wrap > several inter-thread access tries to THD::query with a single global > LOCK_thread_count lock, so we can simplify the code. > > 2. The innobase_mysql_print_thd function has been modified to lock > LOCK_thd_data in direct way. ------------------------------------------------------------ revno: 1810.3964.14 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:37:47 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.38 > revision-id: joro@sun.com-20091127160731-6h2fahbh4409i841 > parent: joro@sun.com-20091127143622-bqfsmhhr2pqodsm2 > committer: Georgi Kodinov > branch nick: fix-5.0-bugteam > timestamp: Fri 2009-11-27 18:07:31 +0200 > message: > Addendum to bug #48872: disable output in the test case because errors are > dependent on the case mode ------------------------------------------------------------ revno: 1810.3964.13 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:36:20 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.35 > revision-id: joro@sun.com-20091127095944-autr58itccge4z9l > parent: satya.bn@sun.com-20091125095925-871384fcnwwa2yqt > committer: Georgi Kodinov > branch nick: B48872-5.0-bugteam > timestamp: Fri 2009-11-27 11:59:44 +0200 > message: > Bug #48872 : Privileges for stored functions ignored if function name > is mixed case > > Transcode the procedure name to lowercase when searching for it in the > hash. This is the missing part of the fix for bug #41049. ------------------------------------------------------------ revno: 1810.3964.12 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:34:46 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.29 > revision-id: joro@sun.com-20091118152410-j4tv22vf9xkb6sdz > parent: kent.boortz@sun.com-20091117164924-rscth12t9a2qog1b > committer: Georgi Kodinov > branch nick: test-5.0-bugteam > timestamp: Wed 2009-11-18 17:24:10 +0200 > message: > Bug#48864: MySQL fails to compile on 64 bit Fedora 12 > > Fixed 2 errors in comp_err executable : > 1. Wrong (off by 1) length passed to my_checksum() > 2. strmov() was used on overlapping strings. This is > not legal according to the docs in stpcpy(). Used > the overlap safe memmove() instead. ------------------------------------------------------------ revno: 1810.3964.11 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:33:14 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.26 > revision-id: joro@sun.com-20091109140946-07wao5od7l1vn4x1 > parent: joro@sun.com-20091110082141-ldr8p6s1joczve2j > committer: Georgi Kodinov > branch nick: B48458-5.0-bugteam > timestamp: Mon 2009-11-09 16:09:46 +0200 > message: > Bug #48458: simple query tries to allocate enormous amount of > memory > > The server was doing a bad class typecast causing setting of > wrong value for the maximum number of items in an internal > structure used in equality propagation. > Fixed by not doing the wrong typecast and asserting the type > of the Item where it should be done. ------------------------------------------------------------ revno: 1810.3964.10 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:32:15 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.19 > revision-id: kostja@sun.com-20091103165854-7di545xruez8w207 > parent: li-bing.song@sun.com-20091103090041-zj7nedx6ok5jgges > committer: Konstantin Osipov > branch nick: 5.0-41756 > timestamp: Tue 2009-11-03 19:58:54 +0300 > message: > A fix and a test case for > Bug#41756 "Strange error messages about locks from InnoDB". > > In JT_EQ_REF (join_read_key()) access method, > don't try to unlock rows in the handler, unless certain that > a) they were locked > b) they are not used. > > Unlocking of rows is done by the logic of the nested join loop, > and is unaware of the possible caching that the access method may > have. This could lead to double unlocking, when a row > was unlocked first after reading into the cache, and then > when taken from cache, as well as to unlocking of rows which > were actually used (but taken from cache). > > Delegate part of the unlocking logic to the access method, > and in JT_EQ_REF count how many times a record was actually > used in the join. Unlock it only if it's usage count is 0. > > Implemented review comments. ------------------------------------------------------------ revno: 1810.3964.9 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:31:14 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.18 > revision-id: li-bing.song@sun.com-20091103090041-zj7nedx6ok5jgges > parent: davi.arnaut@sun.com-20091102201021-1brn7cjb1kvqg9gr > committer: > branch nick: mysql-5.0-bugteam > timestamp: Tue 2009-11-03 17:00:41 +0800 > message: > BUG#48216 Replication fails on all slaves after upgrade to 5.0.86 on master > > When a sessione is closed, all temporary tables of the session are automatically > dropped and are binlogged. But it will be binlogged with wrong database names when > the length of the temporary tables' database names are greater than the > length of the current database name or the current database is not set. > > Query_log_event's db_len is forgot to set when Query_log_event's db is set. > This patch wrote code to set db_len immediately after db has set. ------------------------------------------------------------ revno: 1810.3964.8 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:29:49 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.4.1 > revision-id: alexey.kopytov@sun.com-20091030155453-0vlfwki805h9os62 > parent: joerg@mysql.com-20091016122941-rf6z0keqvmlgjfto > committer: Alexey Kopytov > branch nick: my50-bug48131 > timestamp: Fri 2009-10-30 18:54:53 +0300 > message: > Bug #48131: crash group by with rollup, distinct, filesort, > with temporary tables > > There were two problems the test case from this bug was > triggering: > > 1. JOIN::rollup_init() was supposed to wrap all constant Items > into another object for queries with the WITH ROLLUP modifier > to ensure they are never considered as constants and therefore > are written into temporary tables if the optimizer chooses to > employ them for DISTINCT/GROUP BY handling. > > However, JOIN::rollup_init() was called before > make_join_statistics(), so Items corresponding to fields in > const tables could not be handled as intended, which was > causing all kinds of problems later in the query execution. In > particular, create_tmp_table() assumed all constant items > except "hidden" ones to be removed earlier by remove_const() > which led to improperly initialized Field objects for the > temporary table being created. This is what was causing crashes > and valgrind errors in storage engines. > > 2. Even when the above problem had been fixed, the query from > the test case produced incorrect results due to some > DISTINCT/GROUP BY optimizations being performed by the > optimizer that are inapplicable in the WITH ROLLUP case. > > Fixed by disabling inapplicable DISTINCT/GROUP BY optimizations > when the WITH ROLLUP modifier is present, and splitting the > const-wrapping part of JOIN::rollup_init() into a separate > method which is now invoked after make_join_statistics() when > the const tables are already known. ------------------------------------------------------------ revno: 1810.3964.7 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:28:51 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.13 > revision-id: joro@sun.com-20091030131543-2b23fnqckgbzvete > parent: joro@sun.com-20091030094044-quadg0bwjy7cwqzw > committer: Georgi Kodinov > branch nick: B48291-5.0-bugteam > timestamp: Fri 2009-10-30 15:15:43 +0200 > message: > Bug #48291 : crash with row() operator,select into @var, and > subquery returning multiple rows > > Error handling was missing when handling subqueires in WHERE > and when assigning a SELECT result to a @variable. > This caused crash(es). > > Fixed by adding error handling code to both the WHERE > condition evaluation and to assignment to an @variable. ------------------------------------------------------------ revno: 1810.3964.6 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:27:27 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.12 > revision-id: joro@sun.com-20091030094044-quadg0bwjy7cwqzw > parent: joro@sun.com-20091029152429-ks55fhrp4lhknyij > committer: Georgi Kodinov > branch nick: B48293-5.0-bugteam > timestamp: Fri 2009-10-30 11:40:44 +0200 > message: > Bug #48293: crash with procedure analyse, view with > 10 columns, > having clause... > > The fix for bug 46184 was not very complete. It was not covering > views using temporary tables and multiple tables in a FROM clause. > Fixed by reverting the fix for 46184 and making a more general > check that is checking at the right execution stage and for all > of the non-supported cases. > Now PROCEDURE ANALYZE on non-top level SELECT is also forbidden. > Updated the analyse.test and subselect.test accordingly. ------------------------------------------------------------ revno: 1810.3964.5 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:26:24 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.6 > revision-id: joro@sun.com-20091021084345-iki6z0uceieoupey > parent: ramil@mysql.com-20091023112648-gie6o3odj57cxh1e > committer: Georgi Kodinov > branch nick: B47780-5.0-bugteam > timestamp: Wed 2009-10-21 11:43:45 +0300 > message: > Bug #47780: crash when comparing GIS items from subquery > > If the first argument to GeomFromWKB function is a geometry > field then the function just returns its value. > However in doing so it's not preserving first argument's > null_value flag and this causes unexpected null value to > be returned to the calling function. > > Fixed by updating the null_value of the GeomFromWKB function > in such cases (and all other cases that return a NULL e.g. > because of not enough memory for the return buffer). ------------------------------------------------------------ revno: 1810.3964.4 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:25:25 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.5 > revision-id: ramil@mysql.com-20091023112648-gie6o3odj57cxh1e > parent: ramil@mysql.com-20091021090408-208mvwwrcroi2j8c > committer: Ramil Kalimullin > branch nick: b48258-5.0-bugteam > timestamp: Fri 2009-10-23 16:26:48 +0500 > message: > Fix for bug#48258: Assertion failed when using a spatial index > > Problem: involving a spatial index for "non-spatial" queries > (that don't containt MBRXXX() functions) may lead to failed assert. > > Fix: don't use spatial indexes in such cases. ------------------------------------------------------------ revno: 1810.3964.3 committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Wed 2010-02-03 16:23:26 +0100 message: Backport into build-201002030816-5.0.87sp1 > ------------------------------------------------------------ > revno: 2818.1.4 > revision-id: ramil@mysql.com-20091021090408-208mvwwrcroi2j8c > parent: azundris@mysql.com-20091021033856-ydodp4q42o58e7ka > committer: Ramil Kalimullin > branch nick: b47019-5.0-bugteam > timestamp: Wed 2009-10-21 14:04:08 +0500 > message: > Fix for bug#47019: Assertion failed: 0, file .\rt_mbr.c, > line 138 when forcing a spatial index > > Problem: "Spatial indexes can be involved in the search > for queries that use a function such as MBRContains() > or MBRWithin() in the WHERE clause". > Using spatial indexes for JOINs with =, <=> etc. > predicates is incorrect. > > Fix: disable spatial indexes for such queries. ------------------------------------------------------------ revno: 1810.3964.2 author: sunanda.menon@sun.com committer: MySQL Build Team branch nick: mysql-5.0.87sp1-release timestamp: Tue 2010-02-02 13:09:05 +0100 message: Set version number for mysql-5.0.87sp1 release ------------------------------------------------------------ revno: 1810.3987.2 committer: Christopher Powers branch nick: mysql timestamp: Thu 2010-02-25 09:49:09 -0600 message: Bug #48739 MySQL crashes on specific INTERVAL in select query Fixed crash caused by x64 int/long incompatibility introduced in Bug #29125. ------------------------------------------------------------ revno: 2555.690.27 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-02-26 16:34:13 +0400 message: Merge innodb-5.1-ss6765 to 5.1-bugteam. ------------------------------------------------------------ revno: 2555.724.7 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 13:04:24 +0400 message: Applying InnoDB snapshot, fixes BUG#50691 Detailed revision comments: r6669 | jyang | 2010-02-11 12:24:19 +0200 (Thu, 11 Feb 2010) | 7 lines branches/5.1: Fix bug #50691, AIX implementation of readdir_r causes InnoDB errors. readdir_r() returns an non-NULL value in the case of reaching the end of a directory. It should not be treated as an error return. rb://238 approved by Marko ------------------------------------------------------------ revno: 2555.724.6 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 13:03:58 +0400 message: Applying InnoDB snapshot, fixes BUG#38901 Detailed revision comments: r6613 | inaam | 2010-02-09 20:23:09 +0200 (Tue, 09 Feb 2010) | 11 lines branches/5.1: Fix Bug #38901 InnoDB logs error repeatedly when trying to load page into buffer pool In buf_page_get_gen() if we are unable to read a page (because of corruption or some other reason) we keep on retrying. This fills up error log with millions of entries in no time and we'd eventually run out of disk space. This patch limits the number of attempts that we make (currently set to 100) and after that we abort with a message. rb://241 Approved by: Heikki ------------------------------------------------------------ revno: 2555.724.5 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 13:03:23 +0400 message: Applying InnoDB snapshot, fixes BUG#49001 Detailed revision comments: r6545 | jyang | 2010-02-03 03:57:32 +0200 (Wed, 03 Feb 2010) | 8 lines branches/5.1: Fix bug #49001, "SHOW INNODB STATUS deadlock info incorrect when deadlock detection aborts". Print the correct lock owner when recursive function lock_deadlock_recursive() exceeds its maximum depth LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK. rb://217, approved by Marko. ------------------------------------------------------------ revno: 2555.724.4 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 13:02:57 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6538 | sunny | 2010-01-30 00:43:06 +0200 (Sat, 30 Jan 2010) | 6 lines branches/5.1: Check *first_value every time against the column max value and set *first_value to next autoinc if it's > col max value. ie. not rely on what is passed in from MySQL. [49497] Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value rb://236 ------------------------------------------------------------ revno: 2555.724.3 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 13:02:26 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6537 | sunny | 2010-01-30 00:35:00 +0200 (Sat, 30 Jan 2010) | 2 lines branches/5.1: Undo r6536. ------------------------------------------------------------ revno: 2555.724.2 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 13:02:05 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6536 | sunny | 2010-01-30 00:13:42 +0200 (Sat, 30 Jan 2010) | 6 lines branches/5.1: Check *first_value everytime against the column max value and set *first_value to next autoinc if it's > col max value. ie. not rely on what is passed in from MySQL. [49497] Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value rb://236 ------------------------------------------------------------ revno: 2555.724.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 13:01:31 +0400 message: Applying InnoDB snapshot Detailed revision comments: r6535 | sunny | 2010-01-30 00:08:40 +0200 (Sat, 30 Jan 2010) | 11 lines branches/5.1: Undo the change from r6424. We need to return DB_SUCCESS even if we were unable to initialize the tabe autoinc value. This is required for the open to succeed. The only condition we currently treat as a hard error is if the autoinc field instance passed in by MySQL is NULL. Previously if the table autoinc value was 0 and the next value was requested we had an assertion that would fail. Change that assertion and treat a value of 0 to mean that the autoinc system is unavailable. Generation of next value will now return failure. rb://237 ------------------------------------------------------------ revno: 2555.690.26 [merge] committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 16:19:05 +0400 message: automerge ------------------------------------------------------------ revno: 2555.723.1 [merge] committer: Evgeny Potemkin branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 14:19:44 +0300 message: Auto-merged fox for the bug#50843. ------------------------------------------------------------ revno: 2555.722.1 committer: Evgeny Potemkin branch nick: 50843-bug-5.1-bugteam timestamp: Fri 2010-02-26 14:17:00 +0300 message: Bug#50843: Filesort used instead of clustered index led to performance degradation. Filesort + join cache combination is preferred to full index scan because it is usually faster. But it's not the case when the index is clustered one. Now test_if_skip_sort_order function prefers filesort only if index isn't clustered. ------------------------------------------------------------ revno: 2555.690.25 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-26 15:39:25 +0400 message: Bug#50995 Having clause on subquery result produces incorrect results. The problem is that cond->fix_fields(thd, 0) breaks condition(cuts off 'having'). The reason of that is that NULL valued Item pointer is present in the middle of Item list and it breaks the Item processing loop. ------------------------------------------------------------ revno: 2555.690.24 committer: Gleb Shchepa branch nick: mysql-5.1-bugteam timestamp: Thu 2010-02-25 23:13:11 +0400 message: Bug #45360: wrong results Propagation of a large unsigned numeric constant in the WHERE expression led to wrong result. For example, "WHERE a = CAST(0xFFFFFFFFFFFFFFFF AS USIGNED) AND FOO(a)", where a is an UNSIGNED BIGINT, and FOO() accepts strings, was transformed to "... AND FOO('-1')". That has been fixed. Also EXPLAIN EXTENDED printed incorrect numeric constants in transformed WHERE expressions like above. That has been fixed too. ------------------------------------------------------------ revno: 2555.690.23 [merge] committer: Alexey Kopytov branch nick: mysql-5.1-bugteam timestamp: Thu 2010-02-25 19:26:30 +0300 message: Automerge. ------------------------------------------------------------ revno: 2555.721.1 committer: Alexey Kopytov branch nick: my51-bug50335 timestamp: Thu 2010-02-25 18:48:53 +0300 message: Bug #50335: Assertion `!(order->used & map)' in eq_ref_table The problem was in an incorrect debug assertion. The expression used in the failing assertion states that when finding references matching ORDER BY expressions, there can be only one reference to a single table. But that does not make any sense, all test cases for this bug are valid examples with multiple identical WHERE expressions referencing the same table which are also present in the ORDER BY list. Fixed by removing the failing assertion. We also have to take care of the 'found' counter so that we count multiple references only once. We rely on this fact later in eq_ref_table(). ------------------------------------------------------------ revno: 2555.690.22 [merge] committer: Georgi Kodinov branch nick: B49552-5.1-bugteam timestamp: Thu 2010-02-25 17:12:15 +0200 message: merge ------------------------------------------------------------ revno: 1810.3987.1 committer: Georgi Kodinov branch nick: B49552-5.0-bugteam timestamp: Thu 2010-02-25 16:57:15 +0200 message: Backport of the fix for bug #49552 to 5.0-bugteam ------------------------------------------------------------ revno: 2555.690.21 committer: Georgi Kodinov branch nick: B35250-5.1-bugteam timestamp: Fri 2010-02-12 18:28:35 +0200 message: Bug #35250: readline check breaks when doing vpath build Fixed several (obvious) places that don't work with vpath build. ------------------------------------------------------------ revno: 2555.690.20 committer: Magne Mahre branch nick: mysql-5.1-bugteam timestamp: Tue 2010-02-23 12:33:20 +0100 message: Clean-up in the sys_vars test suite after WL#5154 and WL5182 Two result files in the sys_vars suite wasn't properly updated after the change in deprecation text ------------------------------------------------------------ revno: 2555.690.19 committer: Magne Mahre branch nick: mysql-5.1-bugteam timestamp: Tue 2010-02-23 12:17:20 +0100 message: Revert of a change introduced by Bug#47974 "TYPE=storage_engine" is deprecated, and will be removed in the Celosia release of MySQL. Since the option is present in the Betony release and the version number of Celosia is still not decided, we need to bump the deprecation version number back up to "6.0". ------------------------------------------------------------ revno: 2555.690.18 [merge] committer: Timothy Smith branch nick: 5.1-bugteam timestamp: Mon 2010-02-22 16:34:47 -0700 message: auto-merge ------------------------------------------------------------ revno: 1810.3986.1 [merge] committer: Timothy Smith branch nick: 5.0-bugteam timestamp: Mon 2010-02-22 16:31:51 -0700 message: auto-merge ------------------------------------------------------------ revno: 2555.690.17 [merge] committer: Timothy Smith branch nick: 5.1-bugteam timestamp: Mon 2010-02-22 16:34:04 -0700 message: auto-merge ------------------------------------------------------------ revno: 2555.720.1 [merge] committer: Timothy Smith branch nick: 51 timestamp: Wed 2010-02-17 12:36:16 -0700 message: merge ------------------------------------------------------------ revno: 1810.3985.1 committer: Timothy Smith branch nick: 50 timestamp: Wed 2010-02-17 12:00:18 -0700 message: Request that internals mailing list be notified if the MySQL version formatting changes ------------------------------------------------------------ revno: 2555.690.16 [merge] committer: Tatiana A. Nurnberg branch nick: 51-48525 timestamp: Mon 2010-02-22 17:57:19 +0000 message: auto-merge ------------------------------------------------------------ revno: 2555.706.2 [merge] committer: Bjorn Munch branch nick: mysql-5.1-bugteam timestamp: Mon 2010-02-22 14:52:11 +0100 message: merge from 5.1-mtr ------------------------------------------------------------ revno: 2555.438.125 [merge] committer: Alexander Nozdrin branch nick: mysql-5.1-mtr timestamp: Sat 2010-02-20 12:08:40 +0300 message: Auto-merge from mysql-5.1. ------------------------------------------------------------ revno: 2555.692.3 [merge] author: hery.ramilison@sun.com committer: MySQL Build Team branch nick: mysql-5.1 timestamp: Wed 2010-02-17 18:48:40 +0100 message: Merge from mysql-5.1.44-release ------------------------------------------------------------ revno: 2555.438.124 committer: Bjorn Munch branch nick: maxconn-51 timestamp: Wed 2010-02-17 16:28:02 +0100 message: Bug #51135 Please increase the maximum number of connections allowed in mysqltest Added --max-connections= argument to mysqltest and mtr Small fix to first patch: forgot to check before free'ing connections array ------------------------------------------------------------ revno: 2555.438.123 committer: Bjorn Munch branch nick: noreord-51 timestamp: Wed 2010-02-17 12:37:37 +0100 message: Bug #44054 MTR2: --no-reorder does not prevent reordering Some logic would group by suite always Disable this if using --noreorder Also fix getting array from collect_one_suite() in this case Amended according to previous comment ------------------------------------------------------------ revno: 2555.438.122 [merge] committer: Bjorn Munch branch nick: merge-51 timestamp: Sun 2010-02-14 12:22:10 +0100 message: merge from 5.1 main ------------------------------------------------------------ revno: 2555.692.2 [merge] committer: Joerg Bruehe branch nick: bug50950-5.1 timestamp: Mon 2010-02-08 21:40:17 +0100 message: Upmerge "configure.in" text change from 5.0 to 5.1, fixing bug#50950. ------------------------------------------------------------ revno: 1810.3982.8 committer: Joerg Bruehe branch nick: bug50950-5.0 timestamp: Mon 2010-02-08 21:10:37 +0100 message: Bug#50950 Obsolete reference to www.mysql.com in message printed at end of configure New text for the success message of "configure". ------------------------------------------------------------ revno: 2555.438.121 committer: Bjorn Munch branch nick: sleepvar-51 timestamp: Thu 2010-02-11 14:26:58 +0100 message: renaming test variables+c to variables_community, + is problematic ------------------------------------------------------------ revno: 2555.438.120 [merge] committer: Bjorn Munch branch nick: sleepvar-51 timestamp: Thu 2010-02-11 14:00:34 +0100 message: merge 31602 ------------------------------------------------------------ revno: 2555.719.1 committer: Bjorn Munch branch nick: space-51 timestamp: Wed 2010-02-03 15:11:52 +0100 message: Bug #31602 mysql-test-run.pl seems to have problems with file names including spaces. Too complex/risky to try to fix Instead, detect the problem and communicate that this is not supported ------------------------------------------------------------ revno: 2555.438.119 [merge] committer: Bjorn Munch branch nick: sleepvar-51 timestamp: Thu 2010-02-11 13:57:43 +0100 message: merge 47389 ------------------------------------------------------------ revno: 2555.718.1 committer: Bjorn Munch branch nick: innoroot-51 timestamp: Thu 2010-02-11 11:22:07 +0100 message: Bug #47389 Innodb tests are skipped when running as unix root user Add --user=root to collect_mysqld_features() if running as root Please disregard previous commit; this is much simpler. ------------------------------------------------------------ revno: 2555.438.118 committer: Bjorn Munch branch nick: sleepvar-51 timestamp: Tue 2010-02-09 18:13:57 +0100 message: Bug #50618 Please allow 'sleep $variable' in mtr Made mtr's sleep function understand $variables A few fixes since previous patch, added tests ------------------------------------------------------------ revno: 2555.438.117 [merge] committer: Bjorn Munch branch nick: merge-51 timestamp: Sun 2010-02-07 12:21:11 +0100 message: merge from 5.1 main ------------------------------------------------------------ revno: 2555.438.116 committer: Bjorn Munch branch nick: rfwc-51 timestamp: Thu 2010-02-04 13:15:42 +0100 message: Bug #39774 mysql-test-run's remove_file can't use wildcards, this should be documented Added remove_files_wildcard that allows to remove multiple files at once. This is a port of original patch to Windows. ------------------------------------------------------------ revno: 2555.438.115 committer: branch nick: mysql-5.1-mtr timestamp: Wed 2010-02-03 15:49:20 +0800 message: Bug #50414 valgrind warnings: invalid file descriptor -1 in syscall write()/read() Sometimes stop/restart master or stop/restart salve can cause network error, which can cause the 'invalid file descriptor -1 in syscall write()/read()' warnings. All involved test cases except rpl_slave_load_remove_tmpfile belong to the kind of network error. So they are expected. The 'rpl_slave_load_remove_tmpfile' belongs to file error, but it is testing the file error as following code: DBUG_EXECUTE_IF("remove_slave_load_file_before_write", my_close(fd,MYF(0)); fd= -1; my_delete(fname, MYF(0));); So it's expected too. To fix the problem, add the valgrind warnings to the global suppression list to suppress it. ------------------------------------------------------------ revno: 2555.438.114 committer: Bjorn Munch branch nick: merge-51 timestamp: Thu 2010-01-28 15:19:18 +0100 message: merge 49210 ------------------------------------------------------------ revno: 2555.438.113 committer: Bjorn Munch branch nick: portbase-51 timestamp: Mon 2010-01-25 11:20:52 +0100 message: Bug #50182 mtr: allow $MTR_PORT_BASE or --port-base= as alternative to MTR_BUILD_THREAD As suggested, convert internally to value of build_thread ------------------------------------------------------------ revno: 2555.438.112 committer: Bernd Ocklin branch nick: mysql-5.1-mtr timestamp: Fri 2010-01-22 14:12:17 +0100 message: fix LD_LIBRARY_PATH (bug#50540) ------------------------------------------------------------ revno: 2555.438.111 [merge] committer: Bjorn Munch branch nick: ifdelim-51 timestamp: Wed 2010-01-20 14:23:57 +0100 message: merge 49837 ------------------------------------------------------------ revno: 2555.717.1 committer: Bjorn Munch branch nick: execmul-51 timestamp: Wed 2010-01-20 12:51:18 +0100 message: Bug #49837 mysqltest exec cannot handle multi-line command correctly Since the exec command line is passed on externally, it cannot take newlines Simply replace \n with space Now also added test case ------------------------------------------------------------ revno: 2555.438.110 [merge] committer: Bjorn Munch branch nick: ifdelim-51 timestamp: Wed 2010-01-20 14:22:34 +0100 message: merge 48888 ------------------------------------------------------------ revno: 2555.716.1 committer: Bjorn Munch branch nick: repres-51 timestamp: Wed 2010-01-20 12:52:35 +0100 message: Bug #48888 mysqltest crashes on --replace_result if 'from' is longer than ~1024 symbols valgrind pointed to a buffer allocated by my_realloc which looked fishy Replaced size with what was probably intended, added test case. Now also fixed line after review comment ------------------------------------------------------------ revno: 2555.438.109 [merge] committer: Bjorn Munch branch nick: ifdelim-51 timestamp: Wed 2010-01-20 14:20:53 +0100 message: merge 43005 ------------------------------------------------------------ revno: 2555.715.1 committer: Bjorn Munch branch nick: quote-51 timestamp: Tue 2010-01-19 09:48:56 +0100 message: Bug#43005 main.init_connect fails on Windows due to wrong quoting of args - The arguments are properly quoted when mtr.pl calls my_safe_process but unfortunately the all off when running with active state perl and stays in cygwin perl. - Extend the patch to only quote args that are not already quoted This a redo of previous commit, will be included in next push ------------------------------------------------------------ revno: 2555.438.108 committer: Bjorn Munch branch nick: ifdelim-51 timestamp: Wed 2010-01-20 14:18:27 +0100 message: Bug #49878 delimiter under false 'if' makes mysqltest test fail with 'Missing end of block' delimiter not executed so does not recognize end of block Always execute delimiter command, revert after false if() block. ------------------------------------------------------------ revno: 2555.438.107 committer: Bernd Ocklin branch nick: mysql-5.1-mtr timestamp: Wed 2010-01-20 12:54:55 +0100 message: exporting server version and other as env var (bug#50471) ------------------------------------------------------------ revno: 2555.438.106 committer: Bjorn Munch branch nick: unreap-51 timestamp: Thu 2010-01-07 13:17:54 +0100 message: backport some changes from WL 4378 ------------------------------------------------------------ revno: 2555.438.105 committer: Bjorn Munch branch nick: unreap-51 timestamp: Thu 2010-01-07 11:22:45 +0100 message: Bug #49269 mysqltest crashes on 'reap' if query executed after 'send' Undid amendment allowing pending reap after switching connections Moved check for pending reap earlier; failed if running with ps-protocol ------------------------------------------------------------ revno: 2555.438.104 committer: Bjorn Munch branch nick: case-51 timestamp: Wed 2010-01-06 12:56:22 +0100 message: Bug #49269 mysqltest crashes on 'reap' if query executed after 'send' Small amendment: ignore pending reap when switching connection, add test ------------------------------------------------------------ revno: 2555.438.103 [merge] committer: Bjorn Munch branch nick: case-51 timestamp: Wed 2010-01-06 09:54:43 +0100 message: merge 49345 ------------------------------------------------------------ revno: 2555.714.1 committer: Bjorn Munch branch nick: gprof-51 timestamp: Tue 2010-01-05 21:35:50 +0100 message: Bug #49345 re-introduce gprof to mysql-test-run.pl Was available in v1 Porting to v2 required some rewriting Updated after review comments ------------------------------------------------------------ revno: 2555.438.102 [merge] committer: Bjorn Munch branch nick: case-51 timestamp: Wed 2010-01-06 09:52:55 +0100 message: merge 49672 ------------------------------------------------------------ revno: 2555.713.1 committer: Bjorn Munch branch nick: exit1-51 timestamp: Tue 2009-12-15 10:12:24 +0100 message: Bug #49672 mtr should extract end of result log if mysqltest fails without output Extracts last 20 lines if no output after failure ------------------------------------------------------------ revno: 2555.438.101 committer: Bjorn Munch branch nick: case-51 timestamp: Wed 2010-01-06 09:47:25 +0100 message: Bug #49761 mysqltest.test does not have any tests for send/reap Added them NB the 6th case is adapted to Bug no. 49269, gives wrong output without it ------------------------------------------------------------ revno: 2555.438.100 committer: Bjorn Munch branch nick: case-51 timestamp: Wed 2010-01-06 09:45:28 +0100 message: Bug #49269 mysqltest crashes on 'reap' if query executed after 'send' Set a flag after send to trap the case ------------------------------------------------------------ revno: 2555.438.99 committer: Bjorn Munch branch nick: case-51 timestamp: Wed 2010-01-06 09:42:21 +0100 message: Bug #48863 mysql test: enable and disable case insensitive compare mode Implemented --lowercase_result which lower cases next result ------------------------------------------------------------ revno: 2555.438.98 committer: Bjorn Munch branch nick: comb-51 timestamp: Tue 2010-01-05 13:31:38 +0100 message: Bug #49166 mtr --combination is broken after restrictions of combination names Combinations beginning with -- not allowed Allow them... ------------------------------------------------------------ revno: 2555.438.97 [merge] committer: Bjorn Munch branch nick: merge-51 timestamp: Mon 2009-12-21 12:54:45 +0100 message: merge from 5.1 again ------------------------------------------------------------ revno: 2555.438.96 [merge] committer: Bjorn Munch branch nick: sendeval-51 timestamp: Wed 2009-12-16 10:37:41 +0100 message: Merge from 5.1 main ------------------------------------------------------------ revno: 2555.438.95 committer: Bjorn Munch branch nick: sendeval-51 timestamp: Wed 2009-12-16 10:06:37 +0100 message: backport mysqltest send_eval from 42520 ------------------------------------------------------------ revno: 2555.438.94 committer: Bjorn Munch branch nick: embmut-51 timestamp: Thu 2009-11-26 11:34:16 +0100 message: Bug #48918 MTR uses an un-initialized value in comparison mysqld->{proc} not defined for an embedded server Check only if {proc} defined ------------------------------------------------------------ revno: 2555.438.93 committer: Bjorn Munch branch nick: embmut-51 timestamp: Thu 2009-11-26 11:23:30 +0100 message: Bug #49096 mtr: --mem option should be ignored on Windows Ignored w/message in v1 and v2 ------------------------------------------------------------ revno: 2555.438.92 committer: Bjorn Munch branch nick: embmut-51 timestamp: Thu 2009-11-26 11:16:06 +0100 message: Bug #48250 mysqtest_embedded can lock destroyed mutex As suggested, replaced relevant uses of my_fopen with fopen (and close) Tested on HPUX where it was reproducable with test innodb_bug30919 ------------------------------------------------------------ revno: 2555.438.91 [merge] committer: Bjorn Munch branch nick: timer-51 timestamp: Tue 2009-11-24 09:16:14 +0100 message: merge 48683 ------------------------------------------------------------ revno: 2555.712.1 committer: Bjorn Munch branch nick: aboner-51 timestamp: Thu 2009-11-19 13:19:11 +0100 message: Bug #48683 mysql-stress-test fails with "Value ... invalid for option abort-on-error" Add =1 to --abort-on-error argument ------------------------------------------------------------ revno: 2555.438.90 committer: Bjorn Munch branch nick: timer-51 timestamp: Tue 2009-11-24 09:12:48 +0100 message: Bug #47978 timer : expired after 90 seconds Problems occur after killing threads on Windows Get rid of the timeout threads, implement simple timer in wait_any_timeout() ------------------------------------------------------------ revno: 2555.438.89 [merge] committer: Bjorn Munch branch nick: srvdies-51 timestamp: Thu 2009-11-19 10:19:18 +0100 message: merge 48808 ------------------------------------------------------------ revno: 2555.711.1 committer: Bjorn Munch branch nick: devenv-51 timestamp: Wed 2009-11-18 10:27:43 +0100 message: Bug #48808 mysql-test-run.pl --debugger=devenv does not work Wrong argument order, fixed ------------------------------------------------------------ revno: 2555.438.88 [merge] committer: Bjorn Munch branch nick: srvdies-51 timestamp: Thu 2009-11-19 10:17:56 +0100 message: merge 48806 ------------------------------------------------------------ revno: 2555.710.1 committer: Bjorn Munch branch nick: helpsrc-51 timestamp: Tue 2009-11-17 12:13:22 +0100 message: Bug #48806 mysql-test-run.pl --help should work even in the absence of binaries Searches for my_safe_process binary too early Put this into a sub() and call it after examining options (incl. --help) ------------------------------------------------------------ revno: 2555.438.87 [merge] committer: Bjorn Munch branch nick: srvdies-51 timestamp: Thu 2009-11-19 10:16:03 +0100 message: merge 48671 ------------------------------------------------------------ revno: 2555.709.1 committer: Bjorn Munch branch nick: perlinsrc-51 timestamp: Wed 2009-11-11 12:46:19 +0100 message: Bug #48671 mysqltest fails on 'perl' in file sourced inside 'while' Actually, fails on 'perl' in any while Fixed essentially the same way as for append_file ------------------------------------------------------------ revno: 2555.438.86 [merge] committer: Bjorn Munch branch nick: srvdies-51 timestamp: Thu 2009-11-19 10:14:25 +0100 message: merge 35543 ------------------------------------------------------------ revno: 2555.708.1 committer: Bjorn Munch branch nick: localload-51 timestamp: Thu 2009-11-19 10:10:21 +0100 message: Bug #35543 mysqlbinlog.cc does not properly work with tmp files mtr patch ported to v2 ------------------------------------------------------------ revno: 2555.438.85 committer: Bjorn Munch branch nick: srvdies-51 timestamp: Thu 2009-11-19 09:58:50 +0100 message: Bug #48367 MTR should react to server dying, rather than to resulting failure of mysqltest For some reason it usually picks up mysqltest Wait .1s and then see if a server has died Change from first commit: label on separate line ------------------------------------------------------------ revno: 2555.438.84 committer: Bjorn Munch branch nick: valgsumm-51 timestamp: Mon 2009-11-16 14:46:33 +0100 message: minor fix of a valgrind suppress pattern ------------------------------------------------------------ revno: 2555.438.83 committer: Bjorn Munch branch nick: valgsumm-51 timestamp: Mon 2009-11-16 11:18:16 +0100 message: Bug #48795 Valgrind summary from tests where server has been restarted cause test failure Seen in a few tests after 43418 Add code in extract_warning_lines() to skip this part ------------------------------------------------------------ revno: 2555.438.82 committer: Bjorn Munch branch nick: valgleak-51 timestamp: Thu 2009-11-12 11:04:01 +0100 message: Bug #43418 MTR2: does not notice a memory leak occuring at shutdown of mysqld w/ --valgrind Checking is done before server is terminated Adds post processing of server logs if --valgrind Also had to remove --quiet option to valgrind ------------------------------------------------------------ revno: 2555.438.81 [merge] committer: Bjorn Munch branch nick: weird-51 timestamp: Wed 2009-11-04 14:44:19 +0100 message: merge 48209 ------------------------------------------------------------ revno: 2555.707.1 committer: Bjorn Munch branch nick: testhas-51 timestamp: Fri 2009-10-23 13:04:55 +0200 message: Bug #48209 Confusing message "Test has succeeded" after test fails due to warnings There's no need for --verbose for the mysqltest in check-warnings, remove it ------------------------------------------------------------ revno: 2555.438.80 committer: Bjorn Munch branch nick: weird-51 timestamp: Wed 2009-11-04 13:42:22 +0100 message: Bug #47663 mtr --parallel has weird output Some output is written, some is not Finally concluded it's a Perl bug: after running with parallel threads for a while, print suddenly ignores all but the first argument. Workaround: concatenate all the arguments into one, except in output that only comes before we start running tests ------------------------------------------------------------ revno: 2555.438.79 committer: Bjorn Munch branch nick: summary-51 timestamp: Mon 2009-10-26 14:28:51 +0100 message: Bug #48240 "Test suite timeout" and "Too many tests failed" is masked from status page Prepend "Completed", "Timeout" or "Too many failed" to summary line ------------------------------------------------------------ revno: 2555.706.1 committer: Staale Smedseng branch nick: 43414-51 timestamp: Mon 2010-02-22 14:23:47 +0100 message: Bug #43414 Parenthesis (and other) warnings compiling MySQL with gcc 4.3.2 This is the final patch in the context of this bug. ------------------------------------------------------------ revno: 2555.690.15 committer: Tatiana A. Nurnberg branch nick: 51-48525 timestamp: Mon 2010-02-22 16:58:56 +0000 message: revert 48525 ------------------------------------------------------------ revno: 2555.690.14 [merge] committer: Tatiana A. Nurnberg branch nick: 51-48525 timestamp: Mon 2010-02-22 12:31:50 +0000 message: auto-merge ------------------------------------------------------------ revno: 2555.704.2 [merge] committer: Tatiana A. Nurnberg branch nick: 51-49487__ timestamp: Sat 2010-02-20 16:30:10 +0000 message: auto-merge ------------------------------------------------------------ revno: 2555.705.2 committer: Bjorn Munch branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-19 13:45:25 +0100 message: Fixed incomplete merge of 48878, embedded tests fail on Windows ------------------------------------------------------------ revno: 2555.705.1 committer: Georgi Kodinov branch nick: fix-5.1-bugteam timestamp: Thu 2010-02-18 10:48:15 +0200 message: Bug #51049: main.bug39022 fails in mysql-trunk-merge Fixed the test to behave correctly with ps-protocol and binlog format row. ------------------------------------------------------------ revno: 2555.704.1 [merge] committer: Tatiana A. Nurnberg branch nick: 51-49487__ timestamp: Fri 2010-02-19 19:06:47 +0000 message: manual merge ------------------------------------------------------------ revno: 1810.3983.4 committer: Tatiana A. Nurnberg branch nick: 50-49487__ timestamp: Fri 2010-02-19 15:16:43 +0000 message: Bug#49487: crash with explain extended and group_concat in a derived table When EXPLAIN EXTENDED tries to print column names, it checks whether the referenced table is CONST (in which case, the column's value rather than its name will be printed). If no proper table is reference (i.e. because a derived table was used that has since gone out of scope), this will fail spectacularly. This ports an equivalent of the fix for Bug 43354. ------------------------------------------------------------ revno: 2555.690.13 committer: Tatiana A. Nurnberg branch nick: 51-48525 timestamp: Thu 2010-02-18 17:02:17 +0000 message: Bug#48525: trigger changes "Column 'id' cannot be null" behaviour CHECK_FIELD_IGNORE was treated as CHECK_FIELD_ERROR_FOR_NULL; UPDATE...SET...NULL on NOT NULL fields behaved differently after a trigger. Now distinguishes between IGNORE and ERROR_FOR_NULL and save/restores check-field options. ------------------------------------------------------------ revno: 2555.690.12 [merge] committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Wed 2010-02-17 16:14:57 +0400 message: automerge ------------------------------------------------------------ revno: 2555.703.1 committer: Joerg Bruehe branch nick: push-5.1 timestamp: Wed 2010-02-17 11:13:15 +0100 message: Fix a bug in the RPM spec file: A "%define" is no shell command, so it must not be the only line in the "then" or "else" branch of an "if". Add a ':' line to make the branch non-empty. ------------------------------------------------------------ revno: 2555.690.11 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Wed 2010-02-17 16:13:42 +0400 message: Bug#33717 INSERT...(default) fails for enum. Crashes CSV tables, loads spaces for MyISAM Table corruption happens during table reading in ha_tina::find_current_row() func. Field::store() method returns error(true) if stored value is 0. The fix: added special case for enum type which correctly processes 0 value. Additional fix: INSERT...(default) and INSERT...() have the same behaviour now for enum type. ------------------------------------------------------------ revno: 2555.690.10 committer: Mattias Jonsson branch nick: topush-51-bugteam timestamp: Tue 2010-02-16 11:42:22 +0100 message: post push fix for bug#42438, did not compile on non debug, due to ifdef of include file ------------------------------------------------------------ revno: 2555.690.9 [merge] committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Tue 2010-02-16 13:44:36 +0400 message: automerge ------------------------------------------------------------ revno: 2555.702.1 [merge] committer: Mattias Jonsson branch nick: topush-51-bugteam timestamp: Tue 2010-02-16 09:54:16 +0100 message: merge ------------------------------------------------------------ revno: 2555.696.3 [merge] committer: Mattias Jonsson branch nick: topush-51-bugteam_2 timestamp: Fri 2010-02-12 10:03:10 +0100 message: Manual merge (moved the check for log_table before name lock) ------------------------------------------------------------ revno: 2555.701.1 committer: Mattias Jonsson branch nick: b42438-51-bt timestamp: Mon 2010-02-01 16:07:00 +0100 message: Bug#42438: Crash ha_partition::change_table_ptr There was two problems: The first was the symptom, caused by bad error handling in ha_partition. It did not handle print_error etc. when having no partitions (when used by dummy handler). The second was the real problem that when dropping tables it reused the table type (storage engine) from when the lock was asked for, not the table type that it had when gaining the exclusive name lock. So that it tried to delete tables from wrong storage engines. Solutions for the first problem was to accept some handler calls to the partitioning handler even if it was not setup with any partitions, and also if possible fallback to use the base handler's default functions. Solution for the second problem was to remove the optimization to reuse the definition from the cache, instead always check the frm-file when holding the LOCK_open mutex (updated with a fix for a debug print crash and better comments as required by reviewer, and removed optimization to avoid reading the frm-file). ------------------------------------------------------------ revno: 2555.690.8 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Tue 2010-02-16 13:13:49 +0400 message: Bug#50591 bit(31) causes Duplicate entry '1-NULL' for key 'group_key' The problem is that during temporary table creation uneven bits are not taken into account for hidden fields. It leads to incorrect calculation&allocation of null bytes size for table record. And if grouped value is null we set wrong bit for this value(see end_update()). Fixed by adding separate calculation of uneven bit for hidden fields. ------------------------------------------------------------ revno: 2555.690.7 committer: Georgi Kodinov branch nick: B46175-5.1-bugteam timestamp: Mon 2010-02-15 10:54:27 +0200 message: Addendum 2 for bug #46175: NULL read_view and consistent read assertion Fixed a compilation warning. ------------------------------------------------------------ revno: 2555.690.6 committer: Davi Arnaut branch nick: 50624-5.1 timestamp: Sat 2010-02-13 08:35:14 -0200 message: Bug#50624: crash in check_table_access during call procedure This bug is just one facet of stored routines not being able to detect changes in meta-data (WL#4179). This particular problem can be triggered within a single session due to the improper management of the pre-locking list if the view is expanded after the pre-locking list is calculated. Since the overall solution for the meta-data detection issue is planned for a later release, for now a workaround is used to fix this particular aspect that only involves a single session. The workaround is to flush the thread-local stored routine cache every time a view is created or modified, causing locally cached routines to be re-evaluated upon invocation. ------------------------------------------------------------ revno: 2555.690.5 committer: Davi Arnaut branch nick: 50423-5.1 timestamp: Thu 2010-01-28 12:41:14 -0200 message: Bug#50423: Crash on second call of a procedure dropping a trigger The problem was that a DROP TRIGGER statement inside a stored procedure could cause a crash in subsequent invocations. This was due to the addition, on the first execution, of a temporary table reference to the stored procedure query table list. In a subsequent invocation, there would be a attempt to reinitialize the temporary table reference, which by then was already gone. The solution is to backup and reset the query table list each time a trigger needs to be dropped. This ensures that any temp changes to the query table list are discarded. It is safe to do so at this time as drop trigger is restricted from more complicated scenarios (ie, not allowed within stored functions, etc). ------------------------------------------------------------ revno: 2555.690.4 [merge] committer: Joerg Bruehe branch nick: bug33248-3-5.1 timestamp: Fri 2010-02-12 18:46:32 +0100 message: Upmerge a merge changeset, no contents changes. ------------------------------------------------------------ revno: 1810.3983.3 [merge] committer: Joerg Bruehe branch nick: bug33248-3-5.0 timestamp: Fri 2010-02-12 18:35:27 +0100 message: Automerge from central branch. ------------------------------------------------------------ revno: 2555.690.3 [merge] committer: Joerg Bruehe branch nick: bug33248-3-5.1 timestamp: Fri 2010-02-12 18:33:07 +0100 message: Merge from central branch, preparing for push. ------------------------------------------------------------ revno: 2555.691.30 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-02-12 16:47:43 +0400 message: Merge fix for BUG48438 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 1810.3984.1 committer: Sergey Vojtovich branch nick: mysql-5.0-bugteam-bug48438 timestamp: Fri 2010-02-12 15:28:38 +0400 message: BUG#48438 - crash with error in unioned query against merge table and view... Invalid memory reads after a query referencing MyISAM table multiple times with write lock. Invalid memory reads may lead to server crash, valgrind warnings, incorrect values in INFORMATION_SCHEMA.TABLES.{TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH, ...}. This may happen when one of the table instances gets closed after a query, e.g. out of slots in open tables cache. UNION, MERGE and VIEW are irrelevant. The problem was that MyISAM didn't restore state info pointer to default value. ------------------------------------------------------------ revno: 2555.691.29 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-02-12 16:38:00 +0400 message: Merge fix for BUG48757 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.700.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug48757 timestamp: Fri 2010-02-12 16:33:03 +0400 message: BUG#48757 - missing .ARZ file causes server crash Server crashes when accessing ARCHIVE table with missing .ARZ file. When opening a table, ARCHIVE didn't properly pass through error code from lower level azopen() to higher level open() method. ------------------------------------------------------------ revno: 2555.691.28 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-02-12 16:37:05 +0400 message: Merge fix for BUG49628 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.699.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug49628 timestamp: Fri 2010-02-12 16:30:04 +0400 message: BUG#49628 - corrupt table after legal SQL, LONGTEXT column Bulk REPLACE or bulk INSERT ... ON DUPLICATE KEY UPDATE may break dynamic record MyISAM table. The problem is limited to bulk REPLACE and INSERT ... ON DUPLICATE KEY UPDATE, because only these operations may be done via UPDATE internally and may request write cache. When flushing write cache, MyISAM may write remaining cached data at wrong position. Fixed by requesting write cache to seek to a correct position. ------------------------------------------------------------ revno: 2555.691.27 [merge] committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-12 14:11:13 +0400 message: automerge ------------------------------------------------------------ revno: 2555.698.1 committer: Georgi Kodinov branch nick: B46175-5.1-bugteam timestamp: Thu 2010-02-11 19:41:53 +0200 message: Addendum to bug #46175 : use and check for the correct error values when converting to a enumerated type. ------------------------------------------------------------ revno: 2555.691.26 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-12 13:44:20 +0400 message: Bug#48294 assertion when creating a view based on some row() construct in select query In case of 'CREATE VIEW' subselect transformation does not happen(see JOIN::prepare). During fix_fields Item_row may call is_null() method for its arugmens which leads to item calculation(wrong subselect in our case as transformation did not happen before). This is_null() call does not make sence for 'CREATE VIEW'. Note: Only Item_row is affected because other items don't call is_null() during fix_fields() for arguments. ------------------------------------------------------------ revno: 2555.691.25 committer: Davi Arnaut branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-12 00:54:14 -0200 message: Move test case. Embedded server does not support privilege related bits. ------------------------------------------------------------ revno: 2555.691.24 committer: Davi Arnaut branch nick: 48449-5.1 timestamp: Wed 2010-02-10 16:11:08 -0200 message: Bug#48449: hang on show create view after upgrading when view contains function of view SHOW CREATE TABLE on a view (v1) that contains a function whose statement uses another view (v2), could trigger a infinite loop if the view referenced within the function causes a warning to be raised while opening the said view (v2). The problem was a infinite loop over the stack of internal error handlers. The problem would be triggered if the stack contained two or more handlers and the first two handlers didn't handle the raised condition. In this case, the loop variable would always point to the second handler in the stack. The solution is to correct the loop variable assignment so that the loop is able to iterate over all handlers in the stack. ------------------------------------------------------------ revno: 2555.691.23 committer: Davi Arnaut branch nick: 47734-5.1 timestamp: Wed 2010-01-27 11:10:53 -0200 message: Bug#47734: Assertion failed: ! is_set() when locking a view with non-existing definer The problem was that a failure to open a view wasn't being properly handled. When opening a view with unknown definer, the open procedure would be treated as successful and would later crash when attempting to lock the view (which wasn't opened to begin with). The solution is to skip further processing when opening a table if it fails with a fatal error. ------------------------------------------------------------ revno: 2555.691.22 committer: Staale Smedseng branch nick: 47905-51 timestamp: Thu 2010-02-11 21:10:13 +0100 message: Bug #47905 stored procedures with conditional statements not being logged to slow query log The problem is that the execution time for a multi-statement stored procedure as a whole may not be accurate, and thus not be entered into the slow query log even if the total time exceeds long_query_time. The reason for this is that THD::utime_after_lock used for time calculation may be reset at the start of each new statement, possibly leaving the total SP execution equal to the time spent executing the last statement in the SP. This patch stores the utime on start of SP execution, and restores it on exit of SP execution. A test is added. ------------------------------------------------------------ revno: 2555.691.21 [merge] committer: Martin Hansson branch nick: 5.1bt timestamp: Thu 2010-02-11 15:56:24 +0100 message: Merge of Bug#49534 ------------------------------------------------------------ revno: 2555.696.2 [merge] committer: Luis Soares branch nick: mysql-5.1-bugteam-push timestamp: Wed 2010-02-10 17:31:51 +0000 message: Automerge from local mysql-5.1-bugteam bug branch. ------------------------------------------------------------ revno: 2555.697.1 committer: Luis Soares branch nick: mysql-5.1-bugteam timestamp: Thu 2010-02-04 11:26:36 +0000 message: BUG#50451: rpl_loaddata_concurrent fails sporadically When using MyIsam tables and processing concurrent DML statements, the server may be sending back an OK to the client before actually finishing the transaction commit procedure. This has been reported before in BUG@37521 and BUG@29334. This particular test case gets affected, because it performs the following sequence: connect (conn2, ...) connection conn2; LOAD DATA CONCURRENT ... disconnect (conn2, ...) connection master; sync_slave_with_master diff_tables At this point diff_tables may report difference in the table content (the master seems to be missing the conn2 rows). To workaround this MyISAM concurrent DML statements issue and make this test case deterministic, we wait on conn2 until the rows inserted show up in the table. After this the test case proceeds as normally would before this patch. ------------------------------------------------------------ revno: 2555.696.1 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Wed 2010-02-10 18:56:47 +0400 message: Bug#45195 valgrind warnings about uninitialized values in store_record_in_cache() The problem becomes apparent only if HAVE_purify is undefined. It related to the part of code placed in open_table_from_share() fuction where we initialize record buffer only if HAVE_purify is enabled. So in case of HAVE_purify=OFF record buffer is not initialized on open table stage. Next we read key, find NULL value and update appropriate null bit but do not update record buffer. After that the record is stored in the join cache(store_record_in_cache). For CHAR fields we strip trailing spaces and in our case this procedure uses uninitialized record buffer. The fix is to skip stripping space procedure in case of null values for CHAR fields(partially based on 6.0 JOIN_CACHE implementation). ------------------------------------------------------------ revno: 2555.691.20 committer: Martin Hansson branch nick: 5.1bt timestamp: Wed 2010-02-10 15:37:34 +0100 message: Bug#49534: multitable IGNORE update with sql_safe_updates error causes debug assertion The IGNORE option of the multiple-table UPDATE command was not intended to suppress errors caused by the sql_safe_updates mode. This flag will raise an error if the execution of UPDATE does not use a key for row retrieval, and should continue do so regardless of the IGNORE option. However the implementation of IGNORE does not support exceptions to the rule; it always converts errors to warnings and cannot be extended. The Internal_error_handler interface offers the infrastructure to handle individual errors, making sure that the error raised by sql_safe_updates is not silenced. Fixed by implementing an Internal_error_handler and using it for UPDATE IGNORE commands. ------------------------------------------------------------ revno: 2555.691.19 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam timestamp: Tue 2010-02-09 18:40:18 +0400 message: Merge fixes for bug49902 and 50351 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.694.2 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Tue 2010-02-09 15:47:07 +0400 message: Merge fix for bug50351 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.695.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug50351 timestamp: Tue 2010-02-02 15:08:49 +0400 message: BUG#50351 - ft_min_word_len=2 Causes query to hang Performing fulltext prefix search (a word with truncation operator) may cause a dead-loop. ft_min_word_len value doesn't matter actually. The problem was introduced along with "smarter index merge" optimization. ------------------------------------------------------------ revno: 2555.694.1 [merge] committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-push timestamp: Tue 2010-02-09 15:43:44 +0400 message: Merge fix for bug49902 to mysql-5.1-bugteam. ------------------------------------------------------------ revno: 2555.693.1 committer: Sergey Vojtovich branch nick: mysql-5.1-bugteam-bug49902 timestamp: Tue 2010-02-09 12:53:13 +0400 message: BUG#49902 - SELECT returns incorrect results Queries optimized with GROUP_MIN_MAX didn't cleanup KEYREAD optimization properly. As a result subsequent queries may return incomplete rows (fields are initialized to default values). ------------------------------------------------------------ revno: 2555.691.18 committer: Magne Mahre branch nick: mysql-5.1-bugteam-47974 timestamp: Tue 2010-02-09 11:30:50 +0100 message: Bug#47974 'TYPE=storage_engine' is deprecated and will be removed in MySQL 6.0 CREATE TABLE... TYPE= returns the warning "The syntax 'TYPE=storage_engine' is deprecated and will be removed in MySQL 6.0. Please use 'ENGINE=storage_engine' instead" This syntax is deprecated already from version 5.4.4, so the message has been changed. In addition, the deprecation macro was changed to reflect the ServerPT decision not to include version number in the warning message. A number of test result files have been changed as a consequence of the change in the deprecation macro. ------------------------------------------------------------ revno: 2555.691.17 committer: Luis Soares branch nick: mysql-5.1-bugteam-push timestamp: Sun 2010-02-07 00:12:04 +0000 message: BUG#50780: 'show binary logs' debug assertion when binary logging is disabled Post-push fix: disabling test when running mysqld in embedded mode. ------------------------------------------------------------ revno: 2555.691.16 committer: Gleb Shchepa branch nick: mysql-5.1-bugteam timestamp: Sat 2010-02-06 23:54:30 +0400 message: Bug #45640: optimizer bug produces wrong results Grouping by a subquery in a query with a distinct aggregate function lead to a wrong result (wrong and unordered grouping values). There are two related problems: 1) The query like this: SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) c FROM t1 GROUP BY aa returned wrong result, because the outer reference "t1.a" in the subquery was substituted with the Item_ref item. The Item_ref item obtains data from the result_field object that refreshes once after the end of each group. This data is not applicable to filesort since filesort() doesn't care about groups (and doesn't update result_field objects with copy_fields() and so on). Also that data is not applicable to group separation algorithm: end_send_group() checks every record with test_if_group_changed() that evaluates Item_ref items, but it refreshes those Item_ref-s only after the end of group, that is a vicious circle and the grouped column values in the output are shifted. Fix: if a) we grouping by a subquery and b) that subquery has outer references to FROM list of the grouping query, then we substitute these outer references with Item_direct_ref like references under aggregate functions: Item_direct_ref obtains data directly from the current record. 2) The query with a non-trivial grouping expression like: SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) c FROM t1 GROUP BY aa+0 also returned wrong result, since JOIN::exec() substitutes references to top-level aliases in SELECT list with Item_copy caching items. Item_copy items have same refreshing policy as Item_ref items, so the whole groping expression with Item_copy inside returns wrong result in filesort() and end_send_group(). Fix: include aliased items into GROUP BY item tree instead of Item_ref references to them. ------------------------------------------------------------ revno: 2555.691.15 committer: Luis Soares branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-02-05 17:51:55 +0000 message: BUG#50780: 'show binary logs' debug assertion when binary logging is disabled The server would hit an assertion because of a DBUG violation. There was a missing DBUG_RETURN and instead a plain return was used. This patch replaces the return with DBUG_RETURN. ------------------------------------------------------------ revno: 2555.691.14 committer: Luis Soares branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-02-05 17:48:01 +0000 message: BUG#50620: Adding an index to a table prevents slave from logging into slow log While processing a statement, down the mysql_parse execution stack, the thd->enable_slow_log can be assigned to opt_log_slow_admin_statements, depending whether one is executing administrative statements, such as ALTER TABLE, OPTIMIZE, ANALYZE, etc, or not. This can have an impact on slow logging for statements that are executed after an administrative statement execution is completed. When executing statements directly from the user this is fine because, the thd->enable_slow_log is reset right at the beginning of the dispatch_command function, ie, everytime a new statement is set is set to execute. On the other hand, for slave SQL thread (sql_thd) the story is a bit different. When in SBR the sql_thd applies statements by calling mysql_parse. Right after, it calls log_slow_statement function to log them if they take too long. Calling mysql_parse directly is fine, but also means that dispatch_command function is bypassed. As a consequence, thd->enable_slow_log does not get a chance to be reset before the next statement to be executed by the sql_thd. If the statement just executed by the sql_thd was an administrative statement and logging of admin statements was disabled, this means that sql_thd->enable_slow_log will be set to 0 (disabled) from that moment on. End result: sql_thd stops logging slow statements. We fix this by resetting the value of sql_thd->enable_slow_log to the value of opt_log_slow_slave_statements right after log_slow_stement is called by the sql_thd. ------------------------------------------------------------ revno: 2555.691.13 committer: Luis Soares branch nick: mysql-5.1-bugteam-push timestamp: Fri 2010-02-05 17:01:09 +0000 message: BUG#48632: Fix for Bug #23300 Has Not Been Backported To 5.x Release Notes ===== This is a backport of BUG#23300 into 5.1 GA. Original cset revid (in betony): luis.soares@sun.com-20090929140901-s4kjtl3iiyy4ls2h Description =========== When using replication, the slave will not log any slow query logs queries replicated from the master, even if the option "--log-slow-slave-statements" is set and these take more than "log_query_time" to execute. In order to log slow queries in replicated thread one needs to set the --log-slow-slave-statements, so that the SQL thread is initialized with the correct switch. Although setting this flag correctly configures the slave thread option to log slow queries, there is an issue with the condition that is used to check whether to log the slow query or not. When replaying binlog events the statement contains the SET TIMESTAMP clause which will force the slow logging condition check to fail. Consequently, the slow query logging will not take place. This patch addresses this issue by removing the second condition from the log_slow_statements as it prevents slow queries to be binlogged and seems to be deprecated. ------------------------------------------------------------ revno: 2555.691.12 committer: Georgi Kodinov branch nick: B49324-5.1-bugteam timestamp: Fri 2010-01-29 17:04:37 +0200 message: Bug #49324: more valgrind errors in test_if_skip_sort_order Fixed 2 problems : 1. test_if_order_by_key() was continuing on the primary key as if it has a primary key suffix (as the secondary keys do). This leads to crashes in ORDER BY ,. Fixed by not treating the primary key as the secondary one and not depending on it being clustered with a primary key. 2. The cost calculation was trying to read the records per key when operating on ORDER BYs that order on all of the secondary key + some of the primary key. This leads to crashes because of out-of-bounds array access. Fixed by assuming we'll find 1 record per key in such cases. ------------------------------------------------------------ revno: 2555.691.11 committer: Davi Arnaut branch nick: 49025-5.1 timestamp: Fri 2010-02-05 10:55:20 -0200 message: Bug#49025: mysqld-debug: missing DBUG_RETURN or DBUG_VOID_RETURN macro in function "?func" The problem was that the dbug facility was being used after the per-thread dbug state had already been finalized. The was present in a few functions which invoked decrement_handler_count, which in turn invokes my_thread_end on Windows. In my_thread_end, the per-thread dbug state is finalized. Any use after the state is finalized ends up creating a new state. The solution is to process the exit of a function before the decrement_handler_count function is called. ------------------------------------------------------------ revno: 2555.691.10 committer: Georgi Kodinov branch nick: B39022-5.1-bugteam timestamp: Wed 2009-12-23 12:45:18 +0200 message: Bug #39022: Mysql randomly crashing in lock_sec_rec_cons_read_sees flush_cached_records() was not correctly checking for errors after calling Item::val_xxx() methods. The expressions may contain subqueries or stored procedures that cause errors that should stop the statement. Fixed by correctly checking for errors and propagating them up the call stack. ------------------------------------------------------------ revno: 2555.691.9 committer: Sergey Glukhov branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-05 13:39:46 +0400 message: Bug#47736 killing a select from a view when the view is processing a function, asserts hide_view_error() does not take into account that thread query may be killed. Added a check for thd->killed. Addon: backported bug32140 fix from 6.0 ------------------------------------------------------------ revno: 2555.691.8 committer: branch nick: mysql-5.1-bugteam timestamp: Fri 2010-02-05 14:49:01 +0800 message: Bug #50061 Test "rpl_loaddata_symlink" uses a Unix-specific "run-slave" script Bug #49984 Test 'rpl_loaddata_symlink' fails with "Could not find target log" Sometimes the symbolic link is available on Windows if you have some Unix (emulation) layer installed like Cygwin, MKS or other. But symbolic link is not always available. It depends on versions, file volume and system environment of Windows. And the symbolic link is not typically used on Windows, at least not in the degree and style they are used on Unix. We can not change the test case to do without symbolic link, because the test case is used to test that if the symbolic link works fine. To fix the problem, skip the test on windows. ------------------------------------------------------------ revno: 2555.691.7 [merge] committer: Joerg Bruehe branch nick: push-5.1 timestamp: Thu 2010-02-04 20:32:25 +0100 message: Automerge from main tree. ------------------------------------------------------------ revno: 2555.692.1 author: hery.ramilison@sun.com committer: MySQL Build Team branch nick: mysql-5.1 timestamp: Thu 2010-02-04 12:23:33 +0100 message: Raise version number after cloning 5.1.44 ------------------------------------------------------------ revno: 2555.691.6 committer: Kent Boortz branch nick: mysql-5.1-bugteam timestamp: Thu 2010-02-04 19:27:09 +0100 message: LT_INIT and LT_PREREQ was added in libtool 2.2 2008, a bit too recent, switched back to the older AC_PROG_LIBTOOL ------------------------------------------------------------ revno: 2555.691.5 committer: Georgi Kodinov branch nick: B45989-take2-5.1-bugteam timestamp: Thu 2010-02-04 18:51:55 +0200 message: Addendum to the fix for bug #45989 Need to make sure the tmp join doesn't point to the structure already freed by the cleanup() for the "base" join, as this can lead to double free, because sometimes both tmp_join and join point to the same tmp_table_params.copy_field array. ------------------------------------------------------------ revno: 2555.691.4 [merge] committer: Georgi Kodinov branch nick: B45989-5.1-bugteam timestamp: Thu 2010-02-04 17:38:49 +0200 message: merge ------------------------------------------------------------ revno: 2555.691.3 [merge] committer: Georgi Kodinov branch nick: B45989-5.1-bugteam timestamp: Thu 2010-02-04 17:24:58 +0200 message: merge ------------------------------------------------------------ revno: 2555.691.2 committer: Georgi Kodinov branch nick: B45989-5.1-bugteam timestamp: Tue 2010-02-02 18:30:23 +0200 message: Bug #45989 take 2 : memory leak after explain encounters an error in the query. Fixes a leak after materializing a GROUP BY subquery to a temp table when the subquery has a blob column in the SELECT list. Fixed by correctly destructing temporary buffers for re-usable queries ------------------------------------------------------------ revno: 2555.691.1 committer: Staale Smedseng branch nick: 49447-51 timestamp: Thu 2010-02-04 13:39:42 +0100 message: Recommit of Bug#49447. ------------------------------------------------------------ revno: 2555.690.2 committer: Joerg Bruehe branch nick: bug33248-3-5.1 timestamp: Fri 2010-02-12 17:23:22 +0100 message: Correction: The "release" setting had got lost in the RPM spec file. ------------------------------------------------------------ revno: 2555.690.1 [merge] committer: Joerg Bruehe branch nick: bug33248-3-5.1 timestamp: Thu 2010-02-11 21:33:48 +0100 message: Upmerge changes done to the generic spec file in 5.0 to 5.1, this includes a major whitespace (formatting) alignment and sequence changes to better agree with other spec files. Further changes: - All features are controlled by "%define" set from call options or builtin. - "bundled zlib" is on by default. - "with libgcc" is controlled by runtime detection of gcc. - Handling of "CFLAGS" and "CXXFLAGS" is more concentrated. - Several missing man pages were added. ------------------------------------------------------------ revno: 1810.3983.2 committer: Joerg Bruehe branch nick: bug33248-3-5.0 timestamp: Tue 2010-02-02 17:53:52 +0100 message: Cleanup in the RPM spec file: Get rid of trailing blanks. ------------------------------------------------------------ revno: 1810.3983.1 committer: Joerg Bruehe branch nick: bug33248-3-5.0 timestamp: Tue 2010-02-02 16:28:59 +0100 message: Spec file for "generic" RPMs: Cleanup, formatting improvements, vendor is Sun (since MySQL AB was bought). Backport the change so that RPM doesn't magically create a dependency on "Perl-DBI". ------------------------------------------------------------ revno: 3679 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Thu 2010-06-17 09:16:50 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.59.4 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Thu 2010-06-17 09:15:50 +0200 message: ndb - wl#2343 - move "filtering" of replica info, from readReplica to resetReplicaSr...This so that readTableIntoPages *only* reads ------------------------------------------------------------ revno: 3678 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Thu 2010-06-17 07:23:36 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.59.3 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Thu 2010-06-17 07:20:22 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.154.15 [merge] committer: Jonas Oreland branch nick: telco-6.3 timestamp: Thu 2010-06-17 07:17:43 +0200 message: ndb - merge 62 to 63 ------------------------------------------------------------ revno: 2572.81.29 committer: Jonas Oreland branch nick: telco-6.2 timestamp: Thu 2010-06-17 07:14:45 +0200 message: ndb - fix alignment problem(sparc) for test_event -n Bug37672 ------------------------------------------------------------ revno: 2572.81.28 committer: Jonas Oreland branch nick: telco-6.2 timestamp: Thu 2010-06-17 07:11:21 +0200 message: ndb - HugoCalculator fix alignment problems(sparc) for last bits in BitField ------------------------------------------------------------ revno: 2572.81.27 committer: Jonas Oreland branch nick: telco-6.2 timestamp: Thu 2010-06-17 07:07:26 +0200 message: ndb - testNdbApi::runBug44065 - fix problems discovered solaris/sparc with scoping on hugoOps2 ------------------------------------------------------------ revno: 3362.59.2 [merge] committer: Pekka Nousiainen branch nick: ms-bug52182-70 timestamp: Wed 2010-06-16 22:29:12 +0300 message: merge ------------------------------------------------------------ revno: 3362.59.1 [merge] committer: Pekka Nousiainen branch nick: ms-bug52182-70 timestamp: Wed 2010-06-16 19:56:34 +0300 message: merge bug52182 63 to 70 ------------------------------------------------------------ revno: 2585.154.14 committer: Pekka Nousiainen branch nick: ms-bug52182-63 timestamp: Wed 2010-06-16 10:16:01 +0300 message: bug#52182 c04_hborder.diff update version numbers ------------------------------------------------------------ revno: 2585.154.13 committer: Pekka Nousiainen branch nick: ms-bug52182-63 timestamp: Wed 2010-06-16 10:15:20 +0300 message: bug#52182 c03_hborder.diff after review [re-commit] ------------------------------------------------------------ revno: 2585.154.12 committer: Pekka Nousiainen branch nick: ms-bug52182-63 timestamp: Wed 2010-06-16 10:14:38 +0300 message: bug#52182 c02_hborder.diff upgrade HB order [re-commit] ------------------------------------------------------------ revno: 2585.154.11 committer: Pekka Nousiainen branch nick: ms-bug52182-63 timestamp: Wed 2010-06-16 10:06:13 +0300 message: bug#52182 c01_hborder.diff configure HB order [re-commit] ------------------------------------------------------------ revno: 3677 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Wed 2010-06-16 16:19:49 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.89 committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-06-16 14:06:41 +0200 message: ndb - fix typo ------------------------------------------------------------ revno: 3362.41.88 committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-06-16 13:40:05 +0200 message: WL#4523 - Remove the ifdef WIN around ndb_daemonize call in ndbd's angel - The ndbd will not dameonize itself on Windows but at least create pid file and redirect the angels output to the log file ------------------------------------------------------------ revno: 3362.41.87 committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-06-16 13:38:38 +0200 message: WL#4523 - Revert ndb_mgmd's setting for --daemon and --nodaemon so they are same on all platforms ------------------------------------------------------------ revno: 3362.41.86 committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-06-16 13:36:42 +0200 message: WL#4523 - Add utility function used for easily attaching a service to debugger ------------------------------------------------------------ revno: 3676 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Wed 2010-06-16 11:19:34 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.85 committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-06-16 10:40:20 +0200 message: WL#4523 - Add --help printout of service related options to ndb_mgmd and ndbd ------------------------------------------------------------ revno: 3362.41.84 committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-06-16 09:20:12 +0200 message: ndb testScanFilter - setBit loop was setting one bit too many, thus writing after the end of buff ------------------------------------------------------------ revno: 3362.41.83 committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-06-16 09:02:15 +0200 message: ndb - add ndbmtd to bin-dist on Windows ------------------------------------------------------------ revno: 3675 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Tue 2010-06-15 17:10:00 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.82 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-15 17:08:55 +0200 message: ndb - bug#54521 - enable multi threaded ordered index build for ndbmtd ------------------------------------------------------------ revno: 3674 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Tue 2010-06-15 17:03:22 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.81 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-15 17:02:16 +0200 message: ndb test - make the config file for loki27 similar to linux by adding initial tablespaces and shared memory settings ------------------------------------------------------------ revno: 3673 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Tue 2010-06-15 16:59:01 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.80 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-15 16:22:56 +0200 message: ndb test - add ending '\0' to generated random string in testScanFilter ------------------------------------------------------------ revno: 3362.41.79 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-15 15:20:14 +0200 message: ndb - add testLimits and testNativeDefault to CMakeLists.txt ------------------------------------------------------------ revno: 3362.41.78 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-15 15:19:31 +0200 message: ndb - cleanup CMakeLists.txt for test/ndbapi/ ------------------------------------------------------------ revno: 3362.41.77 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-15 14:52:01 +0200 message: ndb - wl#2342 - refactor Dblqh::execDROP_TAB_REQ to use DropTabReq instead of DropFragReq ------------------------------------------------------------ revno: 3672 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Tue 2010-06-15 14:36:25 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.76 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-15 14:27:54 +0200 message: ndb test - Add printouts to indicate what test program is doing - Use NDBT_ProgramExit - refactor 'connect_ndb' to return true or false ------------------------------------------------------------ revno: 3362.41.75 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-15 13:27:09 +0200 message: ndb - wl#2342 - remove dead code ------------------------------------------------------------ revno: 3362.41.74 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-15 12:58:25 +0200 message: ndb - wl#2342 - minor refactoring of Dbdih::readReplica - no functional changes ------------------------------------------------------------ revno: 3671 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Tue 2010-06-15 11:11:10 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.73 [merge] committer: Magnus Blåudd branch nick: mysql-5.1-telco-7.0 timestamp: Tue 2010-06-15 11:09:35 +0200 message: Merge ------------------------------------------------------------ revno: 3362.58.3 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-15 11:04:11 +0200 message: ndb - testPartitioning - limit number of partitions to number of records to avoid working with uninited partitions ------------------------------------------------------------ revno: 3362.58.2 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-15 11:00:15 +0200 message: Bug#54487 Wrong data inserted into partitioned table - Add missing set of null bit in row - Use memcpy to avoid bus error when assigning to unaligned pointer ------------------------------------------------------------ revno: 3362.58.1 committer: Magnus Blåudd branch nick: 7.0 timestamp: Mon 2010-06-14 14:51:24 +0200 message: ndb - fix spelling error ------------------------------------------------------------ revno: 3670 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Mon 2010-06-14 21:34:56 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.72 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Mon 2010-06-14 21:33:54 +0200 message: ndb - bug#54497 - check that newly added nodegroup includes "me" in Suma::CREATE_NODEGROUP_IMPL_REQ ------------------------------------------------------------ revno: 3669 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Mon 2010-06-14 15:37:38 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.71 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Mon 2010-06-14 15:36:31 +0200 message: ndb - fix a few compiler warnings (gcc 4.1.2 debug build) ------------------------------------------------------------ revno: 3668 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Mon 2010-06-14 14:53:53 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.70 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Mon 2010-06-14 14:52:16 +0200 message: ndb - bug-53944 This patch reworks fix for bug-53944 so that 1) OLD_SCHEMA_FILE is not used as "backup copy" during a schema transaction. This so that OLD_SCHEMA_FILE is really kept intact during restart transactions 2) objectId for transaction object is allocated by master (instead of by slaves) And it adds (long overdue) a testcase for the bug. ------------------------------------------------------------ revno: 3667 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Mon 2010-06-14 14:17:27 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.69 committer: Magnus Blåudd branch nick: 7.0 timestamp: Mon 2010-06-14 14:16:32 +0200 message: ndb - run "ssh + rm -rf" with verbose ------------------------------------------------------------ revno: 3666 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Mon 2010-06-14 13:11:17 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.68 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Mon 2010-06-14 13:07:55 +0200 message: ndb - remove some unused variables in mysqld, that magnus missed in project Black-headed Gull ------------------------------------------------------------ revno: 3665 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Sun 2010-06-13 21:26:35 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.67 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Sun 2010-06-13 21:24:02 +0200 message: ndb - wl2342 - minor dict refactoring, remove duplicate code paths in restart handling and put them into subroutines ------------------------------------------------------------ revno: 3664 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Fri 2010-06-11 22:31:30 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.66 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Fri 2010-06-11 22:30:56 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.154.10 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Fri 2010-06-11 21:40:45 +0200 message: ndb - test if "binary" works better than "ascii" in ndb_restore_options ------------------------------------------------------------ revno: 3663 [merge] committer: Frazer Clement branch nick: mysql-5.1-telco-7.1 timestamp: Fri 2010-06-11 15:48:02 +0100 message: Merge 7.0->7.1 ------------------------------------------------------------ revno: 3362.41.65 [merge] committer: Frazer Clement branch nick: mysql-5.1-telco-7.0 timestamp: Fri 2010-06-11 15:45:27 +0100 message: Merge 6.3->7.0 ------------------------------------------------------------ revno: 2585.154.9 committer: Frazer Clement branch nick: mysql-5.1-telco-6.3 timestamp: Fri 2010-06-11 15:31:42 +0100 message: Overcome return code variation due to VM_TRACE defaulting of opt_core_file. ------------------------------------------------------------ revno: 3662 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Fri 2010-06-11 16:01:05 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.64 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Fri 2010-06-11 16:00:12 +0200 message: Merge 7.0-wl4523 -> 7.0 ------------------------------------------------------------ revno: 3362.57.6 committer: Magnus Blåudd branch nick: 7.0-wl4523 timestamp: Fri 2010-06-11 15:46:40 +0200 message: WL#4523 Run NDBd as Windows Service - Remove old NdbDaemon code - Rename my_daemon* to ndb_daemon* - chmod -x for ndb_daemon.* ------------------------------------------------------------ revno: 3661 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Fri 2010-06-11 15:28:54 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.63 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Fri 2010-06-11 15:16:02 +0200 message: Merge 7.0-wl4523 -> 7.0 ------------------------------------------------------------ revno: 3362.57.5 committer: Magnus Blåudd branch nick: 7.0-wl4523 timestamp: Fri 2010-06-11 15:15:11 +0200 message: WL#4523 Run NDBd as Windows Service - Turn on logging to Windows event log for ndb(mt)d ------------------------------------------------------------ revno: 3660 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Fri 2010-06-11 15:05:06 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.62 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Fri 2010-06-11 15:03:59 +0200 message: Merge 7.0-wl4523 -> 7.0 ------------------------------------------------------------ revno: 3362.57.4 committer: Magnus Blåudd branch nick: 7.0-wl4523 timestamp: Fri 2010-06-11 15:01:57 +0200 message: ndb -fix wrong spelling for variable name ------------------------------------------------------------ revno: 3362.57.3 committer: Magnus Blåudd branch nick: 7.0-wl4523 timestamp: Fri 2010-06-11 14:21:14 +0200 message: WL#4523 Run NDBd as Windows Service - Use my_daemon, finally giving ndbd support for --install, --remove and --service - Fix my_daemon_exit to honour HAVE_gcov ------------------------------------------------------------ revno: 3362.57.2 committer: Magnus Blåudd branch nick: 7.0-wl4523 timestamp: Fri 2010-06-11 14:13:04 +0200 message: WL#4523 Run NDBd as Windows Service - Revert the change of default values for --daemon and --no-daemon so they are now same on all platforms. ------------------------------------------------------------ revno: 3362.57.1 committer: Magnus Blåudd branch nick: 7.0-wl4523 timestamp: Fri 2010-06-11 14:08:57 +0200 message: WL#4523 Run NDBd as Windows Service - Change the angel's blocking waitpid into a polling loop in order to allow the angel to check the "stop_child" flags with regular interval - Implement support for 'kill(SIGINT)' on Windows - Change the 'waitpid' emulation to emulate WNOHANG ------------------------------------------------------------ revno: 3659 [merge] committer: Frazer Clement branch nick: mysql-5.1-telco-7.1 timestamp: Fri 2010-06-11 13:08:27 +0100 message: Merge 7.0->7.1 ------------------------------------------------------------ revno: 3362.41.61 [merge] committer: Frazer Clement branch nick: mysql-5.1-telco-7.0 timestamp: Fri 2010-06-11 12:58:22 +0100 message: Merge 6.3->7.0 ------------------------------------------------------------ revno: 2585.154.8 committer: Frazer Clement branch nick: mysql-5.1-telco-6.3 timestamp: Fri 2010-06-11 11:36:04 +0100 message: Bug#54423 Ndb : ndb_restore is too strict about schema matches ndb_restore now produces more information about mismatches, and accepts : - Different 'Dynamic' setting - Different storage type (memory/disk) - Different default values - Different 'distribution key' setting ------------------------------------------------------------ revno: 3658 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Fri 2010-06-11 09:29:26 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.60 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Fri 2010-06-11 09:27:59 +0200 message: ndb - fix failure of ndb_autodiscover3 which was caused by ndb_restart.test not restoring BACKUP-id correctly ------------------------------------------------------------ revno: 3362.41.59 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Fri 2010-06-11 09:16:49 +0200 message: ndb - rename "main" to "real_main", as main is not allowed to be called as a function according to C++-standard (breaks compile with forte) ------------------------------------------------------------ revno: 3362.41.58 committer: Maitrayi Sabaratnam branch nick: mysql-5.1-telco-7.0-defval timestamp: Fri 2010-06-11 08:45:37 +0200 message: Bug #54418 Supplement to wl#4197, native default val.: making disk data restore to work ------------------------------------------------------------ revno: 3362.41.57 [merge] committer: Magnus Blåudd branch nick: mysql-5.1-telco-7.0 timestamp: Thu 2010-06-10 19:40:49 +0200 message: Merge ------------------------------------------------------------ revno: 3657 [merge] committer: Magnus Blåudd branch nick: mysql-5.1-telco-7.1 timestamp: Thu 2010-06-10 19:42:21 +0200 message: Merge ------------------------------------------------------------ revno: 3656.1.1 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Thu 2010-06-10 19:37:41 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.56.2 committer: Magnus Blåudd branch nick: 7.0 timestamp: Thu 2010-06-10 19:36:51 +0200 message: WL#4523 - remove debug printouts ------------------------------------------------------------ revno: 3362.56.1 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Thu 2010-06-10 16:32:07 +0200 message: Merge 7.0-wl4523 -> 7.0 ------------------------------------------------------------ revno: 3362.55.2 committer: Magnus Blåudd branch nick: 7.0-wl4523 timestamp: Wed 2010-06-02 15:44:43 +0200 message: WL#4523 - fix problem where ndbd's angel detected startup failure when ndbd was shutdown in a controlled way by error insert, startup failures should only be checked when ndbd is killed byu a signal or return a unknown(not in NdbRestartType) return code. ------------------------------------------------------------ revno: 3362.55.1 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-05-26 14:23:29 +0200 message: Merge ------------------------------------------------------------ revno: 3362.54.1 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-05-05 17:27:29 +0200 message: Merge ------------------------------------------------------------ revno: 3362.53.11 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Fri 2010-04-30 09:13:35 +0200 message: WL#4523 Run ndbd as Windows Service - Remove the #ifdef to do 'execv' in debug mode, always execute 'main' from the forked child. ------------------------------------------------------------ revno: 3362.53.10 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Fri 2010-04-30 09:10:29 +0200 message: WL#4523 Run ndbd as Windows Service - Make the angel process reallocate the same nodeid from management server before starting the ndbd again after it has exited. - Reallocate the nodeid in the same way as it's already done i.e disconnect from ndb_mgmd(this will release the old nodeid allocation), reconnect and run allocNodeId again which should get the same nodeid again. ------------------------------------------------------------ revno: 3362.53.9 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Fri 2010-04-30 08:54:30 +0200 message: WL#4523 Run ndbd as Windows Service - Don't allow 'ndbd_exit' to use negative return code since this would make the program exit with 0 on Windows, instead convert all negative return codes to 255 so it becomes consistent on all platforms. ------------------------------------------------------------ revno: 3362.53.8 [merge] committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Wed 2010-04-28 10:22:57 +0200 message: Merge 7.0 -> 7.0-angel ------------------------------------------------------------ revno: 3362.53.7 [merge] committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-04-20 15:00:00 +0200 message: Merge ------------------------------------------------------------ revno: 3362.53.6 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Wed 2010-03-17 11:50:18 +0100 message: WL#4523 Run ndbd as Windows Service - remove the skip of test on windows, the angel is working now ------------------------------------------------------------ revno: 3362.53.5 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Wed 2010-03-17 09:19:32 +0100 message: WL#4523 Run ndbd as Windows Service - Revert the removal of "process.h" include from my_daemon.cc ------------------------------------------------------------ revno: 3362.53.4 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Wed 2010-03-17 08:02:04 +0100 message: WL#4523 Run ndbd as Windows Service - Remove the calls to 'CloseHandle' on the value returned from '_wait', then handle has already been closed. ------------------------------------------------------------ revno: 3362.53.3 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Wed 2010-03-17 08:00:12 +0100 message: WL#4523 Run ndbd as Windows Service - Use 'NdbHost_GetProcessId' when writing pid to pidfile to avoid mysys getpid which returns thread id - Make 'NdbHost_GetProcessId' use 'GetCurrentProcessId' directly on Windows ------------------------------------------------------------ revno: 3362.53.2 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 13:08:34 +0100 message: WL#4523 Run ndbd as Windows Service - Fix problem in 'waitpid' emulating function returning handle instead of pid - Close handles ------------------------------------------------------------ revno: 3362.53.1 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-03-16 11:08:26 +0100 message: Merge ------------------------------------------------------------ revno: 3362.52.19 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 10:37:53 +0100 message: WL#4523 Run ndbd as Windows Service - Remove ifdef for windows in shutcdown path, use same as everywhere else ------------------------------------------------------------ revno: 3362.52.18 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 10:35:54 +0100 message: WL#4523 Run ndbd as Windows Service - Remove special #ifdefs for windows in shutdown path, only #ifdef out abort which would return exit code 3 and thus conflict with NRT_NoStart_InitialStart ------------------------------------------------------------ revno: 3362.52.17 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 10:25:26 +0100 message: WL#4523 Run ndbd as Windows Service - Move NdbShutdown to ndbd.hpp/.cpp - Remove duplicate defined of NdbRestartType - Make all childReport* functions static and remove the extren definitions of them ------------------------------------------------------------ revno: 3362.52.16 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 10:04:28 +0100 message: ndb - remove the global 'childReportError' function and instead pass the error code as first argument to 'NdbShutdown' ------------------------------------------------------------ revno: 3362.52.15 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 09:22:13 +0100 message: ndb - remove unecessary EmulatorData argument to ThreadConfig::init, the EmulatorData instance is global and can be accessed directly. ------------------------------------------------------------ revno: 3362.52.14 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 08:52:02 +0100 message: ndb - move the extern declaration of g_eventLogger together with include directive, like in all other places. ------------------------------------------------------------ revno: 3362.52.13 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 08:48:43 +0100 message: WL#4523 Run ndbd as Windows Service - Limit ndbd startup failure without SIGUSR1 - rewrite the max startup failure logic in angel to make use of the "sphase" parameter that ndbd write on the report fd. - if ndbd has not passed startphase 6 allow max 3 consecutive startup events before giving up. - remove the special error handler type NST_ErrorHandlerStartup and the special hacks that install and reset it ------------------------------------------------------------ revno: 3362.52.12 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 08:43:05 +0100 message: WL#4523 Run ndbd as Windows Service - Make ndbd_run void, no need to return from the ndbd_run function, how to terminate is determined in ndbd ------------------------------------------------------------ revno: 3362.52.11 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 08:37:17 +0100 message: WL#4523 Run ndbd as Windows Service - Make angel_run void, no need to return from the angel_run function, how to terminate is determined in angel ------------------------------------------------------------ revno: 3362.52.10 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 08:33:47 +0100 message: Add test for checking restart if ndbd nodes ------------------------------------------------------------ revno: 3362.52.9 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Tue 2010-03-16 08:27:47 +0100 message: WL#4523 Run ndbd as Windows Service - Change to use "fork and exec" style for creating the ndbd child. - Collect the orignal args in a string when program starts - Let angel overide the parameters it control by appending them last on the original args string. - On Windows use 'spawnv' and otherwise 'fork' + 'execv' in debug mode and 'fork' + call 'main' in release mode to avoid executing a new binary version. - Add portability functions 'spawn_process' and 'waitpid' - Add guards around signals that may be undefined ------------------------------------------------------------ revno: 3362.52.8 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Mon 2010-03-15 14:56:30 +0100 message: WL#4523 Run ndbd as Windows Service - Make the angel connect to ndb_mgmd, fetch config and allocate nodeid. - This removes the use of any global data in the angel, for example "theConfig" - Change Configuration::fetch_configuration for ndbd to not allocate a nodeid if --allocated-nodeid is set. ------------------------------------------------------------ revno: 3362.52.7 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Mon 2010-03-15 13:04:40 +0100 message: WL#4523 Run ndbd as Windows Service - Make the angel pass the --nostart option it may receieve when ndbd terminates as an "arg" to ndbd - NOTE! Also this patch need to Configuration to be created _after_ to work ------------------------------------------------------------ revno: 3362.52.6 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Mon 2010-03-15 13:02:27 +0100 message: WL#4523 Run ndbd as Windows Service - Make the angel pass the --initial option it may receieve when ndbd terminates as an "--arg" to ndbd - Remove the 'setInitialStart' functions from Configuration - Move 'getInitialStart' impl. into class definition - NOTE! "RESTART -i" does not work until Configuration is created _after_ fork(i.e the angel_config_and_nodeid) patch ------------------------------------------------------------ revno: 3362.52.5 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Mon 2010-03-15 12:37:21 +0100 message: WL#4523 Run ndbd as Windows Service - Port angel process to ndbd process report pipe - Angel creates a pipe and pass the fd number as arguement when starting ndbd. The ndbd will then frepoen the fd as a stream so it can write to it. - Special Windows note: Passing of fd works as long as child is created with the spawn* functions(ie. CRT functions). Both HANDLE and fd will be available in child. - Add small portability function 'pipe' that translates between unix style 'pipe' to Windows '_pipe' ------------------------------------------------------------ revno: 3362.52.4 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Mon 2010-03-15 11:26:43 +0100 message: WL#4523 Run ndbd as Windows Service - Remove _daemonMode from Configuration, thus it will not be magically printed in hex in error log on crash. ------------------------------------------------------------ revno: 3362.52.3 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Mon 2010-03-15 11:07:22 +0100 message: WL#4523 Run ndbd as Windows Service - Move the angels read from child out of reportShutdown and into the angel loop. Based on the parameters it get take decision on how to handle the ndbd exit/crash. - Passed the read parameters to reportShutdown - Remove the write of "exit" from ndbd since it's never read by angel. The information about which exit code the ndbd had is anyway extracted with WEXITSTATUS. ------------------------------------------------------------ revno: 3362.52.2 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Mon 2010-03-15 09:20:23 +0100 message: WL#4523 Run ndbd as Windows Service - Extract the hosts to report to directly from ndb_mgm_configuration passed as parameter to function - only angel uses reportShutDown function now - Remove the m_mgmds vector from the global configuration previsouly used by reportShutdown - Remove friend declarations of reportShutdown - Make reportShutdown static ------------------------------------------------------------ revno: 3362.52.1 committer: Magnus Blåudd branch nick: 7.0-angel timestamp: Fri 2010-03-12 12:21:23 +0100 message: WL#4523 Run NDBd as Windows Service - Remove old attempt at restarting ndbd without angel ------------------------------------------------------------ revno: 3656 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Thu 2010-06-10 18:32:02 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.56 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Thu 2010-06-10 18:30:42 +0200 message: ndb - more c++ comments...this time for ndbmtd ------------------------------------------------------------ revno: 3655 committer: Jonas Oreland branch nick: telco-7.1 timestamp: Thu 2010-06-10 12:25:01 +0200 message: ndb - more forte fixes, no c++-comments in c-files ------------------------------------------------------------ revno: 3654 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Thu 2010-06-10 12:20:31 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.55 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Thu 2010-06-10 12:18:52 +0200 message: ndb - forte/sparc fixes, 1) no c++-comments in c-files 2) make sentinel-page 64-bit aligned ------------------------------------------------------------ revno: 3653 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Thu 2010-06-10 09:33:44 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.54 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Thu 2010-06-10 09:21:34 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.154.7 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Thu 2010-06-10 09:00:44 +0200 message: ndb - kill warnings, this kill all warnings in storage/ndb/src debug-compiled with 4.1.2 ------------------------------------------------------------ revno: 2585.154.6 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Thu 2010-06-10 07:58:21 +0200 message: ndb - bahh...my_sleep takes micro-seconds as argument...not milli seconds ------------------------------------------------------------ revno: 2585.154.5 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Thu 2010-06-10 07:17:33 +0200 message: ndb - mtr Have mysqltest poll every 100ms (instead of every second) in sync_master_with_slave. Default epoch timeout is 100ms, so that make sense. ------------------------------------------------------------ revno: 3652 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-09 15:21:00 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.53 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Wed 2010-06-09 15:07:15 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.154.4 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Wed 2010-06-09 15:05:43 +0200 message: ndb - fix typo causing compile error on windoze (correctly) ------------------------------------------------------------ revno: 3651 committer: Bernd Ocklin branch nick: mysql-5.1-telco-7.1 timestamp: Wed 2010-06-09 14:20:45 +0200 message: accept existing with_classpath for new cmake option as default ------------------------------------------------------------ revno: 3650 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-09 13:05:13 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.52 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Wed 2010-06-09 12:56:15 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.154.3 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Wed 2010-06-09 12:35:42 +0200 message: ndb - bug#50062 - Move initialization of REDO-log during initial start/node-restart to startphase 2, so that it's can be performed by several nodes in parallel ------------------------------------------------------------ revno: 2585.154.2 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-6.3 timestamp: Wed 2010-06-02 12:21:05 +0200 message: Merge ------------------------------------------------------------ revno: 3649 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-09 11:52:21 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.51 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Wed 2010-06-09 11:36:56 +0200 message: ndb - merge 7.0.15b into 7.0 ------------------------------------------------------------ revno: 3648 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-09 11:51:00 +0200 message: ndb - merge 7.1.4b into 71 ------------------------------------------------------------ revno: 3626.1.4 tags: clone-mysql-5.1.44-ndb-7.1.4b-src-build committer: Jonas Oreland branch nick: 7.1.4 timestamp: Wed 2010-06-09 11:49:52 +0200 message: ndb - 7.1.4b ------------------------------------------------------------ revno: 3626.1.3 [merge] committer: Jonas Oreland branch nick: 7.1.4 timestamp: Wed 2010-06-09 11:29:49 +0200 message: ndb - merge 7.0.15b ------------------------------------------------------------ revno: 3362.51.6 tags: clone-mysql-5.1.44-ndb-7.0.15b-src-build committer: Jonas Oreland branch nick: 7.0.15 timestamp: Wed 2010-06-09 11:22:53 +0200 message: ndb - 7.0.15b ------------------------------------------------------------ revno: 3362.51.5 committer: Jonas Oreland branch nick: 7.0.15 timestamp: Wed 2010-06-09 11:21:39 +0200 message: ndb - fix skip_table_check "regression" by changing behaviour so that it means "try as much as possible to restore data" ------------------------------------------------------------ revno: 3647 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-09 00:15:14 +0200 message: ndb - merge 7.1.4a into 7.1 ------------------------------------------------------------ revno: 3626.1.2 tags: mysql-5.1.44-ndb-7.1.4a, clone-mysql-5.1.44-ndb-7.1.4a-src-build committer: jonas@mysql.com branch nick: mysql-5.1-telco-7.1.4 timestamp: Tue 2010-06-08 23:00:20 +0200 message: ndb - 7.1.4a ------------------------------------------------------------ revno: 3626.1.1 [merge] committer: jonas@mysql.com branch nick: mysql-5.1-telco-7.1.4 timestamp: Tue 2010-06-08 22:58:31 +0200 message: ndb - merge 7.0.15a into 7.1.4 ------------------------------------------------------------ revno: 3646 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-09 00:13:57 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.50 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Wed 2010-06-09 00:13:11 +0200 message: ndb - merge 7.0.15a into 7.0 ------------------------------------------------------------ revno: 3362.51.4 tags: clone-mysql-5.1.44-ndb-7.0.15a-src-build, mysql-5.1.44-ndb-7.0.15a committer: Jonas Oreland branch nick: 7.0.15 timestamp: Tue 2010-06-08 20:11:19 +0200 message: set version to 7.0.15a ------------------------------------------------------------ revno: 3362.51.3 committer: Frazer Clement branch nick: mysql-5.1-telco-7.0.15a timestamp: Tue 2010-06-08 15:37:15 +0100 message: Fix Abi incompatibility Introduced by increased width of m_read_mask variable embedded in NdbOperation class. m_read_mask is returned to old width, renamed to m_unused_read_mask. New, wider read_mask is passed on the stack rather than as a member variable. ------------------------------------------------------------ revno: 3362.51.2 committer: Frazer Clement branch nick: mysql-5.1-telco-7.0.15a timestamp: Tue 2010-06-08 15:02:20 +0100 message: Bug#54242 ndb native default values break ndb_restore This patch enhances ndb_restore so that it : - Ignores differences in default values between DB and Backup table metadata - Provides more diagnostic information about schema differences being ignored The ndb_native_default_support testcase is enhanced to give some coverage of this behaviour. ------------------------------------------------------------ revno: 3362.51.1 committer: Frazer Clement branch nick: mysql-5.1-telco-7.0.15a timestamp: Tue 2010-06-08 14:58:18 +0100 message: Bug#54242 ndb native default values break ndb_restore Ndb-native support for default values allows column definitions in the Ndb data nodes to include default value information. Currently that information must be constant. In MySQL, the TIMESTAMP type can have a 'default value' which is automatically set to the CURRENT_TIMESTAMP at INSERT or on row UPDATE time. This cannot currently be supported natively by the Ndb storage engine. Currently, the Ndb storage engine treats TIMESTAMP columns with DEFAULT CURRENT_TIMESTAMP as if they were DEFAULT 0. This patch returns the TIMESTAMP behaviour to be the same as it was before the native default support was added, except in the case where a constant TIMESTAMP default (e.g. 0 or 20100607174832) is set. The ndb_native_default_support testcase is enhanced to record the expected behaviour. ------------------------------------------------------------ revno: 3645 [merge] committer: Frazer Clement branch nick: mysql-5.1-telco-7.1 timestamp: Mon 2010-06-07 17:59:08 +0100 message: Merge 7.0->7.1 ------------------------------------------------------------ revno: 3362.41.49 committer: Frazer Clement branch nick: mysql-5.1-telco-7.0 timestamp: Mon 2010-06-07 17:50:32 +0100 message: Bug#54242 ndb native default values break ndb_restore Ndb-native support for default values allows column definitions in the Ndb data nodes to include default value information. Currently that information must be constant. In MySQL, the TIMESTAMP type can have a 'default value' which is automatically set to the CURRENT_TIMESTAMP at INSERT or on row UPDATE time. This cannot currently be supported natively by the Ndb storage engine. Currently, the Ndb storage engine treats TIMESTAMP columns with DEFAULT CURRENT_TIMESTAMP as if they were DEFAULT 0. This patch returns the TIMESTAMP behaviour to be the same as it was before the native default support was added, except in the case where a constant TIMESTAMP default (e.g. 0 or 20100607174832) is set. The ndb_native_default_support testcase is enhanced to record the expected behaviour. ------------------------------------------------------------ revno: 3644 committer: Jorgen Austvik branch nick: 5.1-telco-7.1 timestamp: Mon 2010-06-07 12:16:54 +0200 message: Remove workarounds used to track down PB2 timeout issue ------------------------------------------------------------ revno: 3643 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Fri 2010-06-04 13:10:10 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.48 committer: Magnus Blåudd branch nick: 7.0 timestamp: Fri 2010-06-04 13:09:04 +0200 message: ndb - remove leftover files which are not used anymore when using cmake to build on Windows ------------------------------------------------------------ revno: 3642 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Fri 2010-06-04 10:28:44 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.47 committer: Magnus Blåudd branch nick: 7.0 timestamp: Fri 2010-06-04 10:27:11 +0200 message: SEAGULL: Move ndb_* system variables to ha_ndbcluster - Fix the comments for --ndb-nodeid and --ndb-mgmd-host after merge ------------------------------------------------------------ revno: 3362.41.46 [merge] committer: Magnus Blåudd branch nick: mysql-5.1-telco-7.0 timestamp: Fri 2010-06-04 09:38:26 +0200 message: Merge ------------------------------------------------------------ revno: 3641 [merge] committer: Magnus Blåudd branch nick: mysql-5.1-telco-7.1 timestamp: Fri 2010-06-04 09:38:37 +0200 message: Merge ------------------------------------------------------------ revno: 3639.1.1 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Thu 2010-06-03 16:13:18 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.50.1 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Thu 2010-06-03 16:12:46 +0200 message: Merge 7.0-starboard -> 7.0 ------------------------------------------------------------ revno: 3362.38.10 committer: Magnus Blåudd branch nick: 7.0-starboard timestamp: Wed 2010-05-05 15:20:20 +0200 message: ndb - rename ndb_cach_check_time -> opt_ndb_cache_check_time - rename ndb_extra_logging -> opt_ndb_extra_logging ------------------------------------------------------------ revno: 3362.38.9 committer: Magnus Blåudd branch nick: 7.0-starboard timestamp: Wed 2010-05-05 15:14:04 +0200 message: WL#4775 SEAGULL: Move ndb_* system variables to ha_ndbcluster - Move all ndb specific options and variables out of the MySQL Server source code and put them in ha_ndbcluster_* using the dynamic plugin variable interface. - Backward compatibility fix that will install system variables and options for "ndbcluster" in "ndb" namespace(already in 5.5) - Show all the ndb_report_thresh* variable also when compiled without NDB_BINLOG to keep a consistent "GUI" - --ndb-extra-logging used to ++ the value if given more than once, ignore that undocmented feature since it's not supported by dynamic variables. - Reintroduce the documented option --ndb-distribution, it has been "lost" - Fix Bug#44118 ndb-cluster-connection-pool does not show in variable list - ndb_basic.test, lists all variables as we now have more(i.e all is visible) - ndb_optimized_node_selection.test, the error/warning message does not contain the plugin name anymore when using pluggable variables. Filed as BUG#43356 which was duplicate of BUG#32902 and it fixed in 5.5.3 ------------------------------------------------------------ revno: 3640 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Fri 2010-06-04 09:36:34 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.45 [merge] committer: John David Duncan branch nick: mysql-5.1-telco-7.0 timestamp: Thu 2010-06-03 08:12:38 -0700 message: Merge ------------------------------------------------------------ revno: 3362.49.2 committer: John David Duncan branch nick: telco-7.0-newcopy timestamp: Wed 2010-06-02 09:45:36 -0700 message: bug#49400: minor fixes. This is a patch on top of the previous one. ------------------------------------------------------------ revno: 3362.49.1 committer: John David Duncan branch nick: telco-7.0-newcopy timestamp: Wed 2010-05-12 12:12:52 -0700 message: bug#49400: when parsing a config file, reject any TCP,SHM, or SCI connection that is a duplicate of a previously defined connection. ------------------------------------------------------------ revno: 3639 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Thu 2010-06-03 15:57:14 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.44 committer: Magnus Blåudd branch nick: 7.0 timestamp: Thu 2010-06-03 15:56:23 +0200 message: WL#5381 SEAGULL: Move configure.in extensions for ndb to storage/ndb/plug.in - move the check for 'clock_gettime' in librt back to configure.in so that it's properly detected the first time around. - (also submitted patch to fix the bug 37639 in a future MySQL version) ------------------------------------------------------------ revno: 3638 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Thu 2010-06-03 14:09:05 +0200 message: Merge 7.0 to 7.1 ------------------------------------------------------------ revno: 3362.41.43 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Thu 2010-06-03 13:22:09 +0200 message: Merge 7.0-wl5381 -> 7.0 ------------------------------------------------------------ revno: 3362.48.7 committer: Magnus Blåudd branch nick: 7.0-wl5381 timestamp: Thu 2010-06-03 11:46:41 +0200 message: WL#5381 SEAGULL: Move configure.in extensions for ndb to storage/ndb/plug.in - Fix problem with the AM_CONDITIONAL for BUILD_NDBMTD being evaluated too early in configure - this is due to order of including plug.in files and actually running the plugin actions - by redefining the AM_CONDITIONAL as part of running the actions. This will cause the AM_CONDITIONAL to be properly evaluated after the checks for ndbmtd asm have been made while also making it available in a build without ndb. ------------------------------------------------------------ revno: 3362.48.6 committer: Magnus Blåudd branch nick: 7.0-wl5381 timestamp: Thu 2010-06-03 09:58:14 +0200 message: ndb - the tests programs for mysys have locally in this clone been moved to mysys/tests/, revert parts of that change to reduce MCP - leaving the new Makefile.am in mysys/tests/ and the files which have been moved there as they are since they have no effect ------------------------------------------------------------ revno: 3362.48.5 committer: Magnus Blåudd branch nick: 7.0-wl5381 timestamp: Thu 2010-06-03 09:55:20 +0200 message: WL#5381 SEAGULL: Move configure.in extensions for ndb to storage/ndb/plug.in - Remove old junk comment ------------------------------------------------------------ revno: 3362.48.4 committer: Magnus Blåudd branch nick: 7.0-wl5381 timestamp: Thu 2010-06-03 09:54:39 +0200 message: WL#5381 SEAGULL: Move configure.in extensions for ndb to storage/ndb/plug.in - Move remaining checks to ndb_configure.m4 - The checks will only be run if ndbcluster is enabled ------------------------------------------------------------ revno: 3362.48.3 committer: Magnus Blåudd branch nick: 7.0-wl5381 timestamp: Thu 2010-06-03 09:52:16 +0200 message: WL#5381 SEAGULL: Move configure.in extensions for ndb to storage/ndb/plug.in - Move all code for checking if ndbmtd is supported/enabled to NDB_CHECK_NDBMTD - Run the checks only if ndbcluster is enabled and --with-ndbmtd(which is the default) is specified - Remove the unused HAVE_NDBMTD_ASM define - Remove the export build_ndbmtd (no other AM_CONDITIONAL is exported) ------------------------------------------------------------ revno: 3362.48.2 committer: Magnus Blåudd branch nick: 7.0-wl5381 timestamp: Thu 2010-06-03 09:49:41 +0200 message: WL#5381 SEAGULL: Move configure.in extensions for ndb to storage/ndb/plug.in - Remove unused ndb_mgmclient_libs define ------------------------------------------------------------ revno: 3362.48.1 committer: Magnus Blåudd branch nick: 7.0-wl5381 timestamp: Thu 2010-06-03 09:48:47 +0200 message: WL#5381 SEAGULL: Move configure.in extensions for ndb to storage/ndb/plug.in - Remove unused TEST_NDBCLUSTER define ------------------------------------------------------------ revno: 3637 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Wed 2010-06-02 17:01:01 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.42 committer: Magnus Blåudd branch nick: 7.0 timestamp: Wed 2010-06-02 17:00:06 +0200 message: ndb - fix ndb_socket_poller to compie also without HAVE_POLL(small oversight) - Use SOCKET_SIZE_TYPE everywhere(2 places) for last arg to my_getsockopt ------------------------------------------------------------ revno: 3636 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-7.1 timestamp: Wed 2010-06-02 12:03:50 +0200 message: Merge ------------------------------------------------------------ revno: 3362.41.41 [merge] committer: Martin Skold branch nick: mysql-5.1-telco-7.0 timestamp: Wed 2010-06-02 11:48:09 +0200 message: Merge ------------------------------------------------------------ revno: 2585.154.1 committer: Martin Skold branch nick: mysql-5.1-telco-6.3 timestamp: Wed 2010-06-02 11:03:04 +0200 message: Bug #54005 Typo bug in BIT replication handling: Corrected typo and added test case ------------------------------------------------------------ revno: 3635 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-02 11:15:24 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.40 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Wed 2010-06-02 11:14:39 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.149.20 [merge] committer: Jonas Oreland branch nick: telco-6.3 timestamp: Wed 2010-06-02 11:12:29 +0200 message: ndb - merge 62 to 63 ------------------------------------------------------------ revno: 2572.81.26 committer: Jonas Oreland branch nick: telco-6.2 timestamp: Wed 2010-06-02 11:10:53 +0200 message: ndb - bug#54155 - fix incorrect assertion in DbtupTrigger, making it impossible to take backup with #cols == #max-cols ------------------------------------------------------------ revno: 3634 committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-02 10:18:47 +0200 message: ndb - commit for tag ------------------------------------------------------------ revno: 3633 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-02 09:39:32 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.39 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Wed 2010-06-02 09:38:18 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.149.19 [merge] committer: Jonas Oreland branch nick: telco-6.3 timestamp: Wed 2010-06-02 09:36:20 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2572.81.25 committer: Jonas Oreland branch nick: telco-6.2 timestamp: Wed 2010-06-02 09:27:05 +0200 message: ndb - bug#54168 - fix so that sendFragmented doesnt tamper with signal->theData ------------------------------------------------------------ revno: 3632 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Wed 2010-06-02 09:20:58 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.38 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Wed 2010-06-02 09:19:21 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.149.18 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Tue 2010-06-01 22:24:30 +0200 message: ndb - fix ctype_cp932_binlog_stm, which magically changed error message with 1 character (data_len from 66123 66124) ------------------------------------------------------------ revno: 2585.149.17 [merge] committer: Magnus Blåudd branch nick: 6.3 timestamp: Tue 2010-06-01 14:57:15 +0200 message: Merge ------------------------------------------------------------ revno: 3631 [merge] committer: Magnus Blåudd branch nick: 7.1 timestamp: Tue 2010-06-01 15:16:36 +0200 message: Merge 7.0 -> 7.1 ------------------------------------------------------------ revno: 3362.41.37 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-01 15:14:54 +0200 message: ndb - use NONBLOCKERR define for portability, accidentally removed ------------------------------------------------------------ revno: 3362.41.36 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-01 15:08:43 +0200 message: ndb - fix typo ------------------------------------------------------------ revno: 3362.41.35 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-01 14:57:21 +0200 message: Merge ------------------------------------------------------------ revno: 3362.47.4 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-01 14:52:22 +0200 message: ndb - remove unused code from NdbTCP.cpp ------------------------------------------------------------ revno: 3362.47.3 committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-01 14:49:58 +0200 message: ndb - rewrite the NDB_CLOSE_SOCKET mess to a inline function ------------------------------------------------------------ revno: 3362.47.2 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-01 14:23:20 +0200 message: Merge 6.3 to 7.0 ------------------------------------------------------------ revno: 2585.153.2 committer: Magnus Blåudd branch nick: 6.3 timestamp: Tue 2010-06-01 13:47:29 +0200 message: ndb - fix warning about signed/unsigned comparison ------------------------------------------------------------ revno: 3362.47.1 [merge] committer: Magnus Blåudd branch nick: 7.0 timestamp: Tue 2010-06-01 14:19:50 +0200 message: Bug#34303 Client using NDBAPI crashes if client application uses many connections - Merge to 7.0 - Add copyright headers to ndb_socket* files - Convert SocketInputStream2 to use 'ndb_poll' ------------------------------------------------------------ revno: 2585.153.1 committer: Magnus Blåudd branch nick: 6.3 timestamp: Tue 2010-06-01 12:45:29 +0200 message: Bug#34303 Client using NDBAPI crashes if client application uses many connections - Add portability wrapper class ndb_socket_poller for 'poll' and 'select' with special dynamic fd_set support for Windows. - Add new 'ndb_poll' function for waiting on events on one socket. - Use the 'ndb_poll' function everywhere waiting on one socket. - Change from "struct timeval" to "int timeout_millisec" as parameter to sendIsPossible, no need to convert back and forth when 'ndb_poll' accepts timeout in milliseconds. - Add new member variable to TCP_Transporter for remembering which index in the poll ist each transporter is using. - Backport the remove of 'select' before disconnect of faulty connection from 7.0 - Remove the windows specific "sleep if no fds for select", since that is now done in ndb_socket_poller - Backport patch from 7.0 which makes the SocketServer::doAccept loop sleep if there is a failure returned from 'accept', otherwise 100% CPU was used. ------------------------------------------------------------ revno: 3630 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Tue 2010-06-01 14:52:08 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.34 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-01 14:49:56 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.149.16 [merge] committer: Jonas Oreland branch nick: telco-6.3 timestamp: Tue 2010-06-01 14:47:54 +0200 message: ndb - merge release clone ------------------------------------------------------------ revno: 2585.152.1 committer: jonas@mysql.com branch nick: mysql-5.1.44-ndb-6.3.34 timestamp: Tue 2010-06-01 14:43:06 +0200 message: ndb - commit for tag ------------------------------------------------------------ revno: 3362.41.33 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Tue 2010-06-01 14:47:36 +0200 message: ndb - merge release clone ------------------------------------------------------------ revno: 3629 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Tue 2010-06-01 14:47:45 +0200 message: ndb - merge release clone ------------------------------------------------------------ revno: 3362.46.1 committer: jonas@mysql.com branch nick: mysql-5.1.44-ndb-7.0.15 timestamp: Tue 2010-06-01 14:43:45 +0200 message: ndb - commit for tag ------------------------------------------------------------ revno: 3628 [merge] committer: Jonas Oreland branch nick: telco-7.1 timestamp: Fri 2010-05-28 12:47:23 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.32 [merge] committer: Jonas Oreland branch nick: telco-6.4 timestamp: Fri 2010-05-28 12:46:15 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.149.15 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Fri 2010-05-28 12:42:30 +0200 message: ndb - bump version to 6.3.35 ------------------------------------------------------------ revno: 3362.41.31 committer: Jonas Oreland branch nick: telco-6.4 timestamp: Fri 2010-05-28 12:43:07 +0200 message: ndb - bump version to 7.0.16 ------------------------------------------------------------ revno: 3627 committer: Jonas Oreland branch nick: telco-7.1 timestamp: Fri 2010-05-28 12:43:40 +0200 message: ndb - bump version to 7.1.5 ------------------------------------------------------------ revno: 3626 [merge] tags: mysql-5.1.44-ndb-7.1.4, clone-mysql-5.1.44-ndb-7.1.4-src-build committer: Jonas Oreland branch nick: telco-7.1 timestamp: Thu 2010-05-27 14:40:36 +0200 message: ndb - merge 70 to 71 ------------------------------------------------------------ revno: 3362.41.30 [merge] tags: mysql-5.1.44-ndb-7.0.15, clone-mysql-5.1.44-ndb-7.0.15-src-build committer: Jonas Oreland branch nick: telco-6.4 timestamp: Thu 2010-05-27 11:56:43 +0200 message: ndb - merge 63 to 70 ------------------------------------------------------------ revno: 2585.149.14 tags: clone-mysql-5.1.44-ndb-6.3.34-src-build, mysql-5.1.44-ndb-6.3.34 committer: Jonas Oreland branch nick: telco-6.3 timestamp: Thu 2010-05-27 10:51:31 +0200 message: ndb - bug#53308 - change so that user explicitly needs to enable propagation of DDL-events in ndbapi