mirror of
https://github.com/MariaDB/server.git
synced 2025-01-24 07:44:22 +01:00
MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry.
amazon-web-servicesdatabasefulltext-searchgalerageographical-information-systeminnodbjsonmariadbmysqlrdbmsrelational-databasessqlstorage-enginevector-database
9534b8f1ec
The bug was found in rpl_stm_000001 testing. In essence the following happens SLAVE thread receives what happens start init THD and its temp_table (tt0) stop storing tt0 pointer to rli->save... start restoring temp_tables - new pointer tt1 executing regular binlog event DROP temp_table at the end of which tt1-refered list must be empty (slave_open_temp_tables == 0) but the pointer refers to tt0 location! shutdown end_slave calls cleaning of temp_tables and crashes. The reason of the crash is that tt1 values is not zero upon DROPing the single temp table. This is due to alg of removing links from temp_tables list which "adapted" 5.0 code but w/o accounting that thd->temporary_tables in slave thread in prone to freeing. Upon freeing there is no more original '0' value available to denote empty list. temporary_tables must not refer to any "external" location, one of which thd->temporary_tables represents (since belong to THD instance). The fix done in sql_base.cc for two functions, look at there for details. sql/sql_base.cc: refining prepend and remove link operation to thd->temporary_tables. The list turns to be "flat" double-linked, i.e "prev" accessor refers to an item instead of pointer to one as it was previously with "open_prev". On removal an invariant involving slave_open_temp_tables counter is checked. When it is zero thd->temporary_tables is set to zero explicitly. This can not be done, for what previous code hoped, because thd object changes when slave stop/start while slave's temporary_tables are maintained all the time, until reset/shutdow |
||
---|---|---|
BitKeeper | ||
BUILD | ||
client | ||
cmd-line-utils | ||
config/ac-macros | ||
dbug | ||
Docs | ||
extra | ||
include | ||
libmysql | ||
libmysql_r | ||
libmysqld | ||
man | ||
mysql-test | ||
mysys | ||
netware | ||
plugin | ||
pstack | ||
regex | ||
scripts | ||
server-tools | ||
sql | ||
sql-common | ||
storage | ||
strings | ||
support-files | ||
tests | ||
unittest | ||
VC++Files | ||
vio | ||
win | ||
zlib | ||
.bzrignore | ||
.cvsignore | ||
CMakeLists.txt | ||
configure.in | ||
COPYING | ||
Makefile.am | ||
README |
This is a release of MySQL, a dual-license SQL database server. MySQL is brought to you by the MySQL team at MySQL AB. License information can be found in these files: - For GPL (free) distributions, see the COPYING file. - For commercial distributions, see the MySQLEULA.txt file. For further information about MySQL or additional documentation, see: - The latest information about MySQL: http://www.mysql.com - The current MySQL documentation: http://dev.mysql.com/doc Some manual sections of special interest: - If you are migrating from an older version of MySQL, please read the "Upgrading from..." section first! - To see what MySQL can do, take a look at the features section. - For installation instructions, see the Installation chapter. - For future plans, see the TODO appendix. - For the new features/bugfix history, see the News appendix. - For the currently known bugs/misfeatures (known errors) see the problems appendix. - For a list of developers and other contributors, see the Credits appendix. A local copy of the MySQL Reference Manual can be found in the Docs directory in GNU Info format. You can also browse the manual online or download it in any of several formats at the URL given earlier in this file. ************************************************************ IMPORTANT: Bug or error reports should be sent to http://bugs.mysql.com.