Modified:
branches/1.0/Client.build
branches/1.0/TestSuite/BaseTest.cs
branches/1.0/TestSuite/StoredProcedure.cs
Log:
Client.build - adding shared memory as excluded until I find out why shared mem connections are not working on the CI machine.
BaseTest.cs - Added database to the suExec connection string. Also added Is51 property
Modified: branches/1.0/Client.build
===================================================================
--- branches/1.0/Client.build 2007-01-05 17:55:12 UTC (rev 530)
+++ branches/1.0/Client.build 2007-01-05 18:15:29 UTC (rev 531)
@@ -149,13 +149,13 @@
<call target="testdb"/> -->
<echo message="Testing MySQL 5.0"/>
- <property name="excludes" value="NotWorking"/>
+ <property name="excludes" value="SharedMemory,NotWorking"/>
<property name="config" value="mysql-50.config"/>
<!--<property name="doCoverage" value="true"/>-->
<call target="testdb"/>
<echo message="Testing MySQL 5.1"/>
- <property name="excludes" value="NotWorking"/>
+ <property name="excludes" value="SharedMemory,NotWorking"/>
<property name="config" value="mysql-51.config"/>
<call target="testdb"/>
</target>
Modified: branches/1.0/TestSuite/BaseTest.cs
===================================================================
--- branches/1.0/TestSuite/BaseTest.cs 2007-01-05 17:55:12 UTC (rev 530)
+++ branches/1.0/TestSuite/BaseTest.cs 2007-01-05 18:15:29 UTC (rev 531)
@@ -26,17 +26,17 @@
namespace MySql.Data.MySqlClient.Tests
{
- /// <summary>
- /// Summary description for BaseTest.
- /// </summary>
- public class BaseTest
- {
- protected MySqlConnection conn;
- protected string table;
- protected string csAdditions = String.Empty;
- protected string host;
- protected string user;
- protected string password;
+ /// <summary>
+ /// Summary description for BaseTest.
+ /// </summary>
+ public class BaseTest
+ {
+ protected MySqlConnection conn;
+ protected string table;
+ protected string csAdditions = String.Empty;
+ protected string host;
+ protected string user;
+ protected string password;
protected int port;
protected string pipeName;
protected string memoryName;
@@ -44,14 +44,14 @@
protected string rootUser;
protected string rootPassword;
- public BaseTest()
- {
+ public BaseTest()
+ {
databases = new string[2];
csAdditions = ";pooling=false;";
- user = "root";
- password = "";
- host = "localhost";
+ user = "root";
+ password = "";
+ host = "localhost";
databases[0] = "test";
databases[1] = "root";
port = 3306;
@@ -93,13 +93,13 @@
memoryName = strMemName;
}
- protected virtual string GetConnectionInfo()
- {
+ protected virtual string GetConnectionInfo()
+ {
return String.Format("protocol=tcp;port={0}", port);
}
- protected string GetConnectionString(bool includedb)
- {
+ protected string GetConnectionString(bool includedb)
+ {
string connStr = String.Format("server={0};user id={1};password={2};" +
"persist security info=true;{3}", host, user, password, csAdditions);
if (includedb)
@@ -120,117 +120,126 @@
return connStr;
}
- protected void Open()
- {
- try
- {
- string connString = GetConnectionString(true);
- conn = new MySqlConnection(connString);
- conn.Open();
- }
- catch (Exception ex)
- {
- System.Diagnostics.Trace.WriteLine(ex.Message);
- throw;
- }
- }
+ protected void Open()
+ {
+ try
+ {
+ string connString = GetConnectionString(true);
+ conn = new MySqlConnection(connString);
+ conn.Open();
+ }
+ catch (Exception ex)
+ {
+ System.Diagnostics.Trace.WriteLine(ex.Message);
+ throw;
+ }
+ }
- protected void Close()
- {
- try
- {
- // delete the table we created.
- if (conn.State == ConnectionState.Closed)
- conn.Open();
- execSQL("DROP TABLE IF EXISTS Test");
- conn.Close();
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- }
+ protected void Close()
+ {
+ try
+ {
+ // delete the table we created.
+ if (conn.State == ConnectionState.Closed)
+ conn.Open();
+ execSQL("DROP TABLE IF EXISTS Test");
+ conn.Close();
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ }
- protected bool Is50
- {
- get
- {
- string v = conn.ServerVersion;
- return v.StartsWith("5.0") || v.StartsWith("5.1");
- }
- }
+ protected bool Is51
+ {
+ get
+ {
+ string v = conn.ServerVersion;
+ return v.StartsWith("5.1");
+ }
+ }
- protected bool Is41
- {
- get { return conn.ServerVersion.StartsWith("4.1"); }
- }
+ protected bool Is50
+ {
+ get
+ {
+ string v = conn.ServerVersion;
+ return v.StartsWith("5.0") || v.StartsWith("5.1");
+ }
+ }
- protected bool Is40
- {
- get { return conn.ServerVersion.StartsWith("4.0"); }
- }
+ protected bool Is41
+ {
+ get { return conn.ServerVersion.StartsWith("4.1"); }
+ }
- [SetUp]
- protected virtual void Setup()
- {
- try
- {
- IDataReader reader = execReader("SHOW TABLES LIKE 'Test'");
- bool exists = reader.Read();
- reader.Close();
- if (exists)
- execSQL("TRUNCATE TABLE Test");
- if (Is50)
- {
- execSQL("DROP PROCEDURE IF EXISTS spTest");
- execSQL("DROP FUNCTION IF EXISTS fnTest");
- }
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- }
+ protected bool Is40
+ {
+ get { return conn.ServerVersion.StartsWith("4.0"); }
+ }
- [TearDown]
- protected virtual void Teardown()
- {
- if (Is50)
- {
- execSQL("DROP PROCEDURE IF EXISTS spTest");
- execSQL("DROP FUNCTION IF EXISTS fnTest");
- }
- }
+ [SetUp]
+ protected virtual void Setup()
+ {
+ try
+ {
+ IDataReader reader = execReader("SHOW TABLES LIKE 'Test'");
+ bool exists = reader.Read();
+ reader.Close();
+ if (exists)
+ execSQL("TRUNCATE TABLE Test");
+ if (Is50)
+ {
+ execSQL("DROP PROCEDURE IF EXISTS spTest");
+ execSQL("DROP FUNCTION IF EXISTS fnTest");
+ }
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ }
- protected void KillConnection(MySqlConnection c)
- {
- int threadId = c.ServerThread;
- MySqlCommand cmd = new MySqlCommand("KILL " + threadId, conn);
- try
- {
- cmd.ExecuteNonQuery();
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- c.Ping(); // this final ping will cause MySQL to clean up the killed thread
- }
+ [TearDown]
+ protected virtual void Teardown()
+ {
+ if (Is50)
+ {
+ execSQL("DROP PROCEDURE IF EXISTS spTest");
+ execSQL("DROP FUNCTION IF EXISTS fnTest");
+ }
+ }
- protected void createTable(string sql, string engine)
- {
- if (Is41 || Is50)
- sql += " ENGINE=" + engine;
- else
- sql += " TYPE=" + engine;
- execSQL(sql);
- }
+ protected void KillConnection(MySqlConnection c)
+ {
+ int threadId = c.ServerThread;
+ MySqlCommand cmd = new MySqlCommand("KILL " + threadId, conn);
+ try
+ {
+ cmd.ExecuteNonQuery();
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ c.Ping(); // this final ping will cause MySQL to clean up the killed thread
+ }
+ protected void createTable(string sql, string engine)
+ {
+ if (Is41 || Is50)
+ sql += " ENGINE=" + engine;
+ else
+ sql += " TYPE=" + engine;
+ execSQL(sql);
+ }
+
protected void suExecSQL(string sql)
{
- string connStr = String.Format("server={0};user id={1};password={2};" +
- "persist security info=true;{3}", host, rootUser, rootPassword, csAdditions);
- connStr += GetConnectionInfo();
+ string connStr = String.Format("server={0};user id={1};password={2};database={3};" +
+ "persist security info=true;{4}", host, rootUser, rootPassword, databases[0], csAdditions);
+ connStr += GetConnectionInfo();
MySqlConnection c = new MySqlConnection(connStr);
c.Open();
@@ -239,17 +248,17 @@
c.Close();
}
- protected void execSQL(string sql)
- {
- MySqlCommand cmd = new MySqlCommand(sql, conn);
- cmd.ExecuteNonQuery();
- }
+ protected void execSQL(string sql)
+ {
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+ }
- protected IDataReader execReader(string sql)
- {
- MySqlCommand cmd = new MySqlCommand(sql, conn);
- return cmd.ExecuteReader();
- }
+ protected IDataReader execReader(string sql)
+ {
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ return cmd.ExecuteReader();
+ }
- }
+ }
}
Modified: branches/1.0/TestSuite/StoredProcedure.cs
===================================================================
--- branches/1.0/TestSuite/StoredProcedure.cs 2007-01-05 17:55:12 UTC (rev 530)
+++ branches/1.0/TestSuite/StoredProcedure.cs 2007-01-05 18:15:29 UTC (rev 531)
@@ -28,407 +28,407 @@
namespace MySql.Data.MySqlClient.Tests
{
- /// <summary>
- /// Summary description for StoredProcedure.
- /// </summary>
- [Category("5.0")]
- [TestFixture]
- public class StoredProcedure : BaseTest
- {
- private static string fillError = null;
+ /// <summary>
+ /// Summary description for StoredProcedure.
+ /// </summary>
+ [Category("5.0")]
+ [TestFixture]
+ public class StoredProcedure : BaseTest
+ {
+ private static string fillError = null;
- [TestFixtureSetUp]
- public void FixtureSetup()
- {
- csAdditions = ";pooling=false;procedure cache size=0;";
- Open();
- }
+ [TestFixtureSetUp]
+ public void FixtureSetup()
+ {
+ csAdditions = ";pooling=false;procedure cache size=0;";
+ Open();
+ }
- [TestFixtureTearDown]
- public void TestFixtureTearDown()
- {
- Close();
- }
+ [TestFixtureTearDown]
+ public void TestFixtureTearDown()
+ {
+ Close();
+ }
- protected override void Setup()
- {
- base.Setup();
- execSQL("DROP TABLE IF EXISTS Test");
- execSQL("CREATE TABLE Test (id INT, name VARCHAR(100))");
- }
+ protected override void Setup()
+ {
+ base.Setup();
+ execSQL("DROP TABLE IF EXISTS Test");
+ execSQL("CREATE TABLE Test (id INT, name VARCHAR(100))");
+ }
- /// <summary>
- /// Bug #7623 Adding MySqlParameter causes error if MySqlDbType is Decimal
- /// </summary>
- [Test]
- public void ReturningResultset()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest(val decimal(10,3)) begin select val; end");
+ /// <summary>
+ /// Bug #7623 Adding MySqlParameter causes error if MySqlDbType is Decimal
+ /// </summary>
+ [Test]
+ public void ReturningResultset()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest(val decimal(10,3)) begin select val; end");
- using (MySqlCommand cmd = new MySqlCommand("spTest", conn))
- {
- cmd.CommandType = CommandType.StoredProcedure;
+ using (MySqlCommand cmd = new MySqlCommand("spTest", conn))
+ {
+ cmd.CommandType = CommandType.StoredProcedure;
- MySqlParameter p = cmd.Parameters.Add("?val", MySqlDbType.Decimal);
- p.Precision = 10;
- p.Scale = 3;
- p.Value = 21;
+ MySqlParameter p = cmd.Parameters.Add("?val", MySqlDbType.Decimal);
+ p.Precision = 10;
+ p.Scale = 3;
+ p.Value = 21;
- decimal id = (decimal)cmd.ExecuteScalar();
- Assert.AreEqual(21, id);
- }
- }
+ decimal id = (decimal)cmd.ExecuteScalar();
+ Assert.AreEqual(21, id);
+ }
+ }
- [Test]
- public void NonQuery()
- {
- execSQL("CREATE PROCEDURE spTest(IN value INT) BEGIN INSERT INTO Test VALUES(value, 'Test'); END");
+ [Test]
+ public void NonQuery()
+ {
+ execSQL("CREATE PROCEDURE spTest(IN value INT) BEGIN INSERT INTO Test VALUES(value, 'Test'); END");
- //setup testing data
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?value", 2);
- int rowsAffected = cmd.ExecuteNonQuery();
- Assert.AreEqual(1, rowsAffected);
+ //setup testing data
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?value", 2);
+ int rowsAffected = cmd.ExecuteNonQuery();
+ Assert.AreEqual(1, rowsAffected);
- cmd.CommandText = "SELECT * FROM Test";
- cmd.CommandType = CommandType.Text;
- MySqlDataReader reader = null;
+ cmd.CommandText = "SELECT * FROM Test";
+ cmd.CommandType = CommandType.Text;
+ MySqlDataReader reader = null;
- try
- {
- reader = cmd.ExecuteReader();
- Assert.IsTrue(reader.Read());
- Assert.AreEqual(2, reader.GetInt32(0));
- Assert.AreEqual("Test", reader.GetString(1));
- Assert.IsFalse(reader.Read());
- Assert.IsFalse(reader.NextResult());
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- finally
- {
- if (reader != null) reader.Close();
- }
- }
+ try
+ {
+ reader = cmd.ExecuteReader();
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(2, reader.GetInt32(0));
+ Assert.AreEqual("Test", reader.GetString(1));
+ Assert.IsFalse(reader.Read());
+ Assert.IsFalse(reader.NextResult());
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ finally
+ {
+ if (reader != null) reader.Close();
+ }
+ }
- /// <summary>
- /// Bug #17814 Stored procedure fails unless DbType set explicitly
- /// </summary>
- [Test]
- public void OutputParameters()
- {
- // create our procedure
- execSQL("DROP PROCEDURE IF EXISTS spCount");
- execSQL("CREATE PROCEDURE spCount(out value VARCHAR(350), OUT intVal INT, " +
- "OUT dateVal TIMESTAMP, OUT floatVal FLOAT, OUT noTypeVarChar VARCHAR(20), " +
- "OUT noTypeInt INT) " +
- "BEGIN SET value='42'; SET intVal=33; SET dateVal='2004-06-05 07:58:09'; " +
- "SET floatVal = 1.2; SET noTypeVarChar='test'; SET noTypeInt=66; END");
+ /// <summary>
+ /// Bug #17814 Stored procedure fails unless DbType set explicitly
+ /// </summary>
+ [Test]
+ public void OutputParameters()
+ {
+ // create our procedure
+ execSQL("DROP PROCEDURE IF EXISTS spCount");
+ execSQL("CREATE PROCEDURE spCount(out value VARCHAR(350), OUT intVal INT, " +
+ "OUT dateVal TIMESTAMP, OUT floatVal FLOAT, OUT noTypeVarChar VARCHAR(20), " +
+ "OUT noTypeInt INT) " +
+ "BEGIN SET value='42'; SET intVal=33; SET dateVal='2004-06-05 07:58:09'; " +
+ "SET floatVal = 1.2; SET noTypeVarChar='test'; SET noTypeInt=66; END");
- MySqlCommand cmd = new MySqlCommand("spCount", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add(new MySqlParameter("?value", MySqlDbType.VarChar));
- cmd.Parameters.Add(new MySqlParameter("?intVal", MySqlDbType.Int32));
- cmd.Parameters.Add(new MySqlParameter("?dateVal", MySqlDbType.Datetime));
- cmd.Parameters.Add(new MySqlParameter("?floatVal", MySqlDbType.Float));
- MySqlParameter vcP = new MySqlParameter();
- vcP.ParameterName = "?noTypeVarChar";
- vcP.Direction = ParameterDirection.Output;
- cmd.Parameters.Add(vcP);
- MySqlParameter vcI = new MySqlParameter();
- vcI.ParameterName = "?noTypeInt";
- vcI.Direction = ParameterDirection.Output;
- cmd.Parameters.Add(vcI);
- cmd.Parameters[0].Direction = ParameterDirection.Output;
- cmd.Parameters[1].Direction = ParameterDirection.Output;
- cmd.Parameters[2].Direction = ParameterDirection.Output;
- cmd.Parameters[3].Direction = ParameterDirection.Output;
- int rowsAffected = cmd.ExecuteNonQuery();
+ MySqlCommand cmd = new MySqlCommand("spCount", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add(new MySqlParameter("?value", MySqlDbType.VarChar));
+ cmd.Parameters.Add(new MySqlParameter("?intVal", MySqlDbType.Int32));
+ cmd.Parameters.Add(new MySqlParameter("?dateVal", MySqlDbType.Datetime));
+ cmd.Parameters.Add(new MySqlParameter("?floatVal", MySqlDbType.Float));
+ MySqlParameter vcP = new MySqlParameter();
+ vcP.ParameterName = "?noTypeVarChar";
+ vcP.Direction = ParameterDirection.Output;
+ cmd.Parameters.Add(vcP);
+ MySqlParameter vcI = new MySqlParameter();
+ vcI.ParameterName = "?noTypeInt";
+ vcI.Direction = ParameterDirection.Output;
+ cmd.Parameters.Add(vcI);
+ cmd.Parameters[0].Direction = ParameterDirection.Output;
+ cmd.Parameters[1].Direction = ParameterDirection.Output;
+ cmd.Parameters[2].Direction = ParameterDirection.Output;
+ cmd.Parameters[3].Direction = ParameterDirection.Output;
+ int rowsAffected = cmd.ExecuteNonQuery();
- Assert.AreEqual(0, rowsAffected);
- Assert.AreEqual("42", cmd.Parameters[0].Value);
- Assert.AreEqual(33, cmd.Parameters[1].Value);
- Assert.AreEqual(new DateTime(2004, 6, 5, 7, 58, 9),
- Convert.ToDateTime(cmd.Parameters[2].Value));
- Assert.AreEqual(1.2, cmd.Parameters[3].Value);
- Assert.AreEqual("test", cmd.Parameters[4].Value);
- Assert.AreEqual(66, cmd.Parameters[5].Value);
+ Assert.AreEqual(0, rowsAffected);
+ Assert.AreEqual("42", cmd.Parameters[0].Value);
+ Assert.AreEqual(33, cmd.Parameters[1].Value);
+ Assert.AreEqual(new DateTime(2004, 6, 5, 7, 58, 9),
+ Convert.ToDateTime(cmd.Parameters[2].Value));
+ Assert.AreEqual(1.2, cmd.Parameters[3].Value);
+ Assert.AreEqual("test", cmd.Parameters[4].Value);
+ Assert.AreEqual(66, cmd.Parameters[5].Value);
- execSQL("DROP PROCEDURE spCount");
- }
+ execSQL("DROP PROCEDURE spCount");
+ }
- [Test]
- public void NoBatch()
- {
- try
- {
- MySqlCommand cmd = new MySqlCommand("spTest;select * from test", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.ExecuteNonQuery();
- Assert.Fail("Should have thrown an exception");
- }
- catch (Exception)
- {
- }
- }
+ [Test]
+ public void NoBatch()
+ {
+ try
+ {
+ MySqlCommand cmd = new MySqlCommand("spTest;select * from test", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.ExecuteNonQuery();
+ Assert.Fail("Should have thrown an exception");
+ }
+ catch (Exception)
+ {
+ }
+ }
- [Test]
- public void WrongParameters()
- {
- execSQL("CREATE PROCEDURE spTest(p1 INT) BEGIN SELECT 1; END");
- try
- {
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?p2", 1);
- cmd.ExecuteNonQuery();
- Assert.Fail("Should have thrown an exception");
- }
- catch (Exception)
- {
- }
- }
+ [Test]
+ public void WrongParameters()
+ {
+ execSQL("CREATE PROCEDURE spTest(p1 INT) BEGIN SELECT 1; END");
+ try
+ {
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?p2", 1);
+ cmd.ExecuteNonQuery();
+ Assert.Fail("Should have thrown an exception");
+ }
+ catch (Exception)
+ {
+ }
+ }
- [Test]
- public void NoInOutMarker()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest( valin varchar(50) ) BEGIN SELECT valin; END");
+ [Test]
+ public void NoInOutMarker()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest( valin varchar(50) ) BEGIN SELECT valin; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?valin", "myvalue");
- object val = cmd.ExecuteScalar();
- Assert.AreEqual("myvalue", val);
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?valin", "myvalue");
+ object val = cmd.ExecuteScalar();
+ Assert.AreEqual("myvalue", val);
+ }
- [Test]
- public void InputOutputParameters()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest( INOUT strVal VARCHAR(50), INOUT numVal INT, OUT outVal INT UNSIGNED ) " +
- "BEGIN SET strVal = CONCAT(strVal,'ending'); SET numVal=numVal * 2; SET outVal=99; END");
+ [Test]
+ public void InputOutputParameters()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest( INOUT strVal VARCHAR(50), INOUT numVal INT, OUT outVal INT UNSIGNED ) " +
+ "BEGIN SET strVal = CONCAT(strVal,'ending'); SET numVal=numVal * 2; SET outVal=99; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?strVal", "beginning");
- cmd.Parameters.Add("?numVal", 33);
- cmd.Parameters.Add("?outVal", MySqlDbType.Int32);
- cmd.Parameters[0].Direction = ParameterDirection.InputOutput;
- cmd.Parameters[1].Direction = ParameterDirection.InputOutput;
- cmd.Parameters[2].Direction = ParameterDirection.Output;
- int rowsAffected = cmd.ExecuteNonQuery();
- Assert.AreEqual(0, rowsAffected);
- Assert.AreEqual("beginningending", cmd.Parameters[0].Value);
- Assert.AreEqual(66, cmd.Parameters[1].Value);
- Assert.AreEqual(99, cmd.Parameters[2].Value);
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?strVal", "beginning");
+ cmd.Parameters.Add("?numVal", 33);
+ cmd.Parameters.Add("?outVal", MySqlDbType.Int32);
+ cmd.Parameters[0].Direction = ParameterDirection.InputOutput;
+ cmd.Parameters[1].Direction = ParameterDirection.InputOutput;
+ cmd.Parameters[2].Direction = ParameterDirection.Output;
+ int rowsAffected = cmd.ExecuteNonQuery();
+ Assert.AreEqual(0, rowsAffected);
+ Assert.AreEqual("beginningending", cmd.Parameters[0].Value);
+ Assert.AreEqual(66, cmd.Parameters[1].Value);
+ Assert.AreEqual(99, cmd.Parameters[2].Value);
+ }
- [Test]
- public void NoSPOnPre50()
- {
- try
- {
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.ExecuteNonQuery();
- Assert.Fail("This should not have worked");
- }
- catch (Exception)
- {
- }
- }
+ [Test]
+ public void NoSPOnPre50()
+ {
+ try
+ {
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.ExecuteNonQuery();
+ Assert.Fail("This should not have worked");
+ }
+ catch (Exception)
+ {
+ }
+ }
- [Test]
- public void ExecuteScalar()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest( IN valin VARCHAR(50), OUT valout VARCHAR(50) ) " +
- "BEGIN SET valout=valin; SELECT 'Test'; END");
+ [Test]
+ public void ExecuteScalar()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest( IN valin VARCHAR(50), OUT valout VARCHAR(50) ) " +
+ "BEGIN SET valout=valin; SELECT 'Test'; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?valin", "valuein");
- cmd.Parameters.Add(new MySqlParameter("?valout", MySqlDbType.VarChar));
- cmd.Parameters[1].Direction = ParameterDirection.Output;
- object result = cmd.ExecuteScalar();
- Assert.AreEqual("Test", result);
- Assert.AreEqual("valuein", cmd.Parameters[1].Value);
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?valin", "valuein");
+ cmd.Parameters.Add(new MySqlParameter("?valout", MySqlDbType.VarChar));
+ cmd.Parameters[1].Direction = ParameterDirection.Output;
+ object result = cmd.ExecuteScalar();
+ Assert.AreEqual("Test", result);
+ Assert.AreEqual("valuein", cmd.Parameters[1].Value);
+ }
- /// <summary>
- /// Bug #13590 ExecuteScalar returns only Int64 regardless of actual SQL type
- /// </summary>
- [Test]
- public void ExecuteScalar2()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest() " +
- "BEGIN DECLARE myVar1 INT; SET myVar1 := 1; SELECT myVar1; END");
+ /// <summary>
+ /// Bug #13590 ExecuteScalar returns only Int64 regardless of actual SQL type
+ /// </summary>
+ [Test]
+ public void ExecuteScalar2()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest() " +
+ "BEGIN DECLARE myVar1 INT; SET myVar1 := 1; SELECT myVar1; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- object result = cmd.ExecuteScalar();
- Assert.AreEqual(1, result);
- Assert.IsTrue(result is Int32);
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ object result = cmd.ExecuteScalar();
+ Assert.AreEqual(1, result);
+ Assert.IsTrue(result is Int32);
+ }
- [Test]
- public void ExecuteReader()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest(OUT p INT) " +
- "BEGIN SELECT * FROM mysql.db; SET p=2; END");
+ [Test]
+ public void ExecuteReader()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest(OUT p INT) " +
+ "BEGIN SELECT * FROM mysql.db; SET p=2; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.Parameters.Add("?p", MySqlDbType.Int32);
- cmd.Parameters[0].Direction = ParameterDirection.Output;
- cmd.CommandType = CommandType.StoredProcedure;
- MySqlDataReader reader = cmd.ExecuteReader();
- Assert.AreEqual(true, reader.Read());
- Assert.AreEqual(false, reader.NextResult());
- Assert.AreEqual(false, reader.Read());
- reader.Close();
- Assert.AreEqual(2, cmd.Parameters[0].Value);
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.Parameters.Add("?p", MySqlDbType.Int32);
+ cmd.Parameters[0].Direction = ParameterDirection.Output;
+ cmd.CommandType = CommandType.StoredProcedure;
+ MySqlDataReader reader = cmd.ExecuteReader();
+ Assert.AreEqual(true, reader.Read());
+ Assert.AreEqual(false, reader.NextResult());
+ Assert.AreEqual(false, reader.Read());
+ reader.Close();
+ Assert.AreEqual(2, cmd.Parameters[0].Value);
+ }
- [Test]
- public void MultipleResultsets()
- {
- MultipleResultsetsImpl(false);
- }
+ [Test]
+ public void MultipleResultsets()
+ {
+ MultipleResultsetsImpl(false);
+ }
- [Test]
- public void MultipleResultsetsPrepared()
- {
- MultipleResultsetsImpl(true);
- }
+ [Test]
+ public void MultipleResultsetsPrepared()
+ {
+ MultipleResultsetsImpl(true);
+ }
- private void MultipleResultsetsImpl(bool prepare)
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest() BEGIN SELECT 1; SELECT 2; END");
+ private void MultipleResultsetsImpl(bool prepare)
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest() BEGIN SELECT 1; SELECT 2; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- if (prepare)
- cmd.Prepare();
- MySqlDataReader reader = cmd.ExecuteReader();
- Assert.AreEqual(true, reader.Read());
- Assert.AreEqual(true, reader.NextResult());
- Assert.AreEqual(true, reader.Read());
- Assert.AreEqual(false, reader.NextResult());
- Assert.AreEqual(false, reader.Read());
- reader.Close();
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ if (prepare)
+ cmd.Prepare();
+ MySqlDataReader reader = cmd.ExecuteReader();
+ Assert.AreEqual(true, reader.Read());
+ Assert.AreEqual(true, reader.NextResult());
+ Assert.AreEqual(true, reader.Read());
+ Assert.AreEqual(false, reader.NextResult());
+ Assert.AreEqual(false, reader.Read());
+ reader.Close();
- DataSet ds = new DataSet();
- MySqlCommand cmd2 = new MySqlCommand("spTest", conn);
- cmd2.CommandType = CommandType.StoredProcedure;
- MySqlDataAdapter da = new MySqlDataAdapter(cmd2);
- da.FillError += new FillErrorEventHandler(da_FillError);
- fillError = null;
- da.Fill(ds);
- Assert.AreEqual(2, ds.Tables.Count);
- Assert.AreEqual(1, ds.Tables[0].Rows.Count);
- Assert.AreEqual(1, ds.Tables[1].Rows.Count);
- Assert.AreEqual(1, ds.Tables[0].Rows[0][0]);
- Assert.AreEqual(2, ds.Tables[1].Rows[0][0]);
- Assert.IsNull(fillError);
- }
+ DataSet ds = new DataSet();
+ MySqlCommand cmd2 = new MySqlCommand("spTest", conn);
+ cmd2.CommandType = CommandType.StoredProcedure;
+ MySqlDataAdapter da = new MySqlDataAdapter(cmd2);
+ da.FillError += new FillErrorEventHandler(da_FillError);
+ fillError = null;
+ da.Fill(ds);
+ Assert.AreEqual(2, ds.Tables.Count);
+ Assert.AreEqual(1, ds.Tables[0].Rows.Count);
+ Assert.AreEqual(1, ds.Tables[1].Rows.Count);
+ Assert.AreEqual(1, ds.Tables[0].Rows[0][0]);
+ Assert.AreEqual(2, ds.Tables[1].Rows[0][0]);
+ Assert.IsNull(fillError);
+ }
- private void da_FillError(object sender, FillErrorEventArgs e)
- {
- fillError = e.Errors.Message;
- e.Continue = true;
- }
+ private void da_FillError(object sender, FillErrorEventArgs e)
+ {
+ fillError = e.Errors.Message;
+ e.Continue = true;
+ }
- [Test]
- public void FunctionNoParams()
- {
- execSQL("CREATE FUNCTION fnTest() RETURNS CHAR(50) LANGUAGE SQL DETERMINISTIC " +
- "BEGIN RETURN \"Test\"; END");
+ [Test]
+ public void FunctionNoParams()
+ {
+ execSQL("CREATE FUNCTION fnTest() RETURNS CHAR(50) LANGUAGE SQL DETERMINISTIC " +
+ "BEGIN RETURN \"Test\"; END");
- MySqlCommand cmd = new MySqlCommand("SELECT fnTest()", conn);
- cmd.CommandType = CommandType.Text;
- object result = cmd.ExecuteScalar();
- Assert.AreEqual("Test", result);
- }
+ MySqlCommand cmd = new MySqlCommand("SELECT fnTest()", conn);
+ cmd.CommandType = CommandType.Text;
+ object result = cmd.ExecuteScalar();
+ Assert.AreEqual("Test", result);
+ }
- [Test]
- public void FunctionParams()
- {
- execSQL("CREATE FUNCTION fnTest( val1 INT, val2 CHAR(40) ) RETURNS INT " +
- " LANGUAGE SQL DETERMINISTIC BEGIN RETURN val1 + LENGTH(val2); END");
+ [Test]
+ public void FunctionParams()
+ {
+ execSQL("CREATE FUNCTION fnTest( val1 INT, val2 CHAR(40) ) RETURNS INT " +
+ " LANGUAGE SQL DETERMINISTIC BEGIN RETURN val1 + LENGTH(val2); END");
- MySqlCommand cmd = new MySqlCommand("SELECT fnTest(22, 'Test')", conn);
- cmd.CommandType = CommandType.Text;
- object result = cmd.ExecuteScalar();
- Assert.AreEqual(26, result);
- }
+ MySqlCommand cmd = new MySqlCommand("SELECT fnTest(22, 'Test')", conn);
+ cmd.CommandType = CommandType.Text;
+ object result = cmd.ExecuteScalar();
+ Assert.AreEqual(26, result);
+ }
- [Test]
- public void UseOldSyntax()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest( IN valin VARCHAR(50), OUT valout VARCHAR(50) ) " +
- "BEGIN SET valout=valin; SELECT 'Test'; END");
+ [Test]
+ public void UseOldSyntax()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest( IN valin VARCHAR(50), OUT valout VARCHAR(50) ) " +
+ "BEGIN SET valout=valin; SELECT 'Test'; END");
- MySqlConnection c2 = new MySqlConnection(conn.ConnectionString + ";old syntax=yes");
- c2.Open();
+ MySqlConnection c2 = new MySqlConnection(conn.ConnectionString + ";old syntax=yes");
+ c2.Open();
- MySqlCommand cmd = new MySqlCommand("spTest", c2);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("@valin", "value");
- cmd.Parameters.Add(new MySqlParameter("@valout", MySqlDbType.VarChar));
- cmd.Parameters[1].Direction = ParameterDirection.Output;
- object result = cmd.ExecuteScalar();
- Assert.AreEqual("Test", result);
- Assert.AreEqual("value", cmd.Parameters[1].Value);
- c2.Close();
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", c2);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("@valin", "value");
+ cmd.Parameters.Add(new MySqlParameter("@valout", MySqlDbType.VarChar));
+ cmd.Parameters[1].Direction = ParameterDirection.Output;
+ object result = cmd.ExecuteScalar();
+ Assert.AreEqual("Test", result);
+ Assert.AreEqual("value", cmd.Parameters[1].Value);
+ c2.Close();
+ }
- [Test]
- public void ExecuteWithCreate()
- {
- // create our procedure
- string sql = "CREATE PROCEDURE spTest(IN var INT) BEGIN SELECT var; END; call spTest(?v)";
+ [Test]
+ public void ExecuteWithCreate()
+ {
+ // create our procedure
+ string sql = "CREATE PROCEDURE spTest(IN var INT) BEGIN SELECT var; END; call spTest(?v)";
- MySqlCommand cmd = new MySqlCommand(sql, conn);
- cmd.Parameters.Add(new MySqlParameter("?v", 33));
- object val = cmd.ExecuteScalar();
- Assert.AreEqual(33, val);
- }
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.Parameters.Add(new MySqlParameter("?v", 33));
+ object val = cmd.ExecuteScalar();
+ Assert.AreEqual(33, val);
+ }
- /// <summary>
- /// Bug #9722 Connector does not recognize parameters separated by a linefeed
- /// </summary>
- [Test]
- public void OtherProcSigs()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest(IN \r\nvalin DECIMAL(10,2),\nIN val2 INT) " +
- "SQL SECURITY INVOKER BEGIN SELECT valin; END");
+ /// <summary>
+ /// Bug #9722 Connector does not recognize parameters separated by a linefeed
+ /// </summary>
+ [Test]
+ public void OtherProcSigs()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest(IN \r\nvalin DECIMAL(10,2),\nIN val2 INT) " +
+ "SQL SECURITY INVOKER BEGIN SELECT valin; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?valin", 20.4);
- cmd.Parameters.Add("?val2", 4);
- decimal val = (decimal)cmd.ExecuteScalar();
- Decimal d = new Decimal(20.4);
- Assert.AreEqual(d, val);
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?valin", 20.4);
+ cmd.Parameters.Add("?val2", 4);
+ decimal val = (decimal)cmd.ExecuteScalar();
+ Decimal d = new Decimal(20.4);
+ Assert.AreEqual(d, val);
- // create our second procedure
- execSQL("DROP PROCEDURE IF EXISTS spTest");
- execSQL("CREATE PROCEDURE spTest( \r\n) BEGIN SELECT 4; END");
- cmd.Parameters.Clear();
- object val1 = cmd.ExecuteScalar();
- Assert.AreEqual(4, val1);
- execSQL("DROP PROCEDURE IF EXISTS spTest");
- }
+ // create our second procedure
+ execSQL("DROP PROCEDURE IF EXISTS spTest");
+ execSQL("CREATE PROCEDURE spTest( \r\n) BEGIN SELECT 4; END");
+ cmd.Parameters.Clear();
+ object val1 = cmd.ExecuteScalar();
+ Assert.AreEqual(4, val1);
+ execSQL("DROP PROCEDURE IF EXISTS spTest");
+ }
/// <summary>
@@ -452,537 +452,538 @@
Assert.AreEqual(44, cmd.Parameters[1].Value);
}
- /// <summary>
- /// Bug #11450 Connector/Net, current database and stored procedures
- /// </summary>
- [Test]
- public void NoDefaultDatabase()
- {
- // create our procedure
- execSQL("CREATE PROCEDURE spTest() BEGIN SELECT 4; END");
+ /// <summary>
+ /// Bug #11450 Connector/Net, current database and stored procedures
+ /// </summary>
+ [Test]
+ public void NoDefaultDatabase()
+ {
+ // create our procedure
+ execSQL("CREATE PROCEDURE spTest() BEGIN SELECT 4; END");
- string newConnStr = GetConnectionString(false);
- MySqlConnection c = new MySqlConnection(newConnStr);
- try
- {
- c.Open();
- MySqlCommand cmd2 = new MySqlCommand("use test", c);
- cmd2.ExecuteNonQuery();
+ string newConnStr = GetConnectionString(false);
+ MySqlConnection c = new MySqlConnection(newConnStr);
+ try
+ {
+ c.Open();
+ MySqlCommand cmd2 = new MySqlCommand("use test", c);
+ cmd2.ExecuteNonQuery();
- MySqlCommand cmd = new MySqlCommand("spTest", c);
- cmd.CommandType = CommandType.StoredProcedure;
- object val = cmd.ExecuteScalar();
- Assert.AreEqual(4, val);
+ MySqlCommand cmd = new MySqlCommand("spTest", c);
+ cmd.CommandType = CommandType.StoredProcedure;
+ object val = cmd.ExecuteScalar();
+ Assert.AreEqual(4, val);
- cmd2.CommandText = "use mysql";
- cmd2.ExecuteNonQuery();
+ cmd2.CommandText = "use mysql";
+ cmd2.ExecuteNonQuery();
- cmd.CommandText = "test.spTest";
- val = cmd.ExecuteScalar();
- Assert.AreEqual(4, val);
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- finally
- {
- c.Close();
- }
- }
+ cmd.CommandText = "test.spTest";
+ val = cmd.ExecuteScalar();
+ Assert.AreEqual(4, val);
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ finally
+ {
+ c.Close();
+ }
+ }
- /// <summary>
- /// Bug #13590 ExecuteScalar returns only Int64 regardless of actual SQL type
- /// </summary>
- [Category("NotWorking")]
- [Test]
- public void TestSelectingInts()
- {
- execSQL("CREATE PROCEDURE spTest() BEGIN DECLARE myVar INT; " +
- "SET MyVar := 1; SELECT CAST(myVar as SIGNED); END");
+ /// <summary>
+ /// Bug #13590 ExecuteScalar returns only Int64 regardless of actual SQL type
+ /// </summary>
+ [Category("NotWorking")]
+ [Test]
+ public void TestSelectingInts()
+ {
+ execSQL("CREATE PROCEDURE spTest() BEGIN DECLARE myVar INT; " +
+ "SET MyVar := 1; SELECT CAST(myVar as SIGNED); END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- object val = cmd.ExecuteScalar();
- Assert.AreEqual(1, val, "Checking value");
- Assert.IsTrue(val is System.Int32, "Checking type");
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ object val = cmd.ExecuteScalar();
+ Assert.AreEqual(1, val, "Checking value");
+ Assert.IsTrue(val is System.Int32, "Checking type");
+ }
- /// <summary>
- /// Bug #13632 the MySQLCommandBuilder.deriveparameters has not been updated for MySQL 5
- /// Bug #15077 Error MySqlCommandBuilder.DeriveParameters for sp without parameters.
- /// Bug #19515 DiscoverParameters fails on numeric datatype
- /// </summary>
- [Test]
- public void DeriveParameters()
- {
- execSQL("DROP TABLE IF EXISTS test2");
- execSQL("CREATE TABLE test2 (c CHAR(20))");
- execSQL("INSERT INTO test2 values ( 'xxxx')");
- MySqlCommand cmd2 = new MySqlCommand("SELECT * FROM test2", conn);
- MySqlDataReader reader = cmd2.ExecuteReader();
- reader.Close();
+ /// <summary>
+ /// Bug #13632 the MySQLCommandBuilder.deriveparameters has not been updated for MySQL 5
+ /// Bug #15077 Error MySqlCommandBuilder.DeriveParameters for sp without parameters.
+ /// Bug #19515 DiscoverParameters fails on numeric datatype
+ /// </summary>
+ [Test]
+ public void DeriveParameters()
+ {
+ execSQL("DROP TABLE IF EXISTS test2");
+ execSQL("CREATE TABLE test2 (c CHAR(20))");
+ execSQL("INSERT INTO test2 values ( 'xxxx')");
+ MySqlCommand cmd2 = new MySqlCommand("SELECT * FROM test2", conn);
+ MySqlDataReader reader = cmd2.ExecuteReader();
+ reader.Close();
- execSQL("CREATE PROCEDURE spTest(IN \r\nvalin DECIMAL(10,2), " +
- "\nIN val2 INT, INOUT val3 FLOAT, OUT val4 DOUBLE, INOUT val5 BIT, " +
- "val6 VARCHAR(155), val7 SET('a','b'), val8 CHAR, val9 NUMERIC(10,2)) " +
- " LANGUAGE SQL DETERMINISTIC BEGIN SELECT 1; END");
+ execSQL("CREATE PROCEDURE spTest(IN \r\nvalin DECIMAL(10,2), " +
+ "\nIN val2 INT, INOUT val3 FLOAT, OUT val4 DOUBLE, INOUT val5 BIT, " +
+ "val6 VARCHAR(155), val7 SET('a','b'), val8 CHAR, val9 NUMERIC(10,2)) " +
+ " LANGUAGE SQL DETERMINISTIC BEGIN SELECT 1; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- MySqlDataAdapter da = new MySqlDataAdapter(cmd);
- MySqlCommandBuilder.DeriveParameters(cmd);
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ MySqlDataAdapter da = new MySqlDataAdapter(cmd);
+ MySqlCommandBuilder.DeriveParameters(cmd);
- Assert.AreEqual(9, cmd.Parameters.Count);
- Assert.AreEqual("?valin", cmd.Parameters[0].ParameterName);
- Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[0].Direction);
- Assert.AreEqual(MySqlDbType.NewDecimal, cmd.Parameters[0].MySqlDbType);
+ Assert.AreEqual(9, cmd.Parameters.Count);
+ Assert.AreEqual("?valin", cmd.Parameters[0].ParameterName);
+ Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[0].Direction);
+ Assert.AreEqual(MySqlDbType.NewDecimal, cmd.Parameters[0].MySqlDbType);
- Assert.AreEqual("?val2", cmd.Parameters[1].ParameterName);
- Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[1].Direction);
- Assert.AreEqual(MySqlDbType.Int32, cmd.Parameters[1].MySqlDbType);
+ Assert.AreEqual("?val2", cmd.Parameters[1].ParameterName);
+ Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[1].Direction);
+ Assert.AreEqual(MySqlDbType.Int32, cmd.Parameters[1].MySqlDbType);
- Assert.AreEqual("?val3", cmd.Parameters[2].ParameterName);
- Assert.AreEqual(ParameterDirection.InputOutput, cmd.Parameters[2].Direction);
- Assert.AreEqual(MySqlDbType.Float, cmd.Parameters[2].MySqlDbType);
+ Assert.AreEqual("?val3", cmd.Parameters[2].ParameterName);
+ Assert.AreEqual(ParameterDirection.InputOutput, cmd.Parameters[2].Direction);
+ Assert.AreEqual(MySqlDbType.Float, cmd.Parameters[2].MySqlDbType);
- Assert.AreEqual("?val4", cmd.Parameters[3].ParameterName);
- Assert.AreEqual(ParameterDirection.Output, cmd.Parameters[3].Direction);
- Assert.AreEqual(MySqlDbType.Double, cmd.Parameters[3].MySqlDbType);
+ Assert.AreEqual("?val4", cmd.Parameters[3].ParameterName);
+ Assert.AreEqual(ParameterDirection.Output, cmd.Parameters[3].Direction);
+ Assert.AreEqual(MySqlDbType.Double, cmd.Parameters[3].MySqlDbType);
- Assert.AreEqual("?val5", cmd.Parameters[4].ParameterName);
- Assert.AreEqual(ParameterDirection.InputOutput, cmd.Parameters[4].Direction);
- Assert.AreEqual(MySqlDbType.Bit, cmd.Parameters[4].MySqlDbType);
+ Assert.AreEqual("?val5", cmd.Parameters[4].ParameterName);
+ Assert.AreEqual(ParameterDirection.InputOutput, cmd.Parameters[4].Direction);
+ Assert.AreEqual(MySqlDbType.Bit, cmd.Parameters[4].MySqlDbType);
- Assert.AreEqual("?val6", cmd.Parameters[5].ParameterName);
- Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[5].Direction);
- Assert.AreEqual(MySqlDbType.VarChar, cmd.Parameters[5].MySqlDbType);
+ Assert.AreEqual("?val6", cmd.Parameters[5].ParameterName);
+ Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[5].Direction);
+ Assert.AreEqual(MySqlDbType.VarChar, cmd.Parameters[5].MySqlDbType);
- Assert.AreEqual("?val7", cmd.Parameters[6].ParameterName);
- Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[6].Direction);
- Assert.AreEqual(MySqlDbType.Set, cmd.Parameters[6].MySqlDbType);
+ Assert.AreEqual("?val7", cmd.Parameters[6].ParameterName);
+ Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[6].Direction);
+ Assert.AreEqual(MySqlDbType.Set, cmd.Parameters[6].MySqlDbType);
- Assert.AreEqual("?val8", cmd.Parameters[7].ParameterName);
- Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[7].Direction);
- Assert.AreEqual(MySqlDbType.Char, cmd.Parameters[7].MySqlDbType);
+ Assert.AreEqual("?val8", cmd.Parameters[7].ParameterName);
+ Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[7].Direction);
+ Assert.AreEqual(MySqlDbType.Char, cmd.Parameters[7].MySqlDbType);
- Assert.AreEqual("?val9", cmd.Parameters[8].ParameterName);
- Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[8].Direction);
- Assert.AreEqual(MySqlDbType.NewDecimal, cmd.Parameters[8].MySqlDbType);
+ Assert.AreEqual("?val9", cmd.Parameters[8].ParameterName);
+ Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[8].Direction);
+ Assert.AreEqual(MySqlDbType.NewDecimal, cmd.Parameters[8].MySqlDbType);
- execSQL("DROP PROCEDURE spTest");
- execSQL("CREATE PROCEDURE spTest() BEGIN END");
- cmd.CommandText = "spTest";
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Clear();
- da = new MySqlDataAdapter(cmd);
- MySqlCommandBuilder.DeriveParameters(cmd);
- Assert.AreEqual(0, cmd.Parameters.Count);
- }
+ execSQL("DROP PROCEDURE spTest");
+ execSQL("CREATE PROCEDURE spTest() BEGIN END");
+ cmd.CommandText = "spTest";
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Clear();
+ da = new MySqlDataAdapter(cmd);
+ MySqlCommandBuilder.DeriveParameters(cmd);
+ Assert.AreEqual(0, cmd.Parameters.Count);
+ }
- /// <summary>
- /// Bug #13632 the MySQLCommandBuilder.deriveparameters has not been updated for MySQL 5
- /// </summary>
- [Test]
- public void DeriveParametersForFunction()
- {
- try
- {
- execSQL("CREATE FUNCTION fnTest(v1 DATETIME) RETURNS INT " +
- " LANGUAGE SQL DETERMINISTIC BEGIN RETURN 1; END");
+ /// <summary>
+ /// Bug #13632 the MySQLCommandBuilder.deriveparameters has not been updated for MySQL 5
+ /// </summary>
+ [Test]
+ public void DeriveParametersForFunction()
+ {
+ try
+ {
+ execSQL("CREATE FUNCTION fnTest(v1 DATETIME) RETURNS INT " +
+ " LANGUAGE SQL DETERMINISTIC BEGIN RETURN 1; END");
- MySqlCommand cmd = new MySqlCommand("fnTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- MySqlDataAdapter da = new MySqlDataAdapter(cmd);
- MySqlCommandBuilder.DeriveParameters(cmd);
+ MySqlCommand cmd = new MySqlCommand("fnTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ MySqlDataAdapter da = new MySqlDataAdapter(cmd);
+ MySqlCommandBuilder.DeriveParameters(cmd);
- Assert.AreEqual(2, cmd.Parameters.Count);
- Assert.AreEqual("?v1", cmd.Parameters[0].ParameterName);
- Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[0].Direction);
- Assert.AreEqual(MySqlDbType.Datetime, cmd.Parameters[0].MySqlDbType);
+ Assert.AreEqual(2, cmd.Parameters.Count);
+ Assert.AreEqual("?v1", cmd.Parameters[0].ParameterName);
+ Assert.AreEqual(ParameterDirection.Input, cmd.Parameters[0].Direction);
+ Assert.AreEqual(MySqlDbType.Datetime, cmd.Parameters[0].MySqlDbType);
- Assert.AreEqual(ParameterDirection.ReturnValue, cmd.Parameters[1].Direction);
- Assert.AreEqual(MySqlDbType.Int32, cmd.Parameters[1].MySqlDbType);
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- }
+ Assert.AreEqual(ParameterDirection.ReturnValue, cmd.Parameters[1].Direction);
+ Assert.AreEqual(MySqlDbType.Int32, cmd.Parameters[1].MySqlDbType);
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ }
- /// <summary>
- /// Bug #11386 Numeric parameters with Precision and Scale not taken into account by Connector
- /// </summary>
- [Test]
- public void DecimalAsParameter()
- {
- execSQL("CREATE PROCEDURE spTest(IN d DECIMAL(19,4)) BEGIN SELECT d; END");
+ /// <summary>
+ /// Bug #11386 Numeric parameters with Precision and Scale not taken into account by Connector
+ /// </summary>
+ [Test]
+ public void DecimalAsParameter()
+ {
+ execSQL("CREATE PROCEDURE spTest(IN d DECIMAL(19,4)) BEGIN SELECT d; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?d", 21);
- decimal d = (decimal)cmd.ExecuteScalar();
- Assert.AreEqual(21, d);
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?d", 21);
+ decimal d = (decimal)cmd.ExecuteScalar();
+ Assert.AreEqual(21, d);
+ }
- /// <summary>
- /// Bug #6902 Errors in parsing stored procedure parameters
- /// </summary>
- [Test]
- public void ParmWithCharacterSet()
- {
- execSQL("CREATE PROCEDURE spTest(P longtext character set utf8) " +
- "BEGIN SELECT P; END");
+ /// <summary>
+ /// Bug #6902 Errors in parsing stored procedure parameters
+ /// </summary>
+ [Test]
+ public void ParmWithCharacterSet()
+ {
+ execSQL("CREATE PROCEDURE spTest(P longtext character set utf8) " +
+ "BEGIN SELECT P; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?P", "This is my value");
- string p = (string)cmd.ExecuteScalar();
- Assert.AreEqual("This is my value", p);
- }
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?P", "This is my value");
+ string p = (string)cmd.ExecuteScalar();
+ Assert.AreEqual("This is my value", p);
+ }
- /// <summary>
- /// Bug #13753 Exception calling stored procedure with special characters in parameters
- /// </summary>
- [Test]
- public void SpecialCharacters()
- {
- execSQL("SET sql_mode=ANSI_QUOTES");
- try
- {
- execSQL("CREATE PROCEDURE spTest(\"@Param1\" text) BEGIN SELECT \"@Param1\"; END");
+ /// <summary>
+ /// Bug #13753 Exception calling stored procedure with special characters in parameters
+ /// </summary>
+ [Test]
+ public void SpecialCharacters()
+ {
+ execSQL("SET sql_mode=ANSI_QUOTES");
+ try
+ {
+ execSQL("CREATE PROCEDURE spTest(\"@Param1\" text) BEGIN SELECT \"@Param1\"; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.Parameters.Add("?@Param1", "This is my value");
- cmd.CommandType = CommandType.StoredProcedure;
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.Parameters.Add("?@Param1", "This is my value");
+ cmd.CommandType = CommandType.StoredProcedure;
- string val = (string)cmd.ExecuteScalar();
- Assert.AreEqual("This is my value", val);
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- finally
- {
- execSQL("SET sql_mode=\"\"");
- }
- }
+ string val = (string)cmd.ExecuteScalar();
+ Assert.AreEqual("This is my value", val);
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ finally
+ {
+ execSQL("SET sql_mode=\"\"");
+ }
+ }
- [Test]
- public void CallingSPWithPrepare()
- {
- execSQL("DROP PROCEDURE IF EXISTS spTest");
- execSQL("CREATE PROCEDURE spTest(P int) BEGIN SELECT P; END");
+ [Test]
+ public void CallingSPWithPrepare()
+ {
+ execSQL("DROP PROCEDURE IF EXISTS spTest");
+ execSQL("CREATE PROCEDURE spTest(P int) BEGIN SELECT P; END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?P", 33);
- cmd.Prepare();
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?P", 33);
+ cmd.Prepare();
- int p = (int)cmd.ExecuteScalar();
- Assert.AreEqual(33, p);
- }
+ int p = (int)cmd.ExecuteScalar();
+ Assert.AreEqual(33, p);
+ }
- /// <summary>
- /// Bug #13927 Multiple Records to same Table in Transaction Problem
- /// </summary>
- [Test]
- public void MultipleRecords()
- {
- execSQL("DROP PROCEDURE IF EXISTS spTest");
- execSQL("CREATE PROCEDURE spTest(id int, str VARCHAR(45)) " +
- "BEGIN INSERT INTO test VALUES(id, str); END");
+ /// <summary>
+ /// Bug #13927 Multiple Records to same Table in Transaction Problem
+ /// </summary>
+ [Test]
+ public void MultipleRecords()
+ {
+ execSQL("DROP PROCEDURE IF EXISTS spTest");
+ execSQL("CREATE PROCEDURE spTest(id int, str VARCHAR(45)) " +
+ "BEGIN INSERT INTO test VALUES(id, str); END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?id", 1);
- cmd.Parameters.Add("?str", "First record");
- cmd.ExecuteNonQuery();
+ cmd.Parameters.Add("?id", 1);
+ cmd.Parameters.Add("?str", "First record");
+ cmd.ExecuteNonQuery();
- cmd.Parameters.Add("?id", 2);
- cmd.Parameters.Add("?str", "Second record");
- cmd.ExecuteNonQuery();
+ cmd.Parameters.Add("?id", 2);
+ cmd.Parameters.Add("?str", "Second record");
+ cmd.ExecuteNonQuery();
- MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM test", conn);
- DataTable dt = new DataTable();
- da.Fill(dt);
+ MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM test", conn);
+ DataTable dt = new DataTable();
+ da.Fill(dt);
- Assert.AreEqual(1, dt.Rows[0]["id"]);
- Assert.AreEqual(2, dt.Rows[1]["id"]);
- Assert.AreEqual("First record", dt.Rows[0]["name"]);
- Assert.AreEqual("Second record", dt.Rows[1]["name"]);
- }
+ Assert.AreEqual(1, dt.Rows[0]["id"]);
+ Assert.AreEqual(2, dt.Rows[1]["id"]);
+ Assert.AreEqual("First record", dt.Rows[0]["name"]);
+ Assert.AreEqual("Second record", dt.Rows[1]["name"]);
+ }
- /// <summary>
- /// Bug #16788 Only byte arrays and strings can be serialized by MySqlBinary
- /// </summary>
- [Test]
- public void Bug16788()
- {
- execSQL("DROP TABLE IF EXISTS Test");
- execSQL("CREATE TABLE Test (id integer(9), state varchar(2))");
- execSQL("CREATE PROCEDURE spTest(IN p1 integer(9), IN p2 varchar(2)) " +
- "BEGIN INSERT INTO test (id, state) VALUES (p1, p2); END");
+ /// <summary>
+ /// Bug #16788 Only byte arrays and strings can be serialized by MySqlBinary
+ /// </summary>
+ [Test]
+ public void Bug16788()
+ {
+ execSQL("DROP TABLE IF EXISTS Test");
+ execSQL("CREATE TABLE Test (id integer(9), state varchar(2))");
+ execSQL("CREATE PROCEDURE spTest(IN p1 integer(9), IN p2 varchar(2)) " +
+ "BEGIN INSERT INTO test (id, state) VALUES (p1, p2); END");
- MySqlCommand cmd = conn.CreateCommand();
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.CommandText = "spTest";
- cmd.Parameters.Add("?p1", MySqlDbType.UInt16, 9);
- cmd.Parameters["?p1"].Value = 44;
- cmd.Parameters.Add("?p2", MySqlDbType.VarChar, 2);
- cmd.Parameters["?p2"].Value = "ss";
- try
- {
- cmd.ExecuteNonQuery();
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- }
+ MySqlCommand cmd = conn.CreateCommand();
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.CommandText = "spTest";
+ cmd.Parameters.Add("?p1", MySqlDbType.UInt16, 9);
+ cmd.Parameters["?p1"].Value = 44;
+ cmd.Parameters.Add("?p2", MySqlDbType.VarChar, 2);
+ cmd.Parameters["?p2"].Value = "ss";
+ try
+ {
+ cmd.ExecuteNonQuery();
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ }
- [Test]
- public void ReturningEmptyResultSet()
- {
- execSQL("DROP PROCEDURE IF EXISTS spTest");
- execSQL("DROP TABLE IF EXISTS test1");
- execSQL("DROP TABLE IF EXISTS test2");
- execSQL("CREATE TABLE test1 (id int AUTO_INCREMENT NOT NULL, " +
- "Name VARCHAR(100) NOT NULL, PRIMARY KEY(id))");
- execSQL("CREATE TABLE test2 (id int AUTO_INCREMENT NOT NULL, " +
- "id1 INT NOT NULL, id2 INT NOT NULL, PRIMARY KEY(id))");
+ [Test]
+ public void ReturningEmptyResultSet()
+ {
+ execSQL("DROP PROCEDURE IF EXISTS spTest");
+ execSQL("DROP TABLE IF EXISTS test1");
+ execSQL("DROP TABLE IF EXISTS test2");
+ execSQL("CREATE TABLE test1 (id int AUTO_INCREMENT NOT NULL, " +
+ "Name VARCHAR(100) NOT NULL, PRIMARY KEY(id))");
+ execSQL("CREATE TABLE test2 (id int AUTO_INCREMENT NOT NULL, " +
+ "id1 INT NOT NULL, id2 INT NOT NULL, PRIMARY KEY(id))");
- execSQL("INSERT INTO test1 (Id, Name) VALUES (1, 'Item1')");
- execSQL("INSERT INTO test1 (Id, Name) VALUES (2, 'Item2')");
- execSQL("INSERT INTO test2 (Id, Id1, Id2) VALUES (1, 1, 1)");
- execSQL("INSERT INTO test2 (Id, Id1, Id2) VALUES (2, 2, 1)");
+ execSQL("INSERT INTO test1 (Id, Name) VALUES (1, 'Item1')");
+ execSQL("INSERT INTO test1 (Id, Name) VALUES (2, 'Item2')");
+ execSQL("INSERT INTO test2 (Id, Id1, Id2) VALUES (1, 1, 1)");
+ execSQL("INSERT INTO test2 (Id, Id1, Id2) VALUES (2, 2, 1)");
- execSQL("CREATE PROCEDURE spTest(Name VARCHAR(100), OUT Table1Id INT) " +
- "BEGIN SELECT t1.Id INTO Table1Id FROM test1 t1 WHERE t1.Name LIKE Name; " +
- "SELECT t3.Id2 FROM test2 t3 WHERE t3.Id1 = Table1Id; END");
+ execSQL("CREATE PROCEDURE spTest(Name VARCHAR(100), OUT Table1Id INT) " +
+ "BEGIN SELECT t1.Id INTO Table1Id FROM test1 t1 WHERE t1.Name LIKE Name; " +
+ "SELECT t3.Id2 FROM test2 t3 WHERE t3.Id1 = Table1Id; END");
- MySqlCommand cmd = conn.CreateCommand();
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.CommandText = "spTest";
- cmd.Parameters.Add("?Name", "Item3");
- cmd.Parameters.Add("?Table1Id", MySqlDbType.Int32);
- cmd.Parameters["?Table1Id"].Direction = ParameterDirection.Output;
+ MySqlCommand cmd = conn.CreateCommand();
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.CommandText = "spTest";
+ cmd.Parameters.Add("?Name", "Item3");
+ cmd.Parameters.Add("?Table1Id", MySqlDbType.Int32);
+ cmd.Parameters["?Table1Id"].Direction = ParameterDirection.Output;
- DataSet ds = new DataSet();
- MySqlDataAdapter da = new MySqlDataAdapter(cmd);
- try
- {
- da.Fill(ds);
- }
- catch (MySqlException)
- {
- // on 5.1 this throws an exception that no rows were returned.
- }
- }
+ DataSet ds = new DataSet();
+ MySqlDataAdapter da = new MySqlDataAdapter(cmd);
+ try
+ {
+ da.Fill(ds);
+ }
+ catch (MySqlException)
+ {
+ // on 5.1 this throws an exception that no rows were returned.
+ }
+ }
- [Test]
- public void ProcedureCache()
- {
- // open a new connection using a procedure cache
- string connStr = GetConnectionString(true);
- connStr += ";procedure cache size=25;logging=true";
- MySqlConnection c = new MySqlConnection(connStr);
- try
- {
- c.Open();
+ [Explicit]
+ [Test]
+ public void ProcedureCache()
+ {
+ // open a new connection using a procedure cache
+ string connStr = GetConnectionString(true);
+ connStr += ";procedure cache size=25;logging=true";
+ MySqlConnection c = new MySqlConnection(connStr);
+ try
+ {
+ c.Open();
- // install our custom trace listener
- GenericListener myListener = new GenericListener();
- System.Diagnostics.Trace.Listeners.Add(myListener);
+ // install our custom trace listener
+ GenericListener myListener = new GenericListener();
+ System.Diagnostics.Trace.Listeners.Add(myListener);
- for (int x = 0; x < 10; x++)
- {
- execSQL("DROP PROCEDURE IF EXISTS spTest" + x);
- execSQL("CREATE PROCEDURE spTest" + x + "() BEGIN SELECT 1; END");
- MySqlCommand cmd = new MySqlCommand("spTest" + x, c);
- cmd.CommandType = CommandType.StoredProcedure;
- for (int y = 0; y < 20; y++)
- {
- cmd.ExecuteNonQuery();
- }
- }
+ for (int x = 0; x < 10; x++)
+ {
+ execSQL("DROP PROCEDURE IF EXISTS spTest" + x);
+ execSQL("CREATE PROCEDURE spTest" + x + "() BEGIN SELECT 1; END");
+ MySqlCommand cmd = new MySqlCommand("spTest" + x, c);
+ cmd.CommandType = CommandType.StoredProcedure;
+ for (int y = 0; y < 20; y++)
+ {
+ cmd.ExecuteNonQuery();
+ }
+ }
- // remove our custom trace listener
- System.Diagnostics.Trace.Listeners.Remove(myListener);
+ // remove our custom trace listener
+ System.Diagnostics.Trace.Listeners.Remove(myListener);
- // TODO: this is not working under NUnit currently
- // now see how many times our listener recorded a cache hit
- //Assert.AreEqual(190, myListener.Find("from procedure cache"));
- //Assert.AreEqual(10, myListener.Find("from server"));
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- finally
- {
- if (c != null)
- c.Close();
- for (int x = 0; x < 10; x++)
- execSQL("DROP PROCEDURE IF EXISTS spTest" + x);
- }
- }
+ // TODO: this is not working under NUnit currently
+ // now see how many times our listener recorded a cache hit
+ //Assert.AreEqual(190, myListener.Find("from procedure cache"));
+ //Assert.AreEqual(10, myListener.Find("from server"));
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ finally
+ {
+ if (c != null)
+ c.Close();
+ for (int x = 0; x < 10; x++)
+ execSQL("DROP PROCEDURE IF EXISTS spTest" + x);
+ }
+ }
- /// <summary>
- /// Bug #20581 Null Reference Exception when closing reader after stored procedure.
- /// </summary>
- [Test]
- public void Bug20581()
- {
- execSQL("CREATE PROCEDURE spTest(p int) BEGIN SELECT p; END");
- MySqlParameter param1;
- MySqlCommand command = new MySqlCommand("spTest", conn);
- command.CommandType = System.Data.CommandType.StoredProcedure;
+ /// <summary>
+ /// Bug #20581 Null Reference Exception when closing reader after stored procedure.
+ /// </summary>
+ [Test]
+ public void Bug20581()
+ {
+ execSQL("CREATE PROCEDURE spTest(p int) BEGIN SELECT p; END");
+ MySqlParameter param1;
+ MySqlCommand command = new MySqlCommand("spTest", conn);
+ command.CommandType = System.Data.CommandType.StoredProcedure;
- param1 = command.Parameters.Add("?p", MySqlDbType.Int32);
- param1.Value = 3;
+ param1 = command.Parameters.Add("?p", MySqlDbType.Int32);
+ param1.Value = 3;
- MySqlDataReader reader = null;
- try
- {
- command.Prepare();
- reader = command.ExecuteReader(CommandBehavior.SingleRow);
- reader.Read();
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- finally
- {
- if (reader != null)
- reader.Close();
- }
- }
+ MySqlDataReader reader = null;
+ try
+ {
+ command.Prepare();
+ reader = command.ExecuteReader(CommandBehavior.SingleRow);
+ reader.Read();
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ finally
+ {
+ if (reader != null)
+ reader.Close();
+ }
+ }
- /// <summary>
- /// Bug #17046 Null pointer access when stored procedure is used
- /// </summary>
- [Test]
- public void PreparedReader()
- {
- execSQL("DROP TABLE IF EXISTS test");
- execSQL("CREATE TABLE test (id int(10) unsigned NOT NULL default '0', " +
- "val int(10) unsigned default NULL, PRIMARY KEY (id)) " +
- "ENGINE=InnoDB DEFAULT CHARSET=utf8");
- execSQL("CREATE PROCEDURE spTest (IN pp INTEGER) " +
- "select * from test where id > pp ");
+ /// <summary>
+ /// Bug #17046 Null pointer access when stored procedure is used
+ /// </summary>
+ [Test]
+ public void PreparedReader()
+ {
+ execSQL("DROP TABLE IF EXISTS test");
+ execSQL("CREATE TABLE test (id int(10) unsigned NOT NULL default '0', " +
+ "val int(10) unsigned default NULL, PRIMARY KEY (id)) " +
+ "ENGINE=InnoDB DEFAULT CHARSET=utf8");
+ execSQL("CREATE PROCEDURE spTest (IN pp INTEGER) " +
+ "select * from test where id > pp ");
- MySqlCommand c = new MySqlCommand("spTest", conn);
- c.CommandType = CommandType.StoredProcedure;
- IDataParameter p = c.CreateParameter();
- p.ParameterName = "?pp";
- p.Value = 10;
- c.Parameters.Add(p);
- c.Prepare();
- MySqlDataReader reader = null;
- try
- {
- reader = c.ExecuteReader();
- while (reader.Read())
- {
+ MySqlCommand c = new MySqlCommand("spTest", conn);
+ c.CommandType = CommandType.StoredProcedure;
+ IDataParameter p = c.CreateParameter();
+ p.ParameterName = "?pp";
+ p.Value = 10;
+ c.Parameters.Add(p);
+ c.Prepare();
+ MySqlDataReader reader = null;
+ try
+ {
+ reader = c.ExecuteReader();
+ while (reader.Read())
+ {
- }
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- finally
- {
- if (reader != null)
- reader.Close();
- }
- }
+ }
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ finally
+ {
+ if (reader != null)
+ reader.Close();
+ }
+ }
- [Test]
- public void UnsignedOutputParameters()
- {
- execSQL("DROP TABLE IF EXISTS test");
- execSQL("CREATE TABLE test (id INT(10) UNSIGNED AUTO_INCREMENT, PRIMARY KEY (id)) ");
- execSQL("CREATE PROCEDURE spTest (OUT id BIGINT UNSIGNED) " +
- "BEGIN INSERT INTO test VALUES (NULL); SET id=LAST_INSERT_ID(); END");
+ [Test]
+ public void UnsignedOutputParameters()
+ {
+ execSQL("DROP TABLE IF EXISTS test");
+ execSQL("CREATE TABLE test (id INT(10) UNSIGNED AUTO_INCREMENT, PRIMARY KEY (id)) ");
+ execSQL("CREATE PROCEDURE spTest (OUT id BIGINT UNSIGNED) " +
+ "BEGIN INSERT INTO test VALUES (NULL); SET id=LAST_INSERT_ID(); END");
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?id", MySqlDbType.UInt64);
- cmd.Parameters[0].Direction = ParameterDirection.Output;
- cmd.ExecuteNonQuery();
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?id", MySqlDbType.UInt64);
+ cmd.Parameters[0].Direction = ParameterDirection.Output;
+ cmd.ExecuteNonQuery();
- object o = cmd.Parameters[0].Value;
- Assert.IsTrue(o is ulong);
- Assert.AreEqual(1, o);
- }
+ object o = cmd.Parameters[0].Value;
+ Assert.IsTrue(o is ulong);
+ Assert.AreEqual(1, o);
+ }
- /// <summary>
- /// Bug #22452 MySql.Data.MySqlClient.MySqlException:
- /// </summary>
- [Test]
- public void TurkishStoredProcs()
- {
- execSQL("CREATE PROCEDURE spTest(IN p_paramname INT) BEGIN SELECT p_paramname; END");
- CultureInfo uiCulture = Thread.CurrentThread.CurrentUICulture;
- CultureInfo culture = Thread.CurrentThread.CurrentCulture;
- Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
- Thread.CurrentThread.CurrentUICulture = new CultureInfo("tr-TR");
+ /// <summary>
+ /// Bug #22452 MySql.Data.MySqlClient.MySqlException:
+ /// </summary>
+ [Test]
+ public void TurkishStoredProcs()
+ {
+ execSQL("CREATE PROCEDURE spTest(IN p_paramname INT) BEGIN SELECT p_paramname; END");
+ CultureInfo uiCulture = Thread.CurrentThread.CurrentUICulture;
+ CultureInfo culture = Thread.CurrentThread.CurrentCulture;
+ Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
+ Thread.CurrentThread.CurrentUICulture = new CultureInfo("tr-TR");
- try
- {
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.Parameters.Add("?p_paramname", 2);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.ExecuteScalar();
- }
- catch (Exception ex)
- {
- Assert.Fail(ex.Message);
- }
- finally
- {
- Thread.CurrentThread.CurrentCulture = culture;
- Thread.CurrentThread.CurrentUICulture = uiCulture;
- }
- }
+ try
+ {
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.Parameters.Add("?p_paramname", 2);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.ExecuteScalar();
+ }
+ catch (Exception ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ finally
+ {
+ Thread.CurrentThread.CurrentCulture = culture;
+ Thread.CurrentThread.CurrentUICulture = uiCulture;
+ }
+ }
- /// <summary>
- /// Bug #23268 System.FormatException when invoking procedure with ENUM input parameter
- /// </summary>
- [Test]
- public void ProcEnumParamTest()
- {
- execSQL("DROP TABLE IF EXISTS test");
- execSQL("CREATE TABLE test(str VARCHAR(50), e ENUM ('P','R','F','E'), i INT(6))");
- execSQL("CREATE PROCEDURE spTest(IN p_enum ENUM('P','R','F','E')) BEGIN " +
- "INSERT INTO test (str, e, i) VALUES (null, p_enum, 55); END");
+ /// <summary>
+ /// Bug #23268 System.FormatException when invoking procedure with ENUM input parameter
+ /// </summary>
+ [Test]
+ public void ProcEnumParamTest()
+ {
+ execSQL("DROP TABLE IF EXISTS test");
+ execSQL("CREATE TABLE test(str VARCHAR(50), e ENUM ('P','R','F','E'), i INT(6))");
+ execSQL("CREATE PROCEDURE spTest(IN p_enum ENUM('P','R','F','E')) BEGIN " +
+ "INSERT INTO test (str, e, i) VALUES (null, p_enum, 55); END");
- try
- {
- MySqlCommand cmd = new MySqlCommand("spTest", conn);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.Add("?p_enum", "P");
- cmd.Parameters["?p_enum"].Direction = ParameterDirection.Input;
- using (MySqlDataReader reader = cmd.ExecuteReader())
- {
- }
- cmd.CommandText = "SELECT e FROM test";
- cmd.CommandType = CommandType.Text;
- using (MySqlDataReader reader = cmd.ExecuteReader())
- {
- reader.Read();
- Assert.AreEqual("P", reader.GetString(0));
- }
- }
- catch (MySqlException ex)
- {
- Assert.Fail(ex.Message);
- }
- }
- }
+ try
+ {
+ MySqlCommand cmd = new MySqlCommand("spTest", conn);
+ cmd.CommandType = CommandType.StoredProcedure;
+ cmd.Parameters.Add("?p_enum", "P");
+ cmd.Parameters["?p_enum"].Direction = ParameterDirection.Input;
+ using (MySqlDataReader reader = cmd.ExecuteReader())
+ {
+ }
+ cmd.CommandText = "SELECT e FROM test";
+ cmd.CommandType = CommandType.Text;
+ using (MySqlDataReader reader = cmd.ExecuteReader())
+ {
+ reader.Read();
+ Assert.AreEqual("P", reader.GetString(0));
+ }
+ }
+ catch (MySqlException ex)
+ {
+ Assert.Fail(ex.Message);
+ }
+ }
+ }
}
| Thread |
|---|
| • Connector/NET commit: r531 - in branches/1.0: . TestSuite | rburnett | 5 Jan |