diff --git a/mysql-test/suite/federated/federated.result b/mysql-test/suite/federated/federated.result index 7734546fbf4..1bdb63158da 100644 --- a/mysql-test/suite/federated/federated.result +++ b/mysql-test/suite/federated/federated.result @@ -18,6 +18,18 @@ drop table t1; select * from fed; Got one of the listed errors drop table fed; +# +# MDEV-40854 Use of uninitialized table_will_be_deleted in federated engine +# +create table t1 (c int); +create temporary table t2 (c int) connection='mysql://root@127.0.0.1:MASTER_PORT/test/t1' engine=federated; +insert into t2 values (),(); +select * from t1; +c +NULL +NULL +drop tables t1, t2; +# End of 10.11 tests connection master; DROP TABLE IF EXISTS federated.t1; DROP DATABASE IF EXISTS federated; diff --git a/mysql-test/suite/federated/federated.test b/mysql-test/suite/federated/federated.test index 0cb0551d23e..d35f6e7b93a 100644 --- a/mysql-test/suite/federated/federated.test +++ b/mysql-test/suite/federated/federated.test @@ -21,5 +21,18 @@ drop table t1; select * from fed; drop table fed; +--echo # +--echo # MDEV-40854 Use of uninitialized table_will_be_deleted in federated engine +--echo # + +create table t1 (c int); +--replace_result $MASTER_MYPORT MASTER_PORT +eval create temporary table t2 (c int) connection='mysql://root@127.0.0.1:$MASTER_MYPORT/test/t1' engine=federated; +insert into t2 values (),(); +select * from t1; +drop tables t1, t2; + +--echo # End of 10.11 tests + source include/federated_cleanup.inc; diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc index 4e21c3295bd..4208182c51e 100644 --- a/storage/federated/ha_federated.cc +++ b/storage/federated/ha_federated.cc @@ -2974,6 +2974,8 @@ int ha_federated::extra(ha_extra_function operation) int ha_federated::reset(void) { + table_will_be_deleted= false; + insert_dup_update= FALSE; ignore_duplicates= FALSE; replace_duplicates= FALSE; diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc index e43ae392316..4dca3ee113d 100644 --- a/storage/federatedx/ha_federatedx.cc +++ b/storage/federatedx/ha_federatedx.cc @@ -3202,6 +3202,8 @@ int ha_federatedx::reset(void) THD *thd= ha_thd(); int error = 0; + table_will_be_deleted= false; + insert_dup_update= FALSE; ignore_duplicates= FALSE; replace_duplicates= FALSE;