Revision history for Search-Query

0.01    12 Jan 2009
        First version, released on an unsuspecting world.

0.02    13 Jan 2009
        * add missing POD to Parser class
        * flesh out classes: add Field, Clause, plus
          walk() and add_*_clause() methods.

0.03    14 Jan 2009
        * fix bug in parser expansion of aliased fields.
        * add parser validation of fields.
        * fix skip test count in t/01-parser.t

0.04    19 Jan 2009
        * fix RT53772 by making DEFAULT constant into
          my %DEFAULT private var.

0.05    23 Jan 2009
        * added compatability for param names in new()
          for Search::QueryParser
        * add Search::Query::Dialect->add_sub_clause() method.

0.06    30 Jan 2009
        * add SQL Dialect and Field classes.

0.07    06 Feb 2010
        * add sqd program.
        * allow queries with no ANDs or ORs (just NOTs)
        * add SWISH Dialect and Field classes.
        * add range operator to parser: N..M
        * add more documentation.
        * add |, & and ! as synonyms for OR, AND and NOT in
          their respective default regex.

0.08    01 March 2010
        * clarify NOT regex comments to include !
        * SWISH dialect does not (as SQL dialect does)
          expand to all defined if fields if 'default_field' is not
          specified.
        * add translate_to() method to base Dialect class.

0.09    03 March 2010
        * fix bug in sqd where default_field was not also setting fields.
        * POD fixes.

0.10    14 March 2010
        * fix (NOT query) bug.
        * add range support to SQL dialect.

0.11    26 March 2010
        * add proximity support.

0.12    02 April 2010
        * fix bug with compound proximity queries.

0.13    10 April 2010
        * fix bug with stringification of SWISH dialect and compound negatives.
        * fix bug in Dialect->add_sub_clause()

0.14    30 April 2010
        * add !: operator support to Parser
        * fix Dialect->add_*_clause methods to properly add () around 
          the existing and new clauses, to get logical groupings correct.
        * add stringify() method to Clause
        * add clear_error() method to Parser
        * fix bug where expanded alias_for field array was not passing
          through quote or proximity values.

0.15    06 May 2010
        * add sanity check in Parser so that stringify() is tested. If a parsed
          query cannot be re-parsed after stringify() then the stringify() method
          is broken.

0.16    08 May 2010
        * fix uninitialized value warning in Clause->stringify

       
0.17    22 June 2010
        * add field=(a..b) regex case to Parser so that the Clause is not stored
          as a child of a () Clause.
        * simplify the preservation of () clauses.

0.18    25 July 2010
        * add Parser->term_expander feature
        * refactor Dialect->tree() and ->translate_to() methods to avoid dependency
          on Clone module. This also fixes a segfault when calling those methods
          on objects that contain blessed C pointers, like Search::Query::Dialect::KSx.

0.19    19 June 2011
        * fix case where croak_on_error was not respected (credit justatheory)
        * add 'sloppy' feature
        * add missing error() method for base Field class and document validate(). 
        * allow field_class in Parser->new() to override default in query_class.

0.20    16 May 2012
        * add 'field' to term_expander API, via https://rt.cpan.org/Ticket/Display.html?id=77243
          patch from dapatrick@cpan

0.21    23 June 2012
        * fix docs for default_field, add dialect_opts alias param

0.22    19 Feb 2013
        * add fixup() feature to Parser (idea from Clinton Gormley)
        * add null_term() feature to Parser


