summaryrefslogtreecommitdiff
path: root/myisam
Commit message (Collapse)AuthorAgeFilesLines
* Merge synthia.local:/home/mydev/mysql-4.1-amainistruewing@synthia.local2007-08-131-30/+51
|\ | | | | | | into synthia.local:/home/mydev/mysql-4.1-axmrg
| * Bug#29838 - myisam corruption using concurrent select ... and updateistruewing@chilla.local2007-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.
* | myisamchk.c:jperkin@production.mysql.com2007-08-021-2/+2
|/ | | | Fix typo in usage.
* Merge mysql.com:/home/svoj/devel/bk/mysql-4.1svoj@mysql.com/june.mysql.com2007-05-231-6/+7
|\ | | | | | | into mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines
| * BUG#25712 - insert delayed and check table run together report crashedsvoj@mysql.com/april.(none)2007-05-161-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | tables In case system doesn't have native pread/pwrite calls (e.g. Windows) and there is CHECK TABLE runs concurrently with another statement that reads from a table, the table may be reported as crashed. This is fixed by locking file descriptor when my_seek is executed on MyISAM index file and emulated pread/pwrite may be executed concurrently. Affects MyISAM tables on platforms that do not have native pread/pwrite calls (e.g. Windows). No deterministic test case for this bug.
* | Bug #27976: Misleading error message, 'Sort buffer to small'cmiller@zippy.cornsilk.net2007-05-041-4/+4
|/ | | | | | | The message is gramatically wrong, and factually wrong. Change it to refer to the myisam_sort_buffer_size variable and change "to" to "too".
* Fixed a warning on win64.svoj@mysql.com/june.mysql.com2007-04-191-1/+2
|
* BUG#24342 - Incorrect results with query over MERGE tablesvoj@mysql.com/april.(none)2007-04-112-1/+3
| | | | | | | | | | | MERGE engine may return incorrect values when several representations of equal keys are present in the index. For example "groß" and "gross" or "gross" and "gross " (trailing space), which are considered equal, but have different lengths. The problem was that key length was not recalculated after key lookup. Only MERGE engine is affected.
* Merge chilla.local:/home/mydev/mysql-4.1-bug26231istruewing@chilla.local2007-03-282-8/+70
|\ | | | | | | into chilla.local:/home/mydev/mysql-4.1-axmrg
| * Bug#26231 - select count(*) on myisam table returns wrong valueistruewing@chilla.local2007-03-162-8/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | when index is used When the table contained TEXT columns with empty contents ('', zero length, but not NULL) _and_ strings starting with control characters like tabulator or newline, the empty values were not found in a "records in range" estimate. Hence count(*) missed these records. The reason was a different set of search flags used for key insert and key range estimation. I decided to fix the set of flags used in range estimation. Otherwise millions of databases around the world would require a repair after an upgrade. The consequence is that the manual must be fixed, which claims that TEXT columns are compared with "end space padding". This is true for CHAR/VARCHAR but wrong for TEXT. See also bug 21335.
* | BUG#26881 - Large MERGE tables report incorrect specification when nosvoj@mysql.com/april.(none)2007-03-131-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | differences in tables Certain merge tables were wrongly reported as having incorrect definition: - Some fields that are 1 byte long (e.g. TINYINT, CHAR(1)), might be internally casted (in certain cases) to a different type on a storage engine layer. (affects 4.1 and up) - If tables in a merge (and a MERGE table itself) had short VARCHAR column (less than 4 bytes) and at least one (but not all) tables were ALTER'ed (even to an identical table: ALTER TABLE xxx ENGINE=yyy), table definitions went ouf of sync. (affects 4.1 only) This is fixed by relaxing a check for underlying conformance and setting field type to FIELD_TYPE_STRING in case varchar is shorter than 4 when a table is created.
* | Bug#25673 - spatial index corruption, error 126 incorrect key file for tableistruewing@chilla.local2007-03-091-1/+1
| | | | | | | | Fixed a compiler warning, deteced by pushbuild only.
* | Bug#25673 - spatial index corruption, error 126 incorrect key file for tableistruewing@chilla.local2007-03-081-3/+3
| | | | | | | | | | After backport fix. Added forgotten DBUG_RETURNs, which was detected in 5.1 only.
* | Bug#25673 - spatial index corruption, error 126istruewing@chilla.local2007-03-083-32/+92
|/ | | | | | | | | | | | | | | | | | | | | | | | incorrect key file for table In certain cases it could happen that deleting a row could corrupt an RTREE index. According to Guttman's algorithm, page underflow is handled by storing the page in a list for later re-insertion. The keys from the stored pages have to be inserted into the remaining pages of the same level of the tree. Hence the level number is stored in the re-insertion list together with the page. In the MySQL RTree implementation the level counts from zero at the root page, increasing numbers for levels down the tree. If during re-insertion of the keys the tree height grows, all level numbers become invalid. The remaining keys will be inserted at the wrong level. The fix is to increment the level numbers stored in the reinsert list after a split of the root block during reinsertion.
* Merge bk-internal.mysql.com:/home/bk/mysql-4.1istruewing@chilla.local2007-01-291-2/+1
|\ | | | | | | into chilla.local:/home/mydev/mysql-4.1-axmrg
| * Bug#25505 Myisam library compiler error on Windowsmsvensson@pilot.mysql.com2007-01-171-2/+1
| |
* | Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-4.1-enginessvoj@mysql.com/june.mysql.com2007-01-241-0/+7
|\ \ | | | | | | | | | into mysql.com:/home/svoj/devel/mysql/BUG24401/mysql-4.1-engines
| * | BUG#24401 - MySQL server crashes if you try to retrieve data fromsvoj@mysql.com/june.mysql.com2007-01-221-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | corrupted table Accessing a table with corrupted column definition results in server crash. This is fixed by refusing to open such tables. Affects MyISAM only. No test case, since it requires crashed table.
* | | Merge chilla.local:/home/mydev/mysql-4.1--teamistruewing@chilla.local2007-01-171-1/+7
|\ \ \ | |/ / | | | | | | into chilla.local:/home/mydev/mysql-4.1-bug24607
| * | BUG#24855 - Crash mysqld 4.1.21 with corrupted tablessvoj@mysql.com/june.mysql.com2007-01-161-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | Accessing fixed record format table with crashed key definition results in server/myisamchk segmentation fault. This is fixed by refusing to open such tables. Affects MyISAM only. No test case, since it requires crashed table.
* | | Bug#24607 - MyISAM pointer size determined incorrectlyistruewing@chilla.local2007-01-051-6/+7
|/ / | | | | | | | | | | | | | | The function mi_get_pointer_length() computed too small pointer size for very large tables. Inserted missing 'else' between the branches for very large tables.
* | Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-4.1-enginessvoj@mysql.com/april.(none)2006-12-303-4/+5
|\ \ | |/ |/| | | into mysql.com:/home/svoj/devel/mysql/BUG23196/mysql-4.1-engines
| * BUG#23196 - MySQL server does not exit / shutdown whensvoj@mysql.com/april.(none)2006-12-013-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | storage engine returns errno 12 If there is not enough memory to store or update blob record (while allocating record buffer), myisam marks table as crashed. With this fix myisam attempts to roll an index back and return an error, not marking a table as crashed. Affects myisam tables with blobs only. No test case for this fix.
* | Bug#25213 - Compiler warnings in MyISAM codeistruewing@chilla.local2006-12-204-8/+17
| | | | | | | | | | | | | | | | | | | | Compiler warnings due to non-matching conversion specifications in format strings in DBUG_PRINT calls, due to non-used parameters (in non-debug mode), and due to seemingly uninitialized variables. Initialized variables, declared parameters unused, and casted DBUG_PRINT arguments to get rid of warnings.
* | Bug#25208 - Warnings in mi_packrec.cistruewing@chilla.local2006-12-201-6/+7
| | | | | | | | | | | | | | Compiler warnings due to non-matching conversion specifications in format strings in DBUG_PRINT calls. Fixed DBUG_PRINT format specifiactions.
* | Merge bk-internal.mysql.com:/home/bk/mysql-4.1istruewing@chilla.local2006-12-083-57/+406
|\ \ | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-axmrg
| * \ Merge bk-internal.mysql.com:/home/bk/mysql-4.1istruewing@chilla.local2006-12-013-57/+406
| |\ \ | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-axmrg
| | * \ Merge bk-internal.mysql.com:/home/bk/mysql-4.1-enginesistruewing@chilla.local2006-12-011-37/+328
| | |\ \ | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-axmrg
| | | * \ Merge bk-internal.mysql.com:/home/bk/mysql-4.1-enginesistruewing@chilla.local2006-11-291-37/+328
| | | |\ \ | | | | |/ | | | |/| | | | | | into chilla.local:/home/mydev/mysql-4.1-bug23139
| | | | * Bug#23139 - myisamchk and mysqld crash when trying to access tableistruewing@chilla.local2006-11-281-37/+328
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A corrupted compressed table could crash the server and myisamchk. The data file of an uncompressed table contains just the records. There is no header in the data file. However the data file of a compressed table has a header. The header describes how the table was compressed. This information is necessary to extract the records from the compressed data file. Part of the compressed data file header are the [de]code tables. They are numeric representations of the Huffman trees used for coding and decoding. A Huffman tree is a binary tree. Every node has two childs. A child can be a leaf or a branch. Leaves contain the decoded value. Branches point to another tree node. Since the [de]code table is represented as an array of childs, the branches need to point at a child within the same array. The corruption of the compressed data file from the bug report was a couple of branches that pointed outside their array. This condition had not been correctly checked. I added some checks for the pointers in the decode tables. This type of corruption will no longer crash the server or myisamchk. No test case. A corrupted compressed table is required.
| | * | | Merge bk-internal.mysql.com:/home/bk/mysql-4.1istruewing@chilla.local2006-11-132-20/+78
| | |\ \ \ | | | |/ / | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-axmrg
| | | * | Merge bk-internal.mysql.com:/home/bk/mysql-4.1istruewing@chilla.local2006-10-272-20/+78
| | | |\ \ | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-merge
| | | | * \ Merge bk-internal.mysql.com:/home/bk/mysql-4.1-enginesistruewing@chilla.local2006-10-261-17/+73
| | | | |\ \ | | | | | | | | | | | | | | | | | | | | | into chilla.local:/home/mydev/mysql-4.1-bug22119
| | | | | * | Bug#22119 - Changing MI_KEY_BLOCK_LENGTH makes a wrong myisamchkistruewing@chilla.local2006-10-251-17/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When compiling with a default key block size greater than the smallest key block size used in a table, checking that table failed with bogus errors. The table was marked corrupt. This affected myisamchk and the server. The problem was that the default key block size was used at some places where sizes less or equal to the block size of the index in check was required. We do now use the key block size of the particular index when checking. A test case is available for later versions only.
| | | | * | | BUG#22053 - REPAIR table can crash server for somesvoj@mysql.com/april.(none)2006-10-251-3/+5
| | | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | really damaged MyISAM tables When unpacking a blob column from broken row server crash could happen. This could rather happen when trying to repair a table using either REPAIR TABLE or myisamchk, though it also could happend when trying to access broken row using other SQL statements like SELECT if table is not marked as crashed. Fixed ulong overflow when trying to extract blob from broken row. Affects MyISAM only.
* | | | | | Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-4.1-maintandrey@example.com2006-12-011-2/+19
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | into example.com:/work/bug24395-v2/my41
| * | | | | Fix for bug#24395:andrey@example.com2006-11-281-2/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ALTER TABLE DISABLE KEYS doesn't work when modifying the table ENABLE|DISABLE KEYS combined with another ALTER TABLE option, different than RENAME TO did nothing. Also, if the table had disabled keys and was ALTER-ed then the end table was with enabled keys. Fixed by checking whether the table had disabled keys and enabling them in the copied table.
* | | | | | Merge mysql.com:/home/bkroot/mysql-4.1-rpllars@mysql.com/black.(none)2006-11-131-1/+3
|\ \ \ \ \ \ | | |/ / / / | |/| | | | | | | | | | into mysql.com:/home/bk/MERGE/mysql-4.1-merge
| * | | | | Merge trift2.:/MySQL/M41/clone-4.1joerg@trift2.2006-11-101-1/+3
| |\ \ \ \ \ | | |/ / / / | |/| | | | | | | | | | into trift2.:/MySQL/M41/push-4.1
| | * | | | Fix compile failure.iggy@rolltop.ignatz42.dyndns.org2006-11-021-4/+2
| | | | | |
| | * | | | sort.c:kent/mysqldev@suse9-x86.mysql.com2006-11-031-2/+6
| | |/ / / | | | | | | | | | | | | | | | Create block around DBUG_ENTER late in function
* | | | | Merge mysql.com:/users/lthalmann/bkroot/mysql-4.1-rpllars/lthalmann@mysql.com/dl145h.mysql.com2006-11-072-7/+10
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | into mysql.com:/users/lthalmann/bk/MERGE/mysql-4.1-merge
| * | | | Merge mysql.com:/users/lthalmann/bkroot/mysql-4.1-rpllars/lthalmann@mysql.com/dl145h.mysql.com2006-10-252-7/+10
| |\ \ \ \ | | |/ / / | |/| | | | | | | | into mysql.com:/users/lthalmann/bk/MERGE/mysql-4.1-merge
| | * | | Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-4.1-rplbar@mysql.com/bar.intranet.mysql.r18.ru2006-10-112-7/+10
| | |\ \ \ | | | | | | | | | | | | | | | | | | into mysql.com:/usr/home/bar/mysql-4.1-rpl.b22052
| | | * | | Bug#22052 Trailing spaces are not removed from UNICODE fields in an indexbar@mysql.com/bar.intranet.mysql.r18.ru2006-10-032-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix: using charset-aware functions cs->cset->lengthsp() and cs->cset->fill() instead of single byte code which is not UCS2 compatible.
* | | | | | Merge bk-internal.mysql.com:/home/bk/mysql-4.1cmiller@zippy.cornsilk.net2006-11-021-2/+2
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-4.1-maint
| * | | | | Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-4.1-maintandrey@example.com2006-10-111-2/+2
| |\ \ \ \ \ | | |/ / / / | |/| | | | | | | | | | into example.com:/work/bug23074/my41-bug23074
| | * | | | Fix a typo regarding checking whether HA_VAR_LENGTH_KEY isandrey@example.com2006-10-111-2/+2
| | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set. This has always worked because when flag is !=0 then HA_VAR_LENGTH_KEY is always set. Therefore, a test case cannot reveal a faulty behavior. Fix for bug#23074: typo in myisam/sort.c
* | | | | Merge bk-internal:/home/bk/mysql-4.1gkodinov@dl145s.mysql.com2006-10-201-0/+15
|\ \ \ \ \ | |_|_|/ / |/| | | | | | | | | into dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt
| * | | | Merge dl145s.mysql.com:/data/bk/team_tree_merge/mysql-4.1gkodinov@dl145s.mysql.com2006-10-191-0/+15
| |\ \ \ \ | | |/ / / | |/| | | | | | | | into dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt