Commit graph

28100 commits

Author SHA1 Message Date
Marc Alff
4372875aa1 Bug#53696 Performance schema engine violates the PSEA API by calling my_error()
This is a code cleanup.

The implementation of a storage engine (subclasses of handler) is not supposed
to call my_error() directly inside the engine implementation, 
but only return error codes, and report errors later at the demand
of the sql layer only (if needed), using handler::print_error().

This fix removes misplaced calls to my_error(),
and provide an implementation of print_error() instead.

Given that the sql layer implementation of create table, ha_create_table(),
does not use print_error() but returns ER_CANT_CREATE_TABLE directly,
the return code for create table statements using the performance schema
has changed to ER_CANT_CREATE_TABLE.

Adjusted the test suite accordingly.
2010-12-01 13:06:41 +01:00
Bjorn Munch
cc21483fcf Bug #58092 Test "rpl_cross_version" has "copy_file" failing
I am not fixing the test failure
Adds printing of my_errno when commands fail, could hopefully help
2010-12-01 11:11:16 +01:00
Marc Alff
ea35bf7a71 Bug#56618 Thread_ID is not assigned in ascending sequence (after disconnect)
Before this fix, the test thread_cache failed with spurious failures.

The test used:
-- disconnect X
-- connect Y

while assuming that connection Y would reuse connection X slot in the thread cache.

For this to happen, the disconnect X operation must be given enough time to complete,
otherwise connect Y can be executed in the server before X actually finishes.

This fix uses wait conditions to make the test execution more controlled,
and more reproductible.
2010-12-01 11:10:15 +01:00
Marc Alff
639b25982b Bug#58512 Performance_schema.myisam_file_io fails sporadically in PB2
Before this fix, the test myisam_file_io executed:
- (a) an update on setup_instrument to disable non myisam file io instruments
- (b) a truncate on events_waits_history_long
and later
- (c) a select on events_waits_history_long

Surprisingly, events that were supposed to be disabled in (a) and removed in (b)
still were found in (c).

This happened for events such as 
  wait/io/file/innodb/innodb_data_file fil0fil.c: sync  
because the sync was started before (a) and completed after (b),
and as a consequence was added in the performance schema history, as expected.

Presence of these records in the history made the test fail. 

This fix makes the test script more robust to account for extra spill waits records in (c).
2010-12-01 10:24:16 +01:00
Marc Alff
b1f25ee9f7 Bug#58621 perfschema.dml_ews_by_thread_by_event_name test failure
This fix affects the test suite only.

Before this fix, performance schema tests dml_*.test could
fail with spurious failure, depending on the table content.

This fix simplifies the SELECT tests in the dml_*.test scripts,
to only verify that the SELECT operation passed the security checks
and succeeded, which was the original intent of the test.

Usage of 
  --replace_column 1 # 2 # 3 # 4 # ...
to discard the test output was replaced by a simpler and more maintainable 
  --disable_result_log
which also work for empty tables.
2010-12-01 09:01:04 +01:00
Nirbhay Choubey
45e17739d4 Merging from mysql-5.1-bugteam 2010-12-01 12:28:21 +05:30
Nirbhay Choubey
2d81ad5be5 Additional fix for bug#54899
Fixing the testcase to use the database name
as connected_db instead of 'test' database.

mysql-test/r/mysql.result:
  Additional fix in the test for bug#54899.
mysql-test/t/mysql.test:
  Additional fix in the test for bug#54899.
2010-12-01 12:25:31 +05:30
Luis Soares
647c619393 BUG#46166: MYSQL_BIN_LOG::new_file_impl is not propagating error
when generating new name.
      
If find_uniq_filename returns an error, then this error is not
being propagated upwards, and execution does not report error to
the user (although a entry in the error log is generated).
                  
Additionally, some more errors were ignored in new_file_impl:
- when writing the rotate event
- when reopening the index and binary log file
                  
This patch addresses this by propagating the error up in the
execution stack. Furthermore, when rotation of the binary log
fails, an incident event is written, because there may be a
chance that some changes for a given statement, were not properly
logged. For example, in SBR, LOAD DATA INFILE statement requires
more than one event to be logged, should rotation fail while
logging part of the LOAD DATA events, then the logged data would
become inconsistent with the data in the storage engine.

mysql-test/include/restart_mysqld.inc:
  Refactored restart_mysqld so that it is not hardcoded for
  mysqld.1, but rather for the current server.
mysql-test/suite/binlog/t/binlog_index.test:
  The error on open of index and binary log on new_file_impl 
  is now caught. Thence the user will get an error message. 
  We need to accomodate this change in the test case for the
  failing FLUSH LOGS.
mysql-test/suite/rpl/t/rpl_binlog_errors-master.opt:
  Sets max_binlog_size to 4096.
mysql-test/suite/rpl/t/rpl_binlog_errors.test:
  Added some test cases for asserting that the error is found 
  and reported.
sql/handler.cc:
  Catching error now returned by unlog (in ha_commit_trans) and 
  returning it.
sql/log.cc:
  Propagating errors from new_file_impl upwards. The errors that
  new_file_impl catches now are:
  - error on generate_new_name
  - error on writing the rotate event
  - error when opening the index or the binary log file.
sql/log.h:
  Changing declaration of:
  - rotate_and_purge
  - new_file
  - new_file_without_locking
  - new_file_impl
  - unlog
  They now return int instead of void.
sql/mysql_priv.h:
  Change signature of reload_acl_and_cache so that write_to_binlog
  is an int instead of bool.
sql/mysqld.cc:
  Redeclaring not_used var as int instead of bool.
sql/rpl_injector.cc:
  Changes to catch the return from rotate_and_purge.
sql/slave.cc:
  Changes to catch the return values for new_file and rotate_relay_log.
sql/slave.h:
  Changes to rotate_relay_log declaration (now returns int 
  instead of void).
sql/sql_load.cc:
  In SBR, some logging of LOAD DATA events goes through
  IO_CACHE_CALLBACK invocation at mf_iocache.c:_my_b_get. The
  IO_CACHE implementation is ignoring the return value for from
  these callbacks (pre_read and post_read), so we need to find out
  at the end of the execution if the error is set or not in THD.
sql/sql_parse.cc:
  Catching the rotate_relay_log and rotate_and_purge return values.
  Semantic change in reload_acl_and_cache so that we report errors
  in binlog interactions through the write_to_binlog output parameter.
  If there was any failure while rotating the binary log, we should
  then report the error to the client when handling SQLCOMM_FLUSH.
2010-11-30 23:32:51 +00:00
unknown
2dde698e0e Bug#55222 - RB://517 - Approved by Sunny
InnoDB does not attempt to handle lower_case_table_names == 2 when looking
up foreign table names and referenced table name.  It turned that server
variable into a boolean and ignored the possibility of it being '2'.  

The setting lower_case_table_names == 2 means that it should be stored and
displayed in mixed case as given, but compared internally in lower case.
Normally the server deals with this since it stores table names.  But
InnoDB stores referential constraints for the server, so it needs to keep
track of both lower case and given names.

This solution creates two table name pointers for each foreign and referenced
table name.  One to display the name, and one to look it up.  Both pointers
point to the same allocated string unless this setting is 2.  So the overhead
added is not too much.

Two functions are created in dict0mem.c to populate the ..._lookup versions
of these pointers.  Both dict_mem_foreign_table_name_lookup_set() and
dict_mem_referenced_table_name_lookup_set() are called 5 times each.
2010-11-30 12:25:52 -06:00
Jon Olav Hauglid
4836ae6571 Bug #58414 mysql_upgrade fails on dump upgrade between 5.1.53 -> 5.5.8
The problem was that mysql_upgrade failed because DROP DATABASE
refused to drop the 'performance_schema' database when the 
mysql.proc table definition was made temporarily invalid
by dump import.

This patch fixes the problem by adding the error resulting
from opening a damaged mysq.proc table (ER_CANNOT_LOAD_FROM_TABLE),
to the list of errors DROP DATABASE will ignore when trying
to lock stored procedures and functions before deletion.

This problem was a regression introduced by the patch for
Bug#57663.

Test case added to sp-destruct.test.
2010-11-30 18:52:38 +01:00
Christopher Powers
8f3d884dd2 Bug#35333, "If Federated table can't connect to remote host, can't retrieve
metadata"

Improved error handling such that queries against Information_Schema.Tables won't
fail if a federated table can't make a remote connection.

mysql-test/r/lock_multi.result:
  Updated with warnings that were previously masked.
mysql-test/r/mdl_sync.result:
  Updated with warnings that were previously masked.
mysql-test/r/merge.result:
  Updated with warnings that were previously masked.
mysql-test/r/show_check.result:
  Updated with warnings that were previously masked.
mysql-test/r/view.result:
  Updated with warnings that were previously masked.
mysql-test/suite/federated/federated_bug_35333.result:
  New test results for bug#35333
mysql-test/suite/federated/federated_bug_35333.test:
  New test or bug#35333
sql/sql_show.cc:
  If get_schema_tables_record() encounters an error, push a warning,
  set the TABLE COMMENT column with the error text, and clear the
  error so that the operation can continue.
2010-11-30 11:20:56 -06:00
Christopher Powers
f688713905 merge 2010-11-29 21:10:05 -06:00
Christopher Powers
e199c7cd17 Bug#35333, "If Federated table can't connect to remote host, can't retrieve metadata"
Improved error handling such that queries against Information_Schema.Tables won't
fail if a Federated table is unable to connect to remote host.



sql/sql_show.cc:
  If Handler::Info() fails, save error text in TABLE COMMENTS column, clear error.
2010-11-29 18:51:46 -06:00
Georgi Kodinov
2551fff8b2 Fixed bteam issue #37235: 5.0 trees now will work correctly in pb2 and
will not display "indicated result file not found" due to wrongly named
var directory.
2010-11-29 17:33:24 +02:00
Georgi Kodinov
6bef32a768 Fixed a pb2 issue with not finding the test dirs. 2010-11-29 17:30:07 +02:00
Vasil Dimov
9939a12445 Merge mysql-5.5-bugteam -> mysql-5.5-innodb 2010-11-29 09:08:23 +02:00
Vasil Dimov
e7e74cb620 Merge mysql-5.1-bugteam -> mysql-5.1-innodb 2010-11-29 09:07:11 +02:00
unknown
cd64b23fcf Bug #57666 Unclear warning with broken text in error log on INSERT DELAYED
It is not necessary to support INSERT DELAYED for a single value insert,
while we do not support that for multi-values insert when binlog is
enabled in SBR.

The lock_type is upgrade to TL_WRITE from TL_WRITE_DELAYED for
INSERT DELAYED for single value insert as multi-values insert
did when binlog is enabled. Then it's safe. And binlog it as
INSERT without DELAYED.

mysql-test/extra/binlog_tests/binlog_insert_delayed.test:
  Added test case for bug#57666.
mysql-test/suite/binlog/r/binlog_row_binlog.result:
  Updated for bug#57666
mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result:
  Updated for bug#57666
mysql-test/suite/binlog/r/binlog_stm_binlog.result:
  Updated for bug#57666
mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result:
  Updated for bug#57666
sql/sql_insert.cc:
  Updated code for the following things:
  1. Upgrade the lock_type to TL_WRITE from TL_WRITE_DELAYED
  for INSERT DELAYED for single value insert as multi-values
  insert did when binlog is enabled.
  2. Clear code to not binlog INSERT DELAYED STMT in SBR.
  3. Get rid of privilege check for log_on.
2010-11-29 11:04:16 +08:00
unknown
d08be72f75 Manual merge 2010-11-28 18:06:02 +08:00
unknown
f225470b39 BUG#54903 BINLOG statement toggles session variables
When using BINLOG statement to execute rows log events, session variables
foreign_key_checks and unique_checks are changed temporarily.  As each rows
log event has their own special session environment and its own
foreign_key_checks and unique_checks can be different from current session
which executing the BINLOG statement. But these variables are not restored
correctly after BINLOG statement. This problem will cause that the following
statements fail or generate unexpected data.

In this patch, code is added to backup and restore these two variables.
So BINLOG statement will not affect current session's variables again.


mysql-test/extra/binlog_tests/binlog.test:
  Add test to verify this patch.
mysql-test/suite/binlog/r/binlog_row_binlog.result:
  Add test to verify this patch.
mysql-test/suite/binlog/r/binlog_stm_binlog.result:
  Add test to verify this patch.
sql/sql_binlog.cc:
  Add code to backup and restore thd->options.
2010-11-28 17:43:36 +08:00
Luis Soares
6ce0bd8aff BUG#58416: binlog.binlog_row_failure_mixing_engines fails on
win x86 debug_max

The windows MTR run exhibited a different test execution 
ordering (due to the fact that in these platforms MTR is invoked
with --parallel > 1). This uncovered a bug in the aforementioned
test case, which is triggered by the following conditions:

  1. server is not restarted between two different tests;
  2. the test before binlog.binlog_row_failure_mixing_engines
     issues flush logs;
  3. binlog.binlog_row_failure_mixing_engines uses binlog
     positions to limit the output of show_binlog_events;
  4. binlog.binlog_row_failure_mixing_engines does not state which
     binlog file to use, thence it uses a wrong binlog file with
     the correct position.

There are two possible fixes: 1. make sure that the test start 
from a clean slate - binlog wise; 2. in addition to the position, 
also state the binary log file before sourcing 
show_binlog_events.inc .

We go for fix #1, ie, deploy a RESET MASTER before the test is 
actually started.
2010-11-27 11:51:07 +00:00
Bjorn Munch
d6df320d9e merge from 5.5-mtr 2010-11-27 11:52:17 +01:00
Bjorn Munch
7197f142cc merge from 5.1-mtr 2010-11-27 11:51:22 +01:00
Christopher Powers
bc0f5b24cf Bug#35333, "If Federated table can't connect to remote host, can't retrieve metadata"
mysql-test/r/show_check.result:
  Fixed corrupted result file
2010-11-30 09:43:50 -06:00
Christopher Powers
4edea18f8d Bug#35333, "If Federated table can't connect to remote host, can't retrieve
metadata"
            
Improved error handling such that queries against Information_Schema.Tables won't
fail if a federated table can't make a remote connection.

mysql-test/r/merge.result:
  Updated with warnings that were previously masked.
mysql-test/r/show_check.result:
  Updated with warnings that were previously masked.
mysql-test/r/view.result:
  Updated with warnings that were previously masked.
sql/sql_show.cc:
  If get_schema_tables_record() encounters an error, push a warning,
  set the TABLE COMMENT column with the error text, and clear the
  error so that the operation can continue.
2010-11-29 22:46:43 -06:00
Georgi Kodinov
edf1641ce4 merge 2010-11-26 17:34:33 +02:00
Georgi Kodinov
d6d0827ec6 merge 2010-11-26 17:27:41 +02:00
Georgi Kodinov
6fe1b33f20 merge 2010-11-26 16:32:51 +02:00
Alexander Barkov
f826970656 Merging from mysql-5.1-bugteam 2010-11-26 17:22:06 +03:00
Alexander Barkov
a7c09ea9f8 Bug#56639 Character Euro (0x88) not converted from cp1251 to utf8
Problem: MySQL cp1251 did not support 'U+20AC EURO SIGN'
which was assigned a few years ago to 0x88.

Fix: adding mapping: 0x88 <-> U+20AC 

  @ mysql-test/include/ctype_8bit.inc
  New shared file to test 8bit character sets.

  @ mysql-test/r/ctype_cp1251.result
  @ mysql-test/t/ctype_cp1251.test
  Adding tests

  @ sql/share/charsets/cp1251.xml
  Adding mapping

  @ strings/ctype-extra.c
  Regenerating ctype-extra.c using strings/conf_to_src
  according to new cp1251.xml
2010-11-26 16:58:54 +03:00
Nirbhay Choubey
e1b773cb53 Bug #54899 : --one-database option cannot handle DROP/CREATE DATABASE commands
After dropping and recreating the database specified along with --one-database
option at command line, mysql client keeps filtering the statements even after
the execution of a 'USE' command on the same database.

--one-database option enables the filtering of statements when the current
database is not the one specified at the command line. However, when the same
database is dropped and recreated the variable (current_db) that holds the
inital database name gets altered. This bug exploits the fact that current_db
initially gets set to null value (0) when a 'use db_name' follows the recreation
of same database db_name (speficied at the command line) and hence skip_updates
gets set to 1, which inturn triggers the further filtering of statements.

Fixed by making get_current_db() a no-op function when one_database is set,
and hence, under that condition current_db will not get altered.
Note, however the value of current_db can change when we execute 'connect'
command with a differnet database to reconnect to the server, in which case,
the behavior of --one-database will be formulated using this new database.


client/mysql.cc:
  Bug #54899 : --one-database option cannot handle DROP/CREATE DATABASE commands
  
  Added an if statement at the beginnning of get_current_db() , which makes it
  a no-op function if one-database option is specified, and hence current_db
  remains unchanged.
  
  Changed the help message for one-database option to a more appropriate message
  as specified in mysql documentation.
mysql-test/r/mysql.result:
  Added a test case for bug#54899 and some more test cases to
  check other one-database option related behaviors.
mysql-test/t/mysql.test:
  Added a test case for bug#54899 and some more test cases to
  check other one-database option related behaviors.
2010-11-26 19:27:59 +05:30
Bjorn Munch
a6bd3ba9b7 upmerge 58515 2010-11-26 14:30:22 +01:00
Bjorn Munch
067710eba1 Bug #58515 Tests: use use exec echo, not write_file to write mysqld.1.expect
Fixed as suggested in the .inc file and two tests
Could not reproduce problem, but tested tests on Windows
2010-11-26 13:59:39 +01:00
Georgi Kodinov
db8bd7beb8 merge 2010-11-26 14:51:48 +02:00
Alexander Barkov
e3dee8a7fd Bug#57737 Character sets: search fails with like, contraction, index
Problem: LIKE over an indexed column optimized away good results,
because my_like_range_utf32/utf16 returned wrong ranges for contractions.
Contraction related code was missing in my_like_range_utf32/utf16,
but did exist in my_like_range_ucs2/utf8.
It was forgotten in utf32/utf16 versions (during mysql-6.0 push/revert mess).

Fix:
The patch removes individual functions my_like_range_ucs2,
my_like_range_utf16, my_like_range_utf32 and introduces a single function
my_like_range_generic() instead. The new function handles contractions
correctly. It can handle any character set with cs->min_sort_char and
cs->max_sort_char represented in Unicode code points.

added:
  @ mysql-test/include/ctype_czech.inc
  @ mysql-test/include/ctype_like_ignorable.inc
  @ mysql-test/r/ctype_like_range.result
  @ mysql-test/t/ctype_like_range.test
  Adding tests


modified:

  @ include/m_ctype.h
  - Adding helper functions for contractions.
  - Prototypes: removing ucs2,utf16,utf32 functions, adding generic function.
  @ mysql-test/r/ctype_uca.result
  @ mysql-test/r/ctype_utf16_uca.result
  @ mysql-test/r/ctype_utf32_uca.result
  @ mysql-test/t/ctype_uca.test
  @ mysql-test/t/ctype_utf16_uca.test
  @ mysql-test/t/ctype_utf32_uca.test
  - Adding tests.

  @ strings/ctype-mb.c
  - Pad function did not put the last character.
  - Implementing my_like_range_generic() - an universal replacement
    for three separate functions
    my_like_range_ucs2(), my_like_range_utf16() and my_like_range_utf32(),
    with correct contraction handling.

  @ strings/ctype-ucs2.c
  - my_fill_mb2 did not put the high byte, as previously
    it was used to put only characters in ASCII range.
    Now it puts high byte as well
    (needed to pupulate cs->max_sort_char correctly).
  - Adding DBUG_ASSERT()
  - Removing character set specific functions:
    my_like_range_ucs2(), my_like_range_utf16() and my_like_range_utf32().
  - Using my_like_range_generic() instead of the old functions.

  @ strings/ctype-uca.c
  - Using generic function instead of the old character set specific ones.

  @ sql/item_create.cc
  @ sql/item_strfunc.cc
  @ sql/item_strfunc.h
  - Adding SQL functions LIKE_RANGE_MIN and LIKE_RANGE_MAX,
    available only in debug build to make sure like_range()
    works correctly for all character sets and collations.
2010-11-26 13:44:39 +03:00
Bjorn Munch
65120d9576 upmerge 58482 2010-11-26 10:59:09 +01:00
Bjorn Munch
ca2ea5541e Bug #58412 mysqltest: allow quoting of strings in let and in if comparison
Stripping quotes in let was a bad idea, will not fix
Added code to strip quotes from rhs in comparisons
2010-11-26 10:57:01 +01:00
Bjorn Munch
f6c89f46ca Bug #58482 mtr doesn't use suite names from individually specified test cases
It does work in general, the problem here was that the test name
'alter_table' matches 'main.alter_table-big' which has already been found.
Fixed by matching more explicitly (with/without suite name)
2010-11-25 13:43:58 +01:00
Alexander Nozdrin
96890a2d3d Auto-merge from mysql-5.5.7-rc-release. 2010-11-25 14:33:11 +03:00
Alexander Nozdrin
bb8361b60d Auto-merge from mysql-5.5.7-rc-release. 2010-11-25 13:46:18 +03:00
Bjorn Munch
b2d1b1f897 Test sys_vars.shared_memory_base_name_basic used wrong path 2010-11-25 10:28:36 +01:00
Tatiana A. Nurnberg
c24ec46986 merge some docs changes and a test case; null merge the code.
(we don't need to port the actual code from 5.1;
5.5+ do the relevant things differently, but correctly. the
test obviously is so it stays that way.)

mysql-test/r/variables.result:
  add test case.
mysql-test/t/variables.test:
  add test case.
strings/CHARSET_INFO.txt:
  clarify documentation
2010-11-25 03:50:16 +00:00
Tatiana A. Nurnberg
7336ac45b7 Assorted post-merge fixes, clean-up, integration, compat with 5.6.
43233/55794.

mysql-test/r/change_user.result:
  Don't use -1 integer wrap around. It used to work, but now we do what's
  actually in the documentation. In tests, we now use DEFAULT or the
  numeral equivalent (as we do in the 5.6 tests).
mysql-test/r/key_cache.result:
  Can't drop default key case is an error now, not a warning, for compatibility
  with 5.6.
mysql-test/r/variables.result:
  Can't drop default key case is an error now, not a warning, for compatibility
  with 5.6.
mysql-test/t/change_user.test:
  Don't use -1 integer wrap around. It used to work, but now we do what's
  actually in the documentation. In tests, we now use DEFAULT or the
  numeral equivalent (as we do in the 5.6 tests).
mysql-test/t/key_cache.test:
  Can't drop default key case is an error now, not a warning, for compatibility
  with 5.6.
mysql-test/t/variables.test:
  Can't drop default key case is an error now, not a warning, for compatibility
  with 5.6.
sql/mysqld.cc:
  0 is a legal (albeit magic) value: "drop key cache."
sql/set_var.cc:
  bound_unsigned() can go now, it was just a kludge until things are done
  The Right Way, which they are now.
  
  Can't drop default key case is an error now, not a warning, for compatibility
  with 5.6.
tests/mysql_client_test.c:
  Don't use -1 integer wrap around. It used to work, but now we do what's
  actually in the documentation. In tests, we now use DEFAULT or the
  numeral equivalent (as we do in the 5.6 tests).
2010-11-25 03:11:05 +00:00
Bjorn Munch
cad53ac74a upmerge 58424 and 43418 follow-up 2010-11-24 21:09:08 +01:00
Alexander Nozdrin
07a07e29bb - Fix changelog (remove duplicated entry)
- Mark main.gis experimental
2010-11-24 18:55:23 +03:00
Alexander Nozdrin
39ce362885 Bug#55980 Character sets: supplementary character _bin ordering is wrong
Post-fix:
  Reverting the "utf16_bin did not sort supplementary characters
  between U+D700 and U+E000" part. We'll use code-point order.

Committing on behalf of Alexander Barkov.
2010-11-24 17:52:57 +03:00
Alexander Nozdrin
ca24ea9a9d Merge from mysql-5.1-security. 2010-11-24 17:11:36 +03:00
Alexander Nozdrin
8ed3c85a2b Mark a couple of tests experimental. 2010-11-24 16:32:15 +03:00
Bjorn Munch
dffe3ad3e7 merge 58424 2010-11-24 13:51:45 +01:00
Tatiana A. Nurnberg
161d4eea58 merge 2010-11-24 10:02:46 +00:00