summaryrefslogtreecommitdiff
path: root/myisam
Commit message (Collapse)AuthorAgeFilesLines
* Deleted old storage directories (introduced by a buggy 5.0 -> 5.1 merge).unknown2006-09-211-26/+0
| | | | | | | | | | | | | | | | | | Fix for win/Makefile.am BitKeeper/deleted/.del-CMakeLists.txt~dd682cce1d53c0b4: Delete: bdb/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~c20dcd005f596740: Delete: myisam/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~4ef559bc8b4695f7: Delete: heap/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~2f6eabb2f69cb33d: Delete: innobase/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~84669765249a4bad: Delete: myisammrg/CMakeLists.txt win/Makefile.am: added missing support for 64-bit build file (make dist)
* Merge zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maintunknown2006-09-051-0/+26
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-maint BitKeeper/deleted/.del-CMakeLists.txt~1: Delete: CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~2: Delete: server-tools/instance-manager/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~3: Delete: sql/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~4: Delete: strings/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~5: Delete: tests/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~6: Delete: vio/CMakeLists.txt BitKeeper/deleted/.del-Makefile.am~2: Delete: win/Makefile.am BitKeeper/deleted/.del-README~1: Delete: win/README BitKeeper/deleted/.del-build-vs71.bat: Delete: win/build-vs71.bat BitKeeper/deleted/.del-build-vs8.bat: Delete: win/build-vs8.bat BitKeeper/deleted/.del-configure.js: Delete: win/configure.js BitKeeper/deleted/.del-CMakeLists.txt~7: Delete: client/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~8: Delete: zlib/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~9: Delete: dbug/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~10: Delete: extra/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~11: Delete: extra/yassl/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~12: Delete: extra/yassl/taocrypt/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~13: Delete: libmysql/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~14: Delete: mysys/CMakeLists.txt BitKeeper/deleted/.del-CMakeLists.txt~15: Delete: regex/CMakeLists.txt
| * Additional files for cmake supportunknown2006-08-311-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CMakeLists.txt: New BitKeeper file ``CMakeLists.txt'' bdb/CMakeLists.txt: New BitKeeper file ``bdb/CMakeLists.txt'' client/CMakeLists.txt: New BitKeeper file ``client/CMakeLists.txt'' dbug/CMakeLists.txt: New BitKeeper file ``dbug/CMakeLists.txt'' extra/CMakeLists.txt: New BitKeeper file ``extra/CMakeLists.txt'' extra/yassl/CMakeLists.txt: New BitKeeper file ``extra/yassl/CMakeLists.txt'' extra/yassl/taocrypt/CMakeLists.txt: New BitKeeper file ``extra/yassl/taocrypt/CMakeLists.txt'' heap/CMakeLists.txt: New BitKeeper file ``heap/CMakeLists.txt'' innobase/CMakeLists.txt: New BitKeeper file ``innobase/CMakeLists.txt'' libmysql/CMakeLists.txt: New BitKeeper file ``libmysql/CMakeLists.txt'' myisam/CMakeLists.txt: New BitKeeper file ``myisam/CMakeLists.txt'' myisammrg/CMakeLists.txt: New BitKeeper file ``myisammrg/CMakeLists.txt'' mysys/CMakeLists.txt: New BitKeeper file ``mysys/CMakeLists.txt'' regex/CMakeLists.txt: New BitKeeper file ``regex/CMakeLists.txt'' server-tools/CMakeLists.txt: New BitKeeper file ``server-tools/CMakeLists.txt'' server-tools/instance-manager/CMakeLists.txt: New BitKeeper file ``server-tools/instance-manager/CMakeLists.txt'' sql/CMakeLists.txt: New BitKeeper file ``sql/CMakeLists.txt'' sql/examples/CMakeLists.txt: New BitKeeper file ``sql/examples/CMakeLists.txt'' strings/CMakeLists.txt: New BitKeeper file ``strings/CMakeLists.txt'' tests/CMakeLists.txt: New BitKeeper file ``tests/CMakeLists.txt'' vio/CMakeLists.txt: New BitKeeper file ``vio/CMakeLists.txt'' win/Makefile.am: New BitKeeper file ``win/Makefile.am'' win/README: New BitKeeper file ``win/README'' win/build-vs71.bat: New BitKeeper file ``win/build-vs71.bat'' win/build-vs8.bat: New BitKeeper file ``win/build-vs8.bat'' win/build-vs8_x64.bat: New BitKeeper file ``win/build-vs8_x64.bat'' win/configure.js: New BitKeeper file ``win/configure.js'' zlib/CMakeLists.txt: New BitKeeper file ``zlib/CMakeLists.txt''
| * Merge xiphis.org:/home/antony/work2/mysql-5.0-enginesunknown2006-08-141-29/+130
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into xiphis.org:/home/antony/work2/mysql-5.0-merge mysql-test/r/create.result: Auto merged mysql-test/r/federated.result: Auto merged mysql-test/r/insert_select.result: Auto merged mysql-test/r/ps_2myisam.result: Auto merged mysql-test/r/ps_3innodb.result: Auto merged mysql-test/r/ps_4heap.result: Auto merged mysql-test/r/ps_5merge.result: Auto merged mysql-test/r/ps_6bdb.result: Auto merged mysql-test/r/ps_7ndb.result: Auto merged mysql-test/r/strict.result: Auto merged mysql-test/r/view.result: Auto merged mysql-test/r/warnings.result: Auto merged sql/share/errmsg.txt: Auto merged sql/sql_base.cc: Auto merged sql/sql_insert.cc: Auto merged
| | * Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.0-enginesunknown2006-07-301-29/+130
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-5.0-bug20719 ndb/include/kernel/GlobalSignalNumbers.h: Auto merged ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Auto merged ndb/src/kernel/blocks/dbdict/Dbdict.hpp: Auto merged ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Auto merged ndb/src/ndbapi/ndberror.c: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/handler.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_insert.cc: Auto merged
| | | * Bug#20719 - Reading dynamic records with write buffer could failunknown2006-07-301-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | After merge fix
| | | * Merge chilla.local:/home/mydev/mysql-4.1-bug20719unknown2006-07-291-0/+3
| | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-5.0-bug20719 myisam/mi_dynrec.c: Auto merged
| | | | * Bug#20719 - Reading dynamic records with write buffer could failunknown2006-07-291-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After merge fix
| | | * | Merge chilla.local:/home/mydev/mysql-4.1-bug20719unknown2006-07-261-26/+127
| | | |\ \ | | | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-5.0-bug20719 myisam/mi_dynrec.c: Auto merged
| | | | * Merge chilla.local:/home/mydev/mysql-4.0-bug20719unknown2006-07-261-26/+127
| | | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-bug20719 myisam/mi_dynrec.c: Bug#20719 - Reading dynamic records with write buffer could fail Manual merge
| | | | | * Bug#20719 - Reading dynamic records with write buffer could failunknown2006-07-211-28/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed a possible problem with reading of dynamic records when a write cache is active. The cache must be flushed whenever a part of the file in the write cache is to be read. Added a read optimization to _mi_read_dynamic_record(). No test case. This was a hypothetical but existing problem. myisam/mi_dynrec.c: Bug#20719 - Reading dynamic records with write buffer could fail Fixed a possible problem with reading of dynamic records when a write cache is active. The cache must be flushed whenever a part of the file in the write cache is to be read. This must be done before the read of the header and before the read of the rest block. Renamed the 'flag' and 'skipp_deleted_blocks' variables. Added a read optimization to _mi_read_dynamic_record() that was present in _mi_read_rnd_dynamic_record() already. After _mi_get_block_info() we have some bytes of the record in the header buffer already. No need to read them again.
| * | | | | Merge may.pils.ru:/home/svoj/devel/mysql/BUG18874/mysql-4.1unknown2006-08-141-7/+5
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into may.pils.ru:/home/svoj/devel/mysql/BUG18874/mysql-5.0 myisam/sort.c: Auto merged mysql-test/r/repair.result: Auto merged mysql-test/t/repair.test: Auto merged
| | * | | | | BUG#18874 - Setting myisam_repair_threads > 1, index cardinality always 1unknown2006-08-141-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed by moving update_key_parts() down to be after write_index(). myisam/sort.c: write_index() collects index statistic which is further used in update_key_parts(). Thus update_key_parts() must be called after write_index(). mysql-test/r/repair.result: Test case for bug#18874. mysql-test/t/repair.test: Test case for bug#18874.
| * | | | | | Merge may.pils.ru:/home/svoj/devel/mysql/BUG20060/mysql-4.1unknown2006-08-091-1/+11
| |\ \ \ \ \ \ | | |/ / / / / | | | / / / / | | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | into may.pils.ru:/home/svoj/devel/mysql/BUG20060/mysql-5.0 myisam/mi_update.c: Auto merged
| | * | | | BUG#20060 - mysqld option "--flush " doesn't work for update statementunknown2006-08-091-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem described in this bug report affects MyISAM tables only. Running mysqld --flush instructs mysqld to sync all changes to disk after each SQL statement. It worked well for INSERT and DELETE statements, but it did sync for UPDATE only in case if there was index change (change of colum that has an index). If no updated column has an index, data wasn't synced to disk. This fix makes UPDATE statement to sync data to disk even if there is no index change (that is only data change) and mysqld is run with --flush option. myisam/mi_update.c: Every myisam function that updates myisam table must end with call to _mi_writeinfo(). If operation (second param of _mi_writeinfo()) is not 0 it sets share->changed to 1, that is flags that data has changed. If operation is 0, this function equals to no-op in this case. mi_update() must always pass !0 value as operation, since even if there is no index change there could be data change.
| | * | | | Merge chilla.local:/home/mydev/mysql-4.1-bug19835unknown2006-07-081-0/+3
| | |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-amerge
| | * \ \ \ \ Merge chilla.local:/home/mydev/mysql-4.1-bug17877unknown2006-07-084-7/+14
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-amerge
| | * \ \ \ \ \ Merge chilla.local:/home/mydev/mysql-4.1-bug14400unknown2006-07-081-6/+18
| | |\ \ \ \ \ \ | | | | |_|_|/ / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-amerge sql/sql_class.cc: Auto merged
| | * | | | | | Merge chilla.local:/home/mydev/mysql-4.1-bug11824unknown2006-07-082-6/+35
| | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-amerge myisam/mi_create.c: Auto merged
| * | \ \ \ \ \ \ Merge bk-internal.mysql.com:/home/bk/mysql-5.0unknown2006-07-088-19/+70
| |\ \ \ \ \ \ \ \ | | | |_|_|_|_|/ / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41 myisam/mi_create.c: Auto merged mysql-test/r/myisam.result: Auto merged mysql-test/t/myisam.test: Auto merged sql/item_timefunc.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_trigger.cc: Auto merged support-files/mysql.spec.sh: Auto merged mysql-test/r/federated.result: Manual merge. mysql-test/t/federated.test: Manual merge.
| | * | | | | | | Merge mysql.com:/home/mydev/mysql-4.1-bug19835unknown2006-07-051-0/+3
| | |\ \ \ \ \ \ \ | | | | |_|_|_|/ / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-5.0-ateam myisam/mi_dynrec.c: Auto merged
| | | * | | | | | Bug#19835 - Binary copy of corrupted tables crash the server when issuing a ↵unknown2006-06-281-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | query A corrupt table with dynamic record format can crash the server when trying to select from it. I fixed the crash that resulted from the particular type of corruption that has been reported for this bug. No test case. To test it, one needs a table with a very special corruption. The bug report contains a file with such a table. myisam/mi_dynrec.c: Bug#19835 - Binary copy of corrupted tables crash the server when issuing a query Added a protection against corrupted records. A dynamic record header with invalid 'next' pointer could trigger the assert in _mi_get_block_info(). Now I avoid this by reporting a corruption error.
| | * | | | | | | Merge mysql.com:/home/mydev/mysql-4.1-bug17877unknown2006-07-054-7/+14
| | |\ \ \ \ \ \ \ | | | | |_|_|_|/ / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-5.0-ateam myisam/mi_key.c: Auto merged mysql-test/r/gis-rtree.result: Auto merged mysql-test/t/gis-rtree.test: Auto merged myisam/mi_check.c: SCCS merged
| | | * | | | | | Bug#17877 - Corrupted spatial indexunknown2006-06-284-7/+14
| | | |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CHECK TABLE could complain about a fully intact spatial index. A wrong comparison operator was used for table checking. The result was that it checked for non-matching spatial keys. This succeeded if at least two different keys were present, but failed if only the matching key was present. I fixed the key comparison. myisam/mi_check.c: Bug#17877 - Corrupted spatial index Fixed the comparison operator for checking a spatial index. Using MBR_EQUAL | MBR_DATA to compare for equality and include the data pointer in the comparison. The latter finds the index entry that points to the current record. This is necessary for non-unique indexes. The old operator, SEARCH_SAME, is unknown to the rtree search functions and handled like MBR_DISJOINT. myisam/mi_key.c: Bug#17877 - Corrupted spatial index Added a missing DBUG_RETURN. myisam/rt_index.c: Bug#17877 - Corrupted spatial index Included the data pointer in the copy of the search key. This is necessary for searching the index entry that points to a specific record if the search_flag contains MBR_DATA. myisam/rt_mbr.c: Bug#17877 - Corrupted spatial index Extended the RT_CMP() macro with an assert for an unexpected comparison operator. mysql-test/r/gis-rtree.result: Bug#17877 - Corrupted spatial index The test result. mysql-test/t/gis-rtree.test: Bug#17877 - Corrupted spatial index The test case.
| | * | | | | | Merge mysql.com:/home/mydev/mysql-4.1-bug14400unknown2006-07-051-6/+18
| | |\ \ \ \ \ \ | | | | |_|_|/ / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-5.0-ateam libmysqld/libmysqld.c: Auto merged myisam/mi_rkey.c: Auto merged mysql-test/r/func_sapdb.result: Auto merged mysql-test/r/symlink.result: Auto merged mysql-test/t/func_sapdb.test: Auto merged scripts/make_binary_distribution.sh: Auto merged sql/item_geofunc.h: Auto merged sql/item_timefunc.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_parse.cc: Auto merged libmysqld/lib_sql.cc: Manual merge mysql-test/r/func_time.result: Manual merge mysql-test/r/gis.result: Manual merge mysql-test/t/func_time.test: Manual merge mysql-test/t/gis.test: Manual merge sql-common/client.c: Manual merge
| | | * | | | | Merge mysql.com:/home/mydev/mysql-4.0-bug14400unknown2006-07-041-6/+18
| | | |\ \ \ \ \ | | | | |/ / / / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-4.1-bug14400 myisam/mi_rkey.c: Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert" Manual merge sql/sql_class.cc: Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert" Manual merge
| | | | * | | | Bug#14400 - Query joins wrong rows from table which is subject of ↵unknown2006-06-281-2/+14
| | | | | |_|/ | | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "concurrent insert" It was possible that fetching a record by an exact key value (including the record pointer) could return a record with a different key value. This happened only if a concurrent insert added a record with the searched key value after the fetching statement locked the table for read. The search succeded on the key value, but the record was rejected as it was past the file length that was remembered at start of the fetching statement. With other words it was rejected as being a concurrently inserted record. The action to recover from this problem was to fetch the record that is pointed at by the next key of the index. This was repeated until a record below the file length was found. I do now avoid this loop if an exact match was searched. If this match is beyond the file length, it is now treated as "key not found". There cannot be another key with the same record pointer. myisam/mi_rkey.c: Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert" Added a check for exact key match before searching for the next key that was not concurrently inserted. If an exact key match finds a concurrently inserted row, this must be treated as "key not found". sql/sql_class.cc: Bug#14400 - Query joins wrong rows from table which is subject of "concurrent insert" Fixed some DBUG_ENTER strings.
| | * | | | | Merge mysql.com:/home/mydev/mysql-4.1-bug11824unknown2006-07-052-6/+35
| | |\ \ \ \ \ | | | | |_|_|/ | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-5.0-ateam myisam/mi_create.c: Auto merged mysql-test/r/ctype_utf8.result: Auto merged mysql-test/r/key.result: Auto merged mysql-test/r/myisam.result: Auto merged mysql-test/t/ctype_utf8.test: Auto merged mysql-test/t/key.test: Auto merged mysql-test/t/myisam.test: Auto merged sql/opt_sum.cc: Auto merged sql/table.cc: Auto merged support-files/mysql.spec.sh: Auto merged sql/field.cc: Manual merge
| | | * | | | Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent ↵unknown2006-06-272-6/+35
| | | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | queries to fail Very complex select statements can create temporary tables that are too big to be represented as a MyISAM table. This was not checked at table creation time, but only at open time. The result was an attempt to delete the "impossible" table. But if the server is built --with-raid, MyISAM tries to open the table before deleting the files. It needs to find out if the table uses the raid support and how many raid chunks there are. This is done with an open "for repair", which will almost always succeed. But in this case we have an "impossible" table. The open failed. Hence the files were not deleted. Also the error message was a bit unspecific. I turned an open error in this situation into the assumption of having no raid support on the table. Thus the normal data file is tried to be deleted. This may however leave existing raid chunks behind. I also added a check in mi_create() to prevent the creation of an "impossible" table. A more decriptive error message is given in this case. No test case. The required select statement is way too large for the test suite. I added a test script to the bug report. myisam/mi_create.c: Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail Added a check to mi_create() that the table description header of the index file does not exceed 64KB. The header has only 16 bits to encode its length. myisam/mi_delete_table.c: Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail Interpret error in table open as not having a raid configuration on the tbale. Thus try to delete the normal data file, but leave behind raid chunks if they exist.
| * | | | | Merge bodhi.local:/opt/local/work/tmp_mergeunknown2006-07-081-7/+29
| |\ \ \ \ \ | | |/ / / / | |/| | | / | | | |_|/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41 BitKeeper/etc/ignore: auto-union libmysqld/Makefile.am: Auto merged myisam/mi_create.c: Auto merged mysql-test/r/date_formats.result: Auto merged mysql-test/t/date_formats.test: Auto merged sql/Makefile.am: Auto merged sql/item_timefunc.cc: Auto merged sql/mysql_priv.h: Auto merged sql/opt_range.cc: Auto merged sql/sql_class.h: Auto merged support-files/mysql.spec.sh: Auto merged mysql-test/r/myisam.result: Manual merge. mysql-test/t/myisam.test: Manual merge. sql/set_var.cc: Manual merge. sql/set_var.h: Manual merge. sql/sql_cache.cc: Manual merge. sql/sql_class.cc: Manual merge.
| | * | | Bug#8706unknown2006-07-051-7/+29
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "temporary table with data directory option fails" myisam should not use user-specified table name when creating temporary tables and use generated connection specific real name. Test included. myisam/mi_create.c: Bug#8706 When creating a temporary table with directory override, ensure that the real filename is using the hidden temporary name otherwise multiple clients cannot have same named temporary tables without conflict. mysql-test/r/myisam.result: Bug#8706 Test for bug mysql-test/t/myisam.test: Bug#8706 Test for bug
| * | | Bug#19604 - CHECK TABLE with concurrent INSERT can reset auto_incrementunknown2006-05-315-29/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CHECK TABLE did temporarily clear the auto_increment value. It runs with a read lock, allowing other readers and conurrent INSERTs. The latter could grab the wrong value in this moment. CHECK TABLE does no longer modify the auto_increment value. Not even for a short moment. myisam/mi_check.c: Bug#19604 - CHECK TABLE with concurrent INSERT can reset auto_increment In chk_key() and update_auto_increment_key() in the repair_only case, do not touch info->s->state.auto_increment. Especially chk_key() can be called from CHECK TABLE with a read lock. Concurrent inserts could grab a temporarily changed value. Added minor style fixes. myisam/mi_key.c: Bug#19604 - CHECK TABLE with concurrent INSERT can reset auto_increment Changed update_auto_increment() to retrieve_auto_increment() to reflect that it does not change the auto_increment by itself any more. This must now be done externally if needed. myisam/mi_update.c: Bug#19604 - CHECK TABLE with concurrent INSERT can reset auto_increment Added explicit update of info->s->state.auto_increment after the change from update_auto_increment() to retrieve_auto_increment(). myisam/mi_write.c: Bug#19604 - CHECK TABLE with concurrent INSERT can reset auto_increment Added explicit update of info->s->state.auto_increment after the change from update_auto_increment() to retrieve_auto_increment(). myisam/myisamdef.h: Bug#19604 - CHECK TABLE with concurrent INSERT can reset auto_increment Changed update_auto_increment() to retrieve_auto_increment() to reflect that it does not change the auto_increment by itself any more. This must now be done externally if needed.
| * | | Merge mysql.com:/home/mydev/mysql-5.0unknown2006-05-061-9/+17
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-5.0-bug10405
| | * \ \ Merge mysql.com:/home/mydev/mysql-4.1-bug10405unknown2006-05-021-9/+17
| | |\ \ \ | | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-5.0-bug10405 myisam/mi_check.c: Auto merged
| | | * | Merge mysql.com:/home/mydev/mysql-4.0-bug10405unknown2006-04-291-9/+17
| | | |\ \ | | | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-4.1-bug10405 myisam/mi_check.c: Auto merged
| | | | * Bug#10405 - myisamchk damages auto_increment columns when changing character setunknown2006-04-101-9/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Whenever 'myisamchk' needed to recreate a table, the auto increment information was lost. Now the forgotten element of the table creation information is set correctly. myisam/mi_check.c: Bug#10405 - myisamchk damages auto_increment columns when changing character set Added some DBUG statements. Enabled 'with_auto_increment' in 'create_info' when recreating a table.
| | | | * Fixes during review of new pushed code:unknown2006-01-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove wrong fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash Safety fix for bug #13855 "select distinct with group by caused server crash" client/mysqlimport.c: Remove not used variable myisam/myisam_ftdump.c: Fixed compiler warning sql/item_cmpfunc.cc: Removed compiler warning sql/sql_handler.cc: Remove wrong fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash. It's better to let mysql_lock_tables reopen the TABLE object in case of OPTIMIZE TABLE and fix items AFTER mysql_lock_table() instead of before sql/sql_select.cc: Safety fix for bug #13855 "select distinct with group by caused server crash" The previous patch only removed the symptomps, this fix removed the cause of the problem (Which was that not all hidden_fields was stored in the temporary table)
| * | | | Merge april.(none):/home/svoj/devel/mysql/BUG18160/mysql-5.0unknown2006-05-031-1/+1
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into april.(none):/home/svoj/devel/mysql/BUG17810/mysql-5.0
| | * | | | BUG#18160 - Memory-/HEAP Table endless growing indexesunknown2006-04-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Updating data in HEAP table with BTREE index results in wrong index_length counter value, which keeps growing after each update. When inserting new record into tree counter is incremented by: sizeof(TREE_ELEMENT) + key_size + tree->size_of_element But when deleting element from tree it doesn't decrement counter by key_size: sizeof(TREE_ELEMENT) + tree->size_of_element This fix makes accurate allocated memory counter for tree. That is decrease counter by key_size when deleting tree element. heap/hp_delete.c: Added size of the key to tree_delete() for accurate allocated memory counter. include/my_tree.h: Added size of the key to tree_delete() for accurate allocated memory counter. myisam/myisamlog.c: Added size of the key to tree_delete() for accurate allocated memory counter. mysql-test/r/heap_btree.result: Testcase for BUG#18160. mysql-test/t/heap_btree.test: Testcase for BUG#18160. mysys/tree.c: Added size of the key to tree_delete() for accurate allocated memory counter. Note that this size is optional. If one doesn't need precise counter it is safe to pass 0 as key_size.
| * | | | | BUG#17810 - REPAIR says ok, CHECK says broken (repeatable)unknown2006-04-271-1/+1
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Write operations on tables created in 4.x with index on variable length column results in index crash. Even REPAIR TABLE wasn't able to fix broken index. Problem was that packed key length size wasn't restored correctly. In 5.0 packed key length size is either 1 or 2. In 4.x this length is always 2, but is saved as 0. This fix ensures that key length size is restored correctly for 4.x tables. myisam/mi_key.c: Ensure that pack_length is either 1 or 2 (compatibility with 4.x).
| * | | | Merge polar.kitebird.com:/src/extern/MySQL/bk/mysql-4.1unknown2006-04-231-7/+7
| |\ \ \ \ | | | |/ / | | |/| | | | | | | | | | | | | | | | | | | | | | into polar.kitebird.com:/src/extern/MySQL/bk/mysql-5.0
| | * | | myisam_ftdump.c:unknown2006-04-231-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | myisam_ftdump options: --help first, then rest in lexical order. myisam/myisam_ftdump.c: myisam_ftdump options: --help first, then rest in lexical order.
| * | | | Merge april.(none):/home/svoj/devel/mysql/BUG17917/mysql-4.1unknown2006-04-151-5/+11
| |\ \ \ \ | | |/ / / | | | / / | | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | into april.(none):/home/svoj/devel/mysql/BUG17917/mysql-5.0 sql/mysqld.cc: Auto merged myisam/mi_packrec.c: Manual merge.
| | * | BUG#17917 - SELECT from compressed MyISAM table crashes MySQL serverunknown2006-04-131-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Retrieving data from compressed MyISAM table which is bigger than 4G on 32-bit box with mmap() support results in server crash. mmap() accepts length of bytes to be mapped in second param, which is 32-bit size_t. But we pass data_file_length, which is 64-bit my_off_t. As a result only first data_file_length % 4G were mapped. This fix adds additional condition for mmap() usage, that is use mmap() for compressed table which size is no more than 4G on 32-bit platform. myisam/mi_packrec.c: Use mmap() for compressed table which size is no more than 4G on 32-bit platform.
| * | | Manual mergeunknown2006-03-301-7/+4
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | myisam/mi_search.c: Auto merged mysql-test/t/ctype_utf8.test: Auto merged
| | * | Fix error in prefix compression of keys in MyISAM when key length changed ↵unknown2006-03-301-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from 254 -> 255 Bug #17705 "FT Index corruption occurs with UTF8 data..." (Actually, the bug had nothing to do with FT index but with general key compression) myisam/mi_search.c: Fix error in prefix compression of keys in MyISAM when key length changed from 254 -> 255 mysql-test/r/ctype_utf8.result: Test of fix for key compression bug mysql-test/t/ctype_utf8.test: Test of fix for key compression bug
| * | | Merge mysql.com:/home/mydev/mysql-4.1-bug14980unknown2006-03-106-2/+19
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into mysql.com:/home/mydev/mysql-5.0-bug14980 include/my_base.h: Auto merged myisam/mi_delete.c: Auto merged myisam/mi_key.c: Auto merged myisam/mi_rnext_same.c: Auto merged myisam/mi_unique.c: Auto merged myisam/mi_update.c: Auto merged myisam/mi_write.c: Auto merged mysql-test/r/myisam.result: SCCS merged mysql-test/t/myisam.test: SCCS merged
| | * | Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEXunknown2006-03-106-2/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For "count(*) while index_column = value" an index read is done. It consists of an index scan and retrieval of each key. For efficiency reasons the index scan stores the key in the special buffer 'lastkey2' once only. At the first iteration it notes this fact with the flag HA_STATE_RNEXT_SAME in 'info->update'. For efficiency reasons, the key retrieval for blobs does not allocate a new buffer, but uses 'lastkey2'... Now I clear the HA_STATE_RNEXT_SAME flag whenever the buffer has been polluted. In this case, the index scan copies the key value again (and sets the flag again). include/my_base.h: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Changed the comment for HA_STATE_RNEXT_SAME as a warning for future uses. myisam/mi_delete.c: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Removing the flag HA_STATE_RNEXT_SAME from info->update if info->lastkey2 was reused for another purpose than index scanning. myisam/mi_key.c: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Removing the flag HA_STATE_RNEXT_SAME from info->update if info->lastkey2 was reused for another purpose than index scanning. myisam/mi_rnext_same.c: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Removed trailing space and fixed a comment. myisam/mi_unique.c: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Removing the flag HA_STATE_RNEXT_SAME from info->update if info->lastkey2 was reused for another purpose than index scanning. myisam/mi_update.c: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Removing the flag HA_STATE_RNEXT_SAME from info->update if info->lastkey2 was reused for another purpose than index scanning. myisam/mi_write.c: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Removing the flag HA_STATE_RNEXT_SAME from info->update if info->lastkey2 was reused for another purpose than index scanning. mysql-test/r/myisam.result: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Added test result. mysql-test/t/myisam.test: Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX Added test.
| * | | Merge april.(none):/home/svoj/devel/mysql/BUG16489/mysql-4.1unknown2006-01-231-0/+4
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into april.(none):/home/svoj/devel/mysql/BUG16489/mysql-5.0 myisam/ft_update.c: Auto merged mysql-test/r/fulltext2.result: Auto merged
| | * | BUG#16489 - utf8 + fulltext leads to corrupt index file.unknown2006-01-231-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed that UPDATE statement crashes multi-byte charset fulltext index. myisam/ft_update.c: Fixed that UPDATE statement crashes multi-byte charset fulltext index. While updating, always rewrite multi-byte charset fulltext index. mysql-test/r/fulltext2.result: Added a testcase for BUG#16489. mysql-test/t/fulltext2.test: Added a testcase for BUG#16489.