Part of this work is based on Stewart Smitch's memory barrier and lower priori
patches for power8.
- Added memory syncronization for innodb & xtradb for power8.
- Added HAVE_WINDOWS_MM_FENCE to CMakeList.txt
- Added os_isync to fix a syncronization problem on power
- Added log_get_lsn_nowait which is now used srv_error_monitor_thread to ensur
if log mutex is locked.
All changes done both for InnoDB and Xtradb
support ha_innodb.so as a dynamic plugin.
* remove obsolete *,innodb_plugin.rdiff files
* s/--plugin-load=/--plugin-load-add=/
* MYSQL_PLUGIN_IMPORT glob_hostname[]
* use my_error instead of push_warning_printf(ER_DEFAULT)
* don't use tdc_size and tc_size in a module
update test cases (XtraDB is 5.6.14, InnoDB is 5.6.10)
* copy new tests over
* disable some tests for (old) InnoDB
* delete XtraDB tests that no longer apply
small compatibility changes:
* s/HTON_EXTENDED_KEYS/HTON_SUPPORTS_EXTENDED_KEYS/
* revert unnecessary InnoDB changes to make it a bit closer to the upstream
fix XtraDB to compile on Windows (both as a static and a dynamic plugin)
disable XtraDB on Windows (deadlocks) and where no atomic ops are available (e.g. CentOS 5)
storage/innobase/handler/ha_innodb.cc:
revert few unnecessary changes to make it a bit closer to the original InnoDB
storage/innobase/include/univ.i:
correct the version to match what it was merged from
A variable XTRADB_PREFER_STATIC_LIBAIO should be set to 1 (or TRUE
or ON) for static linking.
Even if mysqld can avoid dependency on shared libaio, shared libraries
libmysqld.so or ha_innodb.so cannot link without it.
Given that the patch primarily addresses building tar.gz package, and
shared libraries mentioned above deemed less important than mysqld
executable, we accept shared lib dependency on libaio.so
sql/sql_insert.cc:
CREATE ... IF NOT EXISTS may do nothing, but
it is still not a failure. don't forget to my_ok it.
******
CREATE ... IF NOT EXISTS may do nothing, but
it is still not a failure. don't forget to my_ok it.
sql/sql_table.cc:
small cleanup
******
small cleanup
Reason: inconsistent compilation, federatedx is compiled without SAFEMALLOC
flag, while anything else is compiled with SAFEMALLOC.
As a consequence, my_hash_init used inside federatedx initialization does not
provide correct caller info parameters (file, line) , so they are initialized with
whatever is on stack. When info about allocated memory is output in
COM_DEBUG command, the server crashes trying to output string starting at
0xcccccccccccccccc.
The fix is to remove SAFEMALLOC preprocessor flags
from every CMakeLists.txt, except the top-level one.
Also, SAFEMALLOC is not defined by default now, instead
there is WITH_DEBUG_FULL CMake option which adds
-DSAFEMALLOC to C and C++ flags in debug compilation.
This option is off by default, because
1) Debug C runtime already has heap debugging builtin with
overwrite and leak detection
2)safemalloc considerably slows down the tests.
Note also that
- SAFEMALLOC is gone in MySQL5.5
- On Windows, heap related overflows can also be found using free pageheap utility
(that is also part of application verifier). This is even more efficient if there are no other layers
on top of Windows heap allocator, e.g it is most efficient with release version.
- Remove all mentioning of /MAP /MAPINFO link options (does not work in VS2010).
Remove map files from packaging.
- Fix warning about ETIMEDOUT being redefined.
- Fix warning about FSP_EXTENT_SIZE in xtradb (32/64 bit right shift mismatch)
- Silence warnings coming from generated code (flex/bison) in xtradb/innodb_plugin.
- Be nice to people without cygwin (me) and add win/configure-mariadb.bat with options suitable for quick compilation, e.g no embedded
storage/federated/Makefile.am:
federated needs functions from mysys/string.c.
mysqld does not use them, so they don't get into the binary.
storage/federated/plug.in:
enable federated again.
remove it from all configurations.
storage/federatedx/Makefile.am:
federatedx is now called federatedx in configure
storage/federatedx/ha_federatedx.cc:
federatedx is now called federatedx in configure
storage/federatedx/plug.in:
federatedx is now called federatedx in configure
storage/innodb_plugin/plug.in:
enable innodb plugin again.
remove it from all configurations.
storage/xtradb/CMakeLists.txt:
xtradb is now called xtradb in configure,
and builds libxtradb.a and ha_xtradb.so
storage/xtradb/Makefile.am:
xtradb is now called xtradb in configure,
and builds libxtradb.a and ha_xtradb.so
storage/xtradb/handler/ha_innodb.cc:
xtradb is now called xtradb in configure,
and builds libxtradb.a and ha_xtradb.so
storage/xtradb/plug.in:
xtradb is now called xtradb in configure,
and builds libxtradb.a and ha_xtradb.so
.bzrignore:
XtraDB compiles innodb in storage/xtradb instead of storage/innobase
CMakeLists.txt:
Take InnoDB code from storage/xtradb/ instead of storage/innobase/
libmysqld/CMakeLists.txt:
Take InnoDB code from storage/xtradb/ instead of storage/innobase/
storage/innobase/plug.in.disabled:
Disable building old InnoDB from storage/innobase/ directory.
We will keep the files around to avoid getting merge conflicts for every MySQL upstream
change to InnoDB.
storage/xtradb/CMakeLists.txt:
Take InnoDB code from storage/xtradb/ instead of storage/innobase/
storage/xtradb/COPYING:
Remove not needed file from XtraDB.
storage/xtradb/Makefile.am:
Take InnoDB code from storage/xtradb/ instead of storage/innobase/
storage/xtradb/Makefile.in:
Remove not needed file from XtraDB.
storage/xtradb/handler/ha_innodb.cc:
Take InnoDB code from storage/xtradb/ instead of storage/innobase/
storage/xtradb/plug.in:
Take InnoDB code from storage/xtradb/ instead of storage/innobase/
storage/xtradb/row/row0ins.c:
Take InnoDB code from storage/xtradb/ instead of storage/innobase/