Commit graph

1694 commits

Author SHA1 Message Date
Mats Kindahl
c63df11f37 WL#5151: Conversion between different types when replicating
Row-based replication requires the types of columns on the
master and slave to be approximately the same (some safe
conversions between strings are allowed), but does not
allow safe conversions between fields of similar types such
as TINYINT and INT.

This patch implement type conversions between similar fields
on the master and slave.

The conversions are controlled using a new variable
SLAVE_TYPE_CONVERSIONS of type SET('ALL_LOSSY','ALL_NON_LOSSY').

Non-lossy conversions are any conversions that do not run the
risk of losing any information, while lossy conversions can
potentially truncate the value. The column definitions are
checked to decide if the conversion is acceptable.

If neither conversion is enabled, it is required that the
definitions of the columns are identical on master and slave.

Conversion is done by creating an internal conversion table,
unpacking the master data into it, and then copy the data to
the real table on the slave.
2009-12-14 12:04:55 +01:00
Alfranio Correia
75f382ea14 merge mysql-5.1-rep+2 --> mysql-5.1-rep+3 2009-12-14 10:40:42 +00:00
Alexander Nozdrin
bc2d4e620a Manual merge from mysql-trunk-merge.
Conflicts:
  - extra/comp_err.c
  - mysql-test/collections/default.experimental
  - mysql-test/r/archive.result
  - mysql-test/r/select.result
  - mysql-test/suite/binlog/r/binlog_unsafe.result
  - mysql-test/suite/binlog/t/binlog_unsafe.test
  - mysql-test/suite/rpl/t/disabled.def
  - mysql-test/t/archive.test
  - mysql-test/t/select.test
  - sql/item.cc
  - sql/item.h
  - sql/item_timefunc.cc
  - sql/sql_base.cc
  - sql/sql_delete.cc
  - sql/sql_load.cc
  - sql/sql_partition.cc
  - sql/sql_table.cc
  - storage/innobase/handler/ha_innodb.cc
  - vio/vio.c
2009-12-12 23:38:59 +03:00
Alexey Kopytov
72cceeece2 Disabled binlog.binlog_index, bug#49638. 2009-12-12 10:04:52 +03:00
Alexey Kopytov
72b2943594 Manual merge of mysql-5.1-bugteam into mysql-trunk-merge. 2009-12-11 19:40:58 +03:00
Alexander Nozdrin
69cfd5c8ec Manual merge from mysql-trunk.
Conflicts:
  - client/mysqltest.cc
  - mysql-test/collections/default.experimental
  - mysql-test/suite/rpl/t/disabled.def
  - sql/mysqld.cc
  - sql/opt_range.cc
  - sql/sp.cc
  - sql/sql_acl.cc
  - sql/sql_partition.cc
  - sql/sql_table.cc
2009-12-11 12:39:38 +03:00
V Narayanan
e3df8b6d9a Bug#49329 example (and other) engines use wrong collation for open tables hash
This fix changes the character set used within the
IBMDB2I handler to hash table names to information
about open tables. Previously, tables with names
that differed only in letter case would hash to the
same data structure. This caused incorrect behavior
or errors when two such tables were in use simultaneously.
2009-12-11 12:31:16 +05:30
Alexander Nozdrin
3a33af89d8 Auto-merge from mysql-next-mr-bugfixing. 2009-12-10 22:27:28 +03:00
He Zhenxing
644015d239 Auto merge 2009-12-10 12:56:10 +08:00
He Zhenxing
6878d7e74b Merge from 5.0-bugteam 2009-12-10 11:51:42 +08:00
Sergey Vojtovich
a806fd134d Merge mysql-next-mr to mysql-next-mr-svoj. 2009-12-09 15:03:34 +04:00
Sergey Vojtovich
1e2abc8f29 An addition to backport of
WL#3951 - MyISAM: Additional Error Logs for Data Corruption
Fixed partition_repair_myisam.test.
2009-12-09 11:33:28 +04:00
He Zhenxing
bda9422a3a Merge Bug#45520 fix from 5.0-bugteam 2009-12-09 14:24:54 +08:00
Alfranio Correia
259b028d8e Post-push fix for BUG#45292.
Disabled execution in valgrind to avoid false positive memory
leaks due to fault-injection tests (i.e. call to abort()).
2009-12-08 16:03:19 +00:00
Sergey Vojtovich
fb1cfa1265 WL#2511 - Add a new table to the Information Schema for TABLESPACE's
Implemented a new INFORMATION_SCHEMA table, which is intended to
provide information about tablespaces.
2009-12-07 16:22:51 +04:00
Luis Soares
2abecf2a21 automerge: mysql-5.1-bugteam bug branch --> mysql-5.1-bugteam latest 2009-12-06 23:14:45 +00:00
Luis Soares
289c14931b BUG#49119: Master crashes when executing 'REVOKE ... ON
{PROCEDURE|FUNCTION} FROM ...'

The master would hit an assertion when binary log was
active. This was due to the fact that the thread's diagnostics
area was being cleared before writing to the binlog,
independently of mysql_routine_grant returning an error or
not. When mysql_routine_grant was to return an error, the return
value and the diagnostics area contents would
mismatch. Consequently, neither my_ok would be called nor an
error would be signaled in the diagnostics area, eventually
triggering the assertion in net_end_statement.

We fix this by not clearing the diagnostics area at binlogging
time.
2009-12-06 23:12:11 +00:00
Luis Soares
d0a24b1367 BUG#49479: Slave stops with syntax error: LOAD DATA event without
escaped field names

When in mixed or statement mode, the master logs LOAD DATA
queries by resorting to an Execute_load_query_log_event. This
event does not contain the original query, but a rewritten
version of it, which includes the table field names. However, the
rewrite does not escape the field names. If these names match a
reserved keyword, then the slave will stop with a syntax error
when executing the event.

We fix this by escaping the fields names as it happens already
for the table name.
2009-12-06 01:11:32 +00:00
Alfranio Correia
42fead104a Post-push fix for BUG#45292. 2009-12-05 22:09:41 +00:00
He Zhenxing
cbafed1cae Auto merge from 5.1-rep-semisync 2009-12-05 10:28:53 +08:00
Alfranio Correia
e362e9a71b BUG#45292 orphan binary log created when starting server twice
This patch fixes three bugs as follows. First, aborting the server while purging
binary logs might generate orphan files due to how the purge operation was
implemented:

          (purge routine - sql/log.cc - MYSQL_BIN_LOG::purge_logs)

      1 - register the files to be removed in a temporary buffer.
      2 - update the log-bin.index.
      3 - flush the log-bin.index.
      4 - erase the files whose names where register in the temporary buffer
      in step 1.

Thus a failure while  executing step 4 would generate an orphan file. Second,
a similar issue might happen while creating a new binary as follows:

          (create routine - sql/log.cc - MYSQL_BIN_LOG::open)

      1 - open the new log-bin.
      2 - update the log-bin.index.

Thus a failure while executing step 1 would generate an orphan file.

To fix these issues, we record the files to be purged or created before really
removing or adding them. So if a failure happens such records can be used to
automatically remove dangling files. The new steps might be outlined as follows:

          (purge routine - sql/log.cc - MYSQL_BIN_LOG::purge_logs)

      1 - register the files to be removed in the log-bin.~rec~ placed in
      the data directory.
      2 - update the log-bin.index.
      3 - flush the log-bin.index.
      4 - delete the log-bin.~rec~.

          (create routine - sql/log.cc - MYSQL_BIN_LOG::open)

      1 - register the file to be created in the log-bin.~rec~
      placed in the data directory.
      2 - open the new log-bin.
      3 - update the log-bin.index.
      4 - delete the log-bin.~rec~.

          (recovery routine - sql/log.cc - MYSQL_BIN_LOG::open_index_file)

      1 - open the log-bin.index.
      2 - open the log-bin.~rec~.
      3 - for each file in log-bin.~rec~.
        3.1 Check if the file is in the log-bin.index and if so ignore it.
        3.2 Otherwise, delete it.

The third issue can be described as follows. The purge operation was allowing
to remove a file in use thus leading to the loss of data and possible
inconsistencies between the master and slave. Roughly, the routine was only
taking into account the dump threads and so if a slave was not connect the
file might be delete even though it was in use.
2009-12-04 14:40:42 +00:00
He Zhenxing
a4bd241536 Auto merge fixes for Bug#49020 2009-12-04 16:05:35 +08:00
He Zhenxing
16ec25c0a8 Bug#49020 Semi-sync master crashed with free_pool == NULL, assertion `free_pool_'
Before this patch, semisync assumed transactions running in parallel
can not be larger than max_connections, but this is not true when
the event scheduler is executing events, and cause semisync run out
of preallocated transaction nodes.

Fix the problem by allocating transaction nodes dynamically.

This patch also fixed a possible deadlock when running UNINSTALL
PLUGIN rpl_semi_sync_master and updating in parallel. Fixed by
releasing the internal Delegate lock before unlock the plugins.
2009-12-04 09:46:33 +08:00
Alexey Kopytov
cf70d90a4d Manual merge of mysql-5.1-bugteam to mysql-trunk-merge. 2009-12-03 23:46:06 +03:00
Satya B
5ae5b102c2 Disable main.innodb and innodb.innodb-index until BUG#49396 is fixed.
These tests are fails due to result mismatch only in embedded mode.
2009-12-03 17:33:24 +05:30
Alexander Nozdrin
5e690da12a Auto-merge from mysql-next-mr. 2009-12-03 12:20:54 +03:00
34ab4521fb WL#5142 FLUSH LOGS should take optional arguments for which log(s) to flush
Support for flushing individual logs, so that the user can
selectively flush a subset of the server logs.

Flush of individual logs is done according to the 
following syntax:

  FLUSH <log_category> LOGS;

The syntax is extended so that the user is able to flush a
subset of logs:

  FLUSH [log_category LOGS,];

where log_category is one of:
  SLOW
  ERROR
  BINARY
  ENGINE
  GENERAL
  RELAY.
2009-12-03 16:59:58 +08:00
Alexander Nozdrin
3f797a46de Auto-merge from mysql-next-mr. 2009-12-02 19:00:26 +03:00
Alexander Nozdrin
f26ac4ba7a Manual merge from mysql-next-mr.
Conflicts:
  - sql/sql_yacc.yy
2009-12-02 18:50:14 +03:00
Satya B
57f7f1fdf3 Merge Innodb Plugin 1.0.6 from mysql-5.1-bugteam storage/innodb_plugin to mysql-trunk-merge.
Merging revisions 3221 to 3230 from mysql-5.1-bugteam
2009-12-02 19:30:50 +05:30
Andrei Elkin
9b8e816fd1 merging 5.1->rep+2->rep+3 2009-12-02 14:17:07 +02:00
Andrei Elkin
e8e85ed2a6 Manual resolving for the following files
Text conflict in mysql-test/collections/default.experimental
Text conflict in mysql-test/r/show_check.result
Text conflict in mysql-test/r/sp-code.result
Text conflict in mysql-test/suite/binlog/r/binlog_tmp_table.result
Text conflict in mysql-test/suite/rpl/t/disabled.def
Text conflict in mysql-test/t/show_check.test
Text conflict in mysys/my_delete.c
Text conflict in sql/item.h
Text conflict in sql/item_cmpfunc.h
Text conflict in sql/log.cc
Text conflict in sql/mysqld.cc
Text conflict in sql/repl_failsafe.cc
Text conflict in sql/slave.cc
Text conflict in sql/sql_parse.cc
Text conflict in sql/sql_table.cc
Text conflict in sql/sql_yacc.yy
Text conflict in storage/myisam/ha_myisam.cc

Corrected results for
 stm_auto_increment_bug33029.reject      2009-12-01
		20:01:49.000000000 +0300
       <andrei> @@ -42,9 +42,6 @@
       <andrei>  RETURN i;
       <andrei>  END//
       <andrei>  CALL p1();
       <andrei> -Warnings:
       <andrei> -Note   1592    Statement may not be safe to log in statement
		format.
       <andrei> -Note   1592    Statement may not be safe to log in statement
		format.

There should be indeed no Note present because there is in fact autoincrement 
top-level query in sp() that triggers inserting in yet another auto-inc table.
(todo: alert DaoGang to improve the test).
2009-12-01 21:07:18 +02:00
Alexey Kopytov
1f0f7f3929 Automerge of mysql-5.1-bugteam into mysql-trunk-merge. 2009-12-01 17:58:44 +03:00
Georgi Kodinov
a33168168c Bug #45576: moving the test from experimental to disabled. 2009-12-01 11:21:15 +02:00
Andrei Elkin
070d190906 mergin 5.1 -> rep+2 -> rep+3. create_table_from_dump issue will be merged on the next step 2009-11-30 20:20:26 +02:00
Satya B
072e2bb4db Applying InnoDB Plugin 1.0.6 snapshot, part 7
Fixes several test cases.

applied revisions: r6181, r6182, r6183, r6184

r6183 - changes are made only to tests in innodb suite which is only 
        innodb-consistent-master.opt

Detailed revision comments:

r6181 | vasil | 2009-11-17 12:21:41 +0200 (Tue, 17 Nov 2009) | 33 lines
branches/zip:

At the end of innodb-index.test: restore the environment as it was before
the test was started to silence this warning:

  MTR's internal check of the test case 'main.innodb-index' failed.
  This means that the test case does not preserve the state that existed
  before the test case was executed.  Most likely the test case did not
  do a proper clean-up.
  This is the diff of the states of the servers before and after the
  test case was executed:
  mysqltest: Logging to '/tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.log'.
  mysqltest: Results saved in '/tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result'.
  mysqltest: Connecting to server localhost:13000 (socket /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/mysqld.1.sock) as 'root', connection 'default', attempt 0 ...
  mysqltest: ... Connected.
  mysqltest: Start processing test commands from './include/check-testcase.test' ...
  mysqltest: ... Done processing test commands.
  --- /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result	2009-11-17 13:10:40.000000000 +0300
  +++ /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.reject	2009-11-17 13:10:54.000000000 +0300
  @@ -84,7 +84,7 @@
   INNODB_DOUBLEWRITE	ON
   INNODB_FAST_SHUTDOWN	1
   INNODB_FILE_FORMAT	Antelope
  -INNODB_FILE_FORMAT_CHECK	Antelope
  +INNODB_FILE_FORMAT_CHECK	Barracuda
   INNODB_FILE_PER_TABLE	OFF
   INNODB_FLUSH_LOG_AT_TRX_COMMIT	1
   INNODB_FLUSH_METHOD	
  
  mysqltest: Result content mismatch
  
  not ok

r6182 | marko | 2009-11-17 13:49:15 +0200 (Tue, 17 Nov 2009) | 1 line
branches/zip: Set svn:eol-style on mysql-test files.
r6183 | marko | 2009-11-17 13:51:16 +0200 (Tue, 17 Nov 2009) | 1 line
branches/zip: Prepend loose_ to plugin-only mysql-test options.
r6184 | marko | 2009-11-17 13:52:01 +0200 (Tue, 17 Nov 2009) | 1 line
branches/zip: innodb-index.test: Restore innodb_file_format_check.
2009-11-30 18:19:13 +05:30
Andrei Elkin
a6f2076c03 merging from 5.1 to rep+2 starting at gca(5.1, next-mr) == build@mysql.com-20091104182209-iui387z35159aoyw 2009-11-30 14:34:39 +02:00
Satya B
7950aae4c4 Applying InnoDB Plugin 1.0.6 snapshot, part 6. Add Testcase for BUG#46676
1. add testcase for BUG#46676
2. Allow CREATE INDEX to be interrupted
3. ha_innobase::change_active_index(): When the history is
   missing, report it to the client, not to the error log
4. ChangeLog entries

appplied revisions:r6169, r6170, r6175, r6177, r6179

Detailed revision comments:

r6169 | calvin | 2009-11-12 14:40:43 +0200 (Thu, 12 Nov 2009) | 6 lines
branches/zip: add test case for bug#46676

This crash is reproducible with InnoDB plugin 1.0.4 + MySQL 5.1.37.
But no longer reproducible after MySQL 5.1.38 (with plugin 1.0.5).
Add test case to catch future regression.

r6170 | marko | 2009-11-12 15:49:08 +0200 (Thu, 12 Nov 2009) | 4 lines
branches/zip: Allow CREATE INDEX to be interrupted.  (Issue #354)

rb://183 approved by Heikki Tuuri

r6175 | vasil | 2009-11-16 20:07:39 +0200 (Mon, 16 Nov 2009) | 4 lines
branches/zip:

Wrap line at 78th char in the ChangeLog

r6177 | calvin | 2009-11-16 20:20:38 +0200 (Mon, 16 Nov 2009) | 2 lines
branches/zip: add an entry to ChangeLog for r6065

r6179 | marko | 2009-11-17 10:19:34 +0200 (Tue, 17 Nov 2009) | 2 lines
branches/zip: ha_innobase::change_active_index(): When the history is
missing, report it to the client, not to the error log.
2009-11-30 17:54:54 +05:30
Satya B
dded7cf8c8 Applying InnoDB Plugin 1.0.6 snapshot, part 3. Fixes BUG#47167
applied revisions: r6157

Detailed revision comments:

r6157 | jyang | 2009-11-11 14:27:09 +0200 (Wed, 11 Nov 2009) | 10 lines
branches/zip: Fix an issue that a local variable defined
in innodb_file_format_check_validate() is being referenced
across function in innodb_file_format_check_update().
In addition, fix "set global innodb_file_format_check =
DEFAULT" call.
Bug #47167: "set global innodb_file_format_check" cannot
set value by User-Defined Variable."
rb://169 approved by Sunny Bains and Marko.
2009-11-30 17:26:21 +05:30
Serge Kozlov
71a1b1e755 WL#3894, post-push fix. 2009-11-28 17:53:48 +03:00
f6ff4a5810 Bug #43913 rpl_cross_version can't pass on conflicts complainig clash with --slave-load-tm
The 'slave_patternload_file' is assigned to the real path of the load data file 
when initializing the object of Relay_log_info. But the path of the load data
file is not formatted to real path when executing event from relay log. So the 
error will be encountered if the path of the load data file is a symbolic link.

Actually the global 'opt_secure_file_priv' is not formatted to real path when 
loading data from file. So the same thing will happen too.

      
To fix these errors, the path of the load data file should be formatted to 
real path when executing event from relay log. And the 'opt_secure_file_priv' 
should be formatted to real path when loading data infile.
2009-11-28 12:43:16 +08:00
Serge Kozlov
6475109c1f Backport for WL#3894 2009-11-28 02:34:47 +03:00
Alfranio Correia
6b31aa1040 BUG#48506 crash in CREATE TABLE IF NOT EXISTS <existing_view> LIKE
<tmp_tbl> with RBL

When binlogging the statement, the server always handle the existing
object as a table, even though it is a view. However a view is
handled differently in other parts of the code thus leading the
statement to crash in RBL if the view exists.

This happens because the underlying tables for the view are not opened
when we try to call store_create_info() on the view in order to build
a CREATE TABLE statement.

This patch will only address the crash problem, other binlogging
problems related to CREATE TABLE IF NOT EXISTS LIKE when the existing
object is a view will be solved by BUG 47442.
2009-11-27 13:34:39 +00:00
Horst.Hunger
a6d408c3cd another patch to fix differences. 2009-11-27 13:08:38 +01:00
Horst.Hunger
836b51ac23 No more socket and no more diffs in result files. 2009-11-27 09:02:32 +01:00
Horst.Hunger
8424bef0c5 Forgotten to add the windows version of the tests. Done with that patch. 2009-11-26 13:03:36 +01:00
Horst.Hunger
f532170898 Improvements to reduce the output for better reading and more stability. 2009-11-26 09:03:04 +01:00
Alexander Nozdrin
5c8ceee1fb Update result files. 2009-11-25 17:12:30 +03:00
Mattias Jonsson
c492e97da1 merge of bug#47135 into mysql-next-mr-bugfixing 2009-11-25 09:19:34 +01:00
Alexey Kopytov
f16b372b37 Manual merge from the mysql-5.1-bugteam. 2009-11-24 11:31:36 +03:00