into weblab.(none):/home/marcsql/TREE/mysql-5.1-25422-d
client/mysqldump.c:
Auto merged
mysql-test/r/log_state.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/t/show_check.test:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sp.cc:
Auto merged
into ibm.:/home/alik/Documents/MySQL/devel/5.1-rt-merge
mysql-test/r/mysqldump-max.result:
Auto merged
mysql-test/r/openssl_1.result:
Auto merged
mysql-test/t/show_check.test:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
client/mysqldump.c:
Manual merge.
mysql-test/r/mysqldump.result:
Manual merge + use local.
into adventure.(none):/home/thek/Development/cpp/bug29929/my51-bug29929
mysql-test/r/sp-prelocking.result:
Auto merged
mysql-test/t/sp-prelocking.test:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
SCCS merged
When a table was explicitly locked with LOCK TABLES no associated
tables from any related trigger on the subject table were locked.
As a result of this the user could experience unexpected locking
behavior and statement failures similar to "failed: 1100: Table'xx'
was not locked with LOCK TABLES".
This patch fixes this problem by making sure triggers are
pre-loaded on any statement if the subject table was explicitly
locked with LOCK TABLES.
mysql-test/r/sp-prelocking.result:
Added test case
mysql-test/t/sp-prelocking.test:
Added test case
sql/sql_lex.cc:
- Moved some conditional logic out of the table iteration.
- Added event map values for LOCK TABLE command.
sql/table.cc:
- Refactored set_trg_event_tpye into the two simpler functions set_trg_event_map
and set_trg_event_map as methods for manipulating the table event map.
The original function was only called from st_lex::set_trg_event_type_for_tables
so it was possible to move the event map creation logic to this function as
a loop optimization.
sql/table.h:
- Refactored set_trg_event_tpye into the two simpler functions set_trg_event_map
and set_trg_event_map as methods for manipulating the table event map.
The original function was only called from st_lex::set_trg_event_type_for_tables
so it was possible to move the event map creation logic to this function as
a loop optimization.
mysqldump generates view defitions in two stages:
- dump CREATE TABLE statements for the temporary tables. For each view a
temporary table, that has the same structure as the view is created.
- dump DROP TABLE statements for the temporary tables and CREATE VIEW
statements for the view.
This approach is required because views can have dependencies on each other
(a view can use other views). So, they should be created in the particular
order. mysqldump however is not smart enough, so in order to resolve
dependencies it creates temporary tables first of all.
The problem was that mysqldump might have generated incorrect dump for the
temporary table when a view has non-ASCII column name. That happened when
default-character-set is not utf8.
The fix is to:
1. Switch character_set_client for the mysqldump's connection to binary
before issuing SHOW FIELDS statement in order to avoid conversion.
2. Dump switch character_set_client statements to UTF8 and back for
CREATE TABLE statement that is issued to create temporary table.
client/mysqldump.c:
1. Switch character_set_results for mysqldump's connection to
binary before SHOW FIELDS in order to avoid conversion to client
character set.
2. Dump switch character_set_client statements to UTF8 and back
for CREATE TABLE statement.
mysql-test/r/mysqldump.result:
Update result file.
mysql-test/t/mysqldump.test:
Test case for BUG#30027.
Bug#25422 (Hang with log tables)
Bug 17876 (Truncating mysql.slow_log in a SP after using cursor locks the
thread)
Bug 23044 (Warnings on flush of a log table)
Bug 29129 (Resetting general_log while the GLOBAL READ LOCK is set causes
a deadlock)
Prior to this fix, the server would hang when performing concurrent
ALTER TABLE or TRUNCATE TABLE statements against the LOG TABLES,
which are mysql.general_log and mysql.slow_log.
The root cause traces to the following code:
in sql_base.cc, open_table()
if (table->in_use != thd)
{
/* wait_for_condition will unlock LOCK_open for us */
wait_for_condition(thd, &LOCK_open, &COND_refresh);
}
The problem with this code is that the current implementation of the
LOGGER creates 'fake' THD objects, like
- Log_to_csv_event_handler::general_log_thd
- Log_to_csv_event_handler::slow_log_thd
which are not associated to a real thread running in the server,
so that waiting for these non-existing threads to release table locks
cause the dead lock.
In general, the design of Log_to_csv_event_handler does not fit into the
general architecture of the server, so that the concept of general_log_thd
and slow_log_thd has to be abandoned:
- this implementation does not work with table locking
- it will not work with commands like SHOW PROCESSLIST
- having the log tables always opened does not integrate well with DDL
operations / FLUSH TABLES / SET GLOBAL READ_ONLY
With this patch, the fundamental design of the LOGGER has been changed to:
- always open and close a log table when writing a log
- remove totally the usage of fake THD objects
- clarify how locking of log tables is implemented in general.
See WL#3984 for details related to the new locking design.
Additional changes (misc bugs exposed and fixed):
1)
mysqldump which would ignore some tables in dump_all_tables_in_db(),
but forget to ignore the same in dump_all_views_in_db().
2)
mysqldump would also issue an empty "LOCK TABLE" command when all the tables
to lock are to be ignored (numrows == 0), instead of not issuing the query.
3)
Internal errors handlers could intercept errors but not warnings
(see sql_error.cc).
4)
Implementing a nested call to open tables, for the performance schema tables,
exposed an existing bug in remove_table_from_cache(), which would perform:
in_use->some_tables_deleted=1;
against another thread, without any consideration about thread locking.
This call inside remove_table_from_cache() was not required anyway,
since calling mysql_lock_abort() takes care of aborting -- cleanly -- threads
that might hold a lock on a table.
This line (in_use->some_tables_deleted=1) has been removed.
sql/handler.cc:
Moved logic for system / log tables in the SQL layer.
sql/handler.h:
Moved logic for system / log tables in the SQL layer.
sql/lock.cc:
Revised locking of log tables
sql/log.cc:
Major cleanup: changed how log tables are locked / written to.
sql/log.h:
Major cleanup: changed how log tables are locked / written to.
sql/mysql_priv.h:
performance schema helpers
sql/slave.cc:
open_ltable() lock flags
sql/sp.cc:
open_ltable() lock flags
sql/sql_acl.cc:
open_ltable() lock flags
sql/sql_class.h:
performance schema helpers
sql/sql_delete.cc:
log tables cleanup in TRUNCATE
sql/sql_error.cc:
Internal handlers can also intercept warnings
sql/sql_insert.cc:
open_ltable() lock flags
sql/sql_parse.cc:
performance schema helpers
sql/sql_plugin.cc:
open_ltable() lock flags
sql/sql_rename.cc:
log tables cleanup in RENAME
sql/sql_servers.cc:
open_ltable() lock flags
sql/sql_show.cc:
Move INFORMATION_SCHEMA_NAME to table.cc
sql/sql_table.cc:
log tables cleanup (admin operations, ALTER TABLE)
sql/sql_udf.cc:
open_ltable() lock flags
sql/table.cc:
Implemented TABLE_CATEGORY.
sql/share/errmsg.txt:
Changed the wording and name of ER_CANT_READ_LOCK_LOG_TABLE
sql/table.h:
Implemented TABLE_CATEGORY.
storage/csv/ha_tina.cc:
Moved logic for system / log tables in the SQL layer.
storage/csv/ha_tina.h:
Moved logic for system / log tables in the SQL layer.
storage/myisam/ha_myisam.cc:
Moved logic for system / log tables in the SQL layer.
storage/myisam/ha_myisam.h:
Moved logic for system / log tables in the SQL layer.
client/mysqldump.c:
Don't lock tables in the ignore list.
Don't issue empty LOCK TABLES queries.
sql/sql_base.cc:
log tables cleanup
performance schema helpers
mysql-test/r/ps.result:
Adjust test results
mysql-test/r/show_check.result:
Adjust test results
mysql-test/r/status.result:
Adjust test results
mysql-test/t/log_state.test:
Added tests for Bug#29129
mysql-test/t/ps.test:
Make the test output deterministic
mysql-test/t/show_check.test:
Make the test output deterministic
mysql-test/r/log_state.result:
Changed the default location of the log output to LOG_FILE,
for backward compatibility with MySQL 5.0
---
Adjust test results
mysql-test/r/log_tables.result:
cleanup for -ps-protocol
mysql-test/t/log_tables.test:
cleanup for -ps-protocol
sql/set_var.cc:
Changed the default location of the log output to LOG_FILE,
for backward compatibility with MySQL 5.0
---
log tables cleanup
binary SHOW CREATE TABLE or SELECT FROM I_S.
The problem is that mysqldump generates incorrect dump for a table
with non-ASCII column name if the mysqldump's character set is
ASCII.
The fix is to:
1. Switch character_set_client for the mysqldump's connection
to binary before issuing SHOW CREATE TABLE statement in order
to avoid conversion.
2. Dump switch character_set_client statements to UTF8 and back
for CREATE TABLE statement.
client/mysqldump.c:
1. Switch character_set_client for the mysqldump's connection
to binary before issuing SHOW CREATE TABLE statement in order
to avoid conversion.
2. Dump switch character_set_client statements to UTF8 and back
for CREATE TABLE statement.
mysql-test/r/mysqldump-max.result:
Update result file.
mysql-test/r/mysqldump.result:
Update result file.
mysql-test/r/openssl_1.result:
Update result file.
mysql-test/r/show_check.result:
Update result file.
mysql-test/t/show_check.test:
Test case:
- create a table with non-ASCII column name;
- dump the database by mysqldump using ASCII character set;
- drop the database;
- load the dump;
- check that the table has been re-created properly.
Creating an EVENT to be executed at a time close to the end of the allowed
range (2038.01.19 03:14:07 UTC) would cause the server to crash. The
expected behavior is to accept all calendar times within the interval and
reject all other values without crashing.
This patch replaces the function 'sec_to_epoch_TIME' with a Time_zone API call.
This function was broken because it invoked the internal function 'sec_to_epoch'
without respecting the restrictions on the function parameters (and this caused
assertion failure). It also was used as a reverse function to
Time_zone_utc::gmt_sec_to_TIME which it isn't.
mysql-test/r/events_bugs.result:
Added test case
mysql-test/t/events_bugs.test:
Added test case
sql/event_data_objects.cc:
Replaced function 'sec_since_epoch_TIME' since it was implemented as
a wrapper around 'sec_since_epoch' without taking parameter restrictions
into account. The function was used to load information about event
execution time from mysql.events table. Further more, the function wasn't
the inverse function of Time_zone_utc::gmt_sec_to_TIME() which was used
by events code to store information about event execution time.
sql/event_db_repository.cc:
Replaced my_tz_UTC object with my_tz_OFFSET0 object because the first one
doesn't supply us with a bijective MYSQL_TIME<->my_time_t translation. Instead
the function sec_since_epoch_TIME was used as a reverse function to the method
my_tz_UTC::gmt_sec_to_TIME.
sql/event_queue.cc:
Replaced my_tz_UTC object with my_tz_OFFSET0 object because the first one
doesn't supply us with a bijective MYSQL_TIME<->my_time_t translation. Instead
the function sec_since_epoch_TIME was used as a reverse function to the method
my_tz_UTC::gmt_sec_to_TIME.
sql/tztime.cc:
* Remove function 'sec_since_epoch_TIME' since it was implemented as
a wrapper around 'sec_since_epoch' without taking parameter restrictions
into account. The function was used to load information about event
execution time from mysql.events table. Further more, the function wasn't
the inverse function of Time_zone_utc::gmt_sec_to_TIME() which was used
by events code to store information about event execution time.
* Added static Time_zone object for UTC+0 time zone.
sql/tztime.h:
Include extern pointer to static Time_zone object.
Changed the default location of the log output to LOG_FILE,
for backward compatibility with MySQL 5.0
mysql-test/r/log_state.result:
Changed the default location of the log output to LOG_FILE,
for backward compatibility with MySQL 5.0
sql/set_var.cc:
Changed the default location of the log output to LOG_FILE,
for backward compatibility with MySQL 5.0
On the windows platform, if an instance object failed to initialize during
program start, the instance manager would crash.
This could happen if an incorrect mysqld path was supplied in the
defaults configuration file.
The patch prevents the program from crashing and makes it show an
error message instead.
mysql-test/r/im_options.result:
- Options have changed names.
server-tools/instance-manager/instance.cc:
- Added code to verify that the instance object was initialized
before any attempt is made to start the associated process.
- Instance::complete_initialization method will now return TRUE
on an error during instance initialization.
server-tools/instance-manager/instance_options.cc:
- Parsed result byte sequence from executed process doesn't contain a new line
character anymore.
server-tools/instance-manager/parse_output.cc:
- 'popen' didn't behave as intended on the windows platform.
- The function parse_output_and_get_value was completly rewritten to correct the
error in the windows built and to be more easily maintained across platforms.
server-tools/instance-manager/parse_output.h:
- 'popen' didn't behave as intended on the windows platform.
- The function parse_output_and_get_value was completly rewritten to correct the
error in the windows built and to be more easily maintained across platforms.
server-tools/instance-manager/portability.h:
- Add more portability constants for convenience.
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
mysql-test/r/create.result:
Auto merged
mysql-test/r/innodb.result:
Auto merged
mysql-test/t/create.test:
Auto merged
mysql-test/t/innodb.test:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
into bodhi.(none):/opt/local/work/mysql-5.0-runtime
mysql-test/r/create.result:
Auto merged
mysql-test/t/create.test:
Auto merged
sql/sql_class.h:
Auto merged
into gleb.loc:/home/uchum/work/bk/5.1-opt
mysql-test/t/disabled.def:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
SCCS merged
tests/mysql_client_test.c:
SCCS merged
into gleb.loc:/home/uchum/work/bk/5.1-opt
mysql-test/r/func_gconcat.result:
Auto merged
mysql-test/t/func_gconcat.test:
Auto merged
sql/item_sum.cc:
Auto merged
The Item_date_typecast::val_int function doesn't reset null_value flag.
This makes all values that follows the first null value to be treated as nulls
and led to a wrong result.
Now the Item_date_typecast::val_int function correctly sets the null_value flag
for both null and non-null values.
mysql-test/t/cast.test:
Added a test case for the bug#29898: Item_date_typecast::val_int doesn't reset
the null_value flag.
mysql-test/r/cast.result:
Added a test case for the bug#29898: Item_date_typecast::val_int doesn't reset
the null_value flag.
sql/item_timefunc.cc:
Bug#29898: Item_date_typecast::val_int doesn't reset the null_value flag.
Now the Item_date_typecast::val_int function correctly sets the null_value flag
for both null and non-null values.
a temporary table.
The result string of the Item_func_group_concat wasn't initialized in the
copying constructor of the Item_func_group_concat class. This led to a
wrong charset of GROUP_CONCAT result when the select employs a temporary
table.
The copying constructor of the Item_func_group_concat class now correctly
initializes the charset of the result string.
mysql-test/t/func_gconcat.test:
Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
when the select employs a temporary table.
mysql-test/r/func_gconcat.result:
Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
when the select employs a temporary table.
sql/item_sum.cc:
Bug#29850: Wrong charset of GROUP_CONCAT result when the select employs
a temporary table.
The copying constructor of the Item_func_group_concat class now correctly
initializes the charset of the result string.
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
mysql-test/r/sp-prelocking.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/create.test:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/sp-prelocking.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/sql_class.h:
Auto merged
mysql-test/r/create.result:
Use local.
mysql-test/r/innodb.result:
Manual merge.
into gleb.loc:/home/uchum/work/bk/5.1-opt
client/mysqldump.c:
Auto merged
include/my_base.h:
Auto merged
mysql-test/include/mix1.inc:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
into gleb.loc:/home/uchum/work/bk/5.1-opt
client/mysqldump.c:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/r/mysqldump.result:
Merge with 5.0-opt.
For each view the mysqldump utility creates a temporary table
with the same name and the same columns as the view
in order to satisfy views that depend on this view.
After the creation of all tables, mysqldump drops all
temporary tables and creates actual views.
However, --skip-add-drop-table and --compact flags disable
DROP TABLE statements for those temporary tables. Thus, it was
impossible to create the views because of existence of the
temporary tables with the same names.
client/mysqldump.c:
Fixed bug #28524.
The mysqldump utility has been modified to unconditionally drop
temporary tables before the creation of views.
mysql-test/t/mysqldump.test:
Updated test case for bug #28524 and updated result of previous tests.
mysql-test/r/mysqldump.result:
Updated test case for bug #28524 and updated result of previous tests.
function results in inconsistent behavior.
The bug itself was fixed by the patch for bug 20662.
mysql-test/r/sp-prelocking.result:
Update results (Bug#22427)
mysql-test/t/sp-prelocking.test:
Add a test case for Bug#22427 create table if not exists + stored
function results in inconsistent behavior
into magare.gmz:/home/kgeorge/mysql/work/merge-5.0-5.1-opt
mysql-test/r/type_time.result:
Auto merged
sql/field.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
BitKeeper/deleted/.del-index_merge.result:
Auto merged
mysql-test/include/index_merge1.inc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/opt_range.cc:
Auto merged
storage/heap/ha_heap.cc:
Auto merged
storage/heap/ha_heap.h:
Auto merged
Fix the typo in the constructor. Cover a semantic check that previously
never worked with a test.
mysql-test/r/create.result:
Update results (Bug#26104)
mysql-test/r/innodb.result:
Update results.
mysql-test/t/create.test:
Add a test case for Bug#26104 Bug on foreign key class constructor
mysql-test/t/innodb.test:
Return a new error number (MySQL error instead of internal InnoDB error).
sql/sql_class.h:
A fix for Bug#26104 Bug on foreign key class constructor -- fix
the typo in the constructor
table.
The bug itself is yet another manifestation of Bug 26141.
mysql-test/r/trigger.result:
Update results.
mysql-test/t/trigger.test:
Add a test case for Bug#27248 Triggers: error if insert affects temporary
table
into ramayana.hindu.god:/home/tsmith/m/bk/maint/51
mysql-test/suite/rpl_ndb/t/disabled.def:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
mysql-test/r/events_bugs.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/share/errmsg.txt:
Auto merged
mysql-test/r/innodb_mysql.result:
Update test results (merge from the main tree).
mysql-test/r/query_cache.result:
Update test results (merge from the main tree).
mysql-test/r/sp.result:
Update test results (merge from the main tree).
mysql-test/t/query_cache.test:
Use --echo End of to simplify future merges.
sql/handler.h:
st_table_list -> TABLE_LIST
sql/item_create.cc:
A post-merge fix (this code is in sql_yacc.yy in 5.0)
sql/rpl_utility.h:
st_table_list -> TABLE_LIST
sql/sp.cc:
A post-merge fix.
sql/sp_head.cc:
In 5.1 memdup_root returns void*.
sql/sql_show.cc:
st_table_list -> TABLE_LIST
sql/sql_show.h:
st_table_list -> TABLE_LIST
sql/sql_yacc.yy:
A post-merge fix.
sql/table.cc:
st_table_list -> TABLE_LIST
sql/table.h:
st_table_list -> TABLE_LIST
into bodhi.(none):/opt/local/work/mysql-5.0-runtime
mysql-test/t/sp.test:
Auto merged
sql/item.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/innodb_mysql.result:
Manual merge.
mysql-test/t/innodb_mysql.test:
Manual merge.
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
client/mysqldump.c:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/t/show_check.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
mysql-test/r/events_bugs.result:
Manual merge.
internal data dictionary
- re-enabled innodb_mysql test;
- added a rule to through away expected warning to mtr_report.pl;
- fixed a test case to produce unique warning.
mysql-test/include/mix1.inc:
Modified a test case to through away expected warning.
mysql-test/lib/mtr_report.pl:
Through away a warning produced by BUG#29807 test.
mysql-test/r/innodb_mysql.result:
Modified a test case to through away expected warning.
mysql-test/t/disabled.def:
Re-enabled innodb_mysql.test.
The get_time_value function is added. It is used to obtain TIME values both
from items the can return time as an integer and from items that can return
time only as a string.
The Arg_comparator::compare_datetime function now uses pointer to a getter
function to obtain values to compare. Now this function is also used for
comparison of TIME values.
The get_value_func variable is added to the Arg_comparator class.
It points to a getter function for the DATE/DATETIME/TIME comparator.
mysql-test/t/type_time.test:
Extended test case for the bug#29555.
mysql-test/r/type_time.result:
Extended test case for the bug#29555.
sql/item_cmpfunc.cc:
Extended fix for the bug#29555.
The get_time_value function is added. It is used to obtain TIME values both
from items the can return time as an integer and from items that can return
time only as a string.
The Arg_comparator::compare_datetime function now uses pointer to a getter
function to obtain values to compare. Now this function is also used for
comparison of TIME values.
sql/item_cmpfunc.h:
Extended fix for the bug#29555.
The get_value_func variable is added to the Arg_comparator class.
It points to a getter function for the DATE/DATETIME/TIME comparator.
Linux Debug build (possible deadlock)"
The bug is not repeatable any more.
mysql-test/r/innodb_mysql.result:
Update test results (Bug#27296)
mysql-test/t/innodb_mysql.test:
Add a teste case for Bug#27296 "Assertion in ALTER TABLE SET DEFAULT in
Linux Debug build (possible deadlock)"