Commit graph

26048 commits

Author SHA1 Message Date
Luis Soares
9c1918a7f7 Merged bundle from bug report. 2010-03-17 11:10:03 +00:00
Luis Soares
92b5e58675 BUG#51426: overflow for auto_increment column causes slave to stop
In BUG#49562 we fixed the case where numeric user var events
would not serialize the flag stating whether the value was signed
or unsigned (unsigned_flag). This fixed the case that the slave
would get an overflow while treating the unsigned values as
signed.
      
In this bug, we find that the unsigned_flag can sometimes change
between the moment that the user value is recorded for binlogging
purposes and the actual binlogging time. Since we take the
unsigned_flag from the runtime variable data, at binlogging time,
and the variable value is comes from the copy taken earlier in
the execution, there may be inconsistency in the
User_var_log_event between the variable value and its
unsigned_flag.
      
We fix this by also copying the unsigned_flag of the
user_var_entry when its value is copied, for binlogging
purposes. Later, at binlogging time, we use the copied
unsigned_flag and not the one in the runtime user_var_entry
instance.
2010-03-17 00:06:13 +00:00
Mattias Jonsson
5937da69a6 merge 2010-03-16 17:20:42 +01:00
Alexander Nozdrin
8347e1ea20 Skip perfschema.misc if "var" is a symlink (due to Bug 51447).
mysql-test/include/not_var_link.inc:
  Committed on behalf of Bjorn.
2010-03-16 17:19:45 +03:00
Konstantin Osipov
09b7a0d115 A post-review fix for type-aware metadata locks.
DDL no longer aborts mysql_lock_tables(), and hence
we no longer need to support need_reopen flag of this
call. 
Remove the flag, and all the code in the server
that was responsible for handling the case when
it was set. This allowed to simplify: 
open_and_lock_tables_derived(), the delayed thread,
multi-update.

Rename MYSQL_LOCK_IGNORE_FLUSH to MYSQL_OPEN_IGNORE_FLUSH,
since we now only support this flag in open_table().

Rename MYSQL_LOCK_PERF_SCHEMA to MYSQL_LOCK_LOG_TABLE,
to avoid confusion.

Move the wait for the global read lock for cases
when we do updates in SELECT f1() or DO (UPDATE) to 
open_table() from mysql_lock_tables(). When waiting
for the read lock, we could raise need_reopen flag,
which is no longer present in mysql_lock_tables().
Since the block responsible for waiting for GRL
was moved, MYSQL_LOCK_IGNORE_GLOBAL_READ_LOCK
was renamed to MYSQL_OPEN_IGNORE_GLOBAL_READ_LOCK.


mysql-test/r/mdl_sync.result:
  Update test results (see comments for mdl_sync.test).
mysql-test/t/mdl_sync.test:
  Update tests: an abort mysql_lock_tables() called for an
  INSERT no longer auto-closes SQL HANDLERS, since it
  no longer leads to back-off and retry.
sql/ha_ndbcluster_binlog.cc:
  Remove unused variables.
sql/lock.cc:
  Remove support for need_reopen parameter of mysql_lock_tables().
  Update comments.
sql/log_event_old.cc:
  Remove the loop responsible for handling need_reopen
  out parameter of mysql_lock_tables().
sql/mysql_priv.h:
  Update open and lock tables flag names.
sql/share/errmsg-utf8.txt:
  Add a new error message to report when
  thr_multi_lock() is aborted.
sql/sql_base.cc:
  Update comments. Rename MYSQL_LOCK_IGNORE_FLUSH
  to MYSQL_OPEN_IGNORE_FLUSH.
sql/sql_class.h:
  Remove unused code.
sql/sql_db.cc:
  Remove an unused bit of code.
sql/sql_handler.cc:
  For backward compatibility, we still want to back off and
  retry when a call to mysql_lock_tables() is aborted
  from within an SQL HANDLER. Write an internal error
  handler to support the case.
sql/sql_insert.cc:
  Call mysql_lock_tables() no longer has need_reopen
  out parameter. Simplify the code by removing 
  the crud that took care of it.
  MYSQL_LOCK_IGNORE_FLUSH is now only supported by
  open_tables().
sql/sql_show.cc:
  Rename MYSQL_LOCK_IGNORE_FLUSH to MYSQL_OPEN_IGNORE_FLUSH
sql/sql_table.cc:
  Remove an unused parameter.
sql/sql_update.cc:
  Remove the need_reopen loop from multi-update.
  We no also longer need to cleanup the parse tree in case
  when mysql_lock_tables() is aborted and thus an infinite
  source of multi-update bugs is gone.
sql/tztime.cc:
  Rename MYSQL_LOCK_IGNORE_FLUSH to MYSQL_OPEN_IGNORE_FLUSH,
  since from now on this flag is only supported by open_table().
2010-03-16 00:20:20 +03:00
Alexander Nozdrin
8825ea3f2a Auto-merge from mysql-trunk. 2010-03-15 20:10:17 +03:00
Alexander Nozdrin
c161a4876b A patch for Bug#52071 (rpl_ndb.rpl_ndb_ctype_ucs2_def fails).
Use new command line options instead of deprecated and removed ones.
2010-03-15 20:00:20 +03:00
Alexander Nozdrin
6be830e14b Enable ndb and rpl_ndb test suites in daily builds. 2010-03-15 19:43:26 +03:00
Magnus Blåudd
df1ed40b30 Merge in fix for bug#42589 2010-03-15 14:57:20 +01:00
Konstantin Osipov
7116431a8a A review comment for the fix for Bug#46672.
Remove unnecessary need_reopen loops.
2010-03-13 13:58:27 +03:00
Luis Soares
b7b9b45366 BUG#51716 post push fix.
There are two issues fixed here:

  1. We needed to update the result file, for some of 
     mysqlbinlog_* tests, because now the some padding chars
     are not output anymore.

  2. We needed to change the Field_string::pack so that
     for BINARY types the padding chars are not packed 
     (lengthsp will return full length for these types).
2010-03-12 12:42:30 +00:00
Luis Soares
baab8dd83c Automerge: mysql-next-mr-bugfixing bug branch --> mysql-next-mr-bugfixing latest. 2010-03-11 11:28:35 +00:00
Alexander Barkov
b0ed7a5499 An additional fix for WL#1213 4-byte UTF8
- Fixing crash on attempt to create a fulltext index with an utf8mb4 column
- fixing wrong border width  for supplementary characters in mysql client:

  mysql --default-character-set=utf8mb4 -e "select concat(_utf32 0x20000,'a')"
2010-03-11 14:34:11 +04:00
He Zhenxing
9c2961ab63 Auto merge 2010-03-11 10:58:20 +08:00
He Zhenxing
7f76b4d36c Enable rpl_semi_sync test on Windows 2010-03-11 10:56:46 +08:00
Luis Soares
092d50389e Fix for BUG#51716 and BUG#51787: test case improvements.
Split rpl_row_charset into:

  - rpl_row_utf16.
  - rpl_row_utf32.

This way these tests can run independently if server supports
either one of the charsets but not both.

Cleaned up rpl_row_utf32 which had a spurious instruction:
-- let $reset_slave_type_conversions= 0
2010-03-10 22:20:39 +00:00
Davi Arnaut
f147aa35a6 Automatic merge. 2010-03-10 15:44:58 -03:00
Luis Soares
ade4977c1e Fix for BUG#51716 and BUG#51787.
In BUG#51787 we were using the wrong charset to print out the
data. We were using the field charset for the string that would
hold the information. This caused the assertion, because the
string length was not aligned with UTF32 bytes requirements for
storage.

We fix this by using &my_charset_latin1 in the string object
instead of the field->charset(). As a side-effect, we needed to
extend the show_sql_type interface so that it took the field
charset is now passed as a parameter, so that one is able to
calculate the correct field size.

In BUG#51716 we had issues with Field_string::pack and
Field_string::unpack. When packing, the length was incorrectly
calculated. When unpacking, the padding the string would be
padded with the wrong bytes (a few bytes less than it should).

We fix this by resorting to charset abstractions (functions) that
calculate the correct length when packing and pad correctly the
string when unpacking.
2010-03-10 17:33:51 +00:00
Alexander Nozdrin
929293b9be Auto-merge from mysql-next-mr-bugfixing. 2010-03-10 17:58:35 +03:00
Konstantin Osipov
7fe455a6bc A fix and a test case for Bug#51710 FLUSH TABLES <view> WITH READ
LOCK kills the server.

Prohibit FLUSH TABLES WITH READ LOCK application to views or
temporary tables.
Fix a subtle bug in the implementation when we actually
did not remove table share objects from the table cache after 
acquiring exclusive locks.

mysql-test/r/flush.result:
  Update results (Bug#51710)
mysql-test/t/flush.test:
  Add a test case for Bug#51710.
sql/sql_parse.cc:
  Fix Bug#51710 "FLUSH TABLES <view> WITH READ LOCK
  killes the server.
  Ensure we don't open views and temporary tables.
  Fix a yet another bug in the implementation which 
  did not actually remove the tables from cache after acquiring
  exclusive locks.
2010-03-10 17:35:25 +03:00
Davi Arnaut
b11740894e Bug#33669: Transactional temporary tables do not work under --read-only
The problem was that in read only mode (read_only enabled),
the server would mistakenly deny data modification attempts
for temporary tables which belong to a transactional storage
engine (eg. InnoDB).

The solution is to allow transactional temporary tables to be
modified under read only mode. As a whole, the read only mode
does not apply to any kind of temporary table.


mysql-test/r/read_only_innodb.result:
  Add test case result for Bug#33669
mysql-test/t/read_only_innodb.test:
  Add test case for Bug#33669
sql/lock.cc:
  Rename mysql_lock_tables_check to lock_tables_check and make
  it static. Move locking related checks from get_lock_data to
  lock_tables_check. Allow write locks to temporary tables even
  under read-only.
2010-03-10 10:36:40 -03:00
Luis Soares
55c9a39078 BUG#50442: MTR check for rpl_sync fails
The test case crashes and recovers the server twice, and while 
recovering InnoDB sets innodb_file_format_check to different
format on second restart. This makes the test case clean up
check to fail.

We fix this by deploying the option "--innodb_file_format_check='ON'"
in slave startup configuration. This makes the innodb_file_format_check
to not change on secod restart.
2010-03-10 12:40:29 +00:00
Tor Didriksen
58559ac827 Bug#50888 valgrind warnings in Field_timestamp::val_str
Ensure that we store the correct cached_field_type whenever we cache Field items
(in this case it allows us to compare dates as dates, rather than strings)


mysql-test/r/type_timestamp.result:
  Add test case.
mysql-test/t/type_timestamp.test:
  Add test case.
sql/item.h:
  Initialize cached_field_type from the Field item.
2010-03-09 15:54:12 +01:00
Alexander Nozdrin
4315b101f5 pfs_upgrade.test is a case-sensitive test. 2010-03-09 18:05:19 +03:00
Marc Alff
a7c9bf2ccf Bug#51295 Build warnings in mdl.cc
Before this fix, the performance schema instrumentation
in mdl.h / mdl.cc was incomplete, causing:
- build warnings,
- no data collection for the performance schema

This fix:
- added instrumentation helpers for the new preferred
  reader read write lock, mysql_prlock_*
- implemented completely the performance schema
  instrumentation of mdl.h / mdl.cc
2010-03-07 10:50:47 -07:00
Marc Alff
7ece4fe472 local merge 2010-03-07 10:10:24 -07:00
Bjorn Munch
22f923f2b1 Bug #51511 MTRv1 unable to find mysqld binary in out-of-source cmake builds
Set $glob_bindir, like $bindir in v2
Removed some obsolete IM code rather than changing it
2010-03-06 20:22:04 +01:00
Marc Alff
ed3a57fea3 Bug#45194 mysql_upgrade deletes existing data in performance_schema database/schema
Before this fix, mysql_upgrade would always drop and re create
the performance_schema database.
This in theory could destroy user data created using 5.1 or older versions.

With this fix, mysql_upgrade checks the content of the
performance_schema database before droping it.
2010-03-05 08:31:01 -07:00
Guilhem Bichot
7bb4e5b459 Fix for BUG#51215 "log-error partially works with version 5.5": WL 4738 (reengineering of server variables)
had broken the 5.1 behaviour of --log-error: --log-error without argument sent to stderr instead of writing
to a file with an autogenerated name.

mysql-test/suite/sys_vars/t/log_error_func.test:
  test that error log is created and shown in SHOW VARIABLES.
  Interestingly the error log's path is apparently relative if --log-error=argument is used, but
  may be absolute or relative if --log-error(no argument) is used (because then the path is derived from
  that of pidfile_name, which can be absolute or relative, depending on if autogenerated or not).
mysql-test/suite/sys_vars/t/log_error_func2.test:
  test that error log is created and shown in SHOW VARIABLES
mysql-test/suite/sys_vars/t/log_error_func3.test:
  test that error log is empty in SHOW VARIABLES
sql/mysql_priv.h:
  id for option --log-error
sql/mysqld.cc:
  No --log-error means "write errors to stderr", whereas --log-error
  without argument means "write errors to a file". So we cannot use the default logic
  of class sys_var_charptr, which treats "option not used" the same as "option used
  without argument" and uses the same default for both. We need to catch "option used",
  in mysqld_get_one_option(), and then "without argument". Setting to "" makes sure
  that init_server_components() will create the log, with an autogenerated name.
sql/sys_vars.cc:
  need to give the option a numeric id so that we can catch it in mysqld_get_one_option()
2010-03-05 14:08:21 +01:00
Alexander Nozdrin
16dfa2b16f Make funcs_1.myisam_views experimental on Solaris due to Bug 50595. 2010-03-05 12:28:45 +03:00
Alexander Barkov
56dc1bd2e3 Fixing non-determenistic results. 2010-03-05 12:17:19 +04:00
Alexander Nozdrin
9f17a0018f Auto-merge from mysql-next-mr-bugfixing. 2010-03-04 18:39:32 +03:00
Alexander Nozdrin
366a68bb46 Auto-merge from mysql-next-mr-bugfixing. 2010-03-04 18:34:29 +03:00
Alexander Barkov
47aaf9c401 Bug#51675 Server crashes on inserting 4 byte char. after ALTER TABLE to 'utf8mb4'
Bug#51676 Server crashes on SELECT, ORDER BY on 'utf8mb4' column
An additional fix. We should use 0xFFFD as a weight for supplementary
characters, not the "weight for character U+FFFD".
2010-03-04 16:02:30 +04:00
Alexander Barkov
922cdddeb0 A joint patch for:
Bug#51675 Server crashes on inserting 4 byte char. after ALTER TABLE to 'utf8mb4' 
Bug#51676 Server crashes on SELECT, ORDER BY on 'utf8mb4' column


include/m_ctype.h:
  Defining MY_CS_REPLACEMENT_CHARACTER
mysql-test/r/ctype_utf8mb4.result:
  Adding tests
mysql-test/t/ctype_utf8mb4.test:
  Adding tests
strings/ctype-uca.c:
  Don't use UCA data for characters higher than 0xFFFF.
strings/ctype-ucs2.c:
  Using newly defined MY_CS_REPLACEMENT_CHARACTER
strings/ctype-utf8.c:
  Using newly defined MY_CS_REPLACEMENT_CHARACTER
  Removing unesed variable "plane".
2010-03-04 15:00:32 +04:00
Mattias Jonsson
5eaa7936f6 Bug#51347: assertion with show create table + partition by columns
on decimal column

The problem was that there was no check to disallow DECIMAL
columns in the code (it was accepted as if it was INTEGER).

Solution was to correctly disallow DECIMAL columns in
COLUMNS partitioning. As documented.

mysql-test/r/partition_column.result:
  Bug#51347: assertion with show create table + partition by columns
  on decimal column
  
  updated test result
mysql-test/t/partition_column.test:
  Bug#51347: assertion with show create table + partition by columns
  on decimal column
  
  Added test to verify column types that is not supported
sql/sql_partition.cc:
  Bug#51347: assertion with show create table + partition by columns
  on decimal column
  
  Moved DECIMAL types to be disallowed as column types in COLUMNS
  partitioning
2010-03-04 11:24:39 +01:00
Horst.Hunger
a75a9eb133 Push the test to next-mr-bar2 to let them run in pushbuild. 2010-03-04 08:34:44 +01:00
Alexander Nozdrin
0b1d317b23 A follow-up on WL#5154 and WL#5182: remove forgotten options. 2010-03-03 22:22:02 +03:00
Vladislav Vaintroub
87a1ad6310 merge 2010-03-03 15:48:54 +01:00
Vladislav Vaintroub
cd03a4625f Bug #51488 :missing features and change behavior in cmake runs compared to
autotools runs
- Fix recognition of --with-debug=full in configure wrapper
- Remove CMakeCache.txt in configure wrapper, to match the original
- Fix recognition of max-no-ndb
- Fix broken dependencies of mysql_fix_privilege_table.sql from 
  mysql_system_tables.sql and mysql_system_tables_fix.sql
- Add "distclean target" that informs user about appropriate bzr command



cmake/configure.pl:
  - Recognize --with-debug=full, map to WITH_DEBUG_FULL
  - remove CMakeCache.txt, so the configuration is no more sticky
  (to match the original configure behavior)
cmake/plugin.cmake:
  - Recognize WITH_MAX_NO_NDB, this fixes missing storage engines after BUILD/*max-no-ndb scripts
mysql-test/CMakeLists.txt:
  test-force uses the same macros (MTR_FORCE) as test-bt* now
scripts/CMakeLists.txt:
  - Fix broken dependency when producing mysql_fix_privilege_tables.sql, reported by Davi.
  We now concatenate 2 scripts in custom command that
  has dependency on both scripts rather than concatenating them at cmake time.
sql/CMakeLists.txt:
  Address frequently asked question "where is distclean" by implementing distclean target 
  that does nothing except pointing to appropriate 
  bzr command.
  
  It is better not to call "bzr clean-tree" automatically, without user consent.
  It could clean new files that were meant to be added.
2010-03-03 12:29:34 +01:00
Jon Olav Hauglid
b0ab907b42 Bug #51376 Assert `! is_set()' failed in
Diagnostics_area::set_ok_status on DROP FUNCTION

This assert tests that the server is not trying to send "ok" to
the client if an error has occured during statement processing.

In this case, the assert was triggered by lock timeout errors when
accessing system tables to do an implicit REVOKE after executing
DROP FUNCTION/PROCEDURE. In practice, this was only likely to
happen with very low values for "lock_wait_timeout" (in the bug report
1 second was used). These errors were ignored and the server tried
to send "ok" to the client, triggering the assert.

The patch for Bug#45225 introduced lock timeouts for metadata locks.
This made it possible to get timeouts when accessing system tables.
Note that a followup patch for Bug#45225 pushed after this
bug was reported, changed accessing of system tables such
that the user-supplied timeout value is ignored and the maximum
timeout value is used instead. This exact bug was therefore
only noticeable in the period between the initial Bug#45225 patch
and the followup patch.

However, the same problem could occur for any errors during revoking
of privileges - not just timeouts. This patch fixes the problem by
making sure that any errors during revoking of privileges are
reported to the client. 

Test case added to sp-destruct.test. Since the original bug is not
reproducable now that system tables are accessed using a a long
timeout value, this test instead calls DROP FUNCTION with a grant
system table missing.
2010-03-03 10:24:53 +01:00
Alexander Nozdrin
d3755291ca Manual merge from mysql-next-mr.
Conflicts:
  - sql/sql_base.cc
2010-03-02 17:34:50 +03:00
Alexander Nozdrin
64b91b2698 Auto-merge from mysql-trunk-merge. 2010-03-02 10:24:32 +03:00
Alexander Nozdrin
61bd9ef648 Remove test from experimental because Bug 45578 and 46010 are fixed. 2010-03-02 10:22:33 +03:00
Mattias Jonsson
4bce198ce9 manual merge fix of bug#42438 in mysql-next-mr-merge 2010-03-02 00:05:30 +01:00
Roy Lyseng
74310b21f1 WL#5252: deprecate --optimizer_search_depth=63
Followup: Changes in sys_vars test suite

  mysql-test/suite/sys_vars/r/optimizer_search_depth_basic.result
    Added warnings.
2010-03-01 21:19:47 +01:00
Dmitry Lenev
5e09c42f21 Merged recent changes from mysql-next-mr-bugfixing
into mysql-next-4284.
2010-03-01 19:48:39 +03:00
Roy Lyseng
b71eb4192c WL#5252: Deprecate --optimizer_search_depth=63
Add deprecation warning when variable optimizer_search_depth is given
the value 63.
      
  mysql-test/r/greedy_optimizer.result
    Updated with warning text.
  mysql-test/r/mysqld--help-notwin.result
    Updated with warning from mysqld --help --verbose.
  mysql-test/r/mysqld--help-win.result
    Updated with warning from mysqld --help --verbose.
  sql/sys_vars.cc
    Added an update check function to the constructor invocation for
    the optimizer_search_depth variable. The function emits a
    warning message for the value 63.
2010-03-01 17:31:02 +01:00
Dmitry Lenev
629be0947e Merge recent changes from mysql-next-mr-bugfixing
into mysql-next-4284 tree.
2010-03-01 18:13:57 +03:00
Marc Alff
de39f438e3 local merge before push to mysql-next-mr-bugfixing 2010-03-01 07:43:15 -07:00