Skip to content

Commit d415f60

Browse files
committed
MDEV-32844: THD::rli_fake/rgi_fake not cleared on new connection
Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
1 parent 7aca66a commit d415f60

File tree

3 files changed

+38
-11
lines changed

3 files changed

+38
-11
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'### MDEV-32844: THD::rli_fake/rgi_fake not cleared on new connection'
2+
connect con1,localhost,root,,;
3+
BINLOG '
4+
6ENbZQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuNi1NYXJpYURCLWRlYnVnLWxvZwAAAAAAAAAAAAAA
5+
AAAAAAAAAAAAAAAAAADoQ1tlEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
6+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
7+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
8+
AAAAAAAAAAAEEwQADQgICAoKCgGbvv33
9+
';
10+
disconnect con1;
11+
connect con1,localhost,root,,;
12+
SET SESSION pseudo_slave_mode= 1;
13+
disconnect con1;
14+
connection default;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--source include/not_embedded.inc
2+
--source include/load_sysvars.inc
3+
4+
--echo '### MDEV-32844: THD::rli_fake/rgi_fake not cleared on new connection'
5+
--connect(con1,localhost,root,,)
6+
BINLOG '
7+
6ENbZQ8BAAAA/AAAAAABAAAAAAQAMTAuMTEuNi1NYXJpYURCLWRlYnVnLWxvZwAAAAAAAAAAAAAA
8+
AAAAAAAAAAAAAAAAAADoQ1tlEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
9+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
10+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
11+
AAAAAAAAAAAEEwQADQgICAoKCgGbvv33
12+
';
13+
--disconnect con1
14+
--connect(con1,localhost,root,,)
15+
# The bug was that the THD::rli_fake was not cleared when the THD is re-used
16+
# for the new connection, and we would get a warning from the following
17+
# statement.
18+
SET SESSION pseudo_slave_mode= 1;
19+
--disconnect con1
20+
--connection default

sql/sql_class.cc

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,6 +1593,10 @@ void THD::free_connection()
15931593
vio_delete(net.vio);
15941594
net.vio= nullptr;
15951595
net_end(&net);
1596+
delete(rgi_fake);
1597+
rgi_fake= NULL;
1598+
delete(rli_fake);
1599+
rli_fake= NULL;
15961600
#endif
15971601
if (!cleanup_done)
15981602
cleanup();
@@ -1695,17 +1699,6 @@ THD::~THD()
16951699
dbug_sentry= THD_SENTRY_GONE;
16961700
#endif
16971701
#ifndef EMBEDDED_LIBRARY
1698-
if (rgi_fake)
1699-
{
1700-
delete rgi_fake;
1701-
rgi_fake= NULL;
1702-
}
1703-
if (rli_fake)
1704-
{
1705-
delete rli_fake;
1706-
rli_fake= NULL;
1707-
}
1708-
17091702
if (rgi_slave)
17101703
rgi_slave->cleanup_after_session();
17111704
my_free(semisync_info);

0 commit comments

Comments
 (0)