1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-32844: THD::rli_fake/rgi_fake not cleared on new connection

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
This commit is contained in:
Kristian Nielsen
2023-11-20 15:01:26 +01:00
parent 7aca66a36a
commit d415f600cd
3 changed files with 38 additions and 11 deletions

View File

@ -0,0 +1,14 @@
'### MDEV-32844: THD::rli_fake/rgi_fake not cleared on new connection'
connect con1,localhost,root,,;
BINLOG '
6ENbZQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuNi1NYXJpYURCLWRlYnVnLWxvZwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADoQ1tlEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgGbvv33
';
disconnect con1;
connect con1,localhost,root,,;
SET SESSION pseudo_slave_mode= 1;
disconnect con1;
connection default;

View File

@ -0,0 +1,20 @@
--source include/not_embedded.inc
--source include/load_sysvars.inc
--echo '### MDEV-32844: THD::rli_fake/rgi_fake not cleared on new connection'
--connect(con1,localhost,root,,)
BINLOG '
6ENbZQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuNi1NYXJpYURCLWRlYnVnLWxvZwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADoQ1tlEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgGbvv33
';
--disconnect con1
--connect(con1,localhost,root,,)
# The bug was that the THD::rli_fake was not cleared when the THD is re-used
# for the new connection, and we would get a warning from the following
# statement.
SET SESSION pseudo_slave_mode= 1;
--disconnect con1
--connection default

View File

@ -1593,6 +1593,10 @@ void THD::free_connection()
vio_delete(net.vio); vio_delete(net.vio);
net.vio= nullptr; net.vio= nullptr;
net_end(&net); net_end(&net);
delete(rgi_fake);
rgi_fake= NULL;
delete(rli_fake);
rli_fake= NULL;
#endif #endif
if (!cleanup_done) if (!cleanup_done)
cleanup(); cleanup();
@ -1695,17 +1699,6 @@ THD::~THD()
dbug_sentry= THD_SENTRY_GONE; dbug_sentry= THD_SENTRY_GONE;
#endif #endif
#ifndef EMBEDDED_LIBRARY #ifndef EMBEDDED_LIBRARY
if (rgi_fake)
{
delete rgi_fake;
rgi_fake= NULL;
}
if (rli_fake)
{
delete rli_fake;
rli_fake= NULL;
}
if (rgi_slave) if (rgi_slave)
rgi_slave->cleanup_after_session(); rgi_slave->cleanup_after_session();
my_free(semisync_info); my_free(semisync_info);