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.
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).
myisam_ftdump options: --help first, then rest in
lexical order.
myisam/myisam_ftdump.c:
myisam_ftdump options: --help first, then rest in
lexical order.
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.
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.
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.
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
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
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.
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)
myisam/mi_delete.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
into mysql.com:/home/stewart/Documents/MySQL/5.0/main
client/mysql.cc:
Auto merged
myisam/mi_delete.c:
Auto merged
mysql-test/r/fulltext2.result:
Auto merged
ndb/src/kernel/blocks/backup/Backup.cpp:
Auto merged
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
Auto merged
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
Auto merged
sql/mysqld.cc:
Auto merged
test for LONGLONG_MIN in decimal.c
myisam/mi_create.c:
lock THR_LOCK_myisam later
mysys/thr_alarm.c:
remove misplaced comment and "safety" if()
server-tools/instance-manager/instance.cc:
add unlock
strings/decimal.c:
correct the test for LONGLONG_MIN. fix debug sprintf
for uca collation isalnum and strnncollsp don't agree on whether
0xC2A0 is a space (strnncollsp is right, isalnum is wrong).
they still don't, the bug was fixed by avoiding strnncollsp
into a193-229-222-105.elisa-laajakaista.fi:/home/my/bk/mysql-4.1
client/mysql.cc:
Auto merged
client/mysqladmin.cc:
Auto merged
client/mysqlbinlog.cc:
Auto merged
client/mysqlcheck.c:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqlimport.c:
Auto merged
client/mysqlshow.c:
Auto merged
isam/isamchk.c:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/myisampack.c:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_parse.cc:
Merged from 4.0.
into serg.mylan:/usr/home/serg/Abk/mysql-5.0
myisam/ft_parser.c:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
mysql-test/t/fulltext.test:
Auto merged
table statistics is not updated, so the next execution of analyze table will
try to update statistics again.
mysql-test/r/analyze.result:
Updated result file for bug #14902 test.
mysql-test/t/analyze.test:
Test for bug #14902.
client/mysql.cc:
Auto merged
include/my_global.h:
Auto merged
include/my_sys.h:
Auto merged
mysys/my_create.c:
Auto merged
mysys/my_open.c:
Auto merged
sql/log.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_repl.cc:
Auto merged
configure.in:
Manual merge - new version (17) takes precedence.
into sanja.is.com.ua:/home/bell/mysql/bk/work-bug6-5.0
myisam/ft_parser.c:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
mysql-test/t/fulltext.test:
Auto merged
myisam/ft_parser.c:
word->len calculation correction.
mysql-test/r/fulltext.result:
Test case for bug#5686.
mysql-test/t/fulltext.test:
Test case for bug#5686.
client/mysqltest.c:
Auto merged
myisam/mi_check.c:
Auto merged
mysql-test/r/update.result:
Auto merged
mysql-test/t/update.test:
Auto merged
sql/item_timefunc.h:
Auto merged
sql/spatial.cc:
Auto merged
sql/sql_select.h:
Auto merged
BitKeeper/deleted/.del-acinclude.m4~f4ab416bac5003:
Auto merged
Removed wrong fix for bug #14009 (use of abs() on null value causes problems with filesort)
Mark that add_time(), time_diff() and str_to_date() can return null values
myisam/mi_check.c:
keyoffset is not a position (no %lx here)
mysql-test/r/func_sapdb.result:
Fixed test after marking that timediff() can return NULL
sql/item_func.cc:
Removed wrong fix for bug #14009 (use of abs() on null value causes problems with filesort)
sql/item_timefunc.cc:
Mark that add_time and str_to_date() can return null values
sql/item_timefunc.h:
Mark that time_diff can return 0
sql/spatial.cc:
Simple cleanups during review of new code
do advance the source pointer over 2 bytes that specify value length.
myisam/mi_key.c:
Fix for BUG#13814: in mi_pack_key(), when processing NULL value for TINYBLOB key segment,
do advance the source pointer over 2 bytes that specify value length (for NULL value the
format is: null_marker 0x01, value length 0x00 0x00, data: 0x00 keyseg->length times).
We need to advance over 2 bytes separately as keyseg->length doesn't include them.
mysql-test/r/myisam.result:
Testcase for BUG#13814
mysql-test/t/myisam.test:
Testcase for BUG#13814
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0-tmp
heap/_check.c:
Auto merged
heap/hp_create.c:
Auto merged
include/config-netware.h:
Auto merged
include/my_base.h:
Auto merged
include/my_handler.h:
Auto merged
include/myisam.h:
Auto merged
innobase/include/Makefile.am:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/mi_delete.c:
Auto merged
myisam/mi_rnext_same.c:
Auto merged
myisam/mi_search.c:
Auto merged
myisam/mi_write.c:
Auto merged
myisam/myisamdef.h:
Auto merged
myisam/sort.c:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/date_formats.result:
Auto merged
mysql-test/r/update.result:
Auto merged
mysql-test/t/date_formats.test:
Auto merged
mysql-test/t/select.test:
Auto merged
mysql-test/t/update.test:
Auto merged
mysys/my_getopt.c:
Auto merged
mysys/my_handler.c:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/records.cc:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/structs.h:
Auto merged
strings/conf_to_src.c:
Auto merged
strings/ctype-win1250ch.c:
Auto merged
Makefile.am:
Merged from 4.1
myisam/myisamchk.c:
Merged from 4.1
mysql-test/mysql-test-run.pl:
Merged from 4.1
mysql-test/r/insert_select.result:
Merged from 4.1
mysql-test/r/myisam.result:
Merged from 4.1
mysql-test/r/select.result:
Merged from 4.1
mysql-test/t/insert_select.test:
Merged from 4.1
mysql-test/t/myisam.test:
Merged from 4.1
netware/mysql_test_run.c:
Merged from 4.1
sql/item.cc:
Merged from 4.1
sql/mysqld.cc:
Merged from 4.1
sql/sql_update.cc:
Merged from 4.1
tests/mysql_client_test.c:
Merged from 4.1
Bug#12166 - Unable to index very large tables
Moved clearing of errors behind the second repair attempt,
but will clear only if no error happened.
No test case. The error can be repeated with little free
space on tmpdir only. I do not know of a way to create this
in a portable way with our test suite.
I did however attach a shell script to the bug report which
can easily be adapted to the situation on the test machine.
myisam/mi_check.c:
Bug#12166 - Unable to index very large tables
Changed comments.
Removed unnecessary use of param->keys_in_use.
sql/ha_myisam.cc:
Bug#12166 - Unable to index very large tables
Moved clearing of errors behind the second repair attempt,
but will clear only if no error happened.
heap/_check.c:
Change arguments to ha_key_cmp
heap/hp_create.c:
Change arguments to ha_key_cmp
include/my_base.h:
Remove SEARCH_RETURN_B_POS and instead always send an array to ha_key_cmp() as last argument
myisam/mi_check.c:
Change arguments to ha_key_cmp
myisam/mi_rnext_same.c:
Change arguments to ha_key_cmp
myisam/mi_search.c:
Change arguments to ha_key_cmp
myisam/mi_write.c:
Change arguments to ha_key_cmp
myisammrg/myrg_queue.c:
Change arguments to ha_key_cmp
mysys/my_handler.c:
Remove SEARCH_RETURN_B_POS and instead always send an array to ha_key_cmp() as last argument
(This removes an if in a loop at the expensive of an int on the stack)
sql/records.cc:
Simplify new rr_index() code
Create common error handling function for rr_() functions.
Remove loop from rr_index() as handler::index_next() can never return HA_ERR_RECORD_DELETED
sql/sql_load.cc:
Simplify
sql/sql_update.cc:
Simplify code
Fixed bug when one is updating an index column that could be used with ORDER BY
sql/structs.h:
Removed not needed structure element
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0
configure.in:
Auto merged
include/config-win.h:
Auto merged
include/m_string.h:
Auto merged
include/my_pthread.h:
Auto merged
myisam/mi_search.c:
Auto merged
mysql-test/r/cast.result:
Auto merged
mysql-test/t/cast.test:
Auto merged
mysql-test/t/select.test:
Auto merged
mysys/my_pthread.c:
Auto merged
mysys/thr_alarm.c:
Auto merged
netware/pack_isam.def:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
strings/ctype-big5.c:
Auto merged
strings/ctype-tis620.c:
Auto merged
strings/xml.c:
Auto merged
vio/vio.c:
Auto merged
vio/viosocket.c:
Auto merged
mysql-test/r/select.result:
Merged from 4.1.
netware/BUILD/mwenv:
Merged from 4.1.
scripts/make_binary_distribution.sh:
Merged from 4.1.
sql/mysqld.cc:
Merged from 4.1.
sql/sql_show.cc:
Merged from 4.1.
strings/my_strtoll10.c:
Merged from 4.1.
1. it's wrong to use memcpy() for overlapped areas;
2. we use it only once.
During merge to 4.1 will remove a memcpy_overlap() call
from strings/ctype-tis620.c as well in order to fix
bug #10836: ctype_tis620 test failure with ICC-compiled binaries on IA64.
myisam/mi_search.c:
use memmove() instead, as memcpy_overlap() is removed.