mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
9d07b0520c
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)
58 lines
1.4 KiB
PowerShell
58 lines
1.4 KiB
PowerShell
$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
|
|
}
|
|
}
|