Skip to content

Commit 4c141a4

Browse files
committed
Use transaction to 'SHOW WARNINGS'. Fixes #918
1 parent 077de03 commit 4c141a4

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/MySqlConnector/MySqlConnection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -812,8 +812,9 @@ internal void FinishQuerying(bool hasWarnings)
812812
{
813813
var errors = new List<MySqlError>();
814814
using (var command = new MySqlCommand("SHOW WARNINGS;", this))
815-
using (var reader = command.ExecuteReader())
816815
{
816+
command.Transaction = CurrentTransaction;
817+
using var reader = command.ExecuteReader();
817818
while (reader.Read())
818819
errors.Add(new(reader.GetString(0), reader.GetInt32(1), reader.GetString(2)));
819820
}

tests/SideBySide/ConnectionTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,30 @@ public void GotInfoMessageForNonExistentTable()
4040
Assert.True(gotEvent);
4141
}
4242

43+
[Fact]
44+
public void GotInfoMessageForNonExistentTableInTransaction()
45+
{
46+
using var connection = new MySqlConnection(AppConfig.ConnectionString);
47+
connection.Open();
48+
using var transaction = connection.BeginTransaction();
49+
50+
var gotEvent = false;
51+
connection.InfoMessage += (s, a) =>
52+
{
53+
gotEvent = true;
54+
#if BASELINE
55+
Assert.Single(a.errors);
56+
Assert.Equal((int) MySqlErrorCode.BadTable, a.errors[0].Code);
57+
#else
58+
Assert.Single(a.Errors);
59+
Assert.Equal((int) MySqlErrorCode.BadTable, a.Errors[0].Code);
60+
#endif
61+
};
62+
63+
connection.Execute(@"drop table if exists table_does_not_exist;", transaction: transaction);
64+
Assert.True(gotEvent);
65+
}
66+
4367
[Fact]
4468
public void NoInfoMessageWhenNotLastStatementInBatch()
4569
{

0 commit comments

Comments
 (0)