Invaldating a subset of a sufficiently large query cache can take a long time.
During this time the server is efficiently frozen and no other operation can
be executed. This patch addresses this problem by setting a time limit on
how long time a dictionary access request can take before giving up on the
attempt. This patch does not work for query cache invalidations issued by
DROP, ALTER or RENAME TABLE operations.
sql/sql_cache.cc:
Changed mutex locking to a timed spinn lock. If access to query cache dictionary
takes "a long time" (currently more than 0.1 seconds) the system fall backs on
ordinary statement execution.
Use view db name as thread default database, in order to ensure
that the view is parsed and prepared correctly.
mysql-test/r/sp.result:
test result
mysql-test/t/sp.test:
test case
sql/sql_parse.cc:
copy thd->db_length to table_list->db_length
sql/sql_view.cc:
Use view db name as thread default database, in order to ensure
that the view is parsed and prepared correctly.
When adding a read to lock queue, where there is a X-lock ahead, upgrade to X-lock
(found by pekkas blob changes)
storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp:
When adding a read to lock queue, where there is a X-lock ahead, upgrade to X-lock
(found by pekkas blob changes)
into ibm.opbmk:/home/alik/Documents/MySQL/devel/5.1-rt-bug25843
sql/mysql_priv.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
of statement breaks binlog.
There were two problems discovered by this bug:
1. Default (current) database is not fixed at the creation time.
That leads to wrong output of DATABASE() function.
2. Database attributes (@@collation_database) are not fixed at
the creation time. That leads to wrong resultset.
Binlog breakage and Query Cache wrong output happened because of
the first problem.
The fix is to remember the current database at the PREPARE-time and
set it each time at EXECUTE.
mysql-test/include/query_cache_sql_prepare.inc:
The first part of the test case for BUG#25843.
mysql-test/r/query_cache_ps_no_prot.result:
Update result file.
mysql-test/r/query_cache_ps_ps_prot.result:
Update result file.
mysql-test/suite/rpl/r/rpl_ps.result:
Update result file.
mysql-test/suite/rpl/t/rpl_ps.test:
The second part of the test case for BUG#25843.
sql/mysql_priv.h:
Added mysql_opt_change_db() prototype.
sql/sp.cc:
1. Polishing;
2. sp_use_new_db() has been removed;
3. Use mysql_opt_change_db() instead of sp_use_new_db().
sql/sp.h:
sp_use_new_db() has been removed.
This function has nothing to do with a) sp and b) *new* database.
It was merely "switch the current database if needed".
sql/sp_head.cc:
1. Polishing.
2. Use mysql_opt_change_db() instead of sp_use_new_db().
sql/sql_class.cc:
Move THD::{db, db_length} into Statement.
sql/sql_class.h:
Move THD::{db, db_length} into Statement.
sql/sql_db.cc:
Introduce mysql_opt_change_db() as a replacement (and inspired by)
sp_use_new_db().
sql/sql_prepare.cc:
1. Remember the current database in Prepared_statement::prepare().
2. Switch/restore the current database in Prepared_statement::execute().
mysql-test/r/events.result:
Fixed all the select on information_schema.processlist to be more reliable.
mysql-test/t/events.test:
Fixed all the select on information_schema.processlist to be more reliable.
When dumping database from a 4.x server, the mysqldump client
inserted a delimiter sign inside special commentaries of the form:
/*!... CREATE DATABASE IF NOT EXISTS ... ;*/
During restoration that dump file was splitten by delimiter signs on
the client side, and the rest of some commentary strings was prepended
to following statements.
The 4x_server_emul test case option has been added for use with the
DBUG_EXECUTE_IF debugging macro. This option affects debug server
builds only to emulate particular behavior of a 4.x server for
the mysqldump client testing. Non-debugging builds are not affected.
mysql-test/r/mysqldump-compat.result:
Added test case for bug #30126.
mysql-test/t/mysqldump-compat.opt:
Added test case for bug #30126.
mysql-test/t/mysqldump-compat.test:
Added test case for bug #30126.
sql/sql_parse.cc:
Fixed bug #30126.
The mysqldump client uses the "SHOW CREATE DATABASE" query to
obtain the "CREATE DATABASE" statement from that database.
The 4.x server doesn't recognise that query, and mysqldump
forms the "CREATE DATABASE" statement from scratch.
That statement was formed incorrectly.
To enforce the mysqldump client to create that statement from
scratch, debugging code has been added to the mysql_execute_command
function: in tcase of the --loose-debug=d,4x_server_emul option,
the server returns parse error to client to emulate old behaviour.
The 4x_server_emul test case option has been added for use with the
DBUG_EXECUTE_IF debugging macro. This option affects debug server
builds only to emulate particular behavior of a 4.x server for
the mysqldump client testing. Non-debugging builds are not affected.
client/mysqldump.c:
Fixed bug #30126.
The init_dumping_tables function has been modified to output semicolon
outside of commentaries.
API instead.
This is a pre-requisite of the fix for Bug 12713, which changes the
data type of thd->ha_data from void * to struct Ha_data.
include/mysql/plugin.h:
Provide accessors to thd->ha_data for simple and robust code.
sql/ha_ndbcluster_binlog.h:
Use getters/setters of thd->ha_data, instead of direct access.
sql/handler.cc:
Use a getter of thd->ha_data instead of direct access.
sql/log.cc:
Use getters/setters of thd->ha_data, instead of direct access.
sql/rpl_utility.h:
Fix a compilation warning (declaration order must match initialization
order in constructor).
storage/federated/ha_federated.cc:
Use interface accessors to thd->ha_data, instead of direct access.
into weblab.(none):/home/marcsql/TREE/mysql-5.1-rt50-merge
client/mysql.cc:
Auto merged
mysql-test/r/query_cache.result:
Auto merged
mysql-test/t/query_cache.test:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_handler.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/insert_update.result:
Post-merge: add test case result for Bug#28587.
mysql-test/t/insert_update.test:
Post-merge: add test case for Bug#28587.
The problem is that a SELECT on one thread is blocked by INSERT ... ON
DUPLICATE KEY UPDATE on another thread even when low_priority_updates is
activated.
The solution is to possibly downgrade the lock type to the setting of
low_priority_updates if the INSERT cannot be concurrent.
sql/sql_insert.cc:
Possibly downgrade lock type to the the setting of low_priority_updates if
if the INSERT cannot be concurrent.
comments)
This change set is for 5.1 (manually merged)
Before this fix, the server would accept queries that contained comments,
even when the comments were not properly closed with a '*' '/' marker.
For example,
select 1 /* + 2 <EOF>
would be accepted as
select 1 /* + 2 */ <EOF>
and executed as
select 1
With this fix, the server now rejects queries with unclosed comments
as syntax errors.
Both regular comments ('/' '*') and special comments ('/' '*' '!') must be
closed with '*' '/' to be parsed correctly.
mysql-test/r/comments.result:
Unbalanced comments are a syntax error.
mysql-test/t/comments.test:
Unbalanced comments are a syntax error.
sql/sql_lex.cc:
Unbalanced comments are a syntax error.
into weblab.(none):/home/marcsql/TREE/mysql-5.1-rt50-merge
mysql-test/r/comments.result:
failed auto merge
mysql-test/t/comments.test:
failed auto merge
sql/sql_lex.cc:
failed auto merge
PREPARE and EXECUTE of statement breaks binlog.
sql/sp.cc:
- Polishing sp_use_new_db():
- renamed no_access_check to force_switch to be more adequate;
- fixed comment;
sql/sql_class.h:
Polishing: fixed comment.
sql/sql_db.cc:
1. Use mysql_change_db_impl() to reset current database instead of
THD::set_db() in mysql_rm_db(). THD::set_db() does not take care of
THD::db_access and database attributes (@@collation_database).
2. Polishing: add, fix comments.
sql/ha_ndbcluster.cc:
Bug#20872 master*.err: miscellaneous error messages
- only allocate share if fully successfull
sql/ha_ndbcluster_binlog.cc:
Bug#20872 master*.err: miscellaneous error messages
- only allocate share if fully successfull
- no need to print error, my_errno is set
sql/ha_ndbcluster_binlog.h:
Bug#20872 master*.err: miscellaneous error messages
- only allocate share if fully successfull