Hi, Could you create a testcase which doesn't depend on System.Data+Oracle etc ?
Zoltan On 10/3/05, Hubert FONGARNAND <[EMAIL PROTECTED]> wrote: > Hello, > I've seen that your have commited an optimization in exception handling in > mini... Fri Sept 30... > I've found a very very nasty bug... > > Try this test case : > > // project created on 03/10/2005 at 11:30 > using System; > using System.Data; > using System.Data.OracleClient; > > > class MainClass > { > > > > private static void CreateDummy() > { > IDbConnection sqlCon = new OracleConnection("user id=hubert;data > source=10.69.100.181:1521/ORALINUX;password=cosmic"); > IDbCommand command = sqlCon.CreateCommand(); > command.Connection = sqlCon; > sqlCon.Open(); > command.CommandText = > @" DROP TABLE INTRA_LANGUE CASCADE CONSTRAINTS"; > try{ > command.ExecuteNonQuery(); > }catch(Exception e) > {} > command.CommandText = > @" CREATE TABLE INTRA_LANGUE (LANGUE_CODE VARCHAR2(40) NOT NULL,LANGUE > VARCHAR2(100), CONSTRAINT PK_INTRA_LANGUE PRIMARY KEY (LANGUE_CODE))"; > command.ExecuteNonQuery(); > sqlCon.Close(); > } > > public void checkexception(Exception e, IDbCommand command, string stack) > { > //Console.WriteLine(e.GetType().ToString()); > try > { > throw e; > } > catch (OracleException ee) > { > Console.WriteLine("OracleException :::"+ee.Message); > Console.WriteLine("Command text :"+command.CommandText); > foreach (IDataParameter param in command.Parameters) > { > Console.WriteLine(param.ParameterName); > Console.WriteLine(param.Value.ToString()); > } > > } > } > > public void Test() > { > IDbCommand command=new OracleCommand(); > try > { > NSUniDataAccess.UniDataAccess.SetDb("Oracle"); > IDbConnection sqlCon = > NSUniDataAccess.UniDataAccess.GetConnection("user > id=hubert;data > source=10.69.100.181:1521/ORALINUX;password=cosmic"); > command = sqlCon.CreateCommand(); > command.Connection = sqlCon; > sqlCon.Open(); > OracleParameter p1 = new OracleParameter("param1",OracleType.VarChar); > p1.Value = "en"; > OracleParameter p2 = new OracleParameter("param2",OracleType.VarChar); > p2.Value = "english"; > command.Parameters.Add(p1); > command.Parameters.Add(p2); > command.CommandText = > @" INSERT INTO INTRA_LANGUE (LANGUE_CODE,LANGUE) > VALUES(:param1,:param2)"; > command.ExecuteNonQuery(); > command.CommandText = > @" INSERT INTO INTRA_LANGUE (LANGUE_CODE,LANGUE) > VALUES(:param1,:param2)"; > // Should throw a Unique constraint exception... > command.ExecuteNonQuery(); > sqlCon.Close(); > } > catch(Exception e) > { > Console.WriteLine("oops : execption"); > checkexception(e,command,e.StackTrace); > } > return; > } > public static void Main(string[] args) > { > CreateDummy(); > Console.WriteLine("Hello World!"); > MainClass monprog=new MainClass(); > monprog.Test(); > } > } > > With the last svn revision : i got as a result of this program: > > Hello World! > oops : execption > OracleException :::ORA-00001: unique constraint (HUBERT.PK_INTRA_LANGUE) > violated > > Command text : INSERT INTO INTRA_LANGUE (LANGUE_CODE,LANGUE) > VALUES(:param1,:param2) > param1 > en > > Unhandled Exception: System.NullReferenceException: Object reference not > set to an instance of an object > in [0x0006b] (at > /home/hubert/Projects/ExceptionBug/Main.cs:47) > MainClass:checkexception (System.Exception e, IDbCommand command, > System.String stack) > in [0x000bf] (at > /home/hubert/Projects/ExceptionBug/Main.cs:79) > MainClass:Test () > in [0x00016] (at > /home/hubert/Projects/ExceptionBug/Main.cs:88) > MainClass:Main (System.String[] args) > > If I revert your changes : I get : > Hello World! > oops : execption > System.Data.OracleClient.OracleException > OracleException :::ORA-00001: unique constraint (HUBERT.PK_INTRA_LANGUE) > violated > > Command text : INSERT INTO INTRA_LANGUE (LANGUE_CODE,LANGUE) > VALUES(:param1,:param2) > param1 > en > param2 > english > > > I dont't know exactly what's the underlying problem, but I know that this > regression is caused by your commit... > > Thanks... _______________________________________________ > Ce message et les �ventuels documents joints peuvent contenir des > informations confidentielles. > Au cas o� il ne vous serait pas destin�, nous vous remercions de bien > vouloir le supprimer et en aviser imm�diatement l'exp�diteur. Toute > utilisation de ce message non conforme � sa destination, toute diffusion ou > publication, totale ou partielle et quel qu'en soit le moyen est > formellement interdite. > Les communications sur internet n'�tant pas s�curis�es, l'int�grit� de ce > message n'est pas assur�e et la soci�t� �mettrice ne peut �tre tenue pour > responsable de son contenu. > _______________________________________________ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list > > >
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list