- Table locks now ends with state "After table lock"
- Open table now ends with state "After opening tables"
- All calls to close_thread_tables(), not only from mysql_execute_command(), has state "closing tables"
- Added state "executing" for mysql admin commands, like CACHE INDEX, REPAIR TABLE etc.
- Added state "Finding key cache" for CACHE INDEX
- Added state "Filling schema table" when we generate temporary table for SHOW commands and information schema.
Other things:
Add limit from innobase for thread_sleep_delay. This fixed a failing tests case.
Added db.opt to support-files to make 'make package' work
mysql-test/suite/funcs_1/datadict/processlist_val.inc:
Use new state
mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result:
Updated test result because of new state
mysql-test/suite/funcs_1/r/processlist_val_no_prot.result:
Updated test result because of new state
sql/CMakeLists.txt:
Have option files in support-files
sql/lock.cc:
Added new state 'After table lock'
sql/sql_admin.cc:
Added state "executing" and "Sending data" for mysql admin commands, like CACHE INDEX, REPAIR TABLE etc.
Added state "Finding key cache"
sql/sql_base.cc:
open tables now ends with state "After table lock", instead of NULL
sql/sql_parse.cc:
Moved state "closing tables" to close_thread_tables()
sql/sql_show.cc:
Added state "Filling schema table" when we generate temporary table for SHOW commands and information schema.
storage/xtradb/buf/buf0buf.c:
Removed compiler warning
storage/xtradb/handler/ha_innodb.cc:
Add limit from innobase for thread_sleep_delay. This fixed a failing tests case.
support-files/db.opt:
cmakes needs this to create data/test directory
The problem was that on opening all tables TL_WRITE, than local tables which is not updated set to TL_READ, but underlying tables of MyISAMmrg left untouched.
Prartition engine has not this problem.
All cases where lock_type assigned is not changed because call of virtual function is not cheap.
This is not yet a fix. This is change to print additional information at the point
when this assertion is going to happen. Print as much information about the pages
and index to find out why next page is not a compact format.
Fixed crashing bug for union queries where there was no real tables.
mysql-test/r/group_by.result:
Added test case
mysql-test/t/group_by.test:
Added test case
sql/db.opt:
Removed genrated file
sql/item.cc:
Handled case when table_list->pos_in_tables is not set. Can only happens when there is no real tables in query
Both bugs are caused by the same problem: the function optimize_cond() should
update the value of *cond_equal rather than the value of join->cond_equal,
because it is called not only for the WHERE condition, but for the HAVING
condition as well.
The fill_schema_table() function used to call get_table_share() for a table name in WHERE
then clear the error list. That way plugins receive the superfluous error notification if it
happens in it. Also the problem was that error handler didn't prevent the suppressed
error message from logging anyway as the logging happens in THD::raise_condition
before the handler call.
Trigger_error_handler is remade into Warnings_only_error_handler, so it stores the error
message in all cases in the thd->stmt_da.
Then later the stored error is raised.
If a prepared statement calls an stored procedure,
the thd->server_status out of the SP goes up
to the PS and then to the client. So that the
client gets the SERVER_STATUS_CURSOR_EXISTS status
if the SP uses a cursor. Which makes the embedded
server fail.
Fixed by saving/restoring the upper-level server_status
in sp_head::execute().
mysqltest in the 'embedded-server' mode runs queries in a separate thread,
but it didn't do so for the prepared statements - they were run in the main thread.
That leads to inconsistencies.
When a test sets SESSION 'dbug' variable like
SET SESSION debug_dbug="+d,warn_during_ha_commit_trans";
it is run as a plain query in that separate thread, so the main thread remains unaffected.
After that the prepared statement run in the main thread doesn't produce expected 'dbug' errors,
so the test fails.
To fix that I made prepared statement to be run in that special thread along with the plain queries.
That makes the environment consistent.
As Davi added code like
sav_protocol= thd->protocol
thd->protocol= &thd->protocol_binary
...
thd->protocol= sav_protocol
the fucntions like emb_store_querycache_result() cannot determine
the used protocol testing thd->protocol == &thd->protocol_binary.
Fixed by additional check thd->command == COM_STMT_EXECUTE.
The function Protocol::net_store_data(a, b, CHARSET_A, CHARSET_B) should
be adapted to be working in the embedded server as it's done
with the Protocol::net_store_data(a, b).
That new function renamed as net_store_data_cs, so we can make it
virtual.
Revert the old patch revid:monty@askmonty.org-20100325133339-7mkel6valai0b4lb
This patch caused the InnoDB part of the transaction to not be marked
read-write in some cases, which messes up XA commit (and likely other
stuff as well).