Commit graph

65920 commits

Author SHA1 Message Date
Marc Alff
aa2daceebc Bug#53148 Remove PFS_readonly_table
This fix is for cleanup, to resolve a remaining code review item.
Backport from mysql-next-mr (5.6) to mysql-trunk (5.5).
2010-07-15 18:06:33 -06:00
Marc Alff
4b1f459ae0 Fixed Copyright headers in storage/perfschema
Fixed minor merge issues with #includes
2010-07-15 17:44:45 -06:00
Davi Arnaut
fd64a0db45 WL#5486: Remove code for unsupported platforms
Remove OS/2 specific code.
2010-07-15 08:33:27 -03:00
Davi Arnaut
37113a6867 WL#5486: Remove code for unsupported platforms
Remove QNX specific code.
2010-07-15 08:28:41 -03:00
Davi Arnaut
6420d6dc4a WL#5486: Remove code for unsupported platforms
Remove VMS specific code.
2010-07-15 08:26:38 -03:00
Davi Arnaut
bdab1de458 WL#5486: Remove code for unsupported platforms
Remove Zortech specific code.
2010-07-15 08:17:56 -03:00
Davi Arnaut
13f7a1d244 WL#5486: Remove code for unsupported platforms
Remove MS-DOS specific code.
2010-07-15 08:16:06 -03:00
Davi Arnaut
07e7b4d6fe WL#5486: Remove code for unsupported platforms
Remove Netware specific code.
2010-07-15 08:13:30 -03:00
Marc Alff
ef27448469 Implemented code review comments.
Fixed style according to the specific innodb style, for innodb code.
2010-07-14 10:23:21 -06:00
Marc Alff
4601a4b128 local merge 2010-07-14 09:57:50 -06:00
Marc Alff
d6c0c8826e local merge 2010-07-14 09:53:44 -06:00
Davi Arnaut
03ff26c759 Remove leftovers from old versions of the code. 2010-07-13 14:34:32 -03:00
Sven Sandberg
7ecb869b6e BUG#54729: sleep() capped to 5 seconds when executed in the sql thread or in an event
Symptom:
When the sql function SLEEP() was executed in the slave SQL thread or from an event (as in
CREATE EVENT, not binlog event), then the timeout was capped to 5 seconds.

Background:
This bug was introduced in the fix of BUG#10374, in the function interruptible_wait() in
item_func.cc.
The function interruptible_wait(), called from item_func_sleep::val_int(), splits the
sleep into 5 seconds units. After each unit, it checks if thd->is_connected() is true: if
not, it stops sleeping. The purpose is to not use system resources to sleep when a client
disconnects.
However, thd->is_connected() returns false for the slave SQL thread and for the event
worker thread, because they don't connect to the server the same way as client threads
do.

Fix:
Make thd->is_connected() return true for all system threads.


sql/sql_class.h:
  Made THD::is_connected() return true for all system threads.
2010-07-13 11:13:06 +02:00
Davi Arnaut
071636d6fa Revert and fix confusion between tests analyse and analyze. Following the
naming scheme for tests related to functions, rename analyse.test to
func_analyse.test (test for the ANALYSE() procedure). Avoids confusion
with the ANALYZE statement (tested in analyze.test).
2010-07-12 10:38:38 -03:00
Davi Arnaut
5f4033a4d2 Following the naming scheme for tests related to functions, rename
analyse.test to func_analyse.test. Avoids confusion with the ANALYZE
statement.
2010-07-12 09:50:07 -03:00
Marc Alff
ec41287630 Bug#55087 Performance schema: optimization of the instrumentation interface
This change is for performance optimization.

Fixed the performance schema instrumentation interface as follows:
- simplified mysql_unlock_mutex()
- simplified mysql_unlock_rwlock()
- simplified mysql_cond_signal()
- simplified mysql_cond_broadcast()

Changed the get_thread_XXX_locker apis to have one extra parameter,
to provide memory to the instrumentation implementation.
This API change allows to use memory provided by the caller,
to avoid having to use thread local storage.
Using this extra parameter will be done in a separate fix,
this change is for the interface only.

Adjusted all the code and unit tests accordingly.
2010-07-09 17:00:24 -06:00
Luis Soares
6da500ccb5 BUG 54744: automerged bzr bundle from bug report. 2010-07-09 12:24:18 +01:00
Luis Soares
da864627f7 BUG 34043: automerged bzr bundle.
Merged on behalf of Davi.
2010-07-09 12:21:00 +01:00
Davi Arnaut
2ccaf604e2 Bug#34043: Server loops excessively in _checkchunk() when safemalloc is enabled
Post-merge fix: remove reference to file that is now gone.
2010-07-09 08:18:36 -03:00
Alexander Barkov
1d73bbd3a3 Bug#54668 User variable assignments get wrong type
Problem: Item_str_ascii_func::val_str() did not set
charset of the returned value properly.
  
  mysql-test/include/ctype_numconv.inc
  mysql-test/r/ctype_binary.result
  mysql-test/r/ctype_cp1251.result
  mysql-test/r/ctype_latin1.result
  mysql-test/r/ctype_ucs.result
  - Adding tests
  
  sql/item_strfunc.cc
  - Adding initialization of charset
2010-07-09 09:39:41 +04:00
Davi Arnaut
00e62a0311 Bug#34043: Server loops excessively in _checkchunk() when safemalloc is enabled
Post-merge fix: cast argument and correct type in assignment.
2010-07-08 22:19:57 -03:00
Luis Soares
b9ba876393 BUG#54744: valgrind reports leak for mysqlbinlog
The server was not cleaning up some dbug allocated memory 
before exiting. This is not a real problem, as this memory 
would be deallocated anyway. Nonetheless, we improve the 
mysqlbinlog exit procedure, wrt to memory book-keeping, when 
no parameter is given.
      
To fix this, we deploy a call to my_end() before the
thread exits.
2010-07-08 23:40:48 +01:00
Davi Arnaut
f56dd32bf7 Bug#34043: Server loops excessively in _checkchunk() when safemalloc is enabled
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.

client/mysqldump.c:
  Pass my_free directly as its signature is compatible with the
  callback type -- which wasn't the case for free_table_ent.
2010-07-08 18:20:08 -03:00
Luis Soares
d3b01fef18 Revert patch for BUG#54744. 2010-07-08 17:30:19 +01:00
Marc Alff
6e3fb7bb07 Fixed headers in include/mysql/psi 2010-07-08 11:04:07 -06:00
Olav Sandstaa
5d2f2cc1a9 Backporting of jorgen.loland@sun.com-20100618093212-lifp1psig3hbj6jj
from mysql-next-mr-opt-backporting.

Bug#54515: Crash in opt_range.cc::get_best_group_min_max on 
           SELECT from VIEW with GROUP BY
      
When handling the grouping items in get_best_group_min_max, the
items need to be of type Item_field. In this bug, an ASSERT 
triggered because the item used for grouping was an 
Item_direct_view_ref (i.e., the group column is from a view). 
The fix is to get the real_item since Item_ref* pointing to 
Item_field is ok.

mysql-test/r/select.result:
  Add test for BUG#54515
mysql-test/t/select.test:
  Add test for BUG#54515
sql/opt_range.cc:
  Get the real_item() when processing grouping items in 
  get_best_group_min_max.
2010-07-08 15:19:05 +02:00
Guilhem Bichot
18bde950e3 backport of guilhem@mysql.com-20100628140739-i9vy8ugxp1v5aspb
from next-mr-bugfixing:
BUG#54682 "set sql_select_limit=0 does not work"; let SQL_SELECT_LIMIT=0
work like it does in 5.1.


mysql-test/suite/sys_vars/r/sql_select_limit_func.result:
  before the fix, the SET would emit a warning (0 being rounded up to 1)
  and SELECTs would return one row.
sql/sys_vars.cc:
  0 is allowed, it means an implicit LIMIT 0 (i.e. no rows returned)
2010-07-08 14:36:10 +02:00
Luis Soares
31e46bae52 automerging bugfixes in latest mysql-trunk-bugfixing. 2010-07-08 10:06:11 +01:00
Luis Soares
9f912ebf78 BUG 54925: automerged bzr bundle from bug report. 2010-07-08 10:02:43 +01:00
Luis Soares
f8f0eb8a36 BUG 54509: automerged bzr bundle from bug report. 2010-07-08 10:01:12 +01:00
Luis Soares
5890c2952b BUG 54744: automerged bzr bundle from bug report. 2010-07-08 09:59:43 +01:00
Luis Soares
b84b607e87 BUG 54842: automerged bzr bundle in mysql-trunk-bugfixing. 2010-07-07 23:27:52 +01:00
Alexander Barkov
00e86d01a7 Bug#54661 sha2() returns BINARY result
Problem: sha2() reported its result as BINARY

Fix:
- Inheriting Item_func_sha2 from Item_str_ascii_func
- Setting max_length via fix_length_and_charset() 
  instead of direct assignment.
- Adding tests
2010-07-07 10:38:11 +04:00
Alexander Barkov
72bb9b7acb Bug#52159 returning time type from function and empty left join causes debug assertion
Problem: Item_copy did not set "fixed", which resulted in DBUG_ASSERT in some cases.
Fix: adding  initialization of the "fixed" member

Adding tests:
  mysql-test/include/ctype_numconv.inc
  mysql-test/r/ctype_binary.result
  mysql-test/r/ctype_cp1251.result
  mysql-test/r/ctype_latin1.result
  mysql-test/r/ctype_ucs.result

Adding initialization of the "fixed" member:
  sql/item.h
2010-07-07 10:00:46 +04:00
Luis Soares
21387da7d9 BUG#54744: valgrind reports leak for mysqlbinlog
The server was not cleaning up dbug allocated memory before
exiting. This is not a real problem, as this memory would be
deallocated anyway. Nonetheless, we improve the mysqlbinlog exit
procedure, wrt to memory book-keeping, when no parameter is
given.

To fix this, we deploy a call to my_thread_end() before the
thread exits, which will also free pending dbug related allocated
blocks.
2010-07-06 23:41:59 +01:00
Davi Arnaut
6eb854de1f Bug#54783: optimize table crashes with invalid timestamp default
value and NO_ZERO_DATE

The problem was that a older version of the error path for a
failed admin statement relied upon a few error conditions being
met in order to access a table handler, the first one being that
the table object pointer was not NULL. Probably due to chance,
in all cases a table object was closed but the reference wasn't
reset, the other conditions didn't evaluate to true. With the
addition of a new check on the error path, the handler started
being dereferenced whenever it was not reset to NULL, causing
problems for code paths which closed the table but didn't reset
the reference.

The solution is to reset the reference whenever a admin statement
fails and the tables are closed.

mysql-test/r/partition_innodb.result:
  Add test case result for Bug#54783
mysql-test/t/partition_innodb.test:
  Add test case for Bug#54783
sql/sql_table.cc:
  In case table recreate failed, set a appropriate result code.
  Reset reference to a closed table object, otherwise the error
  path might attempt to access it.
2010-07-06 14:38:03 -03:00
Alexander Nozdrin
e1bbe2443c Fix sys_vars.large_files_support_basic failure. 2010-07-06 17:06:07 +04:00
Vladislav Vaintroub
0a3d85adfa Post-fix for Bug#52929 : replace uint with "unsigned int" in mysql.h.pp 2010-07-05 23:00:56 +02:00
Vladislav Vaintroub
b8f24eedf5 Backport changeset from mysql-next-mr-bugfixing:
3245 Vladislav Vaintroub	2010-06-16
      Bug #52959 uint in typedef.h undefined on Windows
      Fix: change uint to "unsigned int"
2010-07-05 18:20:46 +02:00
Alexander Nozdrin
9f483f1a3d Backporting patch for Bug#52716 (Large files support is disabled,
large-pages option is broken) from next-mr to trunk-bugfixing.

Original revision:
------------------------------------------------------------
revision-id: vvaintroub@mysql.com-20100416134524-y4v27j90p5xvblmy
parent: luis.soares@sun.com-20100416000700-n267ynu77visx31t
committer: Vladislav Vaintroub <vvaintroub@mysql.com>
branch nick: mysql-next-mr-bugfixing
timestamp: Fri 2010-04-16 15:45:24 +0200
message:
  Bug #52716 Large files support is disabled, large-pages option is broken.
  
  Correct typo: large pages option was tied to wrong variable opt_large_files,
  instead of opt_large_pages.
------------------------------------------------------------
2010-07-05 13:17:01 +04:00
Sergey Vojtovich
4a739a14c0 BUG#54832 - Comment for MyISAM says it is a default engine
Adjusted tests.

mysql-test/r/information_schema.result:
  Adjusted tests.
mysql-test/suite/funcs_1/r/is_engines_myisam.result:
  Adjusted tests.
2010-07-05 11:34:29 +04:00
Sergey Vojtovich
44646da49c Merge fix for BUG#54832 to trunk. 2010-07-05 11:21:05 +04:00
Alfranio Correia
db7ba46461 Post-push fix for BUG#53259. 2010-07-04 20:35:05 +01:00
Sergey Vojtovich
3670dcf38d BUG#54832 - Comment for MyISAM says it is a default engine
Fixed MyISAM storage engine comment, so it doesn't anymore
state that MyISAM is default storage engine.
2010-07-02 14:56:54 +04:00
Alexander Nozdrin
aee88bc8aa Disabling failing NDB-tests due to Bug 54850 and Bug 54851. 2010-07-02 10:23:00 +04:00
Luis Soares
e514204758 BUG#54925: Assertion `query_arg && mysql_bin_log.is_open()' on
DROP TEMP TABLE

Cset: alfranio.correia@sun.com-20100420091043-4i6ouzozb34hvzhb
introduced a change that made drop temporary table to be always
logged if current statement log format was set to row. This is
fine. However, logging operations, for a "DROP TABLE" statement
in mysql_rm_table_part2, are not protected by first checking if
the mysql_bin_log is open before proceeding to the actual
logging. They only check the dont_log_query variable. This was
actually uncovered by the aforementioned cset and not introduced
by it.

We fix this by extending the condition used in the "if" that
wraps logging operations in mysql_rm_table_part2.
2010-07-01 17:03:40 +01:00
Alfranio Correia
8950699284 merge mysql-trunk-bugfixing (local) --> mysql-trunk-bugfixing 2010-06-30 20:38:48 +01:00
Alfranio Correia
68ecc965a6 WL#5344 2010-06-30 20:37:41 +01:00
Alfranio Correia
b826eb9d8a merge mysql-trunk-bugfixing (local) --> mysql-trunk-bugfixing 2010-06-30 20:32:05 +01:00
Alfranio Correia
c9221a2a6f BUG#53259 Unsafe statement binlogged in statement format w/MyIsam temp tables
BUG#54872 MBR: replication failure caused by using tmp table inside transaction 
      
Changed criteria to classify a statement as unsafe in order to reduce the
number of spurious warnings. So a statement is classified as unsafe when
there is on-going transaction at any point of the execution if:

1. The mixed statement is about to update a transactional table and
a non-transactional table.

2. The mixed statement is about to update a temporary transactional
table and a non-transactional table.
      
3. The mixed statement is about to update a transactional table and
read from a non-transactional table.

4. The mixed statement is about to update a temporary transactional
table and read from a non-transactional table.

5. The mixed statement is about to update a non-transactional table
and read from a transactional table when the isolation level is
lower than repeatable read.

After updating a transactional table if:

6. The mixed statement is about to update a non-transactional table
and read from a temporary transactional table.
 
7. The mixed statement is about to update a non-transactional table
 and read from a temporary transactional table.

8. The mixed statement is about to update a non-transactionala table
   and read from a temporary non-transactional table.
     
9. The mixed statement is about to update a temporary non-transactional
table and update a non-transactional table.
     
10. The mixed statement is about to update a temporary non-transactional
table and read from a non-transactional table.
     
11. A statement is about to update a non-transactional table and the
option variables.binlog_direct_non_trans_update is OFF.

The reason for this is that locks acquired may not protected a concurrent
transaction of interfering in the current execution and by consequence in
the result. So the patch reduced the number of spurious unsafe warnings.

Besides we fixed a regression caused by BUG#51894, which makes temporary
tables to go into the trx-cache if there is an on-going transaction. In
MIXED mode, the patch for BUG#51894 ignores that the trx-cache may have
updates to temporary non-transactional tables that must be written to the
binary log while rolling back the transaction.
      
So we fix this problem by writing the content of the trx-cache to the
binary log while rolling back a transaction if a non-transactional
temporary table was updated and the binary logging format is MIXED.
2010-06-30 16:25:13 +01:00