Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=81306 --- shadow/81306 2007-04-03 22:04:43.000000000 -0400 +++ shadow/81306.tmp.24208 2007-04-03 22:04:43.000000000 -0400 @@ -0,0 +1,197 @@ +Bug#: 81306 +Product: Mono: Class Libraries +Version: 1.2 +OS: Solaris [Other] +OS Details: Solaris SPARC 9 +Status: NEW +Resolution: +Severity: +Priority: Normal +Component: CORLIB +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: UTF8Encoding.InternalGetCharCount fails during OdbcCommand.ExecuteReader with Informix + +Description of Problem: +An ArgumentOutOfRangeException is thrown within the +UTF8Encoding.InternalGetCharCount function, during an +OdbcCommand.ExecuteReader call using the Informix ODBC drivers and unixODBC +layer. + +Steps to reproduce the problem: +1. +2. +3. + +Actual Results: +SQL: SELECT ascii FROM ascii2chr WHERE chr='A' + +GLib: Cannot convert message: Conversion from character set 'UTF-8' to +'646' is not supported + +Unhandled Exception: System.ArgumentOutOfRangeException: ArgRange_Array +Parameter name: count + at System.Text.UTF8Encoding.InternalGetCharCount (System.Byte[] bytes, +Int32 index, Int32 count, UInt32 leftOverBits, UInt32 leftOverCount, +System.Object provider, System.Text.DecoderFallbackBuffer& fallbackBuffer, +System.Byte[]& bufferArg, Boolean flush) [0x00000] + at System.Text.UTF8Encoding.GetCharCount (System.Byte[] bytes, Int32 +index, Int32 count) [0x00000] + at System.Text.Encoding.GetChars (System.Byte[] bytes, Int32 index, Int32 +count) [0x00000] + at System.Text.Encoding.GetString (System.Byte[] bytes, Int32 index, +Int32 count) [0x00000] + at System.Text.UTF8Encoding.GetString (System.Byte[] bytes, Int32 index, +Int32 count) [0x00000] + at System.Data.Odbc.OdbcDataReader.GetColumnAttributeStr (Int32 column, +FieldIdentifier fieldId) [0x00000] + at System.Data.Odbc.OdbcDataReader.GetSchemaTable () [0x00000] + at System.Data.Odbc.OdbcDataReader..ctor (System.Data.Odbc.OdbcCommand +command, CommandBehavior behavior) [0x00000] + at System.Data.Odbc.OdbcDataReader..ctor (System.Data.Odbc.OdbcCommand +command, CommandBehavior behavior, Int32 recordAffected) [0x00000] + at (wrapper remoting-invoke-with-check) +System.Data.Odbc.OdbcDataReader:.ctor +(System.Data.Odbc.OdbcCommand,System.Data.CommandBehavior,int) + at System.Data.Odbc.OdbcCommand.ExecuteReader (CommandBehavior behavior) +[0x00000] + at System.Data.Odbc.OdbcCommand.ExecuteDbDataReader (CommandBehavior +behavior) [0x00000] + at System.Data.Common.DbCommand.ExecuteReader () [0x00000] + at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader () +[0x00000] + at Test.Main (System.String[] args) [0x00000] + +Expected Results: +SQL: SELECT ascii FROM ascii2chr WHERE chr='A' +Value: 65 + +How often does this happen? +Always + +Additional Information: + +Sample App: + using System; + using System.Data; + using System.Data.Odbc; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Dsn=abc;" + + "Uid=xxx;" + + "Pwd=yyy"; + OdbcConnection dbcon; + dbcon = new OdbcConnection(connectionString); + dbcon.Open(); + + string sql + = "SELECT ascii" + + " FROM ascii2chr" + + " WHERE chr='A'" + ; + Console.WriteLine("SQL: " + sql + "\n"); + + IDbCommand dbcmd = dbcon.CreateCommand(); + dbcmd.CommandText = sql; + +//This line fails + IDataReader reader = dbcmd.ExecuteReader(); + + while(reader.Read()) { + object value = reader[0]; + Console.WriteLine("Value: " + + value); + } + reader.Close(); + reader = null; + dbcmd.Dispose(); + dbcmd = null; + dbcon.Close(); + dbcon = null; + } + } + +---------------------- +Schema for table: +create table ascii2chr + ( + ascii smallint, + chr char(1), + primary key (ascii) + ); +create unique index a2c_i1 on ascii2chr (chr); + +---------------------- +Data: +256 records, containing values 0-255 in the ascii column, and chr$(0-255) +in the chr column. + +---------------------- +odbc.ini: (and odbcinst.ini which is a link to odbc.ini) +$ cat /usr/local/etc/odbc.ini +[ODBC] +;See +http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.odbc.doc/odbcmst67.htm +UNICODE=UCS-4 +;UNICODE=UTF-8 +Trace=0 +TraceFile=/tmp/odbctrace.out +TraceDll=/apps/informix.odbc/lib/cli/odbctrac.so +;InstallDir=/usr/local + +[ODBC Data Sources] +b5dev=IBM Informix ODBC Driver + +[b5dev] +Driver=IBM Informix ODBC Driver +Description=IBM Informix ODBC Driver +Database=baan5 +ServerName=b5dev +; +CLIENT_LOCALE=en_us.8859-1 +DB_LOCALE=en_us.8859-1 +TRANSLATIONDLL=/apps/informix.odbc/lib/esql/igo4a304.so +; +;LogonID=x +;pwd=x +; +CURSORBEHAVIOR=0 +;DefaultUDTFetchType=SQL_C_BINARY +;ENABLESCROLLABLECURSORS=1 +;ENABLEINSERTCURSORS=0 +;OPTIMIZEAUTOCOMMIT=1 +NEEDODBCTYPESONLY=1 +OPTOFC=1 +;REPORTKEYSETCURSORS=1 +FETCHBUFFERSIZE=32767 +DESCRIBEDECIMALFLOATPOINT=1 +USESERVERDBLOCALE=1 +;DONOTUSELVARCHAR=1 +;REPORTCHARCOLASWIDECHARCOL=0 + +[ODBC Drivers] +IBM Informix ODBC Driver=Installed +;FileUsage=0 + +[IBM Informix ODBC Driver] +Driver=/apps/informix.odbc/lib/cli/iclis09b.so +;Setup=/apps/informix.odbc/lib/cli/iclis09b.so +ConnectFunctions=YYY +DriverODBCVer=03.51 +;FileUsage=0 +APILevel=1 +SQLLevel=1 +smProcessPerConnect=Y + +Using: +informix clientsdk.2.90.UC1.SOL +unixodbc-2.1.1 or unixODBC-2.2.13pre +mono-1.2.3.1_0.sunos8.novell.sparc.pkg _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
