mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-31608 - Connector/NET fails to connect since 10.10
Connector/NET does not expect collation IDs returned by "show collations" to be NULL, runs into an exception. The fix is to determine connector/net using its connection attributes, then make sure "show collations" does not output NULL IDs. The patch introduces new old_mode NO_NULL_COLLATION_IDs, that is automatically set, once MySQL Connector/NET connection is determined. A test was added, that uses MySql.Data from powershell - only works if MySql.Data is installed into GAC (i.e with C/NET MSI package)
This commit is contained in:
58
mysql-test/main/mysql_connector_net.ps1
Normal file
58
mysql-test/main/mysql_connector_net.ps1
Normal file
@ -0,0 +1,58 @@
|
||||
$assembly = [system.reflection.Assembly]::LoadWithPartialName("MySql.Data")
|
||||
if ($assembly -eq $null)
|
||||
{
|
||||
"Can't load assembly MySql.Data"
|
||||
exit 100
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
$connectionString =[string]::Format("server=127.0.0.1;uid=root;port={0};Connection Reset=true;",$Env:MASTER_MYPORT)
|
||||
$connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString=$connectionString}
|
||||
$connection.Open()
|
||||
|
||||
# Test ExecuteReader()
|
||||
$command = New-Object MySql.Data.MySqlClient.MySqlCommand
|
||||
$command.Connection = $connection
|
||||
$command.CommandText = "SELECT @@old_mode"
|
||||
$reader = $command.ExecuteReader()
|
||||
$reader.GetName(0)
|
||||
while ($reader.Read())
|
||||
{
|
||||
$reader.GetValue(0)
|
||||
}
|
||||
|
||||
# Test connection reset
|
||||
$connection.Close()
|
||||
$connection.Open()
|
||||
# Test ExecuteNonQuery()
|
||||
$command.CommandText="do 1";
|
||||
$affected_rows = $command.ExecuteNonQuery()
|
||||
if ($affected_rows -ne 0)
|
||||
{
|
||||
"Expected affected rows 0, actual $affected_rows"
|
||||
exit 1
|
||||
}
|
||||
# Test Prepared Statement
|
||||
$command.CommandText = "SELECT @var";
|
||||
[void]$command.Parameters.AddWithValue("@var", 1);
|
||||
$command.Prepare();
|
||||
$out = $command.ExecuteScalar();
|
||||
if ($out -ne 1)
|
||||
{
|
||||
"Expected output 1, actual $out"
|
||||
exit 1
|
||||
}
|
||||
$connection.Close()
|
||||
}
|
||||
catch
|
||||
{
|
||||
# Dump exception
|
||||
$_
|
||||
$inner = $PSItem.Exception.InnerException
|
||||
if ($inner -ne $null)
|
||||
{
|
||||
$PSItem.Exception.InnerException.Message
|
||||
$PSItem.Exception.InnerException.StackTrace
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user