Commit graph

65894 commits

Author SHA1 Message Date
Guilhem Bichot
65bdafda29 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.
2010-07-08 14:36:10 +02:00
Luis Soares
37caf28c83 automerging bugfixes in latest mysql-trunk-bugfixing. 2010-07-08 10:06:11 +01:00
Luis Soares
e8ee471447 BUG 54925: automerged bzr bundle from bug report. 2010-07-08 10:02:43 +01:00
Luis Soares
43f6b7b4d5 BUG 54509: automerged bzr bundle from bug report. 2010-07-08 10:01:12 +01:00
Luis Soares
74ed6149ed BUG 54744: automerged bzr bundle from bug report. 2010-07-08 09:59:43 +01:00
Luis Soares
8794236100 BUG 54842: automerged bzr bundle in mysql-trunk-bugfixing. 2010-07-07 23:27:52 +01:00
Alexander Barkov
a1a16aaa66 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
8a603a16d3 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
ba4c3b070a 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
07a9c082d9 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.
2010-07-06 14:38:03 -03:00
Alexander Nozdrin
bf4a5d961d Fix sys_vars.large_files_support_basic failure. 2010-07-06 17:06:07 +04:00
Vladislav Vaintroub
db467f69f5 Post-fix for Bug#52929 : replace uint with "unsigned int" in mysql.h.pp 2010-07-05 23:00:56 +02:00
Vladislav Vaintroub
4fa00abd0e 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
73074274ed 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
25de3a5625 BUG#54832 - Comment for MyISAM says it is a default engine
Adjusted tests.
2010-07-05 11:34:29 +04:00
Sergey Vojtovich
1b98946298 Merge fix for BUG#54832 to trunk. 2010-07-05 11:21:05 +04:00
Alfranio Correia
7e3236fefe Post-push fix for BUG#53259. 2010-07-04 20:35:05 +01:00
Sergey Vojtovich
12005ca9a1 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
7ec3680161 Disabling failing NDB-tests due to Bug 54850 and Bug 54851. 2010-07-02 10:23:00 +04:00
Luis Soares
8bf401f0e4 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
e8b13892be merge mysql-trunk-bugfixing (local) --> mysql-trunk-bugfixing 2010-06-30 20:38:48 +01:00
Alfranio Correia
34664b6abb WL#5344 2010-06-30 20:37:41 +01:00
Alfranio Correia
3e82758850 merge mysql-trunk-bugfixing (local) --> mysql-trunk-bugfixing 2010-06-30 20:32:05 +01:00
Alfranio Correia
e662b51eef 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
Vladislav Vaintroub
41d832d19b Bug #52850: mysqld-debug.pdb doesn't match
mysqld-debug.exe in 5.5.3 on windows

Fix:

- Do not rename PDB, install mysqld.pdb matching 
mysqld-debug.exe into bin\debug subdirectory

- Stack tracing code will now additionally look in 
debug subdirectory of the application directory 
for debug symbols.

- Small cleanup in stacktracing code: link with 
dbghelp rather than load functions dynamically 
at runtime, since dbghelp.dll is always present.

- Install debug binaries with WiX
2010-06-30 14:10:29 +02:00
Alexander Nozdrin
6eebe0c872 Disable lowercase_table3.test due to Bug 54845. Sort disabled.def. 2010-06-30 13:27:38 +04:00
Luis Soares
bf261cdb6f BUG#54842: DROP TEMPORARY TABLE not binlogged after manual
switching binlog format to ROW

BUG 52616 fixed the case which the user would switch from STMT to
ROW binlog format, but the server would silently ignore it. After
that fix thd->is_current_stmt_binlog_format_row() reports correct
value at logging time and events are logged in ROW (as expected)
instead of STMT as they were previously and wrongly logged.

However, the fix was only partially complete, because on
disconnect, at THD cleanup, the implicit logging of temporary
tables is conditionally performed. If the binlog_format==ROW and
thd->is_current_stmt_binlog_format_row() is true then DROPs are
not logged. Given that the user can switch from STMT to ROW, this
is wrong because the server cannot tell, just by relying on the
ROW binlog format, that the tables have been dropped before. This
is effectively similar to the MIXED scenario when a switch from
STMT to ROW is triggered.

We fix this by removing this condition from
close_temporary_tables.
2010-06-29 11:54:58 +01:00
Magne Mahre
10e329c8e1 Bug#54846 main.lowercase_table2 on Mac OSX
This bug is a consequence of WL#5349, as the
default storage engine was changed.

The fix was to explicitly add an ENGINE
clause to a CREATE TABLE statement, to
ensure that we test case preservement on
MyISAM.
2010-06-28 11:23:50 +02:00
Alexander Nozdrin
1d83d09512 Mark parts.partition_alter4_innodb experimental due to Bug 45299. 2010-06-28 09:57:06 +04:00
Alexander Nozdrin
759aabe371 Make few tests experimental. 2010-06-26 11:51:14 +04:00
Alexander Nozdrin
59ef962bdc Auto-merge from mysql-trunk. 2010-06-26 11:43:00 +04:00
Gleb Shchepa
6941da5107 gcc warnings removal (after bugfix for bug 36569) 2010-06-26 02:06:53 +04:00
Alexander Nozdrin
514b9b25d2 Backport of revid:ingo.struewing@sun.com-20091223200354-r2uzbdkj2v6yv111
Bug#47633 - assert in ha_myisammrg::info during OPTIMIZE
 
   The server crashed on an attempt to optimize a MERGE table with
   non-existent child table.
 
   mysql_admin_table() relied on the table to be successfully open
   if a table object had been allocated.
 
   Changed code to check return value of the open function before
   calling a handler:: function on it.
2010-06-25 19:32:59 +04:00
Jon Olav Hauglid
80af13189f Bug #50124 Rpl failure on DROP table with concurrent txn/non-txn
DML flow and SAVEPOINT

The problem was that replication could break if a transaction involving
both transactional and non-transactional tables was rolled back to a
savepoint. It broke if a concurrent connection tried to drop a
transactional table which was locked after the savepoint was set.
This DROP TABLE completed when ROLLBACK TO SAVEPOINT was executed as the
lock on the table was dropped by the transaction. When the slave later
tried to apply the binlog, it would fail as the table would already
have been dropped.

The reason for the problem is that transactions involving both
transactional and non-transactional tables are written fully to the
binlog during ROLLBACK TO SAVEPOINT. At the same time, metadata locks
acquired after a savepoint, were released during ROLLBACK TO SAVEPOINT.
This allowed a second connection to drop a table only used between
SAVEPOINT and ROLLBACK TO SAVEPOINT. Which caused the transaction binlog
to refer to a non-existing table when it was written during ROLLBACK
TO SAVEPOINT.

This patch fixes the problem by not releasing metadata locks when
ROLLBACK TO SAVEPOINT is executed if binlogging is enabled.
2010-06-25 09:32:24 +02:00
Luis Soares
16141e0c85 BUG#54509: rpl_show_slave_running crashes the server sporadically
Problem: SQL and IO thread were racing for the IO_CACHE. The former to
flush it, the latter to close it. In some cases this would cause the
SQL thread to lock an invalid IO_CACHE mutex (it had been destroyed by
IO thread). This would happen when SQL thread was initializing the
master.info

Solution: We solve this by locking the log and checking if it is
hot. If it is we keep the log while seeking. Otherwise we release it
right away, because a log can get from hot to cold, but not from cold
to hot.
2010-06-24 19:03:23 +01:00
Joerg Bruehe
7f0b7faa68 Merge bug fix. 2010-06-23 16:32:03 +02:00
Joerg Bruehe
f1cc08433e Fix Bug #54739
Accidental change in compile-time definitions for FreeBSD


Revert the accidental setting of "HAVE_BROKEN_REALPATH"
on current versions of FreeBSD,

do it for both autotools ("configure.in")
and cmake ("cmake/os/FreeBSD.cmake").
2010-06-23 16:19:19 +02:00
Luis Soares
44acc95929 WL#5408: adding skip-test-list to mysql-trunk.push and mysql-next-mr.push
collections. Originally, they had only been added to default.push, so
trees named after mysql-[trunk|next-mr] would not skip those tests.
2010-06-23 11:58:24 +01:00
Luis Soares
5d14217497 WL#5408: automerged original bzr bundles into mysql-trunk-bugfixing. 2010-06-23 11:21:00 +01:00
Luis Soares
ae95721663 WL 5408: automerged incremental bzr bundle from original commit. 2010-06-23 11:19:09 +01:00
Luis Soares
d09b73c8b8 WL 5408: automerged bzr bundle from original commit. 2010-06-23 11:17:59 +01:00
sunanda
e0aba0c84b Updated the version number 2010-06-23 10:31:33 +02:00
sunanda
ef745c9112 Made the changes as per Kent/wlad to include http://lists.mysql.com/commits/111802 2010-06-23 10:23:41 +02:00
Tor Didriksen
545d8a5b40 Backport of Bug#53236 Segfault in DTCollation::set(DTCollation&)
Don't call member functions for a NIL pointer.
2010-06-23 08:13:34 +02:00
Gleb Shchepa
da4d23277f Bug #30584: delete with order by and limit clauses does not
use limit efficiently
Bug #36569: UPDATE ... WHERE ... ORDER BY... always does a
            filesort even if not required

Also two bugs reported after QA review (before the commit
of bugs above to public trees, no documentation needed):

Bug #53737: Performance regressions after applying patch
            for bug 36569
Bug #53742: UPDATEs have no effect after applying patch
            for bug 36569


Execution of single-table UPDATE and DELETE statements did not use the 
same optimizer as was used in the compilation of SELECT statements. 
Instead, it had an optimizer of its own that did not take into account 
that you can omit sorting by retrieving rows using an index.

Extra optimization has been added: when applicable, single-table 
UPDATE/DELETE statements use an existing index instead of filesort. A 
corresponding SELECT query would do the former.

Also handling of the DESC ordering expression has been added when
reverse index scan is applicable.

From now on most single table UPDATE and DELETE statements show the 
same disk access patterns as the corresponding SELECT query. We verify 
this by comparing the result of SHOW STATUS LIKE 'Sort%

Currently the get_index_for_order function 
a) checks quick select index (if any) for compatibility with the
   ORDER expression list or
b) chooses the cheapest available compatible index, but only if 
   the index scan is cheaper than filesort.
Second way is implemented by the new test_if_cheaper_ordering
function (extracted part the test_if_skip_sort_order()).
2010-06-23 00:32:29 +04:00
Vladislav Vaintroub
a4baec5c13 Fix syntax error (missing space in SET command), that effectively prevents mysqld from being build with SSL. 2010-06-22 19:47:49 +02:00
Vladislav Vaintroub
1ef39ee2d1 Fix ~1000 warnings class/struct mismatch.
Handle this warning in the future as error, this will prevent pushing to main trees.
2010-06-22 18:40:14 +02:00
Alexander Nozdrin
04f9d612a3 Auto-merge (empty) from mysql-trunk. 2010-06-22 17:09:38 +04:00
Alexander Nozdrin
13495faeb7 Auto-merge from mysql-trunk-bugfixing. 2010-06-22 17:01:39 +04:00
Magne Mahre
b4f77c40ec Post-push fixups for WL#5349 2010-06-22 12:13:47 +02:00