Version 0.9.9-rc2, 08 apr 2009
- added IsConnectError(), Open(), Close() calls to Java API (bug #240)
- added read_buffer, read_unhinted directives
- added checks for build options returned by mysql_config (builds on Solaris now)
- added fixed-RAM index merge (bug #169)
- added logging chained queries count in case of (optimized) multi-queries
- added GEODIST() function
- added --status switch to searchd
- added MySpell (OpenOffice) affix file support (bug #281)
- added ODBC support (both Windows and UnixODBC)
- added support for @id in IN() (bug #292)
- added support for aggregate functions in GROUP BY (namely AVG, MAX, MIN, SUM)
- added MySQL UDF that builds snippets using searchd
- added write_buffer directive (defaults to 1M)
- added xmlpipe_fixup_utf8 directive
- added suggestions sample
- added microsecond precision int64 timer (bug #282)
- added listen_backlog directive
- added max_xmlpipe2_field directive
- added initial SphinxQL support to mysql41 handler, SELECT .../SHOW WARNINGS/STATUS/META are handled
- added support for different network protocols, and mysql41 protocol
- added fieldmask ranker, updated SphinxSE list of rankers
- added mysql_ssl_xxx directives
- added --cpustats (requires clock_gettime()) and --status switches to searchd
- added performance counters, Status() API call
- added overshort_step and stopword_step directives
- added strict order operator (aka operator before, eg. “one << two << three”)
- added indextool utility, moved --dumpheader there, added --debugdocids, --dumphitlist options
- added own RNG, reseeded on @random sort query (bug #183)
- added field-start and field-end modifiers support (syntax is “^hello world$”; field-end requires reindex)
- added MVA attribute support to IN() function
- added AND, OR, and NOT support to expressions
- improved logging of (optimized) multi-queries (now logging chained query count)
- improved handshake error handling, fixed protocol version byte order (omg)
- updated SphinxSE to protocol 1.22
- allowed phrase_boundary_step=-1 (trick to emulate keyword expansion)
- removed SPH_MAX_QUERY_WORDS limit
- fixed CLI search vs documents missing from DB (bug #257)
- fixed libsphinxclient results leak on subsequent sphinx_run_queries call (bug #256)
- fixed libsphinxclient handling of zero max_matches and cutoff (bug #208)
- fixed Java API over-64K string reads (eg. big snippets) in Java API (bug #181)
- fixed Java API 2nd Query() after network error in 1st Query() call (bug #308)
- fixed typo-class bugs in SetFilterFloatRange (bug #259), SetSortMode (bug #248)
- fixed missing @@relaxed support (bug #276), fixed missing error on @nosuchfield queries, documented @@relaxed
- fixed UNIX socket permissions to 0777 (bug #288)
- fixed xmlpipe2 crash on schemas with no fields, added better document structure checks
- fixed (and optimized) expr parser vs IN() with huge (10K+) args count
- fixed double EarlyCalc() in fullscan mode (minor performance impact)
- fixed phrase boundary handling in some cases (on buffer end, on trailing whitespace)
- fixes in snippets (aka excerpts) generation
- fixed inline attrs vs id64 index corruption
- fixed head searchd crash on config re-parse failure
- fixed handling of numeric keywords with leading zeroes such as “007” (bug #251)
- fixed junk in SphinxSE status variables (bug #304)
- fixed wordlist checkpoints serialization (bug #236)
- fixed unaligned docinfo id access (bug #230)
- fixed GetRawBytes() vs oversized blocks (headers with over 32K charset_table should now work, bug #300)
- fixed buffer overflow caused by too long dest wordform, updated tests
- fixed IF() return type (was always int, is deduced now)
- fixed legacy queries vs. special chars vs. multiple indexes
- fixed write-write-read socket access pattern vs Nagle vs delays vs FreeBSD (oh wow)
- fixed exceptions vs query-parser issue
- fixed late calc vs @weight in expressions (bug #285)
- fixed early lookup/calc vs filters (bug #284)
- fixed emulated MATCH_ANY queries (empty proximity and phrase queries are allowed now)
- fixed MATCH_ANY ranker vs fields with no matches
- fixed index file size vs inplace_enable (bug #245)
- fixed that old logs were not closed on USR1 (bug #221)
- fixed handling of '!' alias to NOT operator (bug #237)
- fixed error handling vs query steps (step failure was not reported)
- fixed querying vs inline attributes
- fixed stupid bug in escaping code, fixed EscapeString() and made it static
- fixed parser vs @field -keyword, foo|@field bar, “” queries (bug #310)
