diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlDataReader.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlDataReader.cs index 4896d8e9cb..4f5292ffc4 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlDataReader.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlDataReader.cs @@ -1479,7 +1479,7 @@ public override DataTable GetSchemaTable() Debug.Assert(null != _metaData.schemaTable, "No schema information yet!"); } } - return _metaData?.schemaTable ?? new DataTable(); + return _metaData?.schemaTable; } finally { diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlDataReader.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlDataReader.cs index d015ca434f..68c5aba989 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlDataReader.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlDataReader.cs @@ -1679,12 +1679,17 @@ override public DataTable GetSchemaTable() { if (null != this.MetaData) { + _metaData.schemaTable = BuildSchemaTable(); Debug.Assert(null != _metaData.schemaTable, "No schema information yet!"); // filter table? } } - return _metaData?.schemaTable ?? new DataTable(); + if (null != _metaData) + { + return _metaData.schemaTable; + } + return null; } finally { diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs index b7787b5855..eb408dd780 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs @@ -37,6 +37,7 @@ public static void LoadReaderIntoDataTableToTestGetSchemaTable() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void MultiQuerySchema() { + SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(DataTestUtility.TCPConnectionString); using (SqlConnection connection = new SqlConnection(DataTestUtility.TCPConnectionString)) { connection.Open(); @@ -65,25 +66,7 @@ public static void MultiQuerySchema() } } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] - public static void GetSchemaTable_returns_null_when_no_resultset() - { - using (SqlConnection connection = new SqlConnection(DataTestUtility.TCPConnectionString)) - { - connection.Open(); - using (SqlCommand command = connection.CreateCommand()) - { - command.CommandText = "SELECT 1"; - using (SqlDataReader reader = command.ExecuteReader()) - { - reader.NextResult(); - Assert.NotNull(reader.GetSchemaTable()); - } - } - } - } - // Checks for the IsColumnSet bit in the GetSchemaTable for Sparse columns [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void CheckSparseColumnBit()