Skip to content

Commit 6beab6a

Browse files
Fix | Support Georgian collation (#2194)
1 parent b86ddf1 commit 6beab6a

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4435,6 +4435,9 @@ internal int GetCodePage(SqlCollation collation, TdsParserStateObject stateObj)
44354435
case 0x43f:
44364436
codePage = 1251; // Kazakh code page based on SQL Server
44374437
break;
4438+
case 0x10437:
4439+
codePage = 1252; // Georgian code page based on SQL Server
4440+
break;
44384441
default:
44394442
break;
44404443
}

src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5006,6 +5006,9 @@ internal int GetCodePage(SqlCollation collation, TdsParserStateObject stateObj)
50065006
case 0x43f:
50075007
codePage = 1251; // Kazakh code page based on SQL Server
50085008
break;
5009+
case 0x10437:
5010+
codePage = 1252; // Georgian code page based on SQL Server
5011+
break;
50095012
default:
50105013
break;
50115014
}

src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,12 @@ public static void CheckSparseColumnBit()
120120
}
121121

122122
// Synapse: Statement 'Drop Database' is not supported in this version of SQL Server.
123-
[ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureServer), nameof(DataTestUtility.IsNotAzureSynapse))]
124-
public static void CollatedDataReaderTest()
123+
[ConditionalTheory(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureServer), nameof(DataTestUtility.IsNotAzureSynapse))]
124+
[InlineData("KAZAKH_90_CI_AI")]
125+
[InlineData("Georgian_Modern_Sort_CI_AS")]
126+
public static void CollatedDataReaderTest(string collation)
125127
{
126-
var databaseName = DataTestUtility.GetUniqueName("DB");
127-
// Remove square brackets
128-
var dbName = databaseName.Substring(1, databaseName.Length - 2);
128+
string dbName = DataTestUtility.GetUniqueName("CollationTest", false);
129129

130130
SqlConnectionStringBuilder builder = new(DataTestUtility.TCPConnectionString)
131131
{
@@ -140,33 +140,27 @@ public static void CollatedDataReaderTest()
140140
con.Open();
141141

142142
// Create collated database
143-
cmd.CommandText = $"CREATE DATABASE {databaseName} COLLATE KAZAKH_90_CI_AI";
143+
cmd.CommandText = $"CREATE DATABASE [{dbName}] COLLATE {collation}";
144144
cmd.ExecuteNonQuery();
145145

146146
//Create connection without pooling in order to delete database later.
147147
using (SqlConnection dbCon = new(builder.ConnectionString))
148148
using (SqlCommand dbCmd = dbCon.CreateCommand())
149149
{
150-
var data = "TestData";
150+
string data = Guid.NewGuid().ToString();
151151

152152
dbCon.Open();
153153
dbCmd.CommandText = $"SELECT '{data}'";
154154
using SqlDataReader reader = dbCmd.ExecuteReader();
155155
reader.Read();
156156
Assert.Equal(data, reader.GetString(0));
157157
}
158-
159-
// Let connection close safely before dropping database for slow servers.
160-
Thread.Sleep(500);
161-
}
162-
catch (SqlException e)
163-
{
164-
Assert.Fail($"Unexpected Exception occurred: {e.Message}");
165158
}
166159
finally
167160
{
168-
cmd.CommandText = $"DROP DATABASE {databaseName}";
169-
cmd.ExecuteNonQuery();
161+
// Let connection close safely before dropping database for slow servers.
162+
Thread.Sleep(500);
163+
DataTestUtility.DropDatabase(con, dbName);
170164
}
171165
}
172166

0 commit comments

Comments
 (0)