Don't add service name to read config file segments if it's "MySQL"
Fixed possible memory leak when CHANGE USER failed.
include/mysql_com.h:
Change back service name to MySQL (With new, better spelling)
myisam/myisamchk.c:
Improved --help
sql/mysqld.cc:
Don't add service name to read config file segments if it's "MySQL"
sql/sql_parse.cc:
Fixed possible memory leak when CHANGE USER failed.
"If 2 master threads with same-name temp table, slave makes bad binlog"
and (two birds with one stone) for
BUG#1240 "slave of slave breaks when STOP SLAVE was issud on parent slave
and temp tables".
Here is the design change:
in a slave running with --log-slave-updates, events are now logged with the
thread id they had on the master. So no more id conflicts between master threads,
but introduces id conflicts between one master thread and one normal
client thread connected to the slave. This is solved by storing the server id
in the temp table's name.
New test which requires mysql-test-run to be run with --manager,
otherwise it will be skipped.
Undoing a Monty's change (hum, a chill runs down my spine ;) which was
"Cleanup temporary tables when slave ends" in ChangeSet 1.1572.1.1.
mysql-test/mysql-test-run.sh:
One new test which needs more than one slave so must be hardcoded in mysql-test-run.sh.
sql/log_event.cc:
The event needs to carry a slave_proxy_id (which is set at event's creation
and used at event's logging).
This is used for events created by ::exec_event() in the slave SQL thread:
now we want to log these events with the thread id they had on the master.
This is so that several same-name temp tables simultaneously created on
the master end up with not the same thread id in the slave's binlog.
sql/log_event.h:
Query and Load need to carry a slave_proxy_id, like they carried a thread_id
(to replicate temp tables well).
sql/slave.cc:
Do not free temp tables in the slave SQL thread. Or they will be lost when
one does STOP SLAVE / START SLAVE.
We even save them in rli->save_temporary_tables and set thd->temporary_tables=0
to prevent them to be freed.
sql/sql_base.cc:
Put the server id in the table cache key name for temp tables
(we already put the slave_proxy_id, but we also need the server id
in case normal clients (not slave threads) are using temp tables
on the slave).
sql/unireg.h:
4 more bytes, to store the server id.
mysql --install mysql --defualts-file=path-to-file
(Bug #1643)
include/mysql_com.h:
MySQL should install as default service "mysqld"
sql/mysqld.cc:
Fix for problem of installing MySQL as a service with
mysql --install mysql --defualts-file=path-to-file
If innodb_force_recovery >= 5, do not try to fetch an old version of a clustered index record: this reduces crashes when dumping tables from a corrupt database
innobase/row/row0sel.c:
If innodb_force_recovery >= 5, do not try to fetch an old version of a clustered index record: this reduces crashes when dumping tables from a corrupt database
max_user_connections is not set - that is no limit - so that when
max_user_connections is set (with SET) old connections are also
taken into account
mutexes are added where appropriate
BitKeeper/etc/logging_ok:
auto-union
sql/mini_client.cc:
Auto merged
client/mysqlbinlog.cc:
use local file
mysql-test/t/myisam.test:
Remove uncessesary drop table
sql/sql_parse.cc:
Use local
sql/sql_repl.cc:
use local
4.0.16 has been tagged and released
- tagged ChangeSet 1.1576.1.5 as "mysql-4.0.16"
configure.in:
- bumped up version number to 4.0.17 now that 4.0.16 has been tagged
and released
** I already fixed it in 3.23; I fix it in 4.0 separately because the
code is a bit different (so the changeset 1.1422 of 3.23 should not be
merged here) **
Make mysqlbinlog prompt for the password if
mysqlbinlog -p
instead of printing the usage().
This makes mysqlbinlog behave like other clients.
This new code was almost copied from mysqldump.
Note that before, one could use
mysqlbinlog -p pass
and now one must use
mysqlbinlog -ppass
(putting a space will ask for the password).
client/mysqlbinlog.cc:
Make mysqlbinlog prompt for the password if
mysqlbinlog -p
instead of printing the usage().
This makes mysqlbinlog behave like other clients.
This new code was almost copied from mysqldump.
Note that before, one could use
mysqlbinlog -p pass
and now one must use
mysqlbinlog -ppass
(putting a space will ask for the password).
Make mysqlbinlog prompt for the password if
mysqlbinlog -p
instead of printing the usage().
This makes mysqlbinlog behave like other clients, which is the reason
why we fix this in 3.23.
This new code was almost copied from mysqldump.
Note that before, one could use
mysqlbinlog -p pass
and now one must use
mysqlbinlog -ppass
(putting a space will ask for the password).
client/mysqlbinlog.cc:
Make mysqlbinlog prompt for the password if
mysqlbinlog -p
instead of printing the usage().
This makes mysqlbinlog behave like other clients, which is the reason
why we fix this in 3.23.
This new code was almost copied from mysqldump.
Note that before, one could use
mysqlbinlog -p pass
and now one must use
mysqlbinlog -ppass
(putting a space will ask for the password).
Check that writes to data files always happen in to addresses divisible by 16 kB, and the chunk size is also divisible by 16 kB; a user reported 2 corrupt pages from Linux-2.4.20 where an index page seemed displaced
innobase/os/os0file.c:
Check that writes to data files always happen in to addresses divisible by 16 kB, and the chunk size is also divisible by 16 kB; a user reported 2 corrupt pages from Linux-2.4.20 where an index page seemed displaced
Check that writes to data files always happen in to addresses divisible by 16 kB, and the chunk size is also divisible by 16 kB; a user reported 2 corrupt pages from Linux-2.4.20 where an index page seemed displaced
innobase/os/os0file.c:
Check that writes to data files always happen in to addresses divisible by 16 kB, and the chunk size is also divisible by 16 kB; a user reported 2 corrupt pages from Linux-2.4.20 where an index page seemed displaced
Backport from 4.1: reduce InnoDB memory consumption if buf pool < 8 MB
sql/ha_innodb.cc:
Backport from 4.1: reduce InnoDB memory consumption if buf pool < 8 MB
innobase/include/os0thread.h:
Backport from 4.1: reduce InnoDB memory consumption if buf pool < 8 MB
innobase/include/srv0srv.h:
Backport from 4.1: reduce InnoDB memory consumption if buf pool < 8 MB
innobase/srv/srv0srv.c:
Backport from 4.1: reduce InnoDB memory consumption if buf pool < 8 MB
innobase/srv/srv0start.c:
Backport from 4.1: reduce InnoDB memory consumption if buf pool < 8 MB
innobase/thr/thr0loc.c:
Backport from 4.1: reduce InnoDB memory consumption if buf pool < 8 MB
to enable SHOW SLAVE STATUS again.
mysql-test/r/rpl_trunc_binlog.result:
enabling SHOW SLAVE STATUS again.
mysql-test/t/rpl_trunc_binlog.test:
enabling SHOW SLAVE STATUS again
while the slave is connected.
mysql-test/t/rpl_trunc_binlog.test:
don't RESET MASTER while the slave is connected; this could confuse the master or slave.
(In replication you don't RESET MASTER while a slave is connected!)
sql/slave.cc:
typo
Portability fix (For Mac OS X)
configure.in:
Added detection of malloc / sys/malloc
include/my_pthread.h:
Safety fix to detect multiple calls to my_thread_end()
libmysqld/lib_sql.cc:
Remove duplicate call to my_thread_end()
mysys/charset.c:
Cleanup indentation
Remove some short variable names
mysys/my_thr_init.c:
Safety fix to detect multiple calls to my_thread_end()
sql/sql_test.cc:
Portability fix (For Mac OS X)
sql/sql_select.cc:
back to the bug #1274:
the following query
EXPLAIN SELECT SQL_CALC_FOUND_ROWS race_name
FROM races WHERE race_name LIKE '%Madison%' ORDER BY race_date DESC LIMIT 0,100
+-------+------+---------------+------+---------+------+--------+-----------------------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+------+---------------+------+---------+------+--------+-----------------------------+
| races | ALL | NULL | NULL | NULL | NULL | 505821 | Using where; Using filesort |
+-------+------+---------------+------+---------+------+--------+-----------------------------+
The query returns no rows.
There are two problems with it:
- wrong access plan is chosed (sequential index scan in reverse order,
which is VERY SLOW in case of MyISAM table + packed keys)
It's wrong, because it doesn't take into account that SQL_CALC_FOUND_ROWS
is present, in other words, is based on assumtion that LIMIT
clause decrease number of rows to access significantly, which is
not true as all rows are accessed.
- the access plan is not shown in the EXPLAIN (bug #1560). I'm not
fixing it here