Skip to content

Commit 0de2496

Browse files
committed
Clear schema table for new result set. Fixes #581
1 parent eff609a commit 0de2496

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/MySqlConnector/MySql.Data.MySqlClient/MySqlDataReader.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,18 @@ internal async Task<bool> NextResultAsync(IOBehavior ioBehavior, CancellationTok
5959
ActivateResultSet(nextResult);
6060

6161
m_resultSet = nextResult ?? new ResultSet(this);
62+
#if !NETSTANDARD1_3
63+
m_schemaTable = null;
64+
#endif
6265
return nextResult != null;
6366
}
6467
catch (MySqlException)
6568
{
6669
m_resultSet = new ResultSet(this);
6770
m_resultSetBuffered = null;
71+
#if !NETSTANDARD1_3
72+
m_schemaTable = null;
73+
#endif
6874
throw;
6975
}
7076
}

tests/SideBySide/DataTypes.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,29 @@ private void DoGetSchemaTable(string column, string table, MySqlDbType mySqlDbTy
11261126
}
11271127
}
11281128
}
1129+
1130+
[Fact]
1131+
public void GetSchemaTableTwice()
1132+
{
1133+
using (var command = Connection.CreateCommand())
1134+
{
1135+
command.CommandText = "select Int16 from datatypes_integers; select Int32 from datatypes_integers;";
1136+
using (var reader = command.ExecuteReader())
1137+
{
1138+
var table = reader.GetSchemaTable();
1139+
Assert.Equal("Int16", table.Rows[0]["ColumnName"]);
1140+
1141+
while (reader.Read())
1142+
{
1143+
}
1144+
1145+
Assert.True(reader.NextResult());
1146+
1147+
table = reader.GetSchemaTable();
1148+
Assert.Equal("Int32", table.Rows[0]["ColumnName"]);
1149+
}
1150+
}
1151+
}
11291152
#endif
11301153

11311154
#if !BASELINE

0 commit comments

Comments
 (0)