| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| | |
into synthia.local:/home/mydev/mysql-4.1-axmrg
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
| |
Fix typo in usage.
|
|\
| |
| |
| | |
into mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
|
| |
The message is gramatically wrong, and factually wrong.
Change it to refer to the myisam_sort_buffer_size variable and change
"to" to "too".
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| | |
into chilla.local:/home/mydev/mysql-4.1-axmrg
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| | |
Fixed a compiler warning, deteced by pushbuild only.
|
| |
| |
| |
| |
| | |
After backport fix.
Added forgotten DBUG_RETURNs, which was detected in 5.1 only.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| | |
into chilla.local:/home/mydev/mysql-4.1-axmrg
|
| | |
|
|\ \
| | |
| | |
| | | |
into mysql.com:/home/svoj/devel/mysql/BUG24401/mysql-4.1-engines
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| |/ /
| | |
| | | |
into chilla.local:/home/mydev/mysql-4.1-bug24607
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| |/
|/|
| | |
into mysql.com:/home/svoj/devel/mysql/BUG23196/mysql-4.1-engines
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| | |
Compiler warnings due to non-matching conversion
specifications in format strings in DBUG_PRINT calls.
Fixed DBUG_PRINT format specifiactions.
|
|\ \
| | |
| | |
| | | |
into chilla.local:/home/mydev/mysql-4.1-axmrg
|
| |\ \
| | | |
| | | |
| | | | |
into chilla.local:/home/mydev/mysql-4.1-axmrg
|
| | |\ \
| | | | |
| | | | |
| | | | | |
into chilla.local:/home/mydev/mysql-4.1-axmrg
|
| | | |\ \
| | | | |/
| | | |/|
| | | | | |
into chilla.local:/home/mydev/mysql-4.1-bug23139
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | |\ \ \
| | | |/ /
| | | | |
| | | | | |
into chilla.local:/home/mydev/mysql-4.1-axmrg
|
| | | |\ \
| | | | | |
| | | | | |
| | | | | | |
into chilla.local:/home/mydev/mysql-4.1-merge
|
| | | | |\ \
| | | | | | |
| | | | | | |
| | | | | | | |
into chilla.local:/home/mydev/mysql-4.1-bug22119
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
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.
|
| | | | |/ /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | |
| | | | | | |
into example.com:/work/bug24395-v2/my41
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
|\ \ \ \ \ \
| | |/ / / /
| |/| | | |
| | | | | | |
into mysql.com:/home/bk/MERGE/mysql-4.1-merge
|
| |\ \ \ \ \
| | |/ / / /
| |/| | | |
| | | | | | |
into trift2.:/MySQL/M41/push-4.1
|
| | | | | | |
|
| | |/ / /
| | | | |
| | | | |
| | | | | |
Create block around DBUG_ENTER late in function
|
|\ \ \ \ \
| |/ / / /
|/| | | |
| | | | | |
into mysql.com:/users/lthalmann/bk/MERGE/mysql-4.1-merge
|
| |\ \ \ \
| | |/ / /
| |/| | |
| | | | | |
into mysql.com:/users/lthalmann/bk/MERGE/mysql-4.1-merge
|
| | |\ \ \
| | | | | |
| | | | | |
| | | | | | |
into mysql.com:/usr/home/bar/mysql-4.1-rpl.b22052
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Fix: using charset-aware functions cs->cset->lengthsp() and cs->cset->fill()
instead of single byte code which is not UCS2 compatible.
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | |
| | | | | | |
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-4.1-maint
|
| |\ \ \ \ \
| | |/ / / /
| |/| | | |
| | | | | | |
into example.com:/work/bug23074/my41-bug23074
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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
|
|\ \ \ \ \
| |_|_|/ /
|/| | | |
| | | | | |
into dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt
|
| |\ \ \ \
| | |/ / /
| |/| | |
| | | | | |
into dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt
|