[Mono-list] How do you debug?

Miguel de Icaza miguel@ximian.com
04 Jul 2003 18:06:02 -0400


Hello, 

> Ok, it definitely looks like Mono being a little naughty but it's a simple 
> fix.
> 
> The offending code is:
> 
> uniqueId = reader.GetInt32(reader.GetOrdinal("RealContentItemId"));
> 
> 
> and the fix is:
> 
> uniqueId = reader.GetOrdinal("RealContentItemId");
> 
> It seems that GetOrdinal is returning an Int32 and we then try to convert to a 
> (wait for it) Int32. Mono should just ignore this code but it doesn't. 
> Actually, the programming team never should have written it like this, but 
> hey, Mono should handle this kind of stupidity.

Lets examine the problem a bit more, because I was as perplexed as you
were that a conversion from int to int would throw that exception.

What is happening here is that "reader.GetOrdinal
("RealContentItemId")" returns an integer.  

And here is the problem: the returned int is used as the ColumnValue
*key* whose value happens to be something different.

Am not a System.Data expert, but this is either a bug on the original
runtime, or there is a miss-conception in the
System.Data.SqlClient.GetValue code.

I added some extra information to the exception on CVS

Miguel