Commit graph

1093 commits

Author SHA1 Message Date
georg@lmy002.wdf.sap.corp
9d6471c33e make dist changes for Cmake build 2006-09-01 10:32:12 +02:00
georg@lmy002.wdf.sap.corp
27636d9303 Additional files for cmake support 2006-08-31 19:52:42 +02:00
acurtis/antony@xiphis.org/ltantony.xiphis.org
e2d4aa2ca4 Merge xiphis.org:/home/antony/work2/mysql-5.0-engines
into  xiphis.org:/home/antony/work2/mysql-5.0-merge
2006-08-14 21:27:36 -07:00
svoj@may.pils.ru
91e94d781f Merge may.pils.ru:/home/svoj/devel/mysql/BUG18874/mysql-4.1
into  may.pils.ru:/home/svoj/devel/mysql/BUG18874/mysql-5.0
2006-08-14 18:08:33 +05:00
svoj@may.pils.ru
d4bdba176f BUG#18874 - Setting myisam_repair_threads > 1, index cardinality always 1
Fixed by moving update_key_parts() down to be after write_index().
2006-08-14 17:05:02 +05:00
svoj@may.pils.ru
5f3d231f57 Merge may.pils.ru:/home/svoj/devel/mysql/BUG20060/mysql-4.1
into  may.pils.ru:/home/svoj/devel/mysql/BUG20060/mysql-5.0
2006-08-09 14:33:45 +05:00
svoj@may.pils.ru
81b70f9798 BUG#20060 - mysqld option "--flush " doesn't work for update statement
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.
2006-08-09 14:28:39 +05:00
ingo/mydev@chilla.local
0dab0516af Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  chilla.local:/home/mydev/mysql-5.0-bug20719
2006-07-30 12:38:58 +02:00
ingo/mydev@chilla.local
1962eaaf62 Bug#20719 - Reading dynamic records with write buffer could fail
After merge fix
2006-07-30 06:19:30 +02:00
ingo/mydev@chilla.local
9c006d44a0 Merge chilla.local:/home/mydev/mysql-4.1-bug20719
into  chilla.local:/home/mydev/mysql-5.0-bug20719
2006-07-29 21:59:36 +02:00
ingo/mydev@chilla.local
eddb73b365 Bug#20719 - Reading dynamic records with write buffer could fail
After merge fix
2006-07-29 21:58:50 +02:00
ingo/mydev@chilla.local
16abae8932 Merge chilla.local:/home/mydev/mysql-4.1-bug20719
into  chilla.local:/home/mydev/mysql-5.0-bug20719
2006-07-26 20:48:20 +02:00
ingo/mydev@chilla.local
df78ef6357 Merge chilla.local:/home/mydev/mysql-4.0-bug20719
into  chilla.local:/home/mydev/mysql-4.1-bug20719
2006-07-26 19:05:39 +02:00
ingo/mydev@chilla.local
d781552a18 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.

Added a read optimization to _mi_read_dynamic_record().

No test case. This was a hypothetical but existing problem.
2006-07-21 12:22:41 +02:00
kostja@bodhi.local
f1d949a856 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41
2006-07-08 21:45:02 +04:00
ingo/mydev@chilla.local
987abbc253 Merge chilla.local:/home/mydev/mysql-4.1-bug19835
into  chilla.local:/home/mydev/mysql-4.1-amerge
2006-07-08 19:27:16 +02:00
ingo/mydev@chilla.local
d341ca941f Merge chilla.local:/home/mydev/mysql-4.1-bug17877
into  chilla.local:/home/mydev/mysql-4.1-amerge
2006-07-08 19:26:18 +02:00
ingo/mydev@chilla.local
065cdb030a Merge chilla.local:/home/mydev/mysql-4.1-bug14400
into  chilla.local:/home/mydev/mysql-4.1-amerge
2006-07-08 19:25:01 +02:00
ingo/mydev@chilla.local
eaa9350c90 Merge chilla.local:/home/mydev/mysql-4.1-bug11824
into  chilla.local:/home/mydev/mysql-4.1-amerge
2006-07-08 19:23:55 +02:00
kostja@bodhi.local
a2c0cdd75b Merge bodhi.local:/opt/local/work/tmp_merge
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41
2006-07-08 02:30:07 +04:00
acurtis@xiphis.org
86132d5d8f Bug#8706
"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.
2006-07-05 17:18:59 -07:00
ingo@mysql.com
4c00805951 Merge mysql.com:/home/mydev/mysql-4.1-bug19835
into  mysql.com:/home/mydev/mysql-5.0-ateam
2006-07-05 11:24:50 +02:00
ingo@mysql.com
5025bf32b2 Merge mysql.com:/home/mydev/mysql-4.1-bug17877
into  mysql.com:/home/mydev/mysql-5.0-ateam
2006-07-05 11:23:21 +02:00
ingo@mysql.com
a21071d912 Merge mysql.com:/home/mydev/mysql-4.1-bug14400
into  mysql.com:/home/mydev/mysql-5.0-ateam
2006-07-05 11:20:10 +02:00
ingo@mysql.com
20a152d5c3 Merge mysql.com:/home/mydev/mysql-4.1-bug11824
into  mysql.com:/home/mydev/mysql-5.0-ateam
2006-07-05 11:11:40 +02:00
ingo@mysql.com
40c103478d Merge mysql.com:/home/mydev/mysql-4.0-bug14400
into  mysql.com:/home/mydev/mysql-4.1-bug14400
2006-07-04 19:10:13 +02:00
ingo@mysql.com
99ad23ec7c Bug#14400 - Query joins wrong rows from table which is subject of "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.
2006-06-28 18:55:30 +02:00
ingo@mysql.com
9dd5bc3843 Bug#19835 - Binary copy of corrupted tables crash the server when issuing a 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.
2006-06-28 16:07:39 +02:00
ingo@mysql.com
d8499f2d8f Bug#17877 - Corrupted spatial index
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.
2006-06-28 14:27:37 +02:00
ingo@mysql.com
e67bdaf604 Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent 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.
2006-06-27 11:26:41 +02:00
ingo@mysql.com
6345502b53 Bug#19604 - CHECK TABLE with concurrent INSERT can reset auto_increment
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.
2006-05-31 10:22:44 +02:00
ingo@mysql.com
42e35c6be3 Merge mysql.com:/home/mydev/mysql-5.0
into  mysql.com:/home/mydev/mysql-5.0-bug10405
2006-05-06 13:35:48 +02:00
svoj@april.(none)
23d304b312 Merge april.(none):/home/svoj/devel/mysql/BUG18160/mysql-5.0
into  april.(none):/home/svoj/devel/mysql/BUG17810/mysql-5.0
2006-05-03 16:36:00 +05:00
ingo@mysql.com
5135a28d38 Merge mysql.com:/home/mydev/mysql-4.1-bug10405
into  mysql.com:/home/mydev/mysql-5.0-bug10405
2006-05-02 11:01:38 +02:00
ingo@mysql.com
3c317fef53 Merge mysql.com:/home/mydev/mysql-4.0-bug10405
into  mysql.com:/home/mydev/mysql-4.1-bug10405
2006-04-29 19:38:41 +02:00
svoj@april.(none)
64922fe6a7 BUG#17810 - REPAIR says ok, CHECK says broken (repeatable)
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.
2006-04-27 12:51:33 +05:00
paul@polar.kitebird.com
5907ce40e8 Merge polar.kitebird.com:/src/extern/MySQL/bk/mysql-4.1
into  polar.kitebird.com:/src/extern/MySQL/bk/mysql-5.0
2006-04-23 19:49:05 -05:00
paul@polar.kitebird.com
3cd7e135d4 myisam_ftdump.c:
myisam_ftdump options: --help first, then rest in
  lexical order.
2006-04-23 19:26:56 -05:00
svoj@april.(none)
06ce215f10 BUG#18160 - Memory-/HEAP Table endless growing indexes
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.
2006-04-19 15:13:50 +05:00
svoj@april.(none)
8a7adb196d Merge april.(none):/home/svoj/devel/mysql/BUG17917/mysql-4.1
into  april.(none):/home/svoj/devel/mysql/BUG17917/mysql-5.0
2006-04-15 16:08:03 +05:00
svoj@april.(none)
7412db5e56 BUG#17917 - SELECT from compressed MyISAM table crashes MySQL server
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.
2006-04-13 14:37:03 +05:00
ingo@mysql.com
d1e25f9770 Bug#10405 - myisamchk damages auto_increment columns when changing character set
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.
2006-04-10 13:38:56 +02:00
evgen@sunlight.local
eb075f2255 Manual merge 2006-03-30 17:14:55 +04:00
monty@mysql.com
84e7c9633a Fix error in prefix compression of keys in MyISAM when key length changed 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)
2006-03-30 01:50:52 +03:00
ingo@mysql.com
1173185891 Merge mysql.com:/home/mydev/mysql-4.1-bug14980
into  mysql.com:/home/mydev/mysql-5.0-bug14980
2006-03-10 15:06:04 +01:00
ingo@mysql.com
d0c6eb885d Bug#14980 - COUNT(*) incorrect on MyISAM table with certain INDEX
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).
2006-03-10 15:03:04 +01:00
svoj@april.(none)
18681229a0 Merge april.(none):/home/svoj/devel/mysql/BUG16489/mysql-4.1
into  april.(none):/home/svoj/devel/mysql/BUG16489/mysql-5.0
2006-01-23 20:07:26 +04:00
svoj@april.(none)
4dc4502ab3 BUG#16489 - utf8 + fulltext leads to corrupt index file.
Fixed that UPDATE statement crashes multi-byte charset fulltext index.
2006-01-23 17:15:33 +04:00
monty@mysql.com
fd4a040325 Fixes during review of new pushed code:
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"
2006-01-06 21:42:17 +02:00
serg@serg.mylan
30c09d6dc0 merged 2006-01-03 18:12:03 +01:00