summaryrefslogtreecommitdiff
path: root/myisam
Commit message (Collapse)AuthorAgeFilesLines
* BUG#31277 - myisamchk --unpack corrupts a tableunknown2007-11-261-1/+1
| | | | | | | Another try to fix a compiler warning on win64.
* BUG#31277 - myisamchk --unpack corrupts a tableunknown2007-11-231-1/+1
| | | | | | | Fixed a compiler warning on win64. Backport from 5.1.
* Merge stella.local:/home2/mydev/mysql-5.0-amainunknown2007-11-164-25/+31
|\ | | | | | | | | | | | | | | into stella.local:/home2/mydev/mysql-5.0-axmrg sql/mysql_priv.h: Auto merged
| * Merge bk-internal.mysql.com:/home/bk/mysql-5.0-enginesunknown2007-11-141-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | into stella.local:/home2/mydev/mysql-5.0-bug4692 myisam/mi_check.c: Auto merged
| | * Bug#4692 - DISABLE/ENABLE KEYS waste a spaceunknown2007-11-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Post-pushbuild fix Added a purecov comment and a test for coverage of parallel enable keys. myisam/mi_check.c: Bug#4692 - DISABLE/ENABLE KEYS waste a space Added purecov comment. mysql-test/r/myisam.result: Bug#4692 - DISABLE/ENABLE KEYS waste a space Added test result. mysql-test/t/myisam.test: Bug#4692 - DISABLE/ENABLE KEYS waste a space Added test for coverage of parallel enable keys.
| * | Merge mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-4.1-enginesunknown2007-11-144-24/+30
| |\ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-5.0-engines myisam/mi_check.c: Auto merged myisam/mi_open.c: Auto merged myisam/mi_packrec.c: Auto merged myisam/myisamchk.c: Auto merged mysql-test/mysql-test-run.pl: Auto merged sql/mysql_priv.h: Auto merged include/mysql_com.h: Use local. sql-common/client.c: Use local.
| | * Merge mysql.com:/home/svoj/devel/mysql/BUG29083/mysql-4.1-enginesunknown2007-11-144-24/+30
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-4.1-engines
| | | * BUG#31277 - myisamchk --unpack corrupts a tableunknown2007-11-074-24/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With certain data sets (when compressed record length gets bigger than uncompressed) myisamchk --unpack may corrupt data file. Fixed that record length was wrongly restored from compressed table. myisam/mi_check.c: With compressed tables compressed record length may be bigger than pack_reclength, thus we may allocate insufficient memory for record buffer. Let single function allocate record buffer, performing needed record length calculations. Still, it is not doable with parallel repair, as it allocates needed record buffers at once. For parellel repair added better record length calculation. myisam/mi_open.c: When calculating record buffer size, take into account that compressed record length may be bigger than uncompressed. myisam/mi_packrec.c: With certain data set share->max_pack_length (compressed record length) may be bigger than share->base.pack_reclength (packed record length). set_if_bigger(pack_reclength, max_pack_length) in this case causes myisamchk --unpack to write extra garbage, whereas pack_reclength remains the same in new index file. As a result we get unreadable table. myisam/myisamchk.c: With compressed tables compressed record length may be bigger than pack_reclength, thus we may allocate insufficient memory for record buffer. Let single function allocate record buffer, performing needed record length calculations. mysql-test/mysql-test-run.pl: Environment variables to execute myisamchk and myisampack. mysql-test/r/myisampack.result: New BitKeeper file ``mysql-test/r/myisampack.result'' mysql-test/t/myisampack.test: New BitKeeper file ``mysql-test/t/myisampack.test''
| | * | Merge stella.local:/home2/mydev/mysql-4.1-ateamunknown2007-11-021-1/+2
| | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into stella.local:/home2/mydev/mysql-4.1-axmrg
| | | * | BUG#11392 - fulltext search bugunknown2007-10-301-1/+2
| | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fulltext boolean mode phrase search may crash server on platforms where size of pointer is not equal to size of unsigned integer (in other words some 64-bit platforms). The problem was integer overflow. Affects 4.1 only. myisam/ft_boolean_search.c: my_match_t::beg is unsigned int, that means type of expression (m[0].beg - 1) has unsigned type too. It may happen that instr() finds substring in the beggining of passed string, returning m[0].beg equal to 0. In this case value of expression (m[0].beg - 1) is equal to MAX_UINT. This is not a problem on platforms where sizeof(pointer) equals to sizeof(uint). That means ptr[(uint)-1] = ptr[(uint)MAX_UINT] = ptr - 1. On some 64-bit platforms where sizeof(pointer) is 8 and sizeof(uint) is 4, wrong address gets accessed. In other words ptr[(uint)-1] is equal to ptr + MAX_UINT. mysql-test/r/fulltext.result: A test case for BUG#11392. mysql-test/t/fulltext.test: A test case for BUG#11392.
* | | | Merge mysql.com:/home/gluh/MySQL/Merge/5.0unknown2007-11-142-58/+168
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/gluh/MySQL/Merge/5.0-opt mysql-test/t/subselect.test: Auto merged mysql-test/t/variables.test: Auto merged sql/item_func.cc: Auto merged sql/item_timefunc.cc: Auto merged mysql-test/r/select.result: manual merge mysql-test/t/select.test: manual merge
| * | | Merge stella.local:/home2/mydev/mysql-5.0-ateamunknown2007-11-061-1/+1
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into stella.local:/home2/mydev/mysql-5.0-axmrg
| | * \ \ Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0-enginesunknown2007-11-061-1/+1
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/svoj/devel/mysql/BUG31950/mysql-5.0-engines
| | | * | | BUG#31950 - repair table hangs while processing multicolumn utf8unknown2007-11-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fulltext index Having a table with broken multibyte characters may cause fulltext parser dead-loop. Since normally it is not possible to insert broken multibyte sequence into a table, this problem may arise only if table is damaged. Affected statements are: - CHECK/REPAIR against damaged table with fulltext index; - boolean mode phrase search against damaged table with or without fulltext inex; - boolean mode searches without index; - nlq searches. No test case for this fix. Affects 5.0 only. myisam/ft_parser.c: When skipping leading spaces, skip broken characters as well (broken characters a identified by mbl == 0).
| * | | | | Bug#4692 - DISABLE/ENABLE KEYS waste a spaceunknown2007-11-061-57/+167
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Disabling and enabling indexes on a non-empty table grows the index file. Disabling indexes just sets a flag per non-unique index and does not free the index blocks of the affected indexes. Re-enabling indexes creates new indexes with new blocks. The old blocks remain unused in the index file. Fixed by dropping and re-creating all indexes if non-empty disabled indexes exist when enabling indexes. Dropping all indexes resets the internal end-of-file marker to the end of the index file header. It also clears the root block pointers of every index and clears the deleted blocks chains. This way all blocks are declared as free. myisam/mi_check.c: Bug#4692 - DISABLE/ENABLE KEYS waste a space Added function mi_drop_all_indexes() to support drop of all indexes in case we want to re-enable non-empty disabled indexes. Changed mi_repair(), mi_repair_by_sort(), and mi_repair_parallel() to use the new function instead of duplicate drop index code. mysql-test/r/myisam.result: Bug#4692 - DISABLE/ENABLE KEYS waste a space Added test result. mysql-test/t/myisam.test: Bug#4692 - DISABLE/ENABLE KEYS waste a space Added test.
* | | | | Merge mysql.com:/home/hf/work/31305/my41-31305unknown2007-11-121-0/+68
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/hf/work/31305/my50-31305 BitKeeper/etc/ignore: auto-union myisam/mi_dynrec.c: Auto merged
| * | | | Bug #31305 myisam tables crash when they are near capacity.unknown2007-11-121-0/+68
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we insert a record into MYISAM table which is almost 'full', we first write record data in the free space inside a file, and then check if we have enough space after the end of the file. So if we don't have the space, table will left corrupted. Similar error also happens when we updata MYISAM tables. Fixed by modifying write_dynamic_record and update_dynamic_record functions to check for free space before writing parts of a record BitKeeper/etc/ignore: Added libmysql_r/client_settings.h libmysqld/ha_blackhole.cc to the ignore list myisam/mi_dynrec.c: Bug #31305 myisam tables crash when they are near capacity. now we check space left in table in write_dynamic_record and update_dynamic_record functions. If we don't have enough room for the new (updated) record, return with the error. mysql-test/r/almost_full.result: New BitKeeper file ``mysql-test/r/almost_full.result'' mysql-test/t/almost_full.test: New BitKeeper file ``mysql-test/t/almost_full.test''
| * | | Merge mysql.com:/home/gluh/MySQL/Merge/4.1unknown2007-10-232-14/+9
| |\ \ \ | | |_|/ | |/| | | | | | | | | | | | | | | | | | into mysql.com:/home/gluh/MySQL/Merge/4.1-opt
| | * | Merge bk@192.168.21.1:mysql-4.1-optunknown2007-10-052-14/+9
| | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/hf/work/30286/my41-30286
* | | \ \ Merge mysql.com:/home/gluh/MySQL/Merge/5.0unknown2007-10-234-17/+12
|\ \ \ \ \ | |_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/gluh/MySQL/Merge/5.0-opt client/mysqldump.c: Auto merged include/config-win.h: Auto merged libmysql/libmysql.c: Auto merged myisam/sort.c: Auto merged mysql-test/r/func_sapdb.result: Auto merged mysql-test/r/variables.result: Auto merged mysql-test/t/variables.test: Auto merged sql/field.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/item_func.cc: Auto merged sql/item_sum.cc: Auto merged sql/item_timefunc.h: Auto merged sql/mysql_priv.h: Auto merged sql/set_var.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_yacc.yy: Auto merged tests/mysql_client_test.c: Auto merged mysql-test/r/type_datetime.result: manual merge mysql-test/r/type_decimal.result: manual merge mysql-test/t/type_datetime.test: manual merge mysql-test/t/type_decimal.test: manual merge sql/item.cc: manual merge
| * | | | type conversions fixed to avoid warnings on Windowsunknown2007-10-232-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | myisam/mi_write.c: type conversion fixed myisam/sort.c: type conversion fixed sql/ha_federated.cc: type conversion fixed sql/ha_heap.cc: type conversion fixed sql/ha_innodb.cc: type conversion fixed sql/ha_myisam.cc: type conversion fixed sql/opt_range.cc: type conversion fixed sql/sql_map.cc: type conversion fixed sql/sql_select.cc: type conversion fixed sql/sql_update.cc: type conversion fixed
| * | | | Merge bk@192.168.21.1:mysql-5.0-optunknown2007-10-052-14/+9
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/hf/work/30286/my50-30286
| | * \ \ \ Merge mysql.com:/home/hf/work/30286/my41-30286unknown2007-10-052-14/+9
| | |\ \ \ \ | | | | |_|/ | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/hf/work/30286/my50-30286 myisam/rt_index.c: Auto merged myisam/rt_mbr.c: Auto merged mysql-test/t/gis-rtree.test: Auto merged mysql-test/r/gis-rtree.result: merging
| | | * | | Bug #30286 spatial index cause corruption and server crash!unknown2007-10-052-14/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As the result of DOUBLE claculations can be bigger than DBL_MAX constant we use in code, we shouldn't use this constatn as a biggest possible value. Particularly the rtree_pick_key function set 'min_area= DBL_MAX' relying that any rtree_area_increase result will be less so we return valid key. Though in rtree_area_increase function we calculate the area of the rectangle, so the result can be 'inf' if the rectangle is huge enough, which is bigger than DBL_MAX. Code of the rtree_pick_key modified so we always return a valid key. myisam/rt_index.c: Bug #30286 spatial index cause corruption and server crash! always set the best_key with the first key we get, so we always return somthing valid. myisam/rt_mbr.c: Bug #30286 spatial index cause corruption and server crash! function comment extended mysql-test/r/gis-rtree.result: Bug #30286 spatial index cause corruption and server crash! test result mysql-test/t/gis-rtree.test: Bug #30286 spatial index cause corruption and server crash! test case
* | | | | | Merge polly.(none):/home/kaa/src/maint/mysql-4.1-maintunknown2007-10-161-2/+4
|\ \ \ \ \ \ | |/ / / / / |/| | | / / | | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into polly.(none):/home/kaa/src/maint/mysql-5.0-maint myisam/sort.c: Auto merged mysql-test/r/repair.result: Auto merged mysql-test/t/repair.test: Auto merged
| * | | | Fix for bug #31174: "Repair" command on MyISAM crashes with smallunknown2007-10-111-2/+4
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | myisam_sort_buffer_size. An incorrect length of the sort buffer was used when calculating the maximum number of keys. When myisam_sort_buffer_size is small enough, this could result in the number of keys < number of BUFFPEK structures which in turn led to use of uninitialized BUFFPEKs. Fixed by correcting the buffer length calculation. myisam/sort.c: Use a correct buffer length when calculating the maximum number of keys. Assert that for each BUFFPEK structure there is at least one corresponding key. Otherwise we would fail earlier and not reach merge_buffers(). mysql-test/r/repair.result: Added a test case for bug #31174. mysql-test/t/repair.test: Added a test case for bug #31174.
| * | | Merge synthia.local:/home/mydev/mysql-4.1-amainunknown2007-08-131-30/+51
| |\ \ \ | | |_|/ | |/| | | | | | | | | | | | | | | | | | into synthia.local:/home/mydev/mysql-4.1-axmrg
* | | | Merge synthia.local:/home/mydev/mysql-5.0-amainunknown2007-08-132-6/+6
|\ \ \ \ | | |_|/ | |/| | | | | | | | | | | | | | | | | | into synthia.local:/home/mydev/mysql-5.0-axmrg
| * | | CMakeLists.txt, README, configure.jsunknown2007-08-031-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several adjustments to make client libraries pass the link test on both win32 and winx64, Visual Studio 2003 and 2005 (bug#30118) win/README: - Removed references to PARTITION engine, 5.1 only win/configure.js: - Removed references to PARTITION engine, 5.1 only extra/CMakeLists.txt: Use the special 'debug' list element to mark that "dbug" library is only to be linked against if build type "Debug". myisam/CMakeLists.txt: Use the special 'debug' list element to mark that "dbug" library is only to be linked against if build type "Debug". scripts/CMakeLists.txt: Use the special 'debug' list element to mark that "dbug" library is only to be linked against if build type "Debug". server-tools/instance-manager/CMakeLists.txt: Use the special 'debug' list element to mark that "dbug" library is only to be linked against if build type "Debug". sql/CMakeLists.txt: Use the special 'debug' list element to mark that "dbug" library is only to be linked against if build type "Debug". mysys/CMakeLists.txt: Restored include path to "mysys" itself dbug/CMakeLists.txt: Changed to optionally be included to give a file list only extra/yassl/CMakeLists.txt: Changed to optionally be included to give a file list only extra/yassl/taocrypt/CMakeLists.txt: Changed to optionally be included to give a file list only zlib/CMakeLists.txt: Changed to optionally be included to give a file list only libmysql/CMakeLists.txt: For compatibility with Visual Studio 2005, list all files that are to be part of the library build, i.e. libraries can't be built from other libraries. Set SOURCE_SUBLIBS and include the file listings from "zlib", "dbug", "taocrypt" and "yassl"
| * | | Merge production.mysql.com:/usersnfs/jperkin/bk/trees/build/mysql-4.1unknown2007-08-021-2/+2
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | into production.mysql.com:/usersnfs/jperkin/bk/trees/build/mysql-5.0 myisam/myisamchk.c: Auto merged
| | * | myisamchk.c:unknown2007-08-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix typo in usage. myisam/myisamchk.c: Fix typo in usage.
* | | | Merge chilla.local:/home/mydev/mysql-4.1-bug29838unknown2007-08-011-30/+51
|\ \ \ \ | | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-5.0-bug29838 myisam/mi_rkey.c: Auto merged
| * | | Bug#29838 - myisam corruption using concurrent select ... and updateunknown2007-08-011-30/+51
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using concurrent insert with parallel index reads, it could happen that reading sessions found keys that pointed to records yet to be written to the data file. The result was a report of a corrupted table. But it was false alert. When inserting a record in a table with indexes, the keys are inserted into the indexes before the record is written to the data file. When the insert happens concurrently to selects, an index read can find a key that references the record that is not yet written to the data file. To avoid any access to such record, the select saves the current end of file position when it starts. Since concurrent inserts are always appended at end of the data file, the select can easily ignore any concurrently inserted record. The problem was that the ignore was only done for non-exact key searches (partial key or using >, >=, < or <=). The fix is to ignore concurrently inserted records also for exact key searches. No test case. Concurrent inserts cannot be tested with the test suite. Test cases are attached to the bug report. myisam/mi_rkey.c: Bug#29838 - myisam corruption using concurrent select ... and update Fixed mi_rkey() to always ignore records beyond saved eof.
| * | Merge mysql.com:/home/svoj/devel/bk/mysql-4.1unknown2007-05-231-6/+7
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines
* | \ \ Merge chilla.local:/home/mydev/mysql-5.0-ateamunknown2007-07-281-128/+128
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-5.0-axmrg
| * | | Backported mi_test_all.sh from 5.1.unknown2007-07-281-128/+128
| | | |
* | | | Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0-enginesunknown2007-07-271-1/+1
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | into mysql.com:/home/svoj/devel/mysql/BUG29957/mysql-5.0-engines
| * | | BUG#29957 - alter_table.test failsunknown2007-07-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | INSERT/DELETE/UPDATE followed by ALTER TABLE within LOCK TABLES may cause table corruption on Windows. That happens because ALTER TABLE writes outdated shared state info into index file. Fixed by removing obsolete workaround. Affects MyISAM tables on Windows only. myisam/mi_extra.c: On windows when mi_extra(HA_EXTRA_PREPARE_FOR_DELETE) is called, we release external lock and close index file. If we're in LOCK TABLES, MyISAM state info doesn't get updated until UNLOCK TABLES. That means when we release external lock and we're in LOCK TABLES, we may write outdated state info. As SQL layer closes all table instances, we do not need this workaround anymore. mysql-test/r/alter_table.result: A test case for BUG#29957. mysql-test/t/alter_table.test: A test case for BUG#29957.
* | | | fixed uninitialized variable introduced by the fix for bug 29325unknown2007-07-111-4/+2
| | | |
* | | | Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-optunknown2007-07-111-2/+4
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into magare.gmz:/home/kgeorge/mysql/autopush/B29325-5.0-opt include/my_base.h: Auto merged
| * | | | Bug #29325: unknown2007-07-111-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default MyISAM overwrites .MYD and .MYI files no DATA DIRECTORY option is used. This can lead to two tables using the same .MYD and .MYI files (that can't be dropped). To prevent CREATE TABLE from overwriting a file a new option is introduced : keep_files_on_create When this is on the CREATE TABLE throws an error if either the .MYD or .MYI exists for a MyISAM table. The option is off by default (resulting in compatible behavior). include/my_base.h: Bug #29325: introduce keep_files_on_create myisam/mi_create.c: Bug #29325: introduce keep_files_on_create mysql-test/r/create.result: Bug #29325: test case mysql-test/t/create.test: Bug #29325: test case sql/ha_myisam.cc: Bug #29325: introduce keep_files_on_create sql/set_var.cc: Bug #29325: introduce keep_files_on_create sql/sql_class.h: Bug #29325: introduce keep_files_on_create sql/sql_table.cc: Bug #29325: introduce keep_files_on_create sql/unireg.cc: Bug #29325: introduce keep_files_on_create
* | | | | Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-optunknown2007-07-101-42/+29
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | into magare.gmz:/home/kgeorge/mysql/autopush/B29070-5.0-opt
| * | | | Bug #29070: Error in spatial indexunknown2007-07-091-42/+29
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Threat MBR for a key as double[] and convert it only when about to store it on disk. 2. Remove the redundant function get_double(). myisam/sp_key.c: Bug #29070: 1. threat MBR for a key as double[] and convert it only when about to store it on disk. 2. remove the redundant function get_double() mysql-test/r/gis-rtree.result: Bug #29070: test case mysql-test/t/gis-rtree.test: Bug #29070: test case
* | | | Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.0-enginesunknown2007-07-061-2/+4
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | into anubis.xiphis.org:/usr/home/antony/work/mysql-5.0-engines.merge sql/sql_insert.cc: Auto merged
| * | | Merge mysql.com:/home/svoj/devel/bk/mysql-5.0-enginesunknown2007-07-021-2/+4
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/svoj/devel/mysql/BUG29299/mysql-5.0-engines
| | * | | BUG#29299 - repeatable myisam fulltext index corruptionunknown2007-06-271-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fulltext index may get corrupt by certain gbk characters. The problem was that when skipping leading non-true-word-characters, we assumed that these characters are always 1 byte long. This is not the case with gbk character set, since non-true-word-characters may be 2 bytes long. Affects 5.0 only. myisam/ft_parser.c: Leading non-true-word-characters may also be multi-byte (e.g. in gbk character set). mysql-test/r/fulltext2.result: A test case for BUG#29299. mysql-test/t/fulltext2.test: A test case for BUG#29299.
* | | | | Bug #26642: create index corrupts table definition in .frmunknown2007-06-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks to Martin Friebe for finding and submitting a fix for this bug! A table with maximum number of key segments and maximum length key name would have a corrupted .frm file, due to an incorrect calculation of the complete key length. Now the key length is computed correctly (I hope) :-) MyISAM would reject a table with the maximum number of keys and the maximum number of key segments in all keys. It would allow one less than this total maximum. Now MyISAM accepts a table defined with the maximum. (This is a very minor issue.) myisam/mi_open.c: Bug #26642: change >= to > in a comparison (i.e., error only if key_parts_in_table really is greater than MAX_KEY * MAX_KEY_SEG) mysql-test/r/create.result: Bug #26642: test case mysql-test/t/create.test: Bug #26642: test case sql/table.cc: Bug #26642: In create_frm(), fix formula for key_length; it was too small by (keys * 2) bytes
* | | | | Merge olga.mysql.com:/home/igor/mysql-5.0-optunknown2007-06-261-6/+6
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29087
| * | | | Fixed bug #29087. This bug manifested itself for queries that performedunknown2007-06-251-6/+6
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a lookup into a BINARY index by a key ended with spaces. It caused an assertion abort for a debug version and wrong results for non-debug versions. The problem occurred because the function _mi_pack_key stripped off the trailing spaces from binary search keys while the function _mi_make_key did not do it when keys were inserted into the index. Now the function _mi_pack_key does not remove the trailing spaces from search keys if they are of the binary type. mysql-test/r/binary.result: Added a test case for bug #29087. mysql-test/t/binary.test: Added a test case for bug #29087.
* | | | Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maintunknown2007-06-211-2/+3
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | into amd64.(none):/src/bug27029/my50-bug27029 myisam/sort.c: Auto merged