mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-35160 RBR does not work with vector type, ER_SLAVE_CONVERSION_FAILED
This commit is contained in:
14
mysql-test/suite/rpl/r/vector.result
Normal file
14
mysql-test/suite/rpl/r/vector.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
[connection master]
|
||||||
|
#
|
||||||
|
# MDEV-35160 RBR does not work with vector type, ER_SLAVE_CONVERSION_FAILED
|
||||||
|
#
|
||||||
|
create table t (pk int primary key, a vector(1) not null);
|
||||||
|
insert into t values (1, 0x00000000);
|
||||||
|
connection slave;
|
||||||
|
select pk, vec_totext(a) from t;
|
||||||
|
pk vec_totext(a)
|
||||||
|
1 [0]
|
||||||
|
connection master;
|
||||||
|
drop table t;
|
||||||
|
include/rpl_end.inc
|
16
mysql-test/suite/rpl/t/vector.test
Normal file
16
mysql-test/suite/rpl/t/vector.test
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
--source include/master-slave.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-35160 RBR does not work with vector type, ER_SLAVE_CONVERSION_FAILED
|
||||||
|
--echo #
|
||||||
|
create table t (pk int primary key, a vector(1) not null);
|
||||||
|
insert into t values (1, 0x00000000);
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
select pk, vec_totext(a) from t;
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
drop table t;
|
||||||
|
|
||||||
|
--source include/rpl_end.inc
|
@@ -320,3 +320,12 @@ int Field_vector::store(const char *from, size_t length, CHARSET_INFO *cs)
|
|||||||
|
|
||||||
return Field_varstring::store(from, length, cs);
|
return Field_varstring::store(from, length, cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum_conv_type Field_vector::rpl_conv_type_from(const Conv_source &src,
|
||||||
|
const Relay_log_info *rli, const Conv_param ¶m) const
|
||||||
|
{
|
||||||
|
if (src.type_handler() == &type_handler_varchar &&
|
||||||
|
field_length == src.type_handler()->max_display_length_for_field(src))
|
||||||
|
return rpl_conv_type_from_same_data_type(src.metadata(), rli, param);
|
||||||
|
return CONV_TYPE_IMPOSSIBLE;
|
||||||
|
}
|
||||||
|
@@ -125,6 +125,8 @@ public:
|
|||||||
int store(double nr) override;
|
int store(double nr) override;
|
||||||
int store(longlong nr, bool unsigned_val) override;
|
int store(longlong nr, bool unsigned_val) override;
|
||||||
int store_decimal(const my_decimal *) override;
|
int store_decimal(const my_decimal *) override;
|
||||||
|
enum_conv_type rpl_conv_type_from(const Conv_source &, const Relay_log_info *,
|
||||||
|
const Conv_param &) const override;
|
||||||
uint size_of() const override { return sizeof(*this); }
|
uint size_of() const override { return sizeof(*this); }
|
||||||
bool update_min(Field *, bool) override { return false; } // disable EITS
|
bool update_min(Field *, bool) override { return false; } // disable EITS
|
||||||
bool update_max(Field *, bool) override { return false; } // disable EITS
|
bool update_max(Field *, bool) override { return false; } // disable EITS
|
||||||
|
Reference in New Issue
Block a user