Commit graph

69237 commits

Author SHA1 Message Date
Dmitry Shulga
fac0e0e05b Manual merge of patch for Bug#11749345 (formerly known as bug#38813)
from 5.1->5.5.
2011-05-21 00:13:12 +07:00
Dmitry Shulga
733893ba50 Fixed bug#11749345 (formerly bug#38813) - increasing memory consumption
when selecting from I_S and views exist, in SP.

Symptoms: re-execution of prepared statement (or statement in a stored
routine) which read from one of I_S tables and which in order to fill
this I_S table had to open a view led to increasing memory consumption.

What happened in this situation was that during the process of view
opening for purpose of I_S filling view-related structures (like its
LEX) were allocated on persistent MEM_ROOT of prepared statement (or 
stored routine). Since this MEM_ROOT is not freed until prepared
statement deallocation (or expulsion of stored routine from the cache)
and code responsible for filling I_S is not able to re-use results of
view opening from previous executions this allocation ended up in
memory hogging.

This patch solves the problem by ensuring that when a view opened
for the purpose of I_S filling all its structures are allocated on
non-persistent runtime MEM_ROOT. This is achieved by activating a
temporary Query_arena bound to this MEM_ROOT.
Since this step makes impossible linking of view structures into
LEX of our prepared statement (or stored routine statement) this
patch also changes code filling I_S table to install a proxy LEX
before trying to open a view or a table. Consequently some code
which was responsible for backing-up/restoring parts of LEX when
view/table was opened during filling of I_S table became redundant
and was removed.

This patch doesn't contain test case for this bug as it is hard
to test memory hogging in our test suite.
2011-05-20 23:52:52 +07:00
Mayank Prasad
a91d168d84 resolved pending merge conflicts from 5.1 2011-05-20 14:48:36 +05:30
Luis Soares
19b16fc572 BUG#11746302
Manual merged mysql-5.1-gca into latest mysql-5.5.

Conflicts
=========
Text conflict in mysql-test/suite/rpl/r/rpl_relayspace.result
Text conflict in mysql-test/suite/rpl/t/rpl_relayspace.test
2011-05-19 16:47:05 +01:00
Luis Soares
d1de97fc67 BUG#11746302
Automerge mysql-5.1-gca into latest mysql-5.1.
2011-05-19 16:46:26 +01:00
Luis Soares
4f03d60096 BUG#11746302: 25228: RPL_RELAYSPACE.TEST FAILS ON POWERMACG5,
VM-WIN2003-32-A, SLES10-IA64-A 
      
The test case waits for master_pos_wait not to timeout, which
means that the deadlock between SQL and IO threads was 
succesfully and automatically dealt with.
      
However, very rarely, master_pos_wait reports a timeout. This
happens because the time set for master_pos_wait to wait was
too small (6 seconds). On slow test env this could be a 
problem.
      
We fix this by setting the timeout inline with the one used
in sync_slave_with_master (300 seconds). In addition we 
refactored the test case and refined some comments.
2011-05-19 16:45:45 +01:00
Mikael Ronström
c51c4a77af merge 2011-05-19 10:49:43 +02:00
Mayank Prasad
d608ad2dd6 Bug#11764633 : 57491: THD->MAIN_DA.IS_OK() ASSERT IN EMBEDDED
Issue:
While running embedded server, if client issues TEE command (\T foo/bar) and
"foo/bar" directory doesn't exist, it is suppose to give error. But it was
aborting.  This was happening because wrong error handler was being called.

Solution:
Modified calls to correct error handler. In embedded server case, there are 
two error handler (client and server) which are supposed to be called based 
on which context code is in. If it is in client context, client error handler
should be called otherwise server.

Test case:
Test case automation is not possible as current (following) code doesn't 
allow '\T' to be executed from command line (OR command read from a file):
[client/mysql.cc]
...
 static int
 com_tee(String *buffer __attribute__((unused)),
         char *line __attribute__((unused)))
 {
   char file_name[FN_REFLEN], *end, *param;

   if (status.batch) << THIS IS TRUE WHILE EXECUTING FROM COMMAND LINE.
      return 0;
 ...
So, not adding test case in GA. WIll add a test case in mysql-trunk after 
removing above code so that this could be properly tested before GA.

libmysqld/lib_sql.cc:
  Added code to call client/server error handler based on in control is in 
  client/server code respectively.
sql/mysql_priv.h:
  Added comments for THR_THD, THR_MALLOC keys.
sql/sql_class.cc:
  Function definition of new function restore_global to removes thread specific 
  data from stack (which was stored in store global).
sql/sql_class.h:
  Function declaration of new function restore_global.
2011-05-18 20:10:01 +05:30
Mayank Prasad
47f7fc4353 merge from 5.1 for bug#11764633 2011-05-18 19:47:29 +05:30
Mikael Ronström
a922909a89 merge 2011-05-18 11:37:10 +02:00
Mikael Ronström
89ec54264d Split up unlink_thd in several functions 2011-05-18 09:38:05 +02:00
Sergey Glukhov
b7ed314fab 5.1 -> 5.5 merge 2011-05-18 10:59:04 +04:00
Sergey Glukhov
3201f92cb3 Bug#12403504 AFTER FIX FOR #11889186 : ASSERTION FAILED: DELSUM+(INT) Y/4-TEMP > 0
There are two problems:
1. There is a missing check for 'year' parameter(year can not be greater than 9999) in
   makedate function. fix: added check that year can not be greater than 9999.
2. There is a missing check for zero date in from_days() function.
   fix: added zero date check into Item_func_from_days::get_date()
   function.


mysql-test/r/func_time.result:
  test case
mysql-test/t/func_time.test:
  test case
sql/item_timefunc.cc:
  --added check that year can not be greater than 9999 for makedate() function
  --added zero date check into Item_func_from_days::get_date() function
2011-05-18 10:47:43 +04:00
Marc Alff
4112a5213f Local merge 2011-05-16 22:54:00 +02:00
Marc Alff
b1307dc0e1 Fixed code review comments 2011-05-16 22:47:59 +02:00
Kent Boortz
955cb796e7 - Changes needed to use newer WiX version (Bug#60029)
- Added an alterantive search path for WiX components
- Added a custom welcome dialog to include the copyright line (Bug#59805 and Bug#59512)
- Excluded some binaries to make package smaller, in effect makig the
  "essentials" package obsolete
- Added a bit more error checking when running the WiX tools

WiX XML changes done by Johannes Taxacher
2011-05-16 20:26:55 +02:00
Andrei Elkin
252b86bc27 Bug 12535301 - SYS_VARS.RPL_INIT_SLAVE_FUNC MISMATCHES IN DAILY-5.5
notifying PB2 the test fails through mysql-test/collections/default.experimental.
2011-05-16 12:44:34 +03:00
Alexander Nozdrin
fce2f00656 Ignore auto-generated files. 2011-05-16 12:51:14 +04:00
Alexander Nozdrin
96daf87a10 A patch for Bug#12429877: QUERY_TABLES_LIST::SROUTINES IS NOT
FREED IN FLUSH_READ_LOCK (VALGRIND WARNING).

The problem was that under some circustances the memory allocated
for Query_tables_list::sroutines was not freed properly.
The cause of this problem was the absence of
LEX::restore_backup_query_tables_list() call in one of the branches
in mysql_table_grant() function.
2011-05-16 12:50:42 +04:00
Vinay Fisrekar
fa9218566c Merge from mysql-5.1 to mysql-5.5 2011-05-14 21:56:49 +05:30
Vinay Fisrekar
91133804d1 Adding bug scenario for data types in main suite
Impementing Test Review Comment.
      
Bug test scenario:      
SELECT is not returning result set for "equal" (=) and "NULL safe equal
operator"  (<=>) on BIT data type. Extending this scenario for all data types
2011-05-14 21:44:49 +05:30
Marc Alff
d343f5e372 Bug#12552516 LF_HASH REQUIRES MY_THREAD_INIT()
Before this fix, a thread instrumented for the performance schema,
that would perform file io operations, could crash inside the LF_HASH
implementation, in cases when my_thread_init is not called.

The crash itself has not been reported in 5.5 but similar crashes have
been found in 5.6-based development branches, using LF_HASH for
more instrumentation.

The possibility of a crash in 5.5 is confirmed by code analysis.

The problem is that, when my_thread_init() is not called,
which can happen for threads in storage engines or thirs party code,
my_thread_var is NULL.

Using my_thread_var->stacks_ends_here in mysys/lf_alloc-pin.c is unsafe.

Given that my_thread_var is used:
- only for stacks_ends_here
- only on platform with HAVE_ALLOCA
- only when there is enough room on the stack
and given that the LF_HASH implementation has a fallback
algorythm implemented already when using alloca is not possible,
using my_thread_var->stacks_ends_here is in fact not a strict requirement,
and can be relaxed.

The fix is to:
- test explicitly if my_thread_var is NULL, to account for cases
  when my_thread_init() is not used by the calling thread.
- not use alloca in this case, and rely on the fall back code already in place.
  so that the LF_HASH can be supported even without my_thread_init().

The implementation of mysys/lf_alloc-pin.c has been fixed to support this new usage.
The units tests in unittest/mysys/lf-t.c have been adjusted accordingly.
2011-05-13 18:04:49 +02:00
Mikael Ronstrom
e2602f4eab Removed variables no longer needed in plugins, moved to methods instead 2011-05-13 15:46:35 +02:00
Mikael Ronström
e44579d24d merge 2011-05-13 13:19:38 +02:00
Bjorn Munch
94d657bfb7 null upmerge 2011-05-13 13:04:49 +02:00
Bjorn Munch
067fa4a5c6 merge from 5.1-mtr 2011-05-13 13:04:01 +02:00
Bjorn Munch
0610c9a7e8 merge from 5.5-mtr 2011-05-13 13:02:42 +02:00
MySQL Build Team
cb0f843e8d changed the VERSION tag to 14 2011-05-13 07:00:09 +02:00
unknown
d25b5b686b BUG#12549572 : CMake file does not include gcov option
This patch inserts an 'ENABLE_GCOV' option for enabling gcov compilation
on Linux machines. It modifies the CMakeLists.txt setting this option
to 'OFF' by default.

Note: The option requires a debug build. For example, 
      -DCMAKE_BUILD_TYPE:string="Debug"
2011-05-12 18:22:14 -04:00
Mikael Ronström
a537c106f0 merge 2011-05-12 20:35:31 +02:00
Bjorn Munch
bdfdb825b6 null upmerge 2011-05-12 15:23:17 +02:00
Bjorn Munch
1b6b2f232a null upmerge 2011-05-12 15:22:10 +02:00
Bjorn Munch
c455b204c3 merge from 5.5 main 2011-05-12 15:19:59 +02:00
Jon Olav Hauglid
e9b8feef32 Bug#12346411 SQL/LOG.CC:6509: ASSERTION `PREPARED_XIDS > 0' FAILED
This assert could be triggered during two phase commit if binary
log was used as transaction coordinator log. The triggered assert
checks that the same number of transaction IDs are processed in
the prepare and commit phases.

The reason it was triggered, was that the transaction consisted
of an INSERT/UPDATE IGNORE that had an ignorable error. Since it
had an error, no row log events were made and therefore
prepared_xids was 0. However, since it was an IGNORE statement,
the statement started a read/write statement transaction, committed
it and completed successfully.

This patch fixes the problem by adjusting the assert to take
this possibility into account.

Test case added to binlog.binlog_innodb_row.test.
2011-05-12 14:56:00 +02:00
Tatjana Azundris Nuernberg
b677cadd86 auto-merge 2011-05-12 13:38:14 +01:00
Mikael Ronström
43c55e9a01 merge 2011-05-12 14:29:32 +02:00
Bjorn Munch
f66763a3ef merge from 5.1 main 2011-05-12 14:08:47 +02:00
Tatjana Azundris Nuernberg
30265fd178 auto-merge 2011-05-12 10:41:17 +01:00
Tatjana Azundris Nuernberg
c2257fc583 auto-merge 2011-05-12 06:23:16 +01:00
Tatjana Azundris Nuernberg
5047a6382c Bug#11902767/Bug#60580: Statement improperly replicated crashes slave SQL thread
If LOAD DATA INFILE featured a SET clause, the name=value pairs
would be regenerated using item::print. Unfortunately, that code
is mostly optimized for EXPLAIN EXTENDED output and such, and can
not be relied on to return valid SQL.

We now name each value its original, user-supplied form and use
that to create LOAD DATA INFILE statements for statement-based
replication.

mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  minor change in syntactic sugar
mysql-test/suite/rpl/r/rpl_loaddatalocal.result:
  add test case
mysql-test/suite/rpl/t/rpl_loaddatalocal.test:
  add test case
sql/sql_load.cc:
  Do not try to item::print values in LOAD DATA INFILE's
  SET clause; they might not even be valid SQL at this
  point. Use our saved version instead.
sql/sql_yacc.yy:
  If LOAD DATA INFILE has SET name=val clauses, tag the
  individual val-parts with the user's version so we can
  later replicate that, rather than the smashed pieces
  we'd get from item::print once the optimizer's through
  with our poor values.
2011-05-12 05:56:41 +01:00
Tatjana Azundris Nuernberg
280dce482b auto-merge 2011-05-12 05:43:53 +01:00
Tatjana Azundris Nuernberg
d439f959dd auto-merge 2011-05-12 05:32:06 +01:00
Tatjana Azundris Nuernberg
e0c0bf323b auto-merge Bug#11762799/Bug#55436 2011-05-12 04:05:12 +01:00
Tatjana Azundris Nuernberg
9990ab901b auto-merge Bug#11762799/Bug#55436 2011-05-12 03:41:51 +01:00
Luis Soares
f38dff9809 BUG#12416700
Automerged bzr bundle from bug report into latest mysql-5.5.
2011-05-11 15:16:17 +01:00
Magnus Blåudd
d4f1d04fa5 Merge bug 12384993 2011-05-11 15:15:11 +02:00
Alexander Nozdrin
40de2831fd Ignore auto-generated files. 2011-05-11 16:45:57 +04:00
Georgi Kodinov
ecfbdbd72d merge from mysql-5.5 2011-05-11 15:34:15 +03:00
MySQL Build Team
9337a330c5 Cloning of the 5.5.13 release from Mysql-5.5,
increase the version number by two
2011-05-11 13:40:29 +02:00
Georgi Kodinov
5a2ccea2e7 Bug #11744875: 4082: integer lengths cause truncation with distinct concat
and innodb

The 5.5 version of the patch.

The server doesn't restrict the data that can be inserted into integer columns 
with explicitly specified length that's smaller than what the type can handle,
e.g. 1234 can be inserted into an INT(2) column just fine.
Thus, when calcualting the maximum width of expressions involving such 
restricted integer columns we need to use the implicit maximum width of 
the field instead of the explicitly speficied one.
Fixed the server to use the implicit maximum in such cases and made sure 
the implicit maximum is addjusted the same way as the explicit one wrt
signedness.

Fixed several test case results (ctype_*.result, metadata.result and 
type_ranges.result) to reflect the extended column widths.

Added a regression test case in distinct.test.

Note : this is the behavior preserving fix that makes 5.5 behave as 5.1 and 
earlier. In the mysql trunk we'll add a insert time check for the explict 
maximum size.
2011-05-11 14:11:57 +03:00