Essentially, the problem is that safemalloc is excruciatingly
slow as it checks all allocated blocks for overrun at each
memory management primitive, yielding a almost exponential
slowdown for the memory management functions (malloc, realloc,
free). The overrun check basically consists of verifying some
bytes of a block for certain magic keys, which catches some
simple forms of overrun. Another minor problem is violation
of aliasing rules and that its own internal list of blocks
is prone to corruption.
Another issue with safemalloc is rather the maintenance cost
as the tool has a significant impact on the server code.
Given the magnitude of memory debuggers available nowadays,
especially those that are provided with the platform malloc
implementation, maintenance of a in-house and largely obsolete
memory debugger becomes a burden that is not worth the effort
due to its slowness and lack of support for detecting more
common forms of heap corruption.
Since there are third-party tools that can provide the same
functionality at a lower or comparable performance cost, the
solution is to simply remove safemalloc. Third-party tools
can provide the same functionality at a lower or comparable
performance cost.
The removal of safemalloc also allows a simplification of the
malloc wrappers, removing quite a bit of kludge: redefinition
of my_malloc, my_free and the removal of the unused second
argument of my_free. Since free() always check whether the
supplied pointer is null, redudant checks are also removed.
Also, this patch adds unit testing for my_malloc and moves
my_realloc implementation into the same file as the other
memory allocation primitives.
starting via mysqld_safe
Rather than hardcode the plugin directory, enhance mysql_config
to fix plugin path when running a relocated install, and use it
to provide the plugin directory to mysqld_safe.
Unresolved reference to 'innodb_system_libs' in "mysql_config"
In 5.4.2, we use InnoDB 1.0.4 which does file IO via separate
threads, opposed to the use of asynchronous IO previously.
So there is no InnoDB call to "aio_read()" which was searched
in "librt", causing a "-lrt" value of "innodb_system_libs",
that whole variable is gone.
This fix was applied in the build of 5.4.2-beta.
mysql_config did not output -ldl (or equivalent) when needed for --libmysqld-libs,
so its output could be insufficient to build an application using the embedded
server.
LIBDL was already set in configure; it's now propagated all the way into the
relevant mysql_config scripts.
mysql_config --cflags gave a flag that forced the HP/UX
C++ compiler into C-mode; as a result, C++ sources could
not be compiled correctly.
We now filter out the offending flag (like we do for Sun)
so that --cflags will work for both C and C++.
Add -lmygcc to mysql_config output for libs, libs_r, and embedded_libs.
Required when linking against our static libs, if yassl is used, and gcc
used to build library is significantly different from that which is using
the library.
and allow override for binary distributions. Extend mysql_config
to print compiled-in plugin location for third-party plugins to
use. Resolves bug#31736.
make sure that if builder configured with a non-standard (!= 3306)
default TCP port that value actually gets used throughout. if they
didn't configure a value, assume "use a sensible default", which
will be read from /etc/services or, failing that, from the factory
default. That makes the order of preference
- command-line option
- my.cnf, where applicable
- $MYSQL_TCP_PORT environment variable
- /etc/services (unless configured --with-tcp-port)
- default port (--with-tcp-port=... or factory default)
Corrected spelling in copyright text
Makefile.am:
Don't update the files from BitKeeper
Many files:
Removed "MySQL Finland AB & TCX DataKonsult AB" from copyright header
Adjusted year(s) in copyright header
Many files:
Added GPL copyright text
Removed files:
Docs/Support/colspec-fix.pl
Docs/Support/docbook-fixup.pl
Docs/Support/docbook-prefix.pl
Docs/Support/docbook-split
Docs/Support/make-docbook
Docs/Support/make-makefile
Docs/Support/test-make-manual
Docs/Support/test-make-manual-de
Docs/Support/xwf
Revert to shell test script for test targets
mysqltest.c:
Windows pclose() returns error code in low byte
mysql_config.sh:
Remove -Xa -xstrconst from --cflags for Sun C++
Speed up column-completion in 'mysql'
Don't use ISAM if HAVE_ISAM is not defined
A lot of fixes for the embedded version. All libraries are now included in libmysqld.a
Changed arguments to convert_dirname() to make it more general.
Renamed files in the 'merge' directory to all use a common prefix.
Don't compile both assembler and C functions on x86