Commit graph

69608 commits

Author SHA1 Message Date
Rohit Kalhans
4f0dfb36a0 Null-merge from 5.1 2011-08-29 13:10:06 +05:30
Rohit Kalhans
e46b3453bf BUG#11878104: FIXES OF BUG 11752963 - 44312 TO BACKPORT TO MYSQL-5.1
Background: Backporting fix for BUG 11752963 to Mysql5.1 branch.
Problem: Fix of bug 11752963 was only available for trunk and 5.5 branch.
Partial fix has been pushed to 5.1 branch as well. 
Fix: backporting the fixes of bug 11752963 to 5.1 branch. 
1. Made all major changes to make 5.1 branch in line with 5.5 and the trunk.
2. skipped the partial patch that was already applied to the 5.1 branch. 

sql/rpl_rli.h:
  Made inited Volatile (find inline comments)
sql/slave.cc:
  backported all changes from the fix of BUG#11752963.
2011-08-26 15:27:29 +05:30
Sergey Vojtovich
3ea3f5006d Merge. 2011-08-24 16:22:11 +04:00
Sergey Vojtovich
9fb4a47ef4 Merge. 2011-08-24 11:18:00 +04:00
Marko Mäkelä
42ff786cf9 Merge mysql-5.1 to mysql-5.5. 2011-08-22 17:12:27 +03:00
Marko Mäkelä
49ee12d03b Bug #11766591 59733: POSSIBLE DEADLOCK WHEN BUFFERED CHANGES ARE TO BE DISCARDED
The fix in revision id marko.makela@oracle.com-20110815091143-h3zbvm0pv8ni3qql
introduced a false UNIV_SYNC_DEBUG alarm. Relax the assertion.
2011-08-22 17:03:07 +03:00
Joerg Bruehe
f8ee5b48ba Merge bug fix to main. 2011-08-19 19:35:58 +02:00
Joerg Bruehe
73312bddb3 Null-upmerge the bug#37165 fix: No functional change,
but some notation improvement is applicable.
2011-08-19 19:26:27 +02:00
Joerg Bruehe
e8f2e3c217 Fix bug#37165 "((Generic rpm)) fail to install on Fedora 9 x86_64"
On Fedora, certain accesses to "/var/lib/mysql/HOSTNAME.err" were blocked
by SELinux policy, this made the server start fail with the message
    Manager of pid-file quit without updating file
Calling "/sbin/restorecon -R /var/lib/mysql" fixes this.
2011-08-19 18:48:14 +02:00
Sergey Vojtovich
a8ee6e48f7 BUG#11763712 - 56458: KILLING A FLUSH TABLE FOR A MERGE/CHILD
CRASHES SERVER

Flushing of MERGE table or one of its child tables, which was
locked by flushing thread using LOCK TABLES, might have caused
crashes or assertion failures if the thread failed to reopen
child or parent table.
Particularly, this might have happened when another connection
killed this FLUSH TABLE statement/connection.
Also this problem might have occurred when we failed to reopen
MERGE table or one of its children when executing DDL statement
under LOCK TABLES.

The problem was caused by the fact that reopen_tables() might
have failed to reopen child table but still tried to reopen,
reattach children for and re-lock its parent. Vice versa it
might have failed to reopen parent but kept references from
children to parent around. Since reopen_tables() closes table
it has failed to reopen and therefore frees all associated
memory such dangling references led to crashes when followed.

This patch solves this problem by ensuring that we always close
parent table and all its children if we fail to reopen this
table or one of its children. Same happens if we fail to reattach
children to parent.

Affects 5.1 only.

mysql-test/r/merge.result:
  A test case for BUG#11763712.
mysql-test/t/merge.test:
  A test case for BUG#11763712.
sql/sql_base.cc:
  When flushing tables under LOCK TABLES, all locked
  and flushed tables are released and then reopened.
  It may happen that we failed to reopen some tables,
  in this case we reopen as much tables as possible.
  
  If it was not possible to reopen MERGE child, MERGE
  parent is unusable and must be removed from thread
  open tables list.
  
  If it was not possible to reopen MERGE parent, all
  MERGE child table objects are unusable as well, at
  least because their locks are handled by MERGE parent.
  They must also be removed from thread open tables
  list.
  
  In other words if it was impossible to reopen any
  object of a MERGE table or reattach child tables,
  all objects of this MERGE table must be considered
  unusable and closed.
2011-08-18 10:38:51 +04:00
Jimmy Yang
d9c3d35437 In innobase_format_name() we should call innobase_convert_name() with
"!is_index_name" instead of "is_index_name", so the table name in the
error message would not be formated as index name.
2011-08-17 02:39:55 -07:00
Jimmy Yang
7abcb1dd08 Add two tests for "innodb_large_prefix" and "innodb_force_load_corrupted" in
sys_vars test suite.
2011-08-16 20:51:40 -07:00
Jimmy Yang
95fa7fab3b Fix bug #11830883, SUPPORT "CORRUPTED" BIT FOR INNODB TABLES AND INDEXES.
Also addressed issues in bug #11745133, where we could mark a table
corrupted instead of crashing the server when found a corrupted buffer/page
if the table created with innodb_file_per_table on.
2011-08-16 18:07:59 -07:00
unknown
b213e7f814 2nd fix for Bug #55713 innochecksum is NOT built with large file support enabled 2011-08-17 00:34:11 +02:00
unknown
c79b036ed1 fix for bug 55713 innochecksum is NOT built with large file support enabled 2011-08-16 19:29:06 +02:00
Sneha Modi
887ac6774f Fixing a few broken tests. 2011-08-16 16:06:34 +05:30
Joerg Bruehe
4930026804 Null-merge,
conflict on "configure.in" which is gone from 5.5.
No change.
2011-08-15 20:56:27 +02:00
Joerg Bruehe
d3ed4440de Null merge for pushing. 2011-08-15 20:43:11 +02:00
Joerg Bruehe
7048e02a4a Merge bug#47337 for pushing into 5.1 2011-08-15 20:41:17 +02:00
Marko Mäkelä
7f03063418 Merge mysql-5.1 to mysql-5.5. Add a test case. 2011-08-15 12:18:34 +03:00
Marko Mäkelä
669ff03703 Bug #11766591 59733: Possible deadlock when buffered changes are to be
discarded in buf_page_create()

This bug turned out to be a false alarm, a bug in the UNIV_SYNC_DEBUG
diagnostic code. Because of this, the patch was not backported to the
built-in InnoDB in MySQL 5.1. Furthermore, there is no test case for
InnoDB Plugin in MySQL 5.1, because the delete buffering in MySQL 5.5
makes triggering the failure much easier.

When a freed page for which there exist orphaned buffered changes is
allocated and reused for something else, buf_page_create() will discard
the buffered changes by invoking ibuf_merge_or_delete_for_page().
This would violate the InnoDB latching order.

Tweak the latching order as follows. Move SYNC_IBUF_MUTEX below
SYNC_FSP_PAGE, where it logically belongs, and assign new latching
levels for the ibuf->index->lock and the insert buffer B-tree pages:

#define SYNC_IBUF_MUTEX		370	/* ibuf_mutex */
#define SYNC_IBUF_INDEX_TREE	360
#define SYNC_IBUF_TREE_NODE_NEW	359
#define SYNC_IBUF_TREE_NODE	358

btr_block_get(), btr_page_get(): In UNIV_SYNC_DEBUG, add the parameter
"index" for determining the appropriate latching order
(SYNC_IBUF_TREE_NODE or SYNC_TREE_NODE).

btr_page_alloc_for_ibuf(), btr_create(): Use SYNC_IBUF_TREE_NODE_NEW
instead of SYNC_TREE_NODE_NEW for insert buffer pages.

btr_cur_search_to_nth_level(), btr_pcur_restore_position_func(): Use
SYNC_IBUF_TREE_NODE instead of SYNC_TREE_NODE for insert buffer pages.

btr_search_guess_on_hash(): Assert that the index is not an insert buffer tree.

dict_index_add_to_cache(): Use SYNC_IBUF_INDEX_TREE for the insert
buffer tree (ibuf->index->lock).

ibuf0ibuf.c: Use SYNC_IBUF_TREE_NODE or SYNC_IBUF_TREE_NODE_NEW for
all B-tree pages.

ibuf_merge_or_delete_for_page(): Assert that the user page is
BUF_IO_READ fixed. Only in this way it is OK to latch it as
SYNC_IBUF_TREE_NODE instead of the proper SYNC_TREE_NODE (which would
violate the changed latching order).

sync_thread_add_level(): Remove the special tweak for
SYNC_IBUF_MUTEX. Add rules for the added latching levels.

rb:591 approved by Jimmy Yang
2011-08-15 12:11:43 +03:00
Georgi Kodinov
84db3fb472 Bug #12777649: "OS THREAD ID" REMOVED
Pushed Calvin's patch.
2011-08-12 16:50:04 +03:00
Georgi Kodinov
f3b3087832 merged the version bump. bumped the 5.5 version to 5.5.17 2011-08-12 14:25:36 +03:00
Georgi Kodinov
a79cabcfef bumped the version to 5.1.60 2011-08-12 14:20:17 +03:00
Bjorn Munch
dfbe4b3367 Small followup fix to WL 5710:
Test mysql_plugin failed if version string ended in -mN
2011-08-12 12:49:38 +02:00
Dmitry Lenev
ea4de078af Fix for bug #12828477 - "MDL SUBSYSTEM CREATES BIG OVERHEAD
FOR CERTAIN QUERIES TO INFORMATION_SCHEMA".

The problem was that metadata locking subsystem introduced
too much overhead for queries to I_S which were processed by
opening only .FRM or .TRG files and had to scanned a lot of
tables (e.g. SELECT COUNT(*) FROM I_S.TRIGGERS was affected). 
The same effect was not observed for similar queries which 
performed full-blown table open in order to fill I_S table.

The problem stemmed from the fact that in case when I_S 
implementation opened only .FRM or .TRG file for each table 
processed it didn't release metadata lock it has acquired on 
the table after finishing its processing. As result, list
of acquired metadata locks were growing until the end of 
statement. Since acquisition of each new lock required 
search in the list of already acquired locks performance
degraded.

The same effect is not observed when I_S implementation
performs full-blown table open for each table being
processed, as in the latter cases metadata lock on the
table is released right after table processing.

This fix addressed the problem by ensuring that I_S 
implementation releases metadata lock after processing
the table in both cases of full-blown table open and in 
case when only .FRM or .TRG file is read.

mysql-test/r/information_schema.result:
  Added coverage for bug #12828477 - "MDL SUBSYSTEM CREATES BIG
  OVERHEAD FOR CERTAIN QUERIES TO INFORMATION_SCHEMA".
mysql-test/t/information_schema.test:
  Added coverage for bug #12828477 - "MDL SUBSYSTEM CREATES BIG
  OVERHEAD FOR CERTAIN QUERIES TO INFORMATION_SCHEMA".
sql/sql_show.cc:
  Changed fill_schema_table_from_frm() to release metadata lock
  it has acquired after processing the .FRM or .TRG file for
  table. 
  Without this step metadata locks acquired for each table 
  processed will be accumulated. In situation when a lot of 
  tables are processed by I_S query this will result in
  transaction with too many metadata locks. As result
  performance of acquisition of new lock will degrade.
2011-08-11 19:58:49 +04:00
Tatjana Azundris Nuernberg
9d7da6bd1f auto-merge 2011-08-11 13:11:34 +01:00
Tatjana Azundris Nuernberg
7d979a4f86 auto-merge 2011-08-11 13:09:45 +01:00
Tatjana Azundris Nuernberg
60ee66d3b3 auto-merge 2011-08-11 12:27:36 +01:00
Tatjana Azundris Nuernberg
a7da1a1ad2 auto-merge 2011-08-11 12:24:46 +01:00
Tatjana Azundris Nuernberg
c3b67560c9 auto-merge 2011-08-11 12:21:50 +01:00
Tatjana Azundris Nuernberg
00dad1c086 maintain behavior introduced in fix for MySQL bug 35765
(avert regression)
2011-08-11 09:34:16 +01:00
Chuck Bell
e08126089b WL#5710 : enable and disable plugins
Merge with main prior to pushing to mysql-5.5.
2011-08-10 14:39:49 -04:00
Marko Mäkelä
4baa66ae61 Merge from mysql-5.5 to local tree. 2011-08-10 13:50:27 +03:00
Vinay Fisrekar
e1273b8335 Committing Change On behalf Of Sneha Modi
Bug#12664445 - SYS_VARS.ALL_VARS: WRONG RESULTS RECORDED IN RESULT FILE - TEST CASES MISSING! 
      
The bug had missing test cases for three system variables. 
Test cases have been added for these variables:
'INNODB_FILE_FORMAT_MAX' 
'INNODB_ROLLBACK_SEGMENTS'
'INNODB_STATS_METHOD'
      
The 'sys_vars.all_vars' result file now looks like this:
      
select variable_name as `There should be *no* variables listed below:` from t2
left join t1 on variable_name=test_name where test_name is null;
There should be *no* variables listed below:
      
INNODB_LARGE_PREFIX
INNODB_LARGE_PREFIX
      
The variable 'INNODB_LARGE_PREFIX' is a newly added variable for MySQL 5.6.3 and the test will be added later by the developer.
2011-08-10 15:50:48 +05:30
Marko Mäkelä
79aa9c177b Merge mysql-5.1 to mysql-5.5. 2011-08-10 12:58:22 +03:00
Marko Mäkelä
7645c5ee90 Bug#12835650 VARCHAR maximum length performance impact
row_sel_field_store_in_mysql_format(): Do not pad the unused part of
the buffer reserved for a True VARCHAR column (introduced in 5.0.3).
Add Valgrind instrumentation ensuring that the unused part will be
flagged uninitialized.

row_sel_copy_cached_field_for_mysql(): New function: Copy a field
that is in the MySQL row format, not copying the unused tail of
VARCHAR columns.

row_sel_pop_cached_row_for_mysql(): Invoke
row_sel_copy_cached_field_for_mysql() for copying fields.
When the row is long, copy it field-by-field.

rb:715 approved by Inaam Rana
2011-08-10 12:25:24 +03:00
Chuck Bell
1b730666d4 WL#5710 : enable and disable plugins
This patch corrects an error in the test to ensure the proper path
is used for the --mysqld option.
2011-08-09 15:09:28 -04:00
Chuck Bell
99f2e85b6c WL#5710 : enable and disable plugins
This patch corrects a problem found in PB. Some platforms have very
different locations for the mysql installation. The client was not
able to find either my_print_defaults or mysqld predictably.

The patch adds two new command options --mysqld and --my-print-defaults
which can be used to provide the location of mysqld and
my_print_defaults by providing the paths.

The patch also changes the concatenation of the soname extension to
fix a problem found on some Ubuntu systems.

The patch contains changes to the test to ensure it will run on all
platforms. A trap is set in the test to skip testing if the location
of mysqld, my_print_defaults, or the daemon_example.ini files cannot
be determined.
2011-08-09 08:58:18 -04:00
Tatjana Azundris Nuernberg
0619bd5702 manual merge 2011-08-08 17:45:43 +01:00
Tatjana Azundris Nuernberg
e6bc34e2c3 auto merge 2011-08-08 17:24:43 +01:00
Tatjana Azundris Nuernberg
4cc0600342 merge 2011-08-08 13:17:01 +01:00
Sneha Modi
c671a76a4d Recommitting the changes to push the code. 2011-08-08 17:01:09 +05:30
Marko Mäkelä
5962cadcfa Merge mysql-5.1 to mysql-5.5. 2011-08-08 12:16:15 +03:00
Marko Mäkelä
6f8a80270c Bug#12770537 I_S.TABLES.DATA_LENGTH does not show on-disk size
for compressed InnoDB tables

ha_innodb::info_low(): For calculating data_length or index_length,
use the compressed page size for compressed tables instead of UNIV_PAGE_SIZE.

rb:714 approved by Sunny Bains
2011-08-08 11:22:18 +03:00
unknown
34a71efca7 fixing BUG 11759958 - 52319: MYSQL RHEL5 RPMS DO NOT REQUIRE NET-TOOLS 2011-08-06 01:51:25 +02:00
Gleb Shchepa
22c2d06d3d backport from mysql-trunk
BUG #11754979 - 46675: ON DUPLICATE KEY UPDATE AND UPDATECOUNT() POSSIBLY WRONG 

The mysql_affected_rows() client call returns 3 instead of 2 on
INSERT ... ON DUPLICATE KEY UPDATE query with a duplicated key value.

The fix for the old bug #29692 was incomplete: unnecessary double
increment of "touched" rows still happened.

This bugfix removes:
1) unneeded increment of "touched" rows and
2) useless double resetting of auto-increment value.


sql/sql_insert.cc:
  write_record() function:
  Unneeded increment of "touched" rows and useless double resetting
  of auto-increment value has been removed.
tests/mysql_client_test.c:
  New test case.
2011-08-03 17:53:44 +04:00
Sergey Glukhov
53fb954dde 5.1 -> 5.5 merge 2011-08-02 11:54:35 +04:00
Sergey Glukhov
3468b55a21 Bug#11766594 59736: SELECT DISTINCT.. INCORRECT RESULT WITH DETERMINISTIC FUNCTION IN WHERE C
There is an optimization of DISTINCT in JOIN::optimize()
which depends on THD::used_tables value. Each SELECT statement
inside SP resets used_tables value(see mysql_select()) and it
leads to wrong result. The fix is to replace THD::used_tables
with LEX::used_tables.


mysql-test/r/sp.result:
  test case
mysql-test/t/sp.test:
  test case
sql/sql_base.cc:
  THD::used_tables is replaced with LEX::used_tables
sql/sql_class.cc:
  THD::used_tables is replaced with LEX::used_tables
sql/sql_class.h:
  THD::used_tables is replaced with LEX::used_tables
sql/sql_insert.cc:
  THD::used_tables is replaced with LEX::used_tables
sql/sql_lex.cc:
  THD::used_tables is replaced with LEX::used_tables
sql/sql_lex.h:
  THD::used_tables is replaced with LEX::used_tables
sql/sql_prepare.cc:
  THD::used_tables is replaced with LEX::used_tables
sql/sql_select.cc:
  THD::used_tables is replaced with LEX::used_tables
2011-08-02 11:33:45 +04:00
unknown
8625a873d2 Merge from mysql-5.5.15-release 2011-07-28 19:14:12 +02:00