Option "--without-server" still not working in 5.1
The general approach is to make sure that source files
which require thread support are only compiled if the build
really needs thread support,
which means when the server is built or a thread-safe client
library.
This required several changes:
- Make sure the subdirectories "storage/" and "plugin/" are
only processed if the server is built, not ifclient-only.
- Make the compilation of some modules which inherently
require threading depend on thread supportin the build.
- Separate the handling of threading in "configure.in" from
that of server issues, threading is also needed in a
non-server build of a thread-safe client library.
Also, "libdbug" must get built even in a client-only build,
so "dbug/" must be in the list of client directories.
In addition, calls to thread functions in source files which
can be built without thread support must use the wrapper
functions which handle the non-threaded build.
So the modules "client/mysqlimport.c" and "client/mysqlslap.c"
must call "my_thread_end()" only via "mysql_thread_end()".
Makefile.am:
The directories "storage/" and "plugin/" contain files
which are needed for the server only, so their contents
is to be built only if a server is built.
They must not be named unconditionally, because building
their contents will fail unless threads are enabled.
These directories are now listed in the "configure"
variable "sql_server_dirs" which becomes part of
"sql_union_dirs" if the server is to be built.
client/mysqlimport.c:
Use the wrapper function "mysql_thread_end()" which
correctly handles the case of a non-threaded build.
client/mysqlslap.c:
Use the wrapper function "mysql_thread_end()" which
correctly handles the case of a non-threaded build.
configure.in:
Various changes to support builds "--without-server":
1) For the unit tests, we need "libdbug".
2) Separate the treatment of the server from that of the
thread-safe client library.
3) Introduce an "automake conditional" "NEED_THREAD"
which can be checked in some "Makefile.am".
4) Include "storage/" and "plugin/" in the list of
"sql_server_dirs" so that they are handled in the
top "Makefile.am" only if the server is to be built
(see the change in that file).
mysys/Makefile.am:
The code of "mf_keycache.c" in 5.1 is no longer safe
to be built without thread support.
(In 5.0, this was possible.)
Rather than fix these issues, which is tedious and risky,
avoid the need to ever build it without thread support:
It is needed in the server only, which needs thread support.
The only case where we build a "libmysys" without thread
support is for a non-threaded client, where "mf_keycache"
is not neded.
So its inclusion in the list of source files can depend
on the new conditional "NEED_THREAD".
unittest/mysys/Makefile.am:
Test program "my_atomic-t" is to verify the correct handling
of threads only, it cannot be built without thread support
and is not needed in such cases either.
Let its build depend on the new conditional "NEED_THREAD".
mysql-test/t/partition.test
sql/ha_partition.cc
Bug#40954: Crash in MyISAM index code with concurrency test using partitioned tables
Problem was usage of read_range_first with an empty key.
Solution was to not to give a key if it was empty. (real author Mattias Jonsson)
storage/archive/archive_reader.c
client/mysqlslap.c
Aligned the copyright texts output from "--version" of tools, to
let internal tools be able to change them if needed.
storage/ndb/test/tools/connect.cpp
storage/ndb/test/run-test/atrt.hpp
Corrected a few GPL headers not restricted to GPL version 2
Makefile.am
Added missing --report-features to the 'test-bt-fast' target
support-files/mysql.spec.sh
Reversed the removal of the "%define license GPL" in as internal
tools depended on it
- Removed some copy/paste between debug and normal build in RPM spec
- Removed "mysql_upgrade_shell" from RPM build
- Removed use of "grep -q" in "configure.in", not portable
- Improved test to disable ABI check not to accidently run for icc
Other changes
- Added make file test targets 'test-bt-fast' and 'test-bt-debug-fast'
- Reenabled "jp" test suite run
1) Disabled abi_check rule for all compilers except gcc
2) restored the -dI option to retain the header information.
Makefile.am:
1) changed all-local to depend on a configure variable
that will be set based on if the compiler is gcc.
2) restored the -dI option removed earlier since now
only gcc is being used.
configure.in:
Added a check to see if gcc is being used. If it is being
used set the ABI_CHECK variable to the abi_check target.
include/mysql.h.pp:
The .pp file is changed to correspond to the option
-dI.
1) Remove solaris sparc specific output produced by the
pre-processor in the .out files
2) Ensure compatibility of preprocessor options for solaris/sparc
platform.
Makefile.am:
1) Added a sed regular expression to remove output produced
by the preprocessor in the solaris sparc platform
2) Removed the -dI option from the preprocessor to enable
solaris/sparc compatibility
include/mysql.h.pp:
Since the -dI option has been removed from the preprocessor
the .pp files will correspondingly change.
fixed the abi_check rule to handle failure in the
diff command on the solaris platform.
Makefile.am:
Removed the -B option from the diff command used
on the abi_check rule.
1) When gcc -E is run in the Mac OS it introduces a line of
output that results in showing up as a difference between
the .pp and .out files. Removed this OS specific preprocessor
text inserted by the preprocessor in the MAC OS. Added a sed
regular expression to remove MAC OS specific pre-processor
text.
2) Added the -w option to diff to remove the differences in
output being caused in solaris.
Makefile.am:
1) When gcc -E is run in the Mac OS it introduces a line of
output that results in showing up as a difference between
the .pp and .out files. Removed this OS specific preprocessor
text inserted by the preprocessor in the MAC OS. Added a sed
regular expression to remove MAC OS specific pre-processor
text.
2) Added the -w option to diff to remove the differences in
output being caused in solaris.
Modified the abi_check command to ignore space
differences between the .pp and the .out files.
Makefile.am:
Modified the abi_check command to ignore space
differences between the .pp and the .out files.
1) Modified abi_check rule to not write into the
distribution directory.
2) Added the .pp files to EXTRA_DIST so that it will
be included in the distribution
Makefile.am:
Modified the abi_check rule to not generate the
.out files in the distribution directory.
include/Makefile.am:
Added the EXTRA_DIST entry for plugin.h.pp and
mysql.h.pp so that they will be included while
creating the distribution.
Modified the abi_check target to check for only
mysql.h and plugin.h for now.
Makefile.am:
added two targets,
abi_check - compiles without mysql_priv.h
abi_check_all - compiles with mysql_priv.h
added a rule that use gcc to generate preprocessor output (gcc -E)
that can be then compared to a already generated output using
the diff utility.
Ran make test on the repository to verify changes.
Makefile.am:
Added a rule for checking that the abi/api has not changed.
The following steps are followed in the rule in makefile.am
1) Generate preprocessor output for the files that need to
be tested for abi/api changes. use -nostdinc to prevent
generation of preprocessor output for system headers. This
results in messages in stderr saying that these headers
were not found. Redirect the stderr output to /dev/null
to prevent seeing these messages.
2) sed the output to remove blank lines and lines that begin
with # (The header information is retained to enable easy
analysis of abi diffs at a later stage).
3) diff the generated file and the canons (.pp files already in
the repository).
4) delete the .out file that is generated.
If the diff fails, the generated file is not removed. This will
be useful for analysis of ABI differences (e.g. using a visual
diff tool).
A ABI change that causes a build to fail will always be
accompanied by new canons (.out files). The .out files that
are not removed will be replaced as the new .pp files.
e.g. If include/mysql/plugin.h has an ABI change then this
rule would leave a include/mysql/plugin.out file.
A developer with a justified API change will then do a
mv include/mysql/plugin.out include/mysql/plugin.pp to
replace the old canons with the new ones.
configure.in:
1) Removed the part of the file that was icheck related.
2) Added an entry for the configure variable DIFF
include/mysql.h.pp:
The pre-processor output canon file for include/mysql.h
include/mysql/plugin.h.pp:
The pre-processor output canon file for include/mysql/plugin.h
include/mysql_h.ic:
since the icheck target has been removed, this file need
no longer be present in the repository
sql/mysql_priv.h.pp:
The pre-processor output canon file for sql/mysql_priv.h
Fix for this bug and additional improvements/fixes
In detail:
- Remove unicode attribute from several columns
(unicode properties were nowhere needed/tested)
of the table tb3
-> The runnability of these tests depends no more on
the availibility of some optional collations.
- Use a table tb3 with the same layout for all
engines to be tested and unify the engine name
within the protocols.
-> <engine>_trig_<abc>.result have the same content
- Do not load data into tb3 if these rows have no
impact on result sets
- Add tests for NDB (they exist already in 5.1)
- "--replace_result" at various places because
NDB variants of tests failed with "random" row
order in results
This fixes a till now unknown weakness within the
funcs_1 NDB tests existing in 5.1 and 6.0
- Fix the expected result of ndb_trig_1011ext
which suffered from Bug 32656
+ disable this test
- funcs_1 could be executed with the mysql-test-run.pl
option "--reorder", which saves some runtime by
optimizing server restarts.
Runtimes on tmpfs (one attempt only):
with reorder 132 seconds
without reorder 183 seconds
- Adjust two "check" statements within func_misc.test
which were incorrect (We had one run with result set
difference though the server worked good.)
- minor fixes in comments
into bodhi.(none):/opt/local/work/mysql-5.1-27430
Makefile.am:
Auto merged
include/my_global.h:
Auto merged
mysql-test/include/mix1.inc:
Auto merged
sql/item.cc:
Auto merged
sql/my_decimal.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/set_var.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
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_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_yacc.yy:
Auto merged
libmysqld/CMakeLists.txt:
Manual merge.
libmysqld/lib_sql.cc:
Manual merge.
mysql-test/t/disabled.def:
Manual merge.
Add test target to the makefile that will cause all
statements to be re-prepared before execution.
Makefile.am:
Add test-reprepare target. In combination with the
--ps-protocol this will cause that every statement
in the test suite be re-prepared before execution.
sql/sql_base.cc:
Re-prepare each statement before execution.
Add ChangeLog if it exists
- Removed separate 'normal+rowrepl' test run, not needed any longer
- Removed separate 'rpl' test run, included in main test run already
- Renamed some test "comments", to use similar naming style
- Limited one of the Cluster test runs to 'ndb' and 'rpl_ndb' suites
- Reordered test runs, to be aligned with Windows test runs
mysql.spec.sh:
- No longer including the "Example" storage engine
- Added to configure "--without-ENGINE" if not to compile engine as plugin
Docs/Makefile.am:
Add ChangeLog if it exists
Makefile.am:
- Removed separate 'normal+rowrepl' test run, not needed any longer
- Removed separate 'rpl' test run, included in main test run already
- Renamed some test "comments", to use similar naming style
- Limited one of the Cluster test runs to 'ndb' and 'rpl_ndb' suites
- Reordered test runs, to be aligned with Windows test runs
support-files/mysql.spec.sh:
- No longer including the "Example" storage engine
- Added to configure "--without-ENGINE" if not to compile engine as plugin
If excluding Federated, make sure dynamic plugin is not built
Makefile.am:
Only run cluster test when compiled with cluster
lib_sql.cc:
Work around for Visual Studio 2003, that lacks vsnprintf() but has _vsnprintf()
Makefile.am:
Only run cluster test when compiled with cluster
libmysqld/lib_sql.cc:
Work around for Visual Studio 2003, that lacks vsnprintf() but has _vsnprintf()
support-files/mysql.spec.sh:
If excluding Federated, make sure dynamic plugin is not built
into debian.(none):/MySQL/M51/indent-5.1
Manual merge of a formatting change.
Makefile.am:
Manual merge of the formatting change in 5.0,
the test actions differ so much that automerge doesn't work.
Formatting change to improve readability of the "test-*" targets.
Makefile.am:
Formatting change to improve readability:
In multi-line actions, indent the continuation lines
so that the start of the next statement is better visible.
This affects only "test-*" targets.