def self.new_from_mysql(error)
case error.message
when /parse error/, /query is non-computable/
replacement = ThinkingSphinx::ParseError.new(error.message)
when /syntax error/
replacement = ThinkingSphinx::SyntaxError.new(error.message)
when /query error/
replacement = ThinkingSphinx::QueryError.new(error.message)
when /Can't connect to MySQL server/,
/Communications link failure/,
/Lost connection to MySQL server/
replacement = ThinkingSphinx::ConnectionError.new(
"Error connecting to Sphinx via the MySQL protocol. #{error.message}"
)
when /offset out of bounds/
replacement = ThinkingSphinx::OutOfBoundsError.new(error.message)
else
replacement = new(error.message)
end
replacement.set_backtrace error.backtrace
replacement.statement = error.statement if error.respond_to?(:statement)
replacement
end