Commit graph

14253 commits

Author SHA1 Message Date
unknown
7c018c39bb Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/psergey/mysql-5.0-bug15827-r2
2006-04-26 00:30:54 +04:00
unknown
15e00f1f3d BUG#15872: Don't run the range analyzer on "t1.keypart NOT IN (const1, ..., )", as that consumes
too much memory. Instead, either create the equvalent SEL_TREE manually, or create only two ranges that
strictly include the area to scan
(Note: just to re-iterate: increasing NOT_IN_IGNORE_THRESHOLD will make optimization run slower for big 
IN-lists, but the server will not run out of memory. O(N^2) memory use has been eliminated)


mysql-test/r/func_in.result:
  Testcase for BUG#15872
mysql-test/t/func_in.test:
  Testcase for BUG#15872
sql/item.cc:
  BUG#15872: Added Item_decimal::set_decimal_value()
sql/item.h:
  UG#15872: Added Item_decimal::set_decimal_value()
sql/item_cmpfunc.h:
  BUG#15872: Added in_vector::create_item(), in_vector::value_to_item() and their implementations in concrete
  classes.
sql/opt_range.cc:
  BUG#15872: Don't run the range analyzer on "t1.keypart NOT IN (const1, ..., )", as that 
  consumes too much memory. Instead, either 
   A) create the equivalent SEL_TREE manually, making use of the fact that item_not_in->array
      has an ordered IN-list, or
   B) create only two ranges: (-inf|NULL) < X < min_value_from_in_list,  max_value_from_in_list < X
  (Choose #B if the IN-list has > 10K elements)
2006-04-25 23:33:31 +04:00
unknown
8f38fc670b Merge epotemkin@lsmy3:/data/users/bk/mysql-5.0-opt-bugs
into moonbone.local:/work/18739-bug-5.0-mysql
2006-04-25 17:45:31 +04:00
unknown
d00a6cf46c Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/usr/local/home/marty/MySQL/mysql-5.0
2006-04-25 12:46:40 +02:00
unknown
e42428d592 Fixed memleak detected by valgrind 2006-04-25 12:40:31 +02:00
unknown
09ad4efa5d Fix for bug #7643: ALTER TABLE fails for CSV, EXAMPLE, ARCHIVE engines
sql/sql_table.cc:
  Fix for bug #7643: ALTER TABLE fails for CSV, EXAMPLE, ARCHIVE engines
    - issue an ER_NOT_SUPPORTED_YET if an engine doesn't support ALTER TABLE.
2006-04-25 15:27:28 +05:00
unknown
3ca1852cba Fix for bug #18501: Server crashes with monthname().
mysql-test/r/func_time.result:
  Fix for bug #18501: Server crashes with monthname().
    - test case
mysql-test/t/func_time.test:
  Fix for bug #18501: Server crashes with monthname().
    - test case
sql/item_timefunc.cc:
  Fix for bug #18501: Server crashes with monthname().
    - check null_value as well.
2006-04-25 14:34:19 +05:00
unknown
f28b9a3423 A fix and a test case for Bug#19308 "REPAIR/OPTIMIZE/ANALYZE
supported in SP but not in PS": just enable them in prepared
statements, the supporting functionality was implemented when
they were enabled in stored procedures.


mysql-test/r/ps.result:
  Bug#19308: test results fixed.
mysql-test/r/ps_1general.result:
  Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
  allowed in prepared statements.
mysql-test/r/sp-dynamic.result:
  Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
  allowed in prepared statements.
mysql-test/t/ps.test:
  Add a test case for Bug#19308 "REPAIR/OPTIMIZE/ANALYZE supported 
  in SP but not in PS"
mysql-test/t/ps_1general.test:
  Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
  allowed in prepared statements.
sql/sql_prepare.cc:
  Enable ANALYZE, OPTIMIZE, REPAIR in prepared statements.
2006-04-25 04:27:23 +04:00
unknown
413256c814 Merge mysql.com:/usr/local/mysql/mysql-4.1
into  mysql.com:/usr/local/mysql/mysql-5.0-mtr-fix


mysql-test/mysql-test-run.pl:
  Auto merged
mysql-test/t/case.test:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
mysql-test/r/case.result:
  SCCS merged
2006-04-24 23:51:47 +02:00
unknown
ef82f93dcc Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg11081
2006-04-24 19:00:37 +04:00
unknown
dfbf652165 Fix for bug#11081 "Using a CONVERT_TZ function in a stored function or
trigger fails".

In cases when CONVERT_TZ() function was used in trigger or stored function
(or in stored procedure which was called from trigger or stored function)
error about non existing '.' table was reported.

Statements that use CONVERT_TZ() function should have time zone related
tables in their table list. tz_init_table_list() function which is used
to produce part of table list containing those tables didn't set
TABLE_LIST::db_length/table_name_length members properly. As result time
zone tables needed for CONVERT_TZ() function were incorrectly handled by
prelocking algorithm and "Table '.' doesn't exist' error was emitted.
This fix changes tz_init_table_list() in such way that it properly inits
TABLE_LIST::table_name_length/db_length members and thus produces table list
which can be handled by prelocking algorithm correctly.


mysql-test/r/timezone2.result:
  Added test for bug #11081 "Using a CONVERT_TZ function in a stored function
  or trigger fails".
mysql-test/t/timezone2.test:
  Added test for bug #11081 "Using a CONVERT_TZ function in a stored function
  or trigger fails".
sql/tztime.cc:
  Now tz_init_table_list() inits table_name_length and db_length members in
  TABLE_LIST objects, so table lists produced with its help can be handled 
  by prelocking algorithm properly.
  
  Also two clean-ups are included:
  - Now we use MY_TZ_TABLES_COUNT instead of magical number 4 in places where
    it is appropriate.
  - TZ_NAMES_ENTRY structure was converted to Tz_names_entry class in order 
    to emphasize its non-POD nature.
sql/tztime.h:
  Added MY_TZ_TABLES_COUNT constant to be used as number of time zone related
  tables which are needed for dynamical loading of time zone descriptions.
2006-04-24 18:57:00 +04:00
unknown
9fc25141a2 Bug#16501: IS_USED_LOCK does not appear to work
Update User_level_lock::thread_id on acquiring an existing lock,
and reset it on lock release.


mysql-test/r/func_misc.result:
  Add result for bug#16501.
mysql-test/t/func_misc.test:
  Add test case for bug#16501.
sql/item_func.cc:
  Update User_level_lock::thread_id on acquiring an existing lock,
  and reset it on lock release (for safety).
2006-04-24 18:06:43 +04:00
unknown
ccee4036c2 Manually merged
sql/item.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2006-04-24 17:52:15 +04:00
unknown
9a7a78f700 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  production.mysql.com:/usersnfs/rkalimullin/4.1.b17896
2006-04-24 08:01:10 +02:00
unknown
d1e1f4f77c Merge mysql.com:/net/nb/home/elkin/MySQL/FIXES/5.0-bug17263-temp_drop
into  mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/5.0


mysql-test/r/rpl_temporary.result:
  Auto merged
mysql-test/t/rpl_temporary.test:
  Auto merged
sql/sql_base.cc:
  Auto merged
2006-04-23 20:06:30 +03:00
unknown
65cce20c4b Bug#17263 temporary tables and replication
The fix refines the algorithm of generating DROPs for binlog. 
Temp tables with common pseudo_thread_id are clustered into one query. 
Consequently one replication event per pseudo_thread_id is generated.


mysql-test/r/rpl_temporary.result:
  results
mysql-test/t/rpl_temporary.test:
  Creating temp tables associated with a set of pseudo_thread_id values within a connection.
  The aim is to see that slave digest master's binlog consisting of DROP temprorary tables.
sql/sql_base.cc:
  close_temporary_tables is rewritten to generate sequence of DROP temprorary tables with common preudo_thread_id stored in temp table definition.
2006-04-23 19:59:43 +03:00
unknown
4189bfa421 Bug#17263: incorrect DROP query in temporary tables replication
accounting non-ai32 in tmpkeyval. This changeset is supposed to be specifically for 4.1.
Another changeset is going to push into 5. 


sql/sql_base.cc:
  correction due to uint4korr definition: can not sizeof on not ia32.
2006-04-23 19:42:26 +03:00
unknown
d30bfd323a Merge baker@bk-internal.mysql.com:/home/bk/mysql-5.0
into  zim.(none):/home/brian/mysql/mysql-5.0
2006-04-23 08:44:54 -07:00
unknown
c80bff65a1 manual merge use local 2006-04-23 12:32:41 +03:00
unknown
a9edb4b3fb Merge mysql.com:/usr_rh9/home/elkin.rh9/MySQL/BARE/4.1
into  mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/5.0


mysql-test/r/rpl_temporary.result:
  manual merge use local
2006-04-23 12:32:40 +03:00
unknown
e0ebbf67a3 Merge mysql.com:/usr_rh9/home/elkin.rh9/MySQL/BARE/4.1
into  mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/5.0


mysql-test/t/func_compress.test:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
2006-04-23 12:32:39 +03:00
unknown
8e28ab1f40 Merge mysql.com:/opt/local/work/mysql-5.0-root
into  mysql.com:/opt/local/work/mysql-5.0-runtime-merge


sql/item_func.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2006-04-23 13:32:38 +04:00
unknown
329ebbd14d Bug#17263 temporary tables and replication
Backporting a changeset made for 5.0. Comments from there:

  The fix refines the algorithm of generating DROPs for binlog.
  Temp tables with common pseudo_thread_id are clustered into one query.
  Consequently one replication event per pseudo_thread_id is generated.




mysql-test/r/rpl_temporary.result:
  results changed
mysql-test/t/rpl_temporary.test:
  test to generate problematic drop in binlog to feed it to restarting slave
  to see no stop.
sql/sql_base.cc:
  change in drop temprorary tables alg in close_temporary_tables.
2006-04-23 12:18:57 +03:00
unknown
2efefe6890 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg15153-2
2006-04-22 11:56:15 +04:00
unknown
dc526db887 Fix for bug#15153 "CONVERT_TZ() is not allowed in all places in VIEWs".
Error was emitted when one tried to select information from view which used
merge algorithm and which also had CONVERT_TZ() function in its select list.

This bug was caused by wrong assumption that global table list for view
which is handled using merge algorithm begins from tables belonging to
the main select of this view. Nowadays the above assumption is not true only
when one uses convert_tz() function in view's select list, but in future
other cases may be added (for example we may support merging of views
with subqueries in select list one day). Relying on this false assumption
led to the usage of wrong table list for field lookups and therefor errors. 

With this fix we explicitly use pointer to the beginning of main select's
table list.


mysql-test/r/timezone_grant.result:
  Added additional test case for bug#15153 "CONVERT_TZ() is not allowed in
  all places in VIEWs" that checks that usage of CONVERT_TZ() function in view
  does not require additional privileges.
mysql-test/r/view.result:
  Added test case for bug#15153 "CONVERT_TZ() is not allowed in all places in 
  VIEWs".
mysql-test/t/timezone_grant.test:
  Added additional test case for bug#15153 "CONVERT_TZ() is not allowed in
  all places in VIEWs" that checks that usage of CONVERT_TZ() function in view
  does not require additional privileges.
mysql-test/t/view.test:
  Added test case for bug#15153 "CONVERT_TZ() is not allowed in all places in 
  VIEWs".
sql/sql_view.cc:
  mysql_make_view():
    We should not assume that global table list for view which is handled using
    merge algorithm begins from tables belonging to the main select of this
    view. Nowadays the above assumption is not true only when one uses
    convert_tz() function in view's select list, but in future other cases
    may be added (for example we may support merging of views with subqueries
    in select list one day). So let us instead explicitly use pointer to the
    beginning of main select's table list.
2006-04-22 11:54:25 +04:00
unknown
661c6aeaad Bug #18607: LOAD DATA FROM MASTER fails because of INFORMATION_SCHEMA database
Simply exclude INFORMATION_SCHEMA from LOAD DATA FROM MASTER just like
  we exclude the `mysql` database.

  There's no test for this, because it requires an unfiltered 'LOAD DATA
  FROM MASTER' which is too likely to cause chaos (such as when running
  the test suite against an external server).


sql/repl_failsafe.cc:
  Exclude information_schema from LOAD DATA FROM MASTER.
2006-04-21 18:26:39 -07:00
unknown
bb40065a1f Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1
into  rurik.mysql.com:/home/igor/mysql-4.1
2006-04-21 08:22:03 -07:00
unknown
b93dd4327b Post merge fixes 2006-04-21 08:19:38 -07:00
unknown
10eac46a52 Bug#15728: LAST_INSERT_ID function inside a stored function returns 0
Do not reset value of LAST_INSERT_ID() in sub-statement.


mysql-test/r/rpl_insert_id.result:
  Add result for bug#15728.
mysql-test/r/sp.result:
  Add result for bug#15728.
mysql-test/t/rpl_insert_id.test:
  Add test case for bug#15728.
mysql-test/t/sp.test:
  Add test case for bug#15728.
sql/sql_class.cc:
  Do not reset value of LAST_INSERT_ID() in sub-statement.
2006-04-21 18:55:04 +04:00
unknown
90ecf9b698 Post-push fix for BUG#18344: DROP DATABASE does not drop associated routines
Fixed windows compile error in sql/sp.cc (missing cast to byte*)


sql/sp.cc:
  Fixed windows compile error. (missing cast to byte*)
2006-04-21 14:30:44 +02:00
unknown
04be401f96 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  production.mysql.com:/usersnfs/rkalimullin/4.1.b18643
2006-04-21 13:56:40 +02:00
unknown
761624e7f4 Merge mysql.com:/extern/mysql/bk/mysql-5.0-runtime
into  mysql.com:/extern/mysql/5.0/bug18344/mysql-5.0-runtime
2006-04-21 10:22:06 +02:00
unknown
103fbcee45 Merge rurik.mysql.com:/home/igor/dev/mysql-4.1-0
into  rurik.mysql.com:/home/igor/dev/mysql-5.0-0


mysql-test/r/order_by.result:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/t/func_gconcat.test:
  Manual merge
mysql-test/t/order_by.test:
  Manual merge
sql/sql_lex.h:
  Manual merge
sql/sql_parse.cc:
  Manual merge
sql/sql_union.cc:
  Manual merge
2006-04-21 00:36:20 -07:00
unknown
301a24e3a0 Bug #17896: MIN of CASE WHEN returns non-minimum value!
- after review fixes


sql/item_cmpfunc.cc:
  Bug #17896: MIN of CASE WHEN returns non-minimum value!
  - after review fixes.
2006-04-21 11:48:00 +05:00
unknown
d4f4f5bdaf Merge rurik.mysql.com:/home/igor/mysql-4.1
into  rurik.mysql.com:/home/igor/dev/mysql-4.1-0
2006-04-20 22:34:37 -07:00
unknown
9225a51c58 Fixed bug #18767.
The bug caused wrong result sets for union constructs of the form
(SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2.
For such queries order lists were concatenated and limit clause was
completely neglected. 


mysql-test/r/order_by.result:
  Added a test case for bug #18767.
mysql-test/t/order_by.test:
  Added a test case for bug #18767.
sql/sql_lex.h:
  Fixed bug #18767.
  Placed the code the created a fake SELECT_LEX into a separate function.
sql/sql_parse.cc:
  Fixed bug #18767.
  Placed the code the created a fake SELECT_LEX into a separate function.
sql/sql_select.cc:
  Fixed bug #18767.
  Changed the condition on which a SELECT is treated as part of a UNION.
  The SELECT in 
  (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
  now is handled in the same way as the first SELECT in a UNION
  sequence.
sql/sql_union.cc:
  Fixed bug #18767.
  Changed the condition at which a SELECT is treated as part of a UNION.
  The SELECT in 
  (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
  now is handled in the same way as the first SELECT in a UNION
  sequence.
sql/sql_yacc.yy:
  Fixed bug #18767.
  Changed the condition at which a SELECT is treated as part of a UNION.
  The SELECT in 
  (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
  now is handled in the same way as the first SELECT in a UNION
  sequence. In the same way is handled the SELECT in
  (SELECT ... LIMIT n) ORDER BY order list.
  Yet if there is neither ORDER BY nor LIMIT in the single-select
  union construct
  (SELECT ...) ORDER BY order_list
  then it is still handled as simple select with an order clause.
2006-04-20 22:15:38 -07:00
unknown
4e5bed78df Bug #12792: @@system_time_zone is not SELECTable
Bug #15684: @@version_* are not all SELECTable

  Added the appropriate information as read-only system variables, and
  also removed some special-case handling of @@version along the way.

  @@version_bdb was added, but isn't included in the test because it
  depends on the presence of BDB.


mysql-test/r/variables.result:
  Update results
mysql-test/t/variables.test:
  Fix error from setting @@version, reset sql_select_limit to avoid confusion
  in later tests, and add new regression tests.
sql/item_func.cc:
  Remove special-case handling of VERSION, it's just a read-only server
  variable like the others now.
sql/set_var.cc:
  Add system_time_zone and various version-related system variables
2006-04-20 21:56:53 -07:00
unknown
a4b042c1e6 Bug #16195: SHOW VARIABLES doesn't report correctly sql_warnings and sql_notes values
SQL_WARNINGS and SQL_NOTES were being displayed with SHOW_BOOL, but they
  are system variables that need SHOW_SYS to be used.


mysql-test/r/variables.result:
  Add new results
mysql-test/t/variables.test:
  Add new regression test
sql/set_var.cc:
  Fix display of sql_notes and sql_warnings in SHOW VARIABLES.
2006-04-20 20:41:12 -07:00
unknown
e83ae318da Dean noticed that constant flush calls caused the archive stream file to flush empty buffers. This patch removes that behavior.
sql/ha_archive.cc:
  Modifications for more of a lazy approach to opening up archive files for writing.
sql/ha_archive.h:
  Added a variable to determine state, and a new method for encapsulating the opening of archive writers.
2006-04-20 18:23:04 -07:00
unknown
4b7c4cd27f Fixed bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode.
The SQL standard doesn't allow to use in HAVING clause fields that are not 
present in GROUP BY clause and not under any aggregate function in the HAVING
clause. However, mysql allows using such fields. This extension assume that 
the non-grouping fields will have the same group-wise values. Otherwise, the 
result will be unpredictable. This extension allowed in strict 
MODE_ONLY_FULL_GROUP_BY sql mode results in misunderstanding of HAVING 
capabilities.

The new error message ER_NON_GROUPING_FIELD_USED message is added. It says
"non-grouping field '%-.64s' is used in %-.64s clause". This message is
supposed to be used for reporting errors when some field is not found in the
GROUP BY clause but have to be present there. Use cases for this message are 
this bug and when a field is present in a SELECT item list not under any 
aggregate function and there is GROUP BY clause present which doesn't mention 
that field. It renders the ER_WRONG_FIELD_WITH_GROUP error message obsolete as
being more descriptive.
The resolve_ref_in_select_and_group() function now reports the 
ER_NON_GROUPING_FIELD_FOUND error if the strict mode is set and the field for 
HAVING clause is found in the SELECT item list only.



sql/share/errmsg.txt:
  Added the new ER_NON_GROUPING_FIELD_USED error message for the bug#14169.
mysql-test/t/having.test:
  Added test case for the bug#18739:  non-standard HAVING extension was allowed in strict ANSI sql mode.
mysql-test/r/having.result:
  Added test case for the bug#18739:  non-standard HAVING extension was allowed in strict ANSI sql mode.
sql/sql_select.cc:
  Added TODO comment to change the ER_WRONG_FIELD_WITH_GROUP to more detailed ER_NON_GROUPING_FIELD_USED message.
sql/item.cc:
  Fixed bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode.
  The resolve_ref_in_select_and_group() function now reports the
  ER_NON_GROUPING_FIELD_FOUND error if the strict MODE_ONLY_FULL_GROUP_BY mode
  is set and the field for HAVING clause is found in the SELECT item list only.
2006-04-21 01:52:59 +04:00
unknown
1f3d54b477 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/mysql-5.0-maint
2006-04-20 16:17:36 +02:00
unknown
f9523779ea Merge mysql.com:/extern/mysql/bk/mysql-5.0-runtime
into  mysql.com:/extern/mysql/5.0/bug18949/mysql-5.0-runtime


sql/sql_yacc.yy:
  Auto merged
2006-04-20 16:00:33 +02:00
unknown
b30d80e826 Post merge fix 2006-04-20 00:42:12 -07:00
unknown
0775a71222 Merge rurik.mysql.com:/home/igor/mysql-5.0
into  rurik.mysql.com:/home/igor/dev/mysql-5.0-0
2006-04-19 18:27:18 -07:00
unknown
8e27c3744f Merge rurik.mysql.com:/home/igor/dev/mysql-4.1-2
into  rurik.mysql.com:/home/igor/dev/mysql-5.0-0


mysys/mf_keycache.c:
  Auto merged
ndb/src/kernel/SimBlockList.cpp:
  Auto merged
ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp:
  Auto merged
mysql-test/r/func_gconcat.result:
  Manual merge
mysql-test/r/key_cache.result:
  Manual merge
mysql-test/t/func_gconcat.test:
  Manual merge
mysql-test/t/key_cache.test:
  Manual merge
sql/item_func.cc:
  Manual merge
sql/item_sum.h:
  Manual merge
sql/lock.cc:
  Manual merge
sql/sql_select.cc:
  Manual merge
sql/unireg.h:
  Manual merge
2006-04-19 18:08:15 -07:00
unknown
67aca614ba Bug#18964 "return 0 instead of DBUG_RETURN(0) in sql_base.cc::open_table()"
fixlet corrects return to DBUG_RETURN to restore the balance.


sql/sql_base.cc:
  DBUG_ENTER without DBUG_RETURN in open_table()
2006-04-20 01:02:33 +02:00
unknown
c5faf3689b debugging a BK issue 2006-04-20 00:55:30 +02:00
unknown
d8df724af2 Merge mysql.com:/home/jimw/my/mysql-5.0-17043
into  mysql.com:/home/jimw/my/mysql-5.0-clean
2006-04-19 14:18:35 -07:00
unknown
073e16999e Bug#18964 "return 0 instead of DBUG_RETURN(0) in sql_base.cc::open_table()"
fixlet corrects return to DBUG_RETURN to restore the balance.


sql/sql_base.cc:
  DBUG_ENTER without DBUG_RETURN in open_table()
2006-04-19 22:56:48 +02:00
unknown
c0887e5461 Bug#18544 - LOCK TABLES timeout causes MyISAM table corruption
After a locking error the open table(s) were not fully
cleaned up for reuse. But they were put into the open table
cache even before the lock was tried. The next statement
reused the table(s) with a wrong lock type set up. This
tricked MyISAM into believing that it don't need to update
the table statistics. Hence CHECK TABLE reported a mismatch
of record count and table size.

Fortunately nothing worse has been detected yet. The effect
of the test case was that the insert worked on a read locked
table. (!)

I added a new function that clears the lock type from all
tables that were prepared for a lock. I call this function
when a lock failes.

No test case. One test would add 50 seconds to the
test suite. Another test requires file mode modifications.
I added a test script to the bug report. It contains three
cases for failing locks. All could reproduce a table
corruption. All are fixed by this patch.

This bug was not lock timeout specific.


sql/lock.cc:
  Bug#18544 - LOCK TABLES timeout causes MyISAM table corruption
  Resetting the lock type in the open table(s) lock data
  after a locking error.
2006-04-19 22:54:25 +05:00