You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-cs@ibatis.apache.org by "David Marzo (Puzzlet)" <da...@puzzlet.net> on 2005/09/16 13:13:35 UTC

Minor Bug in SqlMapper.GetCacheDataStats()

IBatisNet.DataMapper.SqlMapper

public string GetDataCacheStats() 
{
	StringBuilder buffer = new StringBuilder("\nCache Data
Statistiques");
	buffer.Append("\n=======================\n");
	IDictionaryEnumerator enumerator =
_mappedStatements.GetEnumerator();
	while (enumerator.MoveNext()) 
	{
		MappedStatement statement = (MappedStatement)
enumerator.Value;
				buffer.Append(statement.Name);
				buffer.Append(": ");
				double hitRatio =
statement.GetDataCacheHitRatio();
				if (hitRatio != -1) 
				{
	
buffer.Append(Math.Round(hitRatio * 100));
					buffer.Append("%");
				} 
				else 
				{
					buffer.Append("No Cache.");
				}
				buffer.Append("\n");
			}
			return buffer.ToString();
	}
}

InvalidCastException at ln 1340. 

MappedStatement statement = (MappedStatement) enumerator.Value;

I debug and surprising the statement cached is an object of
CachingStatement that no inherits from MappedStatement.




Re: Minor Bug in SqlMapper.GetCacheDataStats()

Posted by Ron Grabowski <ro...@yahoo.com>.
I think we need to move GetDataCacheHitRatio from MappedStatement into
CachingStatement and make this change to GetDataCacheStats:

 IDictionaryEnumerator enumerator = _mappedStatements.GetEnumerator();
 while (enumerator.MoveNext()) 
 {
  IMappedStatement statement = (IMappedStatement)enumerator.Value;
  if (statement is CachingStatement)
  {
   // snip
  }
  else
  {
   buffer.Append("No Cache.");
  }
  buffer.Append(Environment.NewLine);
 }

I'll run a test on that code this weekend.

--- "David Marzo (Puzzlet)" <da...@puzzlet.net> wrote:

> IBatisNet.DataMapper.SqlMapper
> 
> public string GetDataCacheStats() 
> {
> 	StringBuilder buffer = new StringBuilder("\nCache Data
> Statistiques");
> 	buffer.Append("\n=======================\n");
> 	IDictionaryEnumerator enumerator =
> _mappedStatements.GetEnumerator();
> 	while (enumerator.MoveNext()) 
> 	{
> 		MappedStatement statement = (MappedStatement)
> enumerator.Value;
> 				buffer.Append(statement.Name);
> 				buffer.Append(": ");
> 				double hitRatio =
> statement.GetDataCacheHitRatio();
> 				if (hitRatio != -1) 
> 				{
> 	
> buffer.Append(Math.Round(hitRatio * 100));
> 					buffer.Append("%");
> 				} 
> 				else 
> 				{
> 					buffer.Append("No Cache.");
> 				}
> 				buffer.Append("\n");
> 			}
> 			return buffer.ToString();
> 	}
> }
> 
> InvalidCastException at ln 1340. 
> 
> MappedStatement statement = (MappedStatement) enumerator.Value;
> 
> I debug and surprising the statement cached is an object of
> CachingStatement that no inherits from MappedStatement.