From 0a4b2193b3d9214546a8fa8e4408a3aa9e72bfd1 Mon Sep 17 00:00:00 2001 From: Malcolm Daigle Date: Thu, 5 Mar 2026 10:25:16 -0800 Subject: [PATCH 1/4] Move QueryHintsTest from TvpTest to TvpQueryHintsTests --- .../SQL/ParameterTest/TvpQueryHintsTests.cs | 267 +++++++++++++++++- .../ManualTests/SQL/ParameterTest/TvpTest.cs | 238 ---------------- 2 files changed, 264 insertions(+), 241 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs index 512026f0a5..ba456c5892 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs @@ -3,10 +3,13 @@ // See the LICENSE file in the project root for more information. using System; +using System.Collections.Generic; +using System.Data; using System.Globalization; using System.IO; using System.Text; using System.Threading; +using Microsoft.Data.SqlClient.Server; using Xunit; namespace Microsoft.Data.SqlClient.ManualTesting.Tests @@ -58,9 +61,8 @@ private bool RunTestAndCompareWithBaseline() var twriter = new TvpTest.CarriageReturnLineFeedReplacer(swriter); Console.SetOut(twriter); - // Run Test - TvpTest instance is needed to access QueryHintsTest - var tvpTest = new TvpTest(); - tvpTest.QueryHintsTest(); + // Run Test + QueryHintsTest(); Console.Out.Flush(); Console.Out.Dispose(); @@ -90,6 +92,265 @@ private bool RunTestAndCompareWithBaseline() } } + private void QueryHintsTest() + { + using SqlConnection conn = new(DataTestUtility.TCPConnectionString); + conn.Open(); + + Guid randomizer = Guid.NewGuid(); + string typeName = string.Format("dbo.[QHint_{0}]", randomizer); + string procName = string.Format("dbo.[QHint_Proc_{0}]", randomizer); + string createTypeSql = string.Format( + "CREATE TYPE {0} AS TABLE(" + + " c1 Int DEFAULT -1," + + " c2 NVarChar(40) DEFAULT N'DEFUALT'," + + " c3 DateTime DEFAULT '1/1/2006'," + + " c4 Int DEFAULT -1)", + typeName); + string createProcSql = string.Format( + "CREATE PROC {0}(@tvp {1} READONLY) AS SELECT TOP(2) * FROM @tvp ORDER BY c1", procName, typeName); + string dropSql = string.Format("DROP PROC {0}; DROP TYPE {1}", procName, typeName); + + try + { + SqlCommand cmd = new(createTypeSql, conn); + cmd.ExecuteNonQuery(); + + cmd.CommandText = createProcSql; + cmd.ExecuteNonQuery(); + + cmd.CommandText = procName; + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter param = cmd.Parameters.Add("@tvp", SqlDbType.Structured); + + SqlMetaData[] columnMetadata; + List rows = new(); + SqlDataRecord record; + + Console.WriteLine("------- Sort order + uniqueness #1: simple -------"); + columnMetadata = new SqlMetaData[] { + new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 0), + new SqlMetaData("", SqlDbType.NVarChar, 40, false, true, SortOrder.Descending, 1), + new SqlMetaData("", SqlDbType.DateTime, false, true, SortOrder.Ascending, 2), + new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), + }; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(0, "Z-value", DateTime.Parse("03/01/2000"), 5); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(1, "Y-value", DateTime.Parse("02/01/2000"), 6); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(1, "X-value", DateTime.Parse("01/01/2000"), 7); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 8); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 4); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + rows.Clear(); + + Console.WriteLine("------- Sort order + uniqueness #2: mixed order -------"); + columnMetadata = new SqlMetaData[] { + new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), + new SqlMetaData("", SqlDbType.NVarChar, 40, false, true, SortOrder.Descending, 0), + new SqlMetaData("", SqlDbType.DateTime, false, true, SortOrder.Ascending, 2), + new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 1), + }; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + rows.Clear(); + + Console.WriteLine("------- default column #1: outer subset -------"); + columnMetadata = new SqlMetaData[] { + new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.NVarChar, 40, false, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.DateTime, false, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), + }; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + rows.Clear(); + + Console.WriteLine("------- default column #1: middle subset -------"); + columnMetadata = new SqlMetaData[] { + new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.NVarChar, 40, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), + }; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + rows.Clear(); + + Console.WriteLine("------- default column #1: all -------"); + columnMetadata = new SqlMetaData[] { + new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.NVarChar, 40, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), + }; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + rows.Clear(); + + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + finally + { + SqlCommand cmd = new(dropSql, conn); + cmd.ExecuteNonQuery(); + } + } + + private static void WriteReader(SqlDataReader rdr) + { + int colCount = rdr.FieldCount; + + do + { + Console.WriteLine("-------------"); + while (rdr.Read()) + { + for (int i = 0; i < colCount; i++) + { + Console.Write("{0} ", DataTestUtility.GetValueString(rdr.GetValue(i))); + } + Console.WriteLine(); + } + Console.WriteLine(); + Console.WriteLine("-------------"); + } + while (rdr.NextResult()); + } + private static string FindDiffFromBaseline(string baselinePath, string outputPath) { var expectedLines = File.ReadAllLines(baselinePath); diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpTest.cs index 5c788be58a..5c0459b687 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpTest.cs @@ -338,244 +338,6 @@ private void TestTVPPermutations(SteStructuredTypeBoundaries bounds, bool runOnl } } - internal void QueryHintsTest() - { - using SqlConnection conn = new(_connStr); - conn.Open(); - - Guid randomizer = Guid.NewGuid(); - string typeName = string.Format("dbo.[QHint_{0}]", randomizer); - string procName = string.Format("dbo.[QHint_Proc_{0}]", randomizer); - string createTypeSql = string.Format( - "CREATE TYPE {0} AS TABLE(" - + " c1 Int DEFAULT -1," - + " c2 NVarChar(40) DEFAULT N'DEFUALT'," - + " c3 DateTime DEFAULT '1/1/2006'," - + " c4 Int DEFAULT -1)", - typeName); - string createProcSql = string.Format( - "CREATE PROC {0}(@tvp {1} READONLY) AS SELECT TOP(2) * FROM @tvp ORDER BY c1", procName, typeName); - string dropSql = string.Format("DROP PROC {0}; DROP TYPE {1}", procName, typeName); - - try - { - SqlCommand cmd = new(createTypeSql, conn); - cmd.ExecuteNonQuery(); - - cmd.CommandText = createProcSql; - cmd.ExecuteNonQuery(); - - cmd.CommandText = procName; - cmd.CommandType = CommandType.StoredProcedure; - SqlParameter param = cmd.Parameters.Add("@tvp", SqlDbType.Structured); - - SqlMetaData[] columnMetadata; - List rows = new(); - SqlDataRecord record; - - Console.WriteLine("------- Sort order + uniqueness #1: simple -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 0), - new SqlMetaData("", SqlDbType.NVarChar, 40, false, true, SortOrder.Descending, 1), - new SqlMetaData("", SqlDbType.DateTime, false, true, SortOrder.Ascending, 2), - new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(0, "Z-value", DateTime.Parse("03/01/2000"), 5); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "Y-value", DateTime.Parse("02/01/2000"), 6); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("01/01/2000"), 7); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 8); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 4); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - Console.WriteLine("------- Sort order + uniqueness #2: mixed order -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), - new SqlMetaData("", SqlDbType.NVarChar, 40, false, true, SortOrder.Descending, 0), - new SqlMetaData("", SqlDbType.DateTime, false, true, SortOrder.Ascending, 2), - new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 1), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - Console.WriteLine("------- default column #1: outer subset -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.NVarChar, 40, false, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.DateTime, false, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - Console.WriteLine("------- default column #1: middle subset -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.NVarChar, 40, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - Console.WriteLine("------- default column #1: all -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.NVarChar, 40, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - } - catch (Exception e) - { - Console.WriteLine(e.Message); - } - finally - { - SqlCommand cmd = new(dropSql, conn); - cmd.ExecuteNonQuery(); - } - } - private static async Task RunPacketNumberWraparound( WraparoundRowEnumerator enumerator, CancellationToken cancellationToken) From dba080efafcb1d662ac9b1fe33b7c0c65acdd4bb Mon Sep 17 00:00:00 2001 From: Malcolm Daigle Date: Thu, 5 Mar 2026 10:33:23 -0800 Subject: [PATCH 2/4] Split QueryHintsTest into individual test case methods --- .../SQL/ParameterTest/TvpQueryHintsTests.cs | 426 ++++++++++-------- 1 file changed, 231 insertions(+), 195 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs index ba456c5892..3cba0e7bbb 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs @@ -123,201 +123,11 @@ private void QueryHintsTest() cmd.CommandType = CommandType.StoredProcedure; SqlParameter param = cmd.Parameters.Add("@tvp", SqlDbType.Structured); - SqlMetaData[] columnMetadata; - List rows = new(); - SqlDataRecord record; - - Console.WriteLine("------- Sort order + uniqueness #1: simple -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 0), - new SqlMetaData("", SqlDbType.NVarChar, 40, false, true, SortOrder.Descending, 1), - new SqlMetaData("", SqlDbType.DateTime, false, true, SortOrder.Ascending, 2), - new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(0, "Z-value", DateTime.Parse("03/01/2000"), 5); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "Y-value", DateTime.Parse("02/01/2000"), 6); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("01/01/2000"), 7); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 8); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 4); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - Console.WriteLine("------- Sort order + uniqueness #2: mixed order -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), - new SqlMetaData("", SqlDbType.NVarChar, 40, false, true, SortOrder.Descending, 0), - new SqlMetaData("", SqlDbType.DateTime, false, true, SortOrder.Ascending, 2), - new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 1), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - Console.WriteLine("------- default column #1: outer subset -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.NVarChar, 40, false, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.DateTime, false, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - Console.WriteLine("------- default column #1: middle subset -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.NVarChar, 40, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - - Console.WriteLine("------- default column #1: all -------"); - columnMetadata = new SqlMetaData[] { - new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.NVarChar, 40, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), - new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), - }; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } - rows.Clear(); - + SortOrderSimple(cmd, param); + SortOrderMixed(cmd, param); + DefaultColumnOuterSubset(cmd, param); + DefaultColumnMiddleSubset(cmd, param); + DefaultColumnAll(cmd, param); } catch (Exception e) { @@ -330,6 +140,232 @@ private void QueryHintsTest() } } + private static void SortOrderSimple(SqlCommand cmd, SqlParameter param) + { + List rows = new(); + + Console.WriteLine("------- Sort order + uniqueness #1: simple -------"); + SqlMetaData[] columnMetadata = new SqlMetaData[] + { + new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 0), + new SqlMetaData("", SqlDbType.NVarChar, 40, false, true, SortOrder.Descending, 1), + new SqlMetaData("", SqlDbType.DateTime, false, true, SortOrder.Ascending, 2), + new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), + }; + + SqlDataRecord record; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(0, "Z-value", DateTime.Parse("03/01/2000"), 5); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(1, "Y-value", DateTime.Parse("02/01/2000"), 6); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(1, "X-value", DateTime.Parse("01/01/2000"), 7); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 8); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 4); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + } + + private static void SortOrderMixed(SqlCommand cmd, SqlParameter param) + { + List rows = new(); + + Console.WriteLine("------- Sort order + uniqueness #2: mixed order -------"); + SqlMetaData[] columnMetadata = new SqlMetaData[] + { + new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), + new SqlMetaData("", SqlDbType.NVarChar, 40, false, true, SortOrder.Descending, 0), + new SqlMetaData("", SqlDbType.DateTime, false, true, SortOrder.Ascending, 2), + new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 1), + }; + + SqlDataRecord record; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + } + + private static void DefaultColumnOuterSubset(SqlCommand cmd, SqlParameter param) + { + List rows = new(); + + Console.WriteLine("------- default column #1: outer subset -------"); + SqlMetaData[] columnMetadata = new SqlMetaData[] + { + new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.NVarChar, 40, false, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.DateTime, false, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), + }; + + SqlDataRecord record; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + } + + private static void DefaultColumnMiddleSubset(SqlCommand cmd, SqlParameter param) + { + List rows = new(); + + Console.WriteLine("------- default column #1: middle subset -------"); + SqlMetaData[] columnMetadata = new SqlMetaData[] + { + new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.NVarChar, 40, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), + }; + + SqlDataRecord record; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + } + + private static void DefaultColumnAll(SqlCommand cmd, SqlParameter param) + { + List rows = new(); + + Console.WriteLine("------- default column #1: all -------"); + SqlMetaData[] columnMetadata = new SqlMetaData[] + { + new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.NVarChar, 40, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), + new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), + }; + + SqlDataRecord record; + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); + rows.Add(record); + + record = new SqlDataRecord(columnMetadata); + record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + rows.Add(record); + + param.Value = rows; + using (SqlDataReader rdr = cmd.ExecuteReader()) + { + WriteReader(rdr); + } + } + private static void WriteReader(SqlDataReader rdr) { int colCount = rdr.FieldCount; From bc41a578b69de8a90d7f209cb29ed2ac69dee038 Mon Sep 17 00:00:00 2001 From: Malcolm Daigle Date: Thu, 5 Mar 2026 10:38:30 -0800 Subject: [PATCH 3/4] Convert TvpQueryHintsTests to xunit assertions --- .../SQL/ParameterTest/TvpQueryHintsTests.cs | 428 ++++++------------ 1 file changed, 149 insertions(+), 279 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs index 3cba0e7bbb..4bf9cc1b9f 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs @@ -19,132 +19,56 @@ namespace Microsoft.Data.SqlClient.ManualTesting.Tests /// These tests run independently with their own baseline comparison. /// [Collection("ParameterBaselineTests")] - public class TvpQueryHintsTests + public sealed class TvpQueryHintsTests : IDisposable { - [Trait("Category", "flaky")] - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] - public void TvpQueryHintsTest() - { - Assert.True(RunTestAndCompareWithBaseline()); - } - - private bool RunTestAndCompareWithBaseline() - { - CultureInfo previousCulture = Thread.CurrentThread.CurrentCulture; - Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); - try - { - string outputPath = "TvpQueryHints.out"; - string baselinePath; -#if DEBUG - if (DataTestUtility.IsNotAzureServer() || DataTestUtility.IsManagedInstance) - { - baselinePath = "TvpQueryHints_DebugMode.bsl"; - } - else - { - baselinePath = "TvpQueryHints_DebugMode_Azure.bsl"; - } -#else - if (DataTestUtility.IsNotAzureServer() || DataTestUtility.IsManagedInstance) - { - baselinePath = "TvpQueryHints_ReleaseMode.bsl"; - } - else - { - baselinePath = "TvpQueryHints_ReleaseMode_Azure.bsl"; - } -#endif - - var fstream = new FileStream(outputPath, FileMode.Create, FileAccess.Write, FileShare.Read); - var swriter = new StreamWriter(fstream, Encoding.UTF8); - var twriter = new TvpTest.CarriageReturnLineFeedReplacer(swriter); - Console.SetOut(twriter); + private readonly SqlConnection _conn; + private readonly SqlCommand _cmd; + private readonly SqlParameter _param; + private readonly string _procName; + private readonly string _typeName; - // Run Test - QueryHintsTest(); - - Console.Out.Flush(); - Console.Out.Dispose(); - - // Recover the standard output stream - StreamWriter standardOutput = new(Console.OpenStandardOutput()); - standardOutput.AutoFlush = true; - Console.SetOut(standardOutput); - - // Compare output file - var comparisonResult = FindDiffFromBaseline(baselinePath, outputPath); - - if (string.IsNullOrEmpty(comparisonResult)) - { - return true; - } - - Console.WriteLine("TvpQueryHintsTest Failed!"); - Console.WriteLine("Please compare baseline: {0} with output: {1}", Path.GetFullPath(baselinePath), Path.GetFullPath(outputPath)); - Console.WriteLine("Comparison Results:"); - Console.WriteLine(comparisonResult); - return false; - } - finally - { - Thread.CurrentThread.CurrentCulture = previousCulture; - } - } - - private void QueryHintsTest() + public TvpQueryHintsTests() { - using SqlConnection conn = new(DataTestUtility.TCPConnectionString); - conn.Open(); - Guid randomizer = Guid.NewGuid(); - string typeName = string.Format("dbo.[QHint_{0}]", randomizer); - string procName = string.Format("dbo.[QHint_Proc_{0}]", randomizer); + _typeName = string.Format("dbo.[QHint_{0}]", randomizer); + _procName = string.Format("dbo.[QHint_Proc_{0}]", randomizer); string createTypeSql = string.Format( "CREATE TYPE {0} AS TABLE(" + " c1 Int DEFAULT -1," + " c2 NVarChar(40) DEFAULT N'DEFUALT'," + " c3 DateTime DEFAULT '1/1/2006'," + " c4 Int DEFAULT -1)", - typeName); + _typeName); string createProcSql = string.Format( - "CREATE PROC {0}(@tvp {1} READONLY) AS SELECT TOP(2) * FROM @tvp ORDER BY c1", procName, typeName); - string dropSql = string.Format("DROP PROC {0}; DROP TYPE {1}", procName, typeName); + "CREATE PROC {0}(@tvp {1} READONLY) AS SELECT TOP(2) * FROM @tvp ORDER BY c1", _procName, _typeName); - try - { - SqlCommand cmd = new(createTypeSql, conn); - cmd.ExecuteNonQuery(); + _conn = new SqlConnection(DataTestUtility.TCPConnectionString); + _conn.Open(); - cmd.CommandText = createProcSql; - cmd.ExecuteNonQuery(); + _cmd = new SqlCommand(createTypeSql, _conn); + _cmd.ExecuteNonQuery(); - cmd.CommandText = procName; - cmd.CommandType = CommandType.StoredProcedure; - SqlParameter param = cmd.Parameters.Add("@tvp", SqlDbType.Structured); + _cmd.CommandText = createProcSql; + _cmd.ExecuteNonQuery(); - SortOrderSimple(cmd, param); - SortOrderMixed(cmd, param); - DefaultColumnOuterSubset(cmd, param); - DefaultColumnMiddleSubset(cmd, param); - DefaultColumnAll(cmd, param); - } - catch (Exception e) - { - Console.WriteLine(e.Message); - } - finally - { - SqlCommand cmd = new(dropSql, conn); - cmd.ExecuteNonQuery(); - } + _cmd.CommandText = _procName; + _cmd.CommandType = CommandType.StoredProcedure; + _param = _cmd.Parameters.Add("@tvp", SqlDbType.Structured); } - private static void SortOrderSimple(SqlCommand cmd, SqlParameter param) + public void Dispose() + { + string dropSql = string.Format("DROP PROC {0}; DROP TYPE {1}", _procName, _typeName); + using SqlCommand cmd = new(dropSql, _conn); + cmd.ExecuteNonQuery(); + _conn.Dispose(); + } + + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] + public void SortOrderSimple() { List rows = new(); - Console.WriteLine("------- Sort order + uniqueness #1: simple -------"); SqlMetaData[] columnMetadata = new SqlMetaData[] { new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 0), @@ -153,40 +77,31 @@ private static void SortOrderSimple(SqlCommand cmd, SqlParameter param) new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), }; - SqlDataRecord record; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(0, "Z-value", DateTime.Parse("03/01/2000"), 5); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "Y-value", DateTime.Parse("02/01/2000"), 6); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("01/01/2000"), 7); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 8); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(1, "X-value", DateTime.Parse("04/01/2000"), 4); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } + AddRow(rows, columnMetadata, 0, "Z-value", DateTime.Parse("03/01/2000"), 5); + AddRow(rows, columnMetadata, 1, "Y-value", DateTime.Parse("02/01/2000"), 6); + AddRow(rows, columnMetadata, 1, "X-value", DateTime.Parse("01/01/2000"), 7); + AddRow(rows, columnMetadata, 1, "X-value", DateTime.Parse("04/01/2000"), 8); + AddRow(rows, columnMetadata, 1, "X-value", DateTime.Parse("04/01/2000"), 4); + + _param.Value = rows; + List results = ExecuteAndGetResults(_cmd); + + Assert.Equal(2, results.Count); + Assert.Equal(0, results[0].C1); + Assert.Equal("Z-value", results[0].C2); + Assert.Equal(new DateTime(2000, 3, 1), results[0].C3); + Assert.Equal(5, results[0].C4); + Assert.Equal(1, results[1].C1); + Assert.Equal("X-value", results[1].C2); + Assert.Equal(new DateTime(2000, 1, 1), results[1].C3); + Assert.Equal(7, results[1].C4); } - private static void SortOrderMixed(SqlCommand cmd, SqlParameter param) + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] + public void SortOrderMixed() { List rows = new(); - Console.WriteLine("------- Sort order + uniqueness #2: mixed order -------"); SqlMetaData[] columnMetadata = new SqlMetaData[] { new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Descending, 3), @@ -195,44 +110,32 @@ private static void SortOrderMixed(SqlCommand cmd, SqlParameter param) new SqlMetaData("", SqlDbType.Int, false, true, SortOrder.Ascending, 1), }; - SqlDataRecord record; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } + AddRow(rows, columnMetadata, 6, "Z-value", DateTime.Parse("01/01/2000"), 1); + AddRow(rows, columnMetadata, 6, "Z-value", DateTime.Parse("01/01/2000"), 2); + AddRow(rows, columnMetadata, 6, "Y-value", DateTime.Parse("01/01/2000"), 3); + AddRow(rows, columnMetadata, 6, "Y-value", DateTime.Parse("02/01/2000"), 3); + AddRow(rows, columnMetadata, 5, "X-value", DateTime.Parse("03/01/2000"), 3); + AddRow(rows, columnMetadata, 4, "X-value", DateTime.Parse("01/01/2000"), 3); + + _param.Value = rows; + List results = ExecuteAndGetResults(_cmd); + + Assert.Equal(2, results.Count); + Assert.Equal(4, results[0].C1); + Assert.Equal("X-value", results[0].C2); + Assert.Equal(new DateTime(2000, 1, 1), results[0].C3); + Assert.Equal(3, results[0].C4); + Assert.Equal(5, results[1].C1); + Assert.Equal("X-value", results[1].C2); + Assert.Equal(new DateTime(2000, 3, 1), results[1].C3); + Assert.Equal(3, results[1].C4); } - private static void DefaultColumnOuterSubset(SqlCommand cmd, SqlParameter param) + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] + public void DefaultColumnOuterSubset() { List rows = new(); - Console.WriteLine("------- default column #1: outer subset -------"); SqlMetaData[] columnMetadata = new SqlMetaData[] { new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), @@ -241,44 +144,32 @@ private static void DefaultColumnOuterSubset(SqlCommand cmd, SqlParameter param) new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), }; - SqlDataRecord record; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } + AddRow(rows, columnMetadata, 6, "Z-value", DateTime.Parse("01/01/2000"), 1); + AddRow(rows, columnMetadata, 6, "Z-value", DateTime.Parse("01/01/2000"), 2); + AddRow(rows, columnMetadata, 6, "Y-value", DateTime.Parse("01/01/2000"), 3); + AddRow(rows, columnMetadata, 6, "Y-value", DateTime.Parse("02/01/2000"), 3); + AddRow(rows, columnMetadata, 5, "X-value", DateTime.Parse("03/01/2000"), 3); + AddRow(rows, columnMetadata, 4, "X-value", DateTime.Parse("01/01/2000"), 3); + + _param.Value = rows; + List results = ExecuteAndGetResults(_cmd); + + Assert.Equal(2, results.Count); + Assert.Equal(-1, results[0].C1); + Assert.Equal("Y-value", results[0].C2); + Assert.Equal(new DateTime(2000, 1, 1), results[0].C3); + Assert.Equal(-1, results[0].C4); + Assert.Equal(-1, results[1].C1); + Assert.Equal("Z-value", results[1].C2); + Assert.Equal(new DateTime(2000, 1, 1), results[1].C3); + Assert.Equal(-1, results[1].C4); } - private static void DefaultColumnMiddleSubset(SqlCommand cmd, SqlParameter param) + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] + public void DefaultColumnMiddleSubset() { List rows = new(); - Console.WriteLine("------- default column #1: middle subset -------"); SqlMetaData[] columnMetadata = new SqlMetaData[] { new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), @@ -287,44 +178,32 @@ private static void DefaultColumnMiddleSubset(SqlCommand cmd, SqlParameter param new SqlMetaData("", SqlDbType.Int, false, false, SortOrder.Unspecified, -1), }; - SqlDataRecord record; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } + AddRow(rows, columnMetadata, 6, "Z-value", DateTime.Parse("01/01/2000"), 1); + AddRow(rows, columnMetadata, 6, "Z-value", DateTime.Parse("01/01/2000"), 2); + AddRow(rows, columnMetadata, 6, "Y-value", DateTime.Parse("01/01/2000"), 3); + AddRow(rows, columnMetadata, 6, "Y-value", DateTime.Parse("02/01/2000"), 3); + AddRow(rows, columnMetadata, 5, "X-value", DateTime.Parse("03/01/2000"), 3); + AddRow(rows, columnMetadata, 4, "X-value", DateTime.Parse("01/01/2000"), 3); + + _param.Value = rows; + List results = ExecuteAndGetResults(_cmd); + + Assert.Equal(2, results.Count); + Assert.Equal(4, results[0].C1); + Assert.Equal("DEFUALT", results[0].C2); + Assert.Equal(new DateTime(2006, 1, 1), results[0].C3); + Assert.Equal(3, results[0].C4); + Assert.Equal(5, results[1].C1); + Assert.Equal("DEFUALT", results[1].C2); + Assert.Equal(new DateTime(2006, 1, 1), results[1].C3); + Assert.Equal(3, results[1].C4); } - private static void DefaultColumnAll(SqlCommand cmd, SqlParameter param) + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] + public void DefaultColumnAll() { List rows = new(); - Console.WriteLine("------- default column #1: all -------"); SqlMetaData[] columnMetadata = new SqlMetaData[] { new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), @@ -333,60 +212,51 @@ private static void DefaultColumnAll(SqlCommand cmd, SqlParameter param) new SqlMetaData("", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), }; - SqlDataRecord record; - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 1); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Z-value", DateTime.Parse("01/01/2000"), 2); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("01/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(6, "Y-value", DateTime.Parse("02/01/2000"), 3); - rows.Add(record); - - record = new SqlDataRecord(columnMetadata); - record.SetValues(5, "X-value", DateTime.Parse("03/01/2000"), 3); - rows.Add(record); + AddRow(rows, columnMetadata, 6, "Z-value", DateTime.Parse("01/01/2000"), 1); + AddRow(rows, columnMetadata, 6, "Z-value", DateTime.Parse("01/01/2000"), 2); + AddRow(rows, columnMetadata, 6, "Y-value", DateTime.Parse("01/01/2000"), 3); + AddRow(rows, columnMetadata, 6, "Y-value", DateTime.Parse("02/01/2000"), 3); + AddRow(rows, columnMetadata, 5, "X-value", DateTime.Parse("03/01/2000"), 3); + AddRow(rows, columnMetadata, 4, "X-value", DateTime.Parse("01/01/2000"), 3); + + _param.Value = rows; + List results = ExecuteAndGetResults(_cmd); + + Assert.Equal(2, results.Count); + Assert.Equal(-1, results[0].C1); + Assert.Equal("DEFUALT", results[0].C2); + Assert.Equal(new DateTime(2006, 1, 1), results[0].C3); + Assert.Equal(-1, results[0].C4); + Assert.Equal(-1, results[1].C1); + Assert.Equal("DEFUALT", results[1].C2); + Assert.Equal(new DateTime(2006, 1, 1), results[1].C3); + Assert.Equal(-1, results[1].C4); + } - record = new SqlDataRecord(columnMetadata); - record.SetValues(4, "X-value", DateTime.Parse("01/01/2000"), 3); + private static void AddRow(List rows, SqlMetaData[] metadata, params object[] values) + { + SqlDataRecord record = new(metadata); + record.SetValues(values); rows.Add(record); - - param.Value = rows; - using (SqlDataReader rdr = cmd.ExecuteReader()) - { - WriteReader(rdr); - } } - private static void WriteReader(SqlDataReader rdr) + private static List ExecuteAndGetResults(SqlCommand cmd) { - int colCount = rdr.FieldCount; - - do + List results = new(); + using SqlDataReader rdr = cmd.ExecuteReader(); + while (rdr.Read()) { - Console.WriteLine("-------------"); - while (rdr.Read()) - { - for (int i = 0; i < colCount; i++) - { - Console.Write("{0} ", DataTestUtility.GetValueString(rdr.GetValue(i))); - } - Console.WriteLine(); - } - Console.WriteLine(); - Console.WriteLine("-------------"); + results.Add(new QueryHintResult( + rdr.GetInt32(0), + rdr.GetString(1), + rdr.GetDateTime(2), + rdr.GetInt32(3))); } - while (rdr.NextResult()); + return results; } + private record QueryHintResult(int C1, string C2, DateTime C3, int C4); + private static string FindDiffFromBaseline(string baselinePath, string outputPath) { var expectedLines = File.ReadAllLines(baselinePath); From af1f0f191f681f52ecd32dd5f972c2a719a964f7 Mon Sep 17 00:00:00 2001 From: Malcolm Daigle Date: Thu, 5 Mar 2026 10:57:26 -0800 Subject: [PATCH 4/4] Remove baseline files and parsing logic --- ...icrosoft.Data.SqlClient.ManualTests.csproj | 16 ---- .../SQL/ParameterTest/TvpQueryHintsTests.cs | 79 +++++++------------ .../ParameterTest/TvpQueryHints_DebugMode.bsl | 30 ------- .../TvpQueryHints_DebugMode_Azure.bsl | 30 ------- .../TvpQueryHints_ReleaseMode.bsl | 30 ------- .../TvpQueryHints_ReleaseMode_Azure.bsl | 30 ------- 6 files changed, 30 insertions(+), 185 deletions(-) delete mode 100644 src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode.bsl delete mode 100644 src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode_Azure.bsl delete mode 100644 src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode.bsl delete mode 100644 src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode_Azure.bsl diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/Microsoft.Data.SqlClient.ManualTests.csproj b/src/Microsoft.Data.SqlClient/tests/ManualTests/Microsoft.Data.SqlClient.ManualTests.csproj index 7ae352c028..8a81560710 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/Microsoft.Data.SqlClient.ManualTests.csproj +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/Microsoft.Data.SqlClient.ManualTests.csproj @@ -277,22 +277,6 @@ PreserveNewest TvpColumnBoundaries_ReleaseMode_Azure.bsl - - PreserveNewest - TvpQueryHints_DebugMode.bsl - - - PreserveNewest - TvpQueryHints_DebugMode_Azure.bsl - - - PreserveNewest - TvpQueryHints_ReleaseMode.bsl - - - PreserveNewest - TvpQueryHints_ReleaseMode_Azure.bsl - PreserveNewest SqlVariantParameter_DebugMode.bsl diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs index 4bf9cc1b9f..62df3f2c27 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHintsTests.cs @@ -5,10 +5,6 @@ using System; using System.Collections.Generic; using System.Data; -using System.Globalization; -using System.IO; -using System.Text; -using System.Threading; using Microsoft.Data.SqlClient.Server; using Xunit; @@ -16,9 +12,7 @@ namespace Microsoft.Data.SqlClient.ManualTesting.Tests { /// /// Tests for TVP query hints (sort order, uniqueness, default columns). - /// These tests run independently with their own baseline comparison. /// - [Collection("ParameterBaselineTests")] public sealed class TvpQueryHintsTests : IDisposable { private readonly SqlConnection _conn; @@ -67,6 +61,7 @@ public void Dispose() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] public void SortOrderSimple() { + // Arrange List rows = new(); SqlMetaData[] columnMetadata = new SqlMetaData[] @@ -84,8 +79,11 @@ public void SortOrderSimple() AddRow(rows, columnMetadata, 1, "X-value", DateTime.Parse("04/01/2000"), 4); _param.Value = rows; + + // Act List results = ExecuteAndGetResults(_cmd); + // Assert Assert.Equal(2, results.Count); Assert.Equal(0, results[0].C1); Assert.Equal("Z-value", results[0].C2); @@ -100,6 +98,7 @@ public void SortOrderSimple() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] public void SortOrderMixed() { + // Arrange List rows = new(); SqlMetaData[] columnMetadata = new SqlMetaData[] @@ -118,8 +117,11 @@ public void SortOrderMixed() AddRow(rows, columnMetadata, 4, "X-value", DateTime.Parse("01/01/2000"), 3); _param.Value = rows; + + // Act List results = ExecuteAndGetResults(_cmd); + // Assert Assert.Equal(2, results.Count); Assert.Equal(4, results[0].C1); Assert.Equal("X-value", results[0].C2); @@ -134,6 +136,7 @@ public void SortOrderMixed() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] public void DefaultColumnOuterSubset() { + // Arrange List rows = new(); SqlMetaData[] columnMetadata = new SqlMetaData[] @@ -152,8 +155,11 @@ public void DefaultColumnOuterSubset() AddRow(rows, columnMetadata, 4, "X-value", DateTime.Parse("01/01/2000"), 3); _param.Value = rows; + + // Act List results = ExecuteAndGetResults(_cmd); + // Assert Assert.Equal(2, results.Count); Assert.Equal(-1, results[0].C1); Assert.Equal("Y-value", results[0].C2); @@ -168,6 +174,7 @@ public void DefaultColumnOuterSubset() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] public void DefaultColumnMiddleSubset() { + // Arrange List rows = new(); SqlMetaData[] columnMetadata = new SqlMetaData[] @@ -186,8 +193,11 @@ public void DefaultColumnMiddleSubset() AddRow(rows, columnMetadata, 4, "X-value", DateTime.Parse("01/01/2000"), 3); _param.Value = rows; + + // Act List results = ExecuteAndGetResults(_cmd); + // Assert Assert.Equal(2, results.Count); Assert.Equal(4, results[0].C1); Assert.Equal("DEFUALT", results[0].C2); @@ -202,6 +212,7 @@ public void DefaultColumnMiddleSubset() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] public void DefaultColumnAll() { + // Arrange List rows = new(); SqlMetaData[] columnMetadata = new SqlMetaData[] @@ -220,8 +231,11 @@ public void DefaultColumnAll() AddRow(rows, columnMetadata, 4, "X-value", DateTime.Parse("01/01/2000"), 3); _param.Value = rows; + + // Act List results = ExecuteAndGetResults(_cmd); + // Assert Assert.Equal(2, results.Count); Assert.Equal(-1, results[0].C1); Assert.Equal("DEFUALT", results[0].C2); @@ -255,53 +269,20 @@ private static List ExecuteAndGetResults(SqlCommand cmd) return results; } - private record QueryHintResult(int C1, string C2, DateTime C3, int C4); - - private static string FindDiffFromBaseline(string baselinePath, string outputPath) + private sealed class QueryHintResult { - var expectedLines = File.ReadAllLines(baselinePath); - var outputLines = File.ReadAllLines(outputPath); - - var comparisonSb = new StringBuilder(); + public int C1 { get; } + public string C2 { get; } + public DateTime C3 { get; } + public int C4 { get; } - var expectedLength = expectedLines.Length; - var outputLength = outputLines.Length; - var findDiffLength = Math.Min(expectedLength, outputLength); - - for (var lineNo = 0; lineNo < findDiffLength; lineNo++) + public QueryHintResult(int c1, string c2, DateTime c3, int c4) { - if (!expectedLines[lineNo].Equals(outputLines[lineNo])) - { - comparisonSb.AppendFormat("** DIFF at line {0} \n", lineNo); - comparisonSb.AppendFormat("A : {0} \n", outputLines[lineNo]); - comparisonSb.AppendFormat("E : {0} \n", expectedLines[lineNo]); - } + C1 = c1; + C2 = c2; + C3 = c3; + C4 = c4; } - - var startIndex = findDiffLength - 1; - if (startIndex < 0) - { - startIndex = 0; - } - - if (findDiffLength < expectedLength) - { - comparisonSb.AppendFormat("** MISSING \n"); - for (var lineNo = startIndex; lineNo < expectedLength; lineNo++) - { - comparisonSb.AppendFormat("{0} : {1}", lineNo, expectedLines[lineNo]); - } - } - if (findDiffLength < outputLength) - { - comparisonSb.AppendFormat("** EXTRA \n"); - for (var lineNo = startIndex; lineNo < outputLength; lineNo++) - { - comparisonSb.AppendFormat("{0} : {1}", lineNo, outputLines[lineNo]); - } - } - - return comparisonSb.ToString(); } } } diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode.bsl b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode.bsl deleted file mode 100644 index e72190c064..0000000000 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode.bsl +++ /dev/null @@ -1,30 +0,0 @@ -------- Sort order + uniqueness #1: simple ------- -------------- -0 Z-value 3/1/2000 12:00:00 AM 5 -1 X-value 1/1/2000 12:00:00 AM 7 - -------------- -------- Sort order + uniqueness #2: mixed order ------- -------------- -4 X-value 1/1/2000 12:00:00 AM 3 -5 X-value 3/1/2000 12:00:00 AM 3 - -------------- -------- default column #1: outer subset ------- -------------- --1 Y-value 1/1/2000 12:00:00 AM -1 --1 Z-value 1/1/2000 12:00:00 AM -1 - -------------- -------- default column #1: middle subset ------- -------------- -4 DEFUALT 1/1/2006 12:00:00 AM 3 -5 DEFUALT 1/1/2006 12:00:00 AM 3 - -------------- -------- default column #1: all ------- -------------- --1 DEFUALT 1/1/2006 12:00:00 AM -1 --1 DEFUALT 1/1/2006 12:00:00 AM -1 - -------------- diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode_Azure.bsl b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode_Azure.bsl deleted file mode 100644 index e72190c064..0000000000 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_DebugMode_Azure.bsl +++ /dev/null @@ -1,30 +0,0 @@ -------- Sort order + uniqueness #1: simple ------- -------------- -0 Z-value 3/1/2000 12:00:00 AM 5 -1 X-value 1/1/2000 12:00:00 AM 7 - -------------- -------- Sort order + uniqueness #2: mixed order ------- -------------- -4 X-value 1/1/2000 12:00:00 AM 3 -5 X-value 3/1/2000 12:00:00 AM 3 - -------------- -------- default column #1: outer subset ------- -------------- --1 Y-value 1/1/2000 12:00:00 AM -1 --1 Z-value 1/1/2000 12:00:00 AM -1 - -------------- -------- default column #1: middle subset ------- -------------- -4 DEFUALT 1/1/2006 12:00:00 AM 3 -5 DEFUALT 1/1/2006 12:00:00 AM 3 - -------------- -------- default column #1: all ------- -------------- --1 DEFUALT 1/1/2006 12:00:00 AM -1 --1 DEFUALT 1/1/2006 12:00:00 AM -1 - -------------- diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode.bsl b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode.bsl deleted file mode 100644 index e72190c064..0000000000 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode.bsl +++ /dev/null @@ -1,30 +0,0 @@ -------- Sort order + uniqueness #1: simple ------- -------------- -0 Z-value 3/1/2000 12:00:00 AM 5 -1 X-value 1/1/2000 12:00:00 AM 7 - -------------- -------- Sort order + uniqueness #2: mixed order ------- -------------- -4 X-value 1/1/2000 12:00:00 AM 3 -5 X-value 3/1/2000 12:00:00 AM 3 - -------------- -------- default column #1: outer subset ------- -------------- --1 Y-value 1/1/2000 12:00:00 AM -1 --1 Z-value 1/1/2000 12:00:00 AM -1 - -------------- -------- default column #1: middle subset ------- -------------- -4 DEFUALT 1/1/2006 12:00:00 AM 3 -5 DEFUALT 1/1/2006 12:00:00 AM 3 - -------------- -------- default column #1: all ------- -------------- --1 DEFUALT 1/1/2006 12:00:00 AM -1 --1 DEFUALT 1/1/2006 12:00:00 AM -1 - -------------- diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode_Azure.bsl b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode_Azure.bsl deleted file mode 100644 index e72190c064..0000000000 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/TvpQueryHints_ReleaseMode_Azure.bsl +++ /dev/null @@ -1,30 +0,0 @@ -------- Sort order + uniqueness #1: simple ------- -------------- -0 Z-value 3/1/2000 12:00:00 AM 5 -1 X-value 1/1/2000 12:00:00 AM 7 - -------------- -------- Sort order + uniqueness #2: mixed order ------- -------------- -4 X-value 1/1/2000 12:00:00 AM 3 -5 X-value 3/1/2000 12:00:00 AM 3 - -------------- -------- default column #1: outer subset ------- -------------- --1 Y-value 1/1/2000 12:00:00 AM -1 --1 Z-value 1/1/2000 12:00:00 AM -1 - -------------- -------- default column #1: middle subset ------- -------------- -4 DEFUALT 1/1/2006 12:00:00 AM 3 -5 DEFUALT 1/1/2006 12:00:00 AM 3 - -------------- -------- default column #1: all ------- -------------- --1 DEFUALT 1/1/2006 12:00:00 AM -1 --1 DEFUALT 1/1/2006 12:00:00 AM -1 - --------------