2.3.1 - March 25th 2018
- Handle parsing of invalid configuration files without endlessly looping.
- Test against mysql2 0.5.
- Test against Sphinx 3.0.

2.3.0 - January 14th 2018
- Add controller method for merging indices.
- Add support for sockets in searchd configuration.
- Fix handling of command errors when executed via backticks (verbose).

2.2.2 - December 2nd 2017
- Fix frozen string concatenation for searchd/indexer commands.

2.2.1 - December 2nd 2017
- Check if Mysql2::Client is defined before using it (not just Mysql2).

2.2.0 - June 20th 2017
- Add compatibility for MRI's frozen string literals setting.
- Stop packaging test files with gem releases (@dimko).

2.1.0 - January 5th 2017
- Wrap string attribute filter values in single quotes.
- Remove direct references to FixNum to avoid MRI 2.4 warnings.
- Remove escaped line-endings while parsing.
- Escape word-operators like MAYBE, NEAR etc (Jonathan del Strother)

2.0.0 - September 25th 2016
- Start and stop commands now accept a verbose option.
- Failed commands (as determined by a non-zero status code) raise a Riddle::CommandFailedError exception.
- A missing configuration file when running the start and stop commands now raises a Riddle::NoConfigurationFileError instance instead of a generic RuntimeError instance.
- Riddle::Controller now returns Riddle::CommandResult instances for indexing, start and stop commands, which includes status code and (non-verbose) output.
- Handle group_concat attribute types (@crazyshot, @bibendi).
- Additional searchd settings: query_log_min_msec, agent_conect_timeout, agent_query_timeout, agent_retry_count, agent_retry_delay.
- Default to 2.1.0 or newer support.
- Move plugin_dir option from searchd to common.

1.5.12 - June 1st 2015
- Adding ? as an escaped character (Alexey Nikitin).
- Adding contributor code of conduct.
- Spec fixes, and updating escape_column to not escape JSON expressions that make use of dot or bracket notation (Daniel Vandersluis).
- Fix stop action to allow exception propagation (Dejan Simic).

1.5.11 - April 19th 2014
- Riddle::Query.escape covers = and & characters.
- Hold onto address and port settings when crafting the equivalent listen setting, but don't render them.
- Allow for Sphinx's common settings section (Trevor Smith). Optional and initially disabled.
- Allow for multiple attributes in GROUP BY clauses (J. Garcia).
- Riddle::Query.escape covers < and > characters.
- The parser should not presume indexer and searchd sections exist.

1.5.10 - January 11th 2014
- SELECT values can be prepended as well as the existing append support.
- New settings for Sphinx 2.2.1.
- Template index type for Sphinx 2.2.1.
- TSV source types for Sphinx 2.2.1.
- Support for HAVING, GROUP-n-BEST in SELECT statements.
- Dates in filters are converted to (UTC) timestamp integers.
- Default to * in SELECT queries only if nothing else is supplied.
- Fix licence, URL in gemspec (Ken Dreyer).
- Handle empty arrays for filter elegantly (Bryan Ricker).
- Add a contributing section to the README (Ken Dreyer).
- Don't automatically escape function references in SphinxQL ORDER clauses.

1.5.9 - October 20th 2013
- Adding all known Sphinx settings to configuration classes as of Sphinx 2.1.2, including JSON settings.
- Convert date objects in INSERT/REPLACE queries to timestamps, just like time objects.
- Don't escape references to id in SphinxQL INSERT/REPLACE queries.

1.5.8 - August 26th 2013
- Reworked escaping to be consistent and always query-safe (Demian Ferreiro).
- Escape column names in SphinxQL WHERE, INSERT, ORDER BY and GROUP BY clauses and statements (Jason Rust).

1.5.7 - July 9th 2013
- Respect Riddle::OutOfBoundsError instances, instead of wrapping them in ResponseError.
- Handle boolean values for snippets options.
- Don't modify snippets parameters (Demian Ferreiro).
- rt_attr_multi and rt_attr_multi_64 settings for real-time indices.
- Arrays in INSERT/REPLACE statements are wrapped in parentheses with values separated by commas. Required for MVA values in real-time indices.
- Clear out the query queue before running a single query.

1.5.6 - May 7th 2013
- Wrap underlying parse errors within Riddle::ResponseError instances when parsing responses.
- Add lemmatization options (Kirill Lazarev).
- Ignore configuration lines that are only comments when parsing configurations.
- Construct GROUP ORDER and ORDER in SphinxQL in the correct order (Grzegorz Derebecki).

1.5.5 - February 23rd 2013
- Added Riddle::Query.escape for SphinxQL queries.
- Fixed failover handling (Ngan Pham).
- Improved encoding default check (Darcy Brown).
- Removing REE support (as it is no longer supported either).
- Client key is used for binary protocol persistent connections (if set).
- Escaping single quotes in SphinxQL snippets calls.
- Regex fix for matching {'s (Rob Golkosky).

1.5.4 - January 2nd 2013
- RT indices get most of the same settings as SQL indices.
- Escape single quotes in SphinxQL match queries, given we're wrapping them in single quotes.
- Remove unnecessary characters from string values for SphinxQL inserts.
- Convert time objects to integers for SphinxQL inserts.
- Include 'orphan' sources (which aren't used directly by indices, but could be parents of sources that are used) when generating configuration files.
- Use parent source type if child source has no type supplied.
- Ignore comments when parsing Sphinx configuration files.

1.5.3 - August 10th 2012
- Sphinx 2.0.5 support.
- :with_all and :without_all support for SphinxQL.
- Allow setting of prefix and infix fields directly.
- Configuration parser
- Adding rotate command to the controller.

1.5.2 - May 14th 2012
- Fixing 64-bit MVA support.
- Grouped searches now sort by weight instead of by group as a default. You can change this setting via Riddle::Client#group_clause.
- Use a local array of servers - don't clear the main set (S. Christoffer Eliesen).
- Fixing VersionError reference for Sphinx 0.9.9 or better (S. Christoffer Eliesen).
- Consistent documentation for default port: 9312 (Aleksey Morozov).
- Sphinx 2.0.4 support (Ilia Lobsanov).
- Handle single-value float filters (by translating them to a range) (Steven Bristol).
- Sphinx 2.0.2-dev handled as Sphinx 2.0.1.
- Sphinx 2.0.3 support.
- String options handled appropriately for SphinxQL excerpts calls.

1.5.1 - January 2nd 2012
- If no known servers work, raise an appropriate error.
- Sphinx 2.1.0-dev support.

1.5.0 - November 4th 2011
- Handle exclusive filters in SphinxQL SELECT commands.
- Allow for native Ruby objects in SphinxQL UPDATE commands.
- Handle options of hashes in SphinxQL SELECT commands.
- Allow for SphinxQL select clauses.
- Improving SphinxQL filter handling of native Ruby objects.
- Switch plural index references from indexes to indices, to distinguish beside indexes (the action).
- Rescue against timeouts and connection resets.
- Fixing reference to TCPSocket.
- Handle port numbers as integers for listen setting (Ngan Pham).
- Provide the option to start searchd with the nodetach flag (Aaron Gilbralter).
- Don't shuffle servers (if there's more than one) - let developers (or Thinking Sphinx) manage that (Ngan Pham).

1.4.0 - August 2nd 2011
- Checking against both Windows platforms for Ruby (Paul Gibler)
- Encoding improvements (Alexey Artamonov)
- More Rubyish syntax (James Cook)
- Handling Ruby encodings (James Cook)
- Coreseek support (saberma)
- Section restructure for better inheritance (Alexey Artamonov)
- MySQL41 connection support
- requiring 'thread' for Mutex use

1.3.3 - May 25th 2011
- Using MySQL2 library for SphinxQL interface
- Adding Sphinx 2.0.x settings
- SphinxQL support
- Speed improvements for hash lookups (Enrico Thierbach)
- Handle race conditions of segfaults while returning responses (Jason Lambert)
- 2.0.x support

1.3.2 - May 12th 2011
- client_key support

1.3.1 - May 9th 2011
- Don't output warnings or exit when version isn't detected - presume Thinking Sphinx will handle that.
- Confirm configuration file exists before attempting to start/stop Sphinx.
- Use a Mutex instead of the current Thread.

1.3.0 - May 7th 2011
- Attempts at untested 2.0.x and client_key support
- Using Bundler, MySQL2 and Ruby 1.9.2 in development
- Allow for Sphinx versions compiled from source and SVN (Greg Weber)

1.2.2 - December 22nd 2011