into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg04/51
mysql-test/r/information_schema.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
This changeset fixes the problem where mysql, when run as a service,
can't "detect" it's own data directory.
sql/mysqld.cc:
When running on Windows we check to see if we have a hard path in
my_progname. If not, then we use GetModuleFilename to get the full path
for the executing module. This allows the program to determine where
it's at when running as a service.
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.1-marvel
mysys/my_pread.c:
Auto merged
mysys/thr_alarm.c:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
storage/heap/hp_write.c:
Auto merged
mysql-test/t/mysqlbinlog2.test:
SCCS merged
client/mysql.cc:
Auto merged
client/mysqlbinlog.cc:
Auto merged
sql/event_db_repository.cc:
Auto merged
sql/item.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
into bk-internal.mysql.com:/data0/bk/mysql-5.1-marvel
client/mysql.cc:
Auto merged
client/mysqlbinlog.cc:
Auto merged
sql/event_data_objects.cc:
Auto merged
sql/event_db_repository.cc:
Auto merged
sql/event_queue.cc:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
strings/ctype-utf8.c:
Auto merged
into bodhi.local:/opt/local/work/mysql-5.1-runtime
mysql-test/r/events_bugs.result:
Auto merged
mysql-test/r/ps.result:
Auto merged
mysql-test/t/events.test:
Auto merged
sql/event_data_objects.cc:
Auto merged
sql/event_data_objects.h:
Auto merged
sql/event_db_repository.h:
Auto merged
sql/event_queue.cc:
Auto merged
sql/events.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_servers.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.h:
Auto merged
sql/share/errmsg.txt:
Auto merged
mysql-test/r/events.result:
Manual merge.
sql/event_db_repository.cc:
Manual merge.
sql/sql_parse.cc:
Manual merge.
Type of 'Slave_running' status variable is changed to bool
mysql-test/r/compress.result:
test result
mysql-test/r/rpl_packet.result:
test result
mysql-test/t/compress.test:
test case
mysql-test/t/rpl_packet.test:
test case
sql/mysqld.cc:
Type of 'Slave_running' status variable is changed to bool
- Some variables in I_S.GLOBAL_STATUS were depending on a network
connection in order to evaluate. Since no network connection is
present during the execution of an event, this caused the server
to crash.
- The variable function hooks does now verify that the vio-
object is valid before attempting to use it.
mysql-test/r/information_schema.result:
Added test case.
mysql-test/t/information_schema.test:
Added test case.
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
sql/field.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.h:
Auto merged
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
client/Makefile.am:
Auto merged
mysql-test/r/rpl_ndb_basic.result:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
client/mysqlbinlog.cc:
Auto merged
mysql-test/extra/binlog_tests/binlog.test:
Auto merged
mysql-test/r/binlog_row_binlog.result:
Auto merged
mysql-test/r/binlog_stm_binlog.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/lock.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/slave.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/table.h:
Auto merged
mysql-test/r/rpl_ndb_log.result:
Manual merge main->rpl 5.1
mysql-test/r/rpl_truncate_7ndb.result:
Manual merge main->rpl 5.1
sql/log.cc:
Manual merge main->rpl 5.1
sql/log_event.cc:
Manual merge main->rpl 5.1
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_select.cc:
Auto merged
renamed "--old-mode" to "--old" to prevent
ambiguity.
"old" now appears in SHOW VARIABLES as a
read-only option.
mysql-test/r/group_by.result:
WL3527: 5.1 test case
mysql-test/t/group_by.test:
WL3527: 5.1 test case
sql/mysqld.cc:
WL3527: 5.1
renamed the "old-mode" to "old" to fit
the options naming scheme
sql/set_var.cc:
WL3527: 5.1
added "-old" as read-only system variable
sql/set_var.h:
WL3527: 5.1
added class for boolean pointer read-only
option to support the "--old" option.
sql/sql_base.cc:
fixed 5.0->5.1 merge problems.
fixed differently: wake up select_thread with THR_SERVER_ALARM instead
mysys/thr_alarm.c:
reverted linuxthreads thr_client_alarm fix (not future-proof)
(in thr_alarm.cc it happened too late).
mysys/thr_alarm.c:
move thr_client_alarm initialization to mysqld.cc
(here it happened too late)
sql/mysqld.cc:
move thr_client_alarm initialization to mysqld.cc
(in thr_alarm.cc it happened too late).
moved thr_kill_signal initialization to init_signals()
into gbichot3.local:/home/mysql_src/mysql-5.1-rpl-26194
will fix by hand
mysql-test/t/rpl_misc_functions.test:
Auto merged
sql/lock.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_derived.cc:
Auto merged
sql/sql_select.cc:
will fix by hand
sql/table.h:
merge from 5.0
what it actually means (Monty approved the renaming)
- correcting description of transaction_alloc command-line options
(our manual is correct)
- fix for a failure of rpl_trigger.
mysql-test/t/rpl_misc_functions.test:
test was cleaning up only on slave, but it's also needed on master,
otherwise it influences rpl_trigger.test
sql/lock.cc:
clearer name
sql/mysqld.cc:
I checked the code that those two variables are not about binlogging
but about the size of the transaction's memroot which is used
to create savepoint structures and to store list of tables to be invalidated
(for NDB). The manual has a correct description, no need to fix it.
sql/sql_base.cc:
clearer name
sql/sql_derived.cc:
clearer name
sql/sql_select.cc:
clearer name
sql/table.h:
clearer name: TMP_TABLE is used for non-transactional tables.
into bodhi.local:/opt/local/work/mysql-5.1-runtime
include/my_global.h:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/events_scheduling.result:
Auto merged
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
Auto merged
BitKeeper/deleted/.del-mysql_create_system_tables.sh:
Auto merged
mysql-test/r/query_cache.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/events_scheduling.test:
Auto merged
mysql-test/t/grant_cache.test:
Auto merged
mysql-test/t/query_cache.test:
Auto merged
mysql-test/t/view.test:
Auto merged
scripts/mysql_system_tables_fix.sql:
Auto merged
sql/event_db_repository.cc:
Auto merged
sql/event_queue.cc:
Auto merged
sql/field.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_help.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/tztime.cc:
Auto merged
storage/innobase/handler/ha_innodb.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
storage/myisam/ha_myisam.h:
Auto merged
mysql-test/r/skip_grants.result:
Manualmerge.
mysql-test/r/sp.result:
Manualmerge.
mysql-test/t/skip_grants.test:
Manualmerge.
mysql-test/t/sp.test:
Manualmerge.
sql/event_data_objects.cc:
Manualmerge.
around the original functions. These will ensure that error
message is always in unique form, reduce code and print the
right alternatives automatically in an error case.
client/mysql.cc:
Changed find_type to find_type_or_exit
client/mysqladmin.cc:
Changed find_type to find_type_or_exit
client/mysqlbinlog.cc:
Changed find_type to find_type_or_exit
client/mysqlcheck.c:
Changed find_type to find_type_or_exit
client/mysqldump.c:
Changed find_type to find_type_or_exit
client/mysqlimport.c:
Changed find_type to find_type_or_exit
client/mysqlshow.c:
Changed find_type to find_type_or_exit
client/mysqlslap.c:
Changed find_type to find_type_or_exit
include/typelib.h:
Added find_type_or_exit
mysql-test/r/mysql_protocols.result:
Fixed result.
mysys/typelib.c:
Added find_type_or_exit
sql/mysqld.cc:
Added use of find_type_or_exit and find_bit_type_or_exit
Fixed a missing break; from an option handling. (Bug
in --tc-heuristic-recover)
- Crash occured because Event engine is only initialized if
ACLs are used but not properly marked as disabled.
- The patch is to mark the Event engine as DISABLED if no ACLs
are used to avoid access of uninitialized variables.
mysql-test/r/skip_grants.result:
Added test case
mysql-test/t/skip_grants.test:
Added test case
TABLE ... WRITE".
Memory and CPU hogging occured when connection which had to wait for table
lock was serviced by thread which previously serviced connection that was
killed (note that connections can reuse threads if thread cache is enabled).
One possible scenario which exposed this problem was when thread which
provided binlog dump to replication slave was implicitly/automatically
killed when the same slave reconnected and started pulling data through
different thread/connection.
The problem also occured when one killed particular query in connection
(using KILL QUERY) and later this connection had to wait for some table
lock.
This problem was caused by the fact that thread-specific mysys_var::abort
variable, which indicates that waiting operations on mysys layer should
be aborted (this includes waiting for table locks), was set by kill
operation but was never reset back. So this value was "inherited" by the
following statements or even other connections (which reused the same
physical thread). Such discrepancy between this variable and THD::killed
flag broke logic on SQL-layer and caused CPU and memory hogging.
This patch tries to fix this problem by properly resetting this member.
There is no test-case associated with this patch since it is hard to test
for memory/CPU hogging conditions in our test-suite.
sql/mysqld.cc:
We should not forget to reset THD::mysys_var::abort after kill operation
if we are going to use thread to which this operation was applied for
handling of other connections.
sql/sp_head.cc:
We should not forget to reset THD::mysys_var::abort after kill operation
if we are going to use thread to which this operation was applied for
handling of further statements.
sql/sql_parse.cc:
We should not forget to reset THD::mysys_var::abort after kill operation
if we are going to use thread to which this operation was applied for
handling of further statements.
TABLE ... WRITE".
CPU hogging occured when connection which had to wait for table lock was
serviced by thread which previously serviced connection that was killed
(note that connections can reuse threads if thread cache is enabled).
One possible scenario which exposed this problem was when thread which
provided binlog dump to replication slave was implicitly/automatically
killed when the same slave reconnected and started pulling data through
different thread/connection.
In 5.* versions memory hogging was added to CPU hogging. Moreover in
those versions the problem also occured when one killed particular query
in connection (using KILL QUERY) and later this connection had to wait for
some table lock.
This problem was caused by the fact that thread-specific mysys_var::abort
variable, which indicates that waiting operations on mysys layer should
be aborted (this includes waiting for table locks), was set by kill
operation but was never reset back. So this value was "inherited" by the
following statements or even other connections (which reused the same
physical thread). Such discrepancy between this variable and THD::killed
flag broke logic on SQL-layer and caused CPU and memory hogging.
This patch tries to fix this problem by properly resetting this member.
There is no test-case associated with this patch since it is hard to test
for memory/CPU hogging conditions in our test-suite.
sql/mysqld.cc:
We should not forget to reset THD::mysys_var::abort after kill operation
if we are going to use thread to which this operation was applied for
handling of other connections.
into magare.gmz:/home/kgeorge/mysql/autopush/WL3527-5.1-opt
BitKeeper/deleted/.del-sql_parse.cc.rej:
Auto merged
BitKeeper/deleted/.del-table.cc.rej:
Auto merged
mysql-test/r/endspace.result:
Auto merged
mysql-test/t/group_by.test:
Auto merged
sql/item.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_help.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
BitKeeper/deleted/.del-mysqld.cc.rej~35c1c438e11ebd89:
Auto merged
mysql-test/r/group_by.result:
manual merge to 5.1-opt
sql/mysqld.cc:
manual merge to 5.1-opt
sql/sql_base.cc:
manual merge to 5.1-opt
sql/sql_select.cc:
manual merge to 5.1-opt
sql/table.h:
manual merge to 5.1-opt
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/51
mysql-test/r/trigger.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/50
sql/mysqld.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
into bodhi.local:/opt/local/work/mysql-5.1-runtime
mysql-test/r/trigger.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
sql/sql_class.cc:
Manual merge.
sql/sql_class.h:
Manual merge.
sql/sql_parse.cc:
Manual merge.
sql/sql_prepare.cc:
Manual merge.
sql/sql_yacc.yy:
Manual merge.
into bodhi.local:/opt/local/work/mysql-5.0-26750
sql/mysqld.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_class.h:
Manual merge.
fixes).
The legend: on a replication slave, in case a trigger creation
was filtered out because of application of replicate-do-table/
replicate-ignore-table rule, the parsed definition of a trigger was not
cleaned up properly. LEX::sphead member was left around and leaked
memory. Until the actual implementation of support of
replicate-ignore-table rules for triggers by the patch for Bug 24478 it
was never the case that "case SQLCOM_CREATE_TRIGGER"
was not executed once a trigger was parsed,
so the deletion of lex->sphead there worked and the memory did not leak.
The fix:
The real cause of the bug is that there is no 1 or 2 places where
we can clean up the main LEX after parse. And the reason we
can not have just one or two places where we clean up the LEX is
asymmetric behaviour of MYSQLparse in case of success or error.
One of the root causes of this behaviour is the code in Item::Item()
constructor. There, a newly created item adds itself to THD::free_list
- a single-linked list of Items used in a statement. Yuck. This code
is unaware that we may have more than one statement active at a time,
and always assumes that the free_list of the current statement is
located in THD::free_list. One day we need to be able to explicitly
allocate an item in a given Query_arena.
Thus, when parsing a definition of a stored procedure, like
CREATE PROCEDURE p1() BEGIN SELECT a FROM t1; SELECT b FROM t1; END;
we actually need to reset THD::mem_root, THD::free_list and THD::lex
to parse the nested procedure statement (SELECT *).
The actual reset and restore is implemented in semantic actions
attached to sp_proc_stmt grammar rule.
The problem is that in case of a parsing error inside a nested statement
Bison generated parser would abort immediately, without executing the
restore part of the semantic action. This would leave THD in an
in-the-middle-of-parsing state.
This is why we couldn't have had a single place where we clean up the LEX
after MYSQLparse - in case of an error we needed to do a clean up
immediately, in case of success a clean up could have been delayed.
This left the door open for a memory leak.
One of the following possibilities were considered when working on a fix:
- patch the replication logic to do the clean up. Rejected
as breaks module borders, replication code should not need to know the
gory details of clean up procedure after CREATE TRIGGER.
- wrap MYSQLparse with a function that would do a clean up.
Rejected as ideally we should fix the problem when it happens, not
adjust for it outside of the problematic code.
- make sure MYSQLparse cleans up after itself by invoking the clean up
functionality in the appropriate places before return. Implemented in
this patch.
- use %destructor rule for sp_proc_stmt to restore THD - cleaner
than the prevoius approach, but rejected
because needs a careful analysis of the side effects, and this patch is
for 5.0, and long term we need to use the next alternative anyway
- make sure that sp_proc_stmt doesn't juggle with THD - this is a
large work that will affect many modules.
Cleanup: move main_lex and main_mem_root from Statement to its
only two descendants Prepared_statement and THD. This ensures that
when a Statement instance was created for purposes of statement backup,
we do not involve LEX constructor/destructor, which is fairly expensive.
In order to track that the transformation produces equivalent
functionality please check the respective constructors and destructors
of Statement, Prepared_statement and THD - these members were
used only there.
This cleanup is unrelated to the patch.
sql/log_event.cc:
THD::main_lex is private and should not be used.
sql/mysqld.cc:
Move MYSQLerror to sql_yacc.yy as it depends on LEX headers now.
sql/sql_class.cc:
Cleanup: move main_lex and main_mem_root to THD and Prepared_statement
sql/sql_class.h:
Cleanup: move main_lex and main_mem_root to THD and Prepared_statement
sql/sql_lex.cc:
Implement st_lex::restore_lex()
sql/sql_lex.h:
Declare st_lex::restore_lex().
sql/sql_parse.cc:
Consolidate the calls to unit.cleanup() and deletion of lex->sphead
in mysql_parse (COM_QUERY handler)
sql/sql_prepare.cc:
No need to delete lex->sphead to restore memory roots now in case of a
parse error - this is done automatically inside MYSQLparse
sql/sql_trigger.cc:
This code could lead to double deletion apparently, as in case
of an error lex.sphead was never reset.
sql/sql_yacc.yy:
Trap all returns from the parser to ensure that MySQL-specific cleanup
is invoked: we need to restore the global state of THD and LEX in
case of a parsing error. In case of a parsing success this happens as
part of normal grammar reduction process.