Commit graph

65836 commits

Author SHA1 Message Date
unknown
a967802ae9 Fix of the debugging print. 2010-11-18 16:10:11 +02:00
unknown
0de9a4abab MWL#74: Shared libmysqld.so library.
Switch makefiles to use libtool to build libmysqld.so, as well as all its
dependencies.

The previous MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS() declaration is removed,
as it does not work well with a libtool build. Instead, plugins that need it
can specify an alternate object in MYSQL_PLUGIN_STATIC() that will be used for
embedded library. The plugin must then take care itself of compiling the
special object for embedded, rebuilding the source files previously listed in
MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS() with @plugin_embedded_defs@ in
CFLAGS/CXXFLAGS. The extra target @XXX_embedded_static_target@ is available
for the special object, this will be empty when --without-embedded-server.

All in-tree plugins are changed to build their static targets with libtool.
Additional plugins that want to work with libmysqld.so will need to be
similarly modified to build with libtool (or otherwise provide an -fPIC
object). Dynamically loaded plugins are not affected.

The old libraries like libmysys.a, libmyisam.a and similar libraries, which
were installed by `make install` though this is of little use, are still built
and installed to not break package scripts etc. that expect them. These
libraries are kept static to avoid introducing new .so dependencies.

The patch also fixes a handfull of duplicate symbol linker errors, where we
included some object twice during linking; these for one reason or another did
not produce errors before but caused problems on some platforms with this
patch (eg. Mac OS X linker is more strict for shared objects).

This patch only does what is necessary to build libmysqld.so. There are some
more cleanups that are possible now that we are using libtool more fully,
which could done in subsequent patches (though we may not bother as we are
switching from autotools to CMake anyway):

 - In libmysql_r/, we should be able to just link libmysys.la etc, instead of
   symlinking and re-compiling sources into the directory.

 - In libmysql/, we can similarly avoid symlinking and recompiling sources if
   we instead build a libmysys_nothread.la library with appropriate CFLAGS and
   link that.

 - In sql/, we can build a separate target libmysql_int.la with appropriate
   CFLAGS for embedded and use that in libmysqld/ instead of symlinking
   sources.

 - libmysys.a, libmyisam.a and similar libraries could be installed as .so
   also to save on code size; or alternatively could be not installed at all.


client/Makefile.am:
  Updated for using libtool
config/ac-macros/plugins.m4:
  Replace MUSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS with mechanism for plugins
  to specify alternate object for embedded.
configure.in:
  Fix linking duplicate objects related to THREAD_LOBJECTS.
dbug/Makefile.am:
  Updated for using libtool
extra/Makefile.am:
  Fix relative paths.
libmysqld/Makefile.am:
  Build libmysqld.la using libtool
libmysqld/examples/Makefile.am:
  Updated to use libtool
mysys/Makefile.am:
  Updated to use libtool.
  Fix linking duplicate objects related to THREAD_LOBJECTS.
mysys/my_uuid.c:
  Fix conflicting global mutex name by making it static.
regex/Makefile.am:
  Updated to use libtool
sql/Makefile.am:
  Updated to use libtool
sql/item_func.cc:
  Fix conflicting mutex name.
sql/mysql_priv.h:
  Fix conflicting mutex name
sql/mysqld.cc:
  Fix conflicting mutex name.
  Add missing call of my_uuid_end().
storage/archive/Makefile.am:
  Updated to use libtool
storage/archive/plug.in:
  Updated to use libtool
storage/blackhole/Makefile.am:
  Updated to use libtool
storage/blackhole/plug.in:
  Updated to use libtool
storage/csv/Makefile.am:
  Updated to use libtool
storage/csv/plug.in:
  Updated to use libtool
storage/example/Makefile.am:
  Updated to use libtool
storage/federated/Makefile.am:
  Updated to use libtool
storage/federated/plug.in:
  Updated to use libtool
storage/federatedx/Makefile.am:
  Updated to use libtool
storage/federatedx/plug.in:
  Updated to use libtool
storage/heap/Makefile.am:
  Updated to use libtool
storage/heap/plug.in:
  Updated to use libtool
storage/innobase/Makefile.am:
  Updated to use libtool
storage/innobase/plug.in.disabled:
  Updated to use libtool
storage/innodb_plugin/Makefile.am:
  Updated to use libtool
storage/maria/CMakeLists.txt:
  Fix linking duplicate object in maria_dump_log, causes failure on Mac OS X
storage/maria/Makefile.am:
  Updated to use libtool
  Fix linking duplicate object in maria_dump_log, causes link failure on Mac OS X
storage/maria/ma_loghandler.c:
  Move maria_dump_log code to separate file to fix duplicate object link failures.
storage/maria/ma_loghandler.h:
  Move maria_dump_log code to separate file to fix duplicate object link failures.
storage/maria/maria_dump_log.c:
  Move maria_dump_log code to separate file to fix duplicate object link failures.
storage/maria/plug.in:
  Updated to use libtool
storage/myisam/Makefile.am:
  Updated to use libtool
storage/myisam/plug.in:
  Updated to use libtool
storage/myisammrg/Makefile.am:
  Updated to use libtool
storage/myisammrg/plug.in:
  Updated to use libtool
storage/pbxt/plug.in:
  Updated to use libtool
storage/pbxt/src/Makefile.am:
  Updated to use libtool
storage/xtradb/Makefile.am:
  Updated to use libtool
storage/xtradb/plug.in:
  Updated to use libtool
strings/Makefile.am:
  Updated to use libtool
unittest/unit.pl:
  Don't attempt to run libtool internal files as unit tests.
vio/Makefile.am:
  Updated to use libtool
2010-11-17 13:24:20 +01:00
Michael Widenius
0543e2e34e Merge to get make String reallocation faster 2010-11-16 19:52:44 +02:00
Igor Babaev
e25ac681c9 Fixed LP bug #675516.
When pushing the condition for a table in the function
JOIN_TAB::make_scan_filter the optimizer must not push
conditions from WHERE if the table is some inner table
of an outer join..
2010-11-15 21:07:32 -08:00
Igor Babaev
42cd36431b Fixed LP bug #675095.
The condition over outer tables extracted from the on expression
for a outer join must be ANDed to the condition pushed to the
first inner table of this outer join only.
Nested outer joins cannot use flat join buffers. So if join_cache_level
is set to 1 then any join algorithm employing join buffers cannot be used
for nested outer joins.
2010-11-14 23:38:25 -08:00
Sergey Petrunya
c635eb3319 Remove .moved files 2010-11-15 04:59:45 +03:00
Sergey Petrunya
9ab54acbf0 Merge MWL#121-125 DS-MRR improvements into MWL#128 Classic hash join tree 2010-11-15 04:45:49 +03:00
Igor Babaev
9441a9cc28 Fixed LP bug #674423.
The patch that introduced the new enumeration type Match_flag
for the values of match flags in the records put into join buffers
missed the necessary modifications in JOIN_CACHE::set_match_flag_if_none.
This could cause wrong results for outer joins with on expressions
only over outer tables.
2010-11-13 07:47:43 -08:00
Igor Babaev
9259ef4c7c Merge 2010-11-13 06:35:54 -08:00
Igor Babaev
4e5911733a Fixed LP bug #674431.
A non-incremental join buffer cannot be used for inner tables of nested
outer joins. That's why when join_cache_level is set to 7 it must
be downgraded to level 6 for the inner tables of nested outer joins.
For the same reason with join_cache_level set to 3 no join buffer is
used for the inner tables of outer joins (we could downgrade it to
level 2, but this level does not support ref access).
2010-11-13 06:13:34 -08:00
Igor Babaev
6cd2a66820 Corrected the fix for LP bug 672551. 2010-11-12 16:53:20 -08:00
Igor Babaev
46fe431818 Merge 2010-11-11 16:59:08 -08:00
Igor Babaev
d9bbc64016 Fixed LP bug #672551.
Made sure that the function that copy a long varchar field from the record
buffer into a key buffer does not copy bytes after the field value.
2010-11-11 16:41:52 -08:00
Igor Babaev
47b0f36911 Merge 2010-11-11 16:38:55 -08:00
Igor Babaev
92772d6d46 Fixed LP bug#672497.
Miscalculation of the minimum possible buffer size could trigger
an assert in JOIN_CACHE_HASHED::put_record when if join_buffer_size
was set to the values that is less than the length of one record to
stored in the join buffer.
It happened due to the following mistakes:
- underestimation of space needed for a key in the hash table
  (we have to take into account that hash table can have more
  buckets than the expected number of records).
- the value of maximum total length of all records stored in
  the join buffer was not saved in the field max_used_fieldlength
  by the function calc_used_field_length.
2010-11-11 15:35:11 -08:00
Sergey Petrunya
881f52fee7 Merge in LPBUG#602574 2010-11-11 14:35:26 +02:00
Sergei Golubchik
01d41622ba fix for bug#673634:
better MYSQL_PLUGIN_WITHOUT that works correctly in all of the following:
--with-plugin-XXX
--without-plugin-XXX
--with-plugins=XXX
--with-plugins=META
--with-plugins=XXX --without-plugin-XXX
--with-plugins=META --without-plugin-XXX
2010-11-11 12:02:14 +01:00
Igor Babaev
24f6a2ec4b Merge 2010-11-10 14:34:37 -08:00
Igor Babaev
6e5bcca793 Merge 2010-11-09 19:40:02 -08:00
Sergey Petrunya
3d698ac616 BUG#671361: virtual int Mrr_ordered_index_reader::refill_buffer(): Assertion `!know_key_tuple_params
- Make sure we have enough space for both rowids and keys.
2010-11-09 18:02:08 +02:00
unknown
7a28f61ded MBug#643463: Slow XtraDB shutdown: Fix more sleeps delaying shutdown.
This patch removes most remaining delays due to uninteruptible sleep()
during shutdown, as found using PMP. This makes standard test run very
close in speed to with --loose-innodb-fast-shutdown=2, and greatly
speeds up running the test suite.

sql/mysqld.cc:
  Poll for threads to die every 20 msec during shutdown, rather than force
  a wait for 2 full seconds should one thread be a little slow to exit
  (this was seen occasionally in mysql-test-run).
storage/xtradb/include/srv0srv.h:
  Rename the event, as we now use it to wakeup more threads during shutdown.
storage/xtradb/log/log0log.c:
  Rename the event, as we now use it to wakeup more threads during shutdown.
storage/xtradb/srv/srv0srv.c:
  Replace some hardcoded sleep()s with os_wait_event_time() that can be
  interrupted early during server shutdown to avoid unnecessary delays.
2010-11-09 15:03:57 +01:00
unknown
7a80bf165b Fix flags for non-debug builds 2010-11-16 14:16:19 +02:00
unknown
769f6dea9d Fixed mess in the types. 2010-11-16 12:32:36 +02:00
Michael Widenius
d95cbe369c Fixed bug discovered by testcase for LP#618558 (original bug seams to be fixed):
- Fixed bug in pagecache_delete_internal() when deleting block that was flushed by another thread (fixed bug when block->next_used was unexpectedly null)
Fixed some using uninitialized memory warnings found by valgrind. 

mysql-test/t/information_schema_all_engines-master.opt:
  Added options to make slow test run faster
sql/sp.cc:
  Fixed valgrind warning.
sql/sql_show.cc:
  Fixed valgrind warning.
storage/maria/ma_bitmap.c:
  Fixed wrong call parameter to pagecache_unlock_by_link() that caused assert crash in pagecache
storage/maria/ma_pagecache.c:
  Fixed possible error in pagecache_wait_lock() when hash_link was not set. (We never hit this issue, but could be possible when two threads updates the same page.
  Fixed bug in pagecache_delete_internal() when deleting block that was flushed by another thread (fixed bug when block->next_used was unexpectedly null)
  Cleanup: moved pagecache_pthread_mutex_unlock() over comments and asserts to be just before pagecache_fwrite()
2010-11-15 22:44:41 +02:00
Sergey Petrunya
594a8648ef Add optimizer_unfixed_bugs tests/results to the list of installed files 2010-11-09 15:41:10 +02:00
Sergey Petrunya
b14e9bcf7e Merge in: Include optimizer_unfixed_bugs testsuite in buildbot runs 2010-11-09 13:35:16 +02:00
Sergey Petrunya
a2da3692c4 Include optimizer_unfixed_bugs testsuite in buildbot runs 2010-11-09 13:30:35 +02:00
unknown
05f21b21e4 Fixed LP BUG#615378 Incorrect processing of NULL result in Item_cache fixed. 2010-11-09 13:13:56 +02:00
Michael Widenius
aa34668f64 automatic merge 2010-11-09 10:20:09 +02:00
Michael Widenius
9e008bd726 Removed version number from test case
mysql-test/suite/maria/t/compat_aliases.test:
  Removed column with version number
sql/sql_show.cc:
  Fixed compiler warning
2010-11-09 10:17:36 +02:00
Sergey Petrunya
b67be0b23b Fix buildbot failure introduced by the previous push 2010-11-09 09:52:22 +02:00
Igor Babaev
6b67bafc74 Fixed LP bug #668644.
The pushdown condition for the sorted table in a query can be complemented
by the conditions from HAVING. This transformation is done in JOIN::exec
pretty late after the original pushdown condition have been saved in the
field pre_idx_push_select_cond for the sorted table. So this field must
be updated after the inclusion of the condition from HAVING.
2010-11-08 20:36:32 -08:00
Sergey Petrunya
ea13c77652 Fix buildbot failures caused by two previous pushes. 2010-11-08 23:25:12 +02:00
Sergey Petrunya
476e90fc97 Fix buildbot errors: rec_per_key_part can be 0 if re-opening 2010-11-08 20:51:31 +03:00
Sergey Petrunya
0fb342ba56 BUG#670417: Diverging results in maria-5.3-mwl128-dsmrr-cpk with join buffer, attempt 4
- Disable identical key handling optimization when
  IndexConditionPushdown is used
2010-11-08 20:37:01 +03:00
Sergey Petrunya
7b33534b47 [Patch from Monty] Fix stack-overrun crash in subselect_notembedded.test
- Make mi_open() use less stack space
2010-11-08 19:06:26 +03:00
Sergey Petrunya
197c99427d DS-MRR improvements
- Code cleanup
- Always propagate the error code we got from storage engine all the way up
2010-11-08 15:15:50 +03:00
Michael Widenius
7b047a31a0 Make SQLString reallocation addaptive
Avoid doing reallocs
Prealloc some strings / provide extension allocation size to some strings
This gave a 25 % speedup in some mysql-test-run tests.



mysys/safemalloc.c:
  More DBUG_PRINT
sql/net_serv.cc:
  Make all mallocs() look the similar. (just-for-safety fix)
sql/protocol.cc:
  Ensure that communication packet buffer is allocated.
  (It's freed by stored precedures and some DLL statements)
sql/sp.cc:
  Fixed valgrind warning
sql/sql_select.cc:
  Set extent allocation for buffer that has a lot of append() calls.
sql/sql_show.cc:
  Fixed wrong usage of string buffer. Old code worked in test suite 'just-by-chance'
sql/sql_string.cc:
  Call realloc_with_extra_if_needed() in append() functions.
sql/sql_string.h:
  Added 'extra_alloc' member, to specify chunck size for realloc().
  extra_alloc is addaptive to catch cases where preallocation of buffers is not done properly.
  Simplified free() to allow compiler to optimize things better (and to keep things consistent).
  Fixed shrink() to take into account the extra memory added to the Alloced_length in realloc(). This saves us a realloc() per query.
sql/sql_test.cc:
  Set extent allocation for buffer that has a lot of append() calls.
sql/table.cc:
  Set extent allocation for buffer that has a lot of append() calls.
2010-11-08 13:43:54 +02:00
Igor Babaev
74d18e93c6 Fixed LP bug #671901.
Currently BNLH join uses a simplified implementation of hash function
when hash function is calculated over the whole key buffer, not only
the significant bytes of it. It means that both building keys and
probing keys both must fill insignificant bytes with the same filler.
Usually 0 is used as such a filler.
Yet the code before patch filled insignificant bytes only for probing
keys.
2010-11-07 15:19:30 -08:00
Michael Widenius
9d68ccdeb8 Added option BACKUP_ALL to mysqld --myisam-recover to also get a backup of the index file before it's repaired.
Removed wrong call to translog_buffer_unlock() that caused 'unlocking not locked mutex' failure in Aria log handler.

extra/replace.c:
  Updated call to my_redel()
include/maria.h:
  Updated prototype for maria_change_to_newfile
include/my_sys.h:
  Updated prototypes
  Added my_create_backup_name
include/myisam.h:
  Updated prototypes
include/myisamchk.h:
  Added 'backup_time' to st_handler_check_param to be able to generate same name for backuped data and index file
mysys/my_redel.c:
  Added time_t option to my_redel() to be able to generate same backup extensions for many files
sql/handler.cc:
  Added start_time to st_ha_check_opt
sql/handler.h:
  Added start_time to HA_CHECK_OPT
sql/mysqld.cc:
  Added option BACKUP_ALL to --myisam-recover
storage/maria/ha_maria.cc:
  Remember start time for repair
storage/maria/ma_check.c:
  Use remembered start time for backup file names
  Removed some dead code
storage/maria/ma_loghandler.c:
  Removed wrong call to translog_buffer_unlock() that caused 'unlocking not locked mutex' failure in log handler.
storage/maria/maria_chk.c:
  Removed dead code (O_NEW_INDEX was never set)
  Report if table was 'crashed on repair'
storage/maria/maria_pack.c:
  Updated parameters to my_redel()
storage/myisam/ha_myisam.cc:
  Added recover option BACKUP_ALL to get a backup of the index file before it's repaired.
  Print information to log if we make a backup of data as part of repair.
storage/myisam/ha_myisam.h:
  Added HA_RECOVER_FULL_BACKUP
storage/myisam/mi_check.c:
  Use remembered start time for backup file names
  Added mi_make_backup_of_index()
storage/myisam/myisamchk.c:
  Removed dead code (O_NEW_INDEX was never set)
  Report if table was 'crashed on repair'
storage/myisam/myisampack.c:
  Updated call to my_redel()
2010-11-07 14:25:29 +02:00
Michael Widenius
18292caa48 Automatic merge 2010-11-07 13:47:03 +02:00
Michael Widenius
d178780289 Updated state and version number 2010-11-07 12:14:45 +02:00
Igor Babaev
bbbe3ac8fb Merge 2010-11-05 19:20:54 -07:00
Igor Babaev
71e48fbf3e Merge 2010-11-05 19:01:47 -07:00
Igor Babaev
dba8cfd541 BNL and BNLH algorithms scan the join table and for each its record they
try to find a match in the join buffer. It makes sense to check for a match
only those records satisfying WHERE/ON conditions that can be pushed to
the scanned table. It allows us to discard early some join candidates.

Such pushdown conditions were built when BNL join algorithm was employed,
but for they were not built when BNLH algorithm was used.
The patch removes this shortcoming.
2010-11-05 19:00:53 -07:00
Igor Babaev
4bc81968ab Post merge adjustment 2010-11-05 14:22:21 -07:00
Michael Widenius
c670b9021e Automerge with 5.2 2010-11-05 12:37:51 +02:00
Michael Widenius
fdd6963890 Fixed usage of wrong variable in case of errors 2010-11-05 11:54:42 +02:00
Igor Babaev
615d756721 Fixed LP bug #669382.
When probing into the hash table of a hashed join cache is performed
the key value should not constructed in the buffer used to build keys
in the hash tables. The constant parts of these keys copied only once,
so they should not be ever overwritten. Otherwise wrong results
can be produced by queries that employ hashed join buffers.
2010-11-04 21:00:33 -07:00
Michael Widenius
7647c2744c Automatic merge with MariaDB 5.1 2010-11-04 17:08:28 +02:00