# groonga - An open-source fulltext search engine and column store.

- 日本語

# News

## Release 7.0.6 - 2017-08-29

### Improvements

- Supported prefix match search using multiple indexes. (e.g. `--query "Foo*" --match_columns "TITLE_INDEX_COLUMN||BODY_INDEX_COLUMN"`).
- [window_count] Supported `window_count` function to add count data to result set. It is useful to analyze or filter additionally.
- Added the following API
  - `grn_obj_get_disk_usage():`
  - `GRN_EXPR_QUERY_NO_SYNTAX_ERROR`
  - `grn_expr_syntax_expand_query_by_table()`
  - `grn_table_find_reference_object()`
- [object_inspect] Supported to show disk usage about specified object.
- Supported falling back query parse feature. It is enabled when `QUERY_NO_SYNTAX_ERROR` flag is set to `query_flags`. (this feature is disabled by default). If this flag is set, query never causes syntax error. For example, "A +" is parsed and escaped automatically into "A +". This behavior is useful when application uses user input directly and doesn't want to show syntax error to user and in log.
- Supported to adjust score for term in query. ">", "<", and "~" operators are supported. For example, ">Groonga" increments score of "Groonga", "<Groonga" decrements score of "Groonga". "~Groonga" decreases score of matched document in the current search result. "~" operator doesn't change search result itself.
- Improved performance to remove table. `thread_limit=1` is not needed for it. The process about checking referenced table existence is done without opening objects. As a result, performance is improved.
- [httpd] Updated bundled nginx to 1.13.4.

### Fixes

- [dump] Fixed a bug that the 7-th unnamed parameter for --sort_hash_table option is ignored.
- [schema] Fixed a typo in command line parameter name. It should be source instead of sources. [groonga-dev,04449] [Reported by murata satoshi]
- [ruby_eval] Fixed crash when ruby_eval returned syntax error. [GitHub#751] [Patch by ryo-pinus]

### Thanks

- murata satoshi
- ryo-pinus

## Release 7.0.5 - 2017-07-29

### Improvements

- [httpd] Updated bundled nginx to 1.13.3. Note that this version contains security fix for CVE-2017-7529.
- [load] Supported to load the value of max UInt64. In the previous versions, max UInt64 value is converted into 0 unexpectedlly.
- Added the following API
  - `grn_window_get_size()` [GitHub#725] [Patch by Naoya Murakami]
- [math_abs] Supported `math_abs()` function to calculate absolute value. [GitHub#721]
- Supported to make `grn_default_logger_set_path()` and `grn_default_query_logger_set_path()` thread safe.
- [windows] Updated bundled pcre library to 8.41.
- [normalize] Improved not to output redundant empty string `""` on error. [GitHub#730]
- [functions/time] Supported to show error message when division by zero was happened. [GitHub#733] [Patch by Naoya Murakami]
- [windows] Changed to map `ERROR_NO_SYSTEM_RESOURCES` to `GRN_RESOURCE_TEMPORARILY_UNAVAILABLE`. In the previous versions, it returns `rc=-1` as a result code. It is not helpful to investigate what actually happened. With this fix, it returns `rc=-12`.
- [functions/min][functions/max] Supported vector column. Now you need not to care scalar column or vector column to use. [GitHub#735] [Patch by Naoya Murakami]
- [dump] Supported `--sort_hash_table` option to sort by `_key` for hash table. Specify `--sort_hash_table yes` to use it.
- [between] Supported to specify index column. [GitHub#740] [Patch by Naoya Murakami]
- [load] Supported Apache Arrow 0.5.0 or later.
- [エラーメッセージの解析方法] Added howto article to analyze error message in Groonga.
- [Debian GNU/Linux] Updated required package list to build from source.
- [Ubuntu] Dropped Ubuntu 16.10 (Yakkety Yak) support. It has reached EOL at July 20, 2017.

### Fixes

- Fixed to construct correct fulltext indexes against vector column which type belongs to text family (``ShortText` and so on). This fix resolves that fulltext search doesn't work well against text vector column after updating indexes. [GitHub#494]
- [thread_limit] Fixed a bug that deadlock occurs when thread_limit?max=1 is requested at once.
- [groonga-httpd] Fixed a mismatch path of pid file between default one and restart command assumed. This mismatch blocked restarting groonga-httpd. [GitHub#743] [Reported by sozaki]

### Thanks

- Naoya Murakami

## Release 7.0.4 - 2017-06-29

### Improvements

- Added physical create/delete operation logs to identify problem for troubleshooting. [GitHub#700,#701]
- [in_records] Improved performance for fixed sized column. It may reduce 50% execution time.
- [grndb] Added `--log-path` option. [GitHub#702,#703]
- [grndb] Added `--log-level` option. [GitHub#706,#708]
- Added the following API
  - `grn_operator_to_exec_func()`
  - `grn_obj_is_corrupt()`
- Improved performance for "FIXED_SIZE_COLUMN OP CONSTANT". Supported operators are: `==`, `!=`, `<`, `>`, `<=` and `>=`.
- Improved performance for "COLUMN OP VALUE && COLUMN OP VALUE && ...".
- [grndb] Supported corrupted object detection with `grndb check`.
- [io_flush] Supported `--only_opened` option which enables to flush only opened database objects.
- [grndb] Supported to detect/delete orphan "inspect" object. The orphaned "inspect" object is created by renamed command name from `inspect` to `object_inspect`.

### Fixes

- [rpm][centos] Fixed unexpected macro expansion problem with customized build. This bug only affects when rebuilding Groonga SRPM with customized `additional_configure_options` parameter in spec file.
- Fixed missing null check for `grn_table_setoperation()`. There is a possibility of crash bug when indexes are broken. [GitHub#699]

### Thanks

## Release 7.0.3 - 2017-05-29

### Improvements

- [select] Add document about Full text search with specific index name.
- [index] Supported to log warning message which record causes posting list overflows.
- [load][dump] Supported Apache Arrow. [GitHub#691]
- [cmake] Supported linking lz4 in embedded static library build. [Original patch by Sergei Golubchik]
- [delete] Supported to cancel.
- [httpd] Updated bundled nginx to 1.13.0
- Exported the following API
  - grn_plugin_proc_get_caller()
- Added index column related function and selector.
  - Added new selector: index_column_df_ratio_between()
  - Added new function: index_column_df_ratio()

### Fixes

- [delete] Fixed a bug that error isn't cleared correctly. It affects to following deletions so that it causes unexpected behavior.
- [windows] Fixed a bug that IO version is not detected correctly when the file is opened with `O_CREAT` flag.
- [vector_slice] Fixed a bug that non 4 bytes vector columns can't slice. [GitHub#695] [Patch by Naoya Murakami]
- Fixed a bug that non 4 bytes fixed vector column can't sequential match by specifying index of vector. [GitHub#696] [Patch by Naoya Murakami]
- [logical_select] Fixed a bug that "argument out of range" occurs when setting last day of month to the min. [GitHub#698]

### Thanks

- Sergei Golubchik
- Naoya Murakami

## Release 7.0.2 - 2017-04-29

### Improvements

- [logical_select] Supported multiple drilldowns[${LABEL}].columns[${NAME}].window.sort_keys and drilldowns[${LABEL}].columns[${NAME}].window.group_keys.
- [windows] Updated bundled LZ4 to 1.7.5.
- [cache] Supported persistent cache feature.
- [log_level] Update English documentation.
- Added the following APIs:
  - `grn_set_default_cache_base_path()`
  - `grn_get_default_cache_base_path()`
  - `grn_persistent_cache_open()`
  - `grn_cache_default_open()`
- [`groonga --cache-base-path`] Added a new option to use persistent cache.
- [groonga-httpd] [groonga_cache_base_path] Added new configuration to use persistent cache.
- [windows] Updated bundled msgpack to 2.1.1.
- [object_inspect] Supported not only column inspection, but also index column statistics.
- Supported index search for "`.*`" regexp pattern. This feature is enabled by default. Set `GRN_SCAN_INFO_REGEXP_DOT_ASTERISK_ENABLE=no` environment variable to disable this feature.
- [in_records] Added function to use an existing table as condition patterns.
- [Ubuntu] Dropped Ubuntu 12.04 (Precise Pangolin) support because of EOL.

### Fixes

- [logical_select] Fixed a bug that wrong cache is used. This bug was occurred when dynamic column parameter is used.
- [logical_select] Fixed a bug that dynamic columns aren't created. It's occurred when no match case.
- [reindex] Fixed a bug that data is lost by reindex. [GitHub#646]
- [httpd] Fixed a bug that response of quit and shutdown is broken JSON when worker is running as another user. [GitHub ranguba/groonga-client#12]

## Release 7.0.1 - 2017-03-29

### Improvements

- Exported the following API
  - grn_ii_cursor_next_pos()
  - grn_table_apply_expr()
  - grn_obj_is_data_column()
  - grn_obj_is_expr()
  - grn_obj_is_scalar_column()
- [dump] Supported to dump weight reference vector.
- [load] Supported to load `array<object>` style weight vector column. The example of `array<object>` style is: `[{"key1": weight1}, {"key2": weight2}]`.
- Supported to search `!(XXX OPERATOR VALUE)` by index. Supported operator is not only `>` but also `>=`, `<`, `<=`, `==` and `!=`.
- Supported index search for "!(column == CONSTANT)". The example in this case is: `!(column == 29)` and so on.
- Supported more "!" optimization in the following patterns.
  - `!(column @ "X") && (column @ "Y")`
  - `(column @ "Y") && !(column @ "X")`
  - `(column @ "Y") &! !(column @ "X")`
- Supported to search `XXX || !(column @ "xxx")` by index.
- [dump] Changed to use `'{"x": 1, "y": 2}'` style for not referenced weight vector. This change doesn't affect to old Groonga because it already supports one.
- [experimental] Supported `GRN_ORDER_BY_ESTIMATED_SIZE_ENABLE` environment variable. This variable controls whether query optimization which is based on estimated size is applied or not. This feature is disabled by default. Set `GRN_ORDER_BY_ESTIMATED_SIZE_ENABLE=yes` if you want to try it.
- [select] Added query log for `columns`, `drilldown` evaluation.
- [select] Changed query log format for `drilldown`. This is backward incompatible change, but it only affects users who convert query log by own programs.
- [table_remove] Reduced temporary memory usage. It's enabled when the number of max threads is 0.
- [select] `columns[LABEL](N)` is used for query log format instead of `columns(N)[LABEL]`..
- [Query expansion] Updated example to use vector column because it is recommended way. [Reported by Gurunavi, Inc]
- Supported to detect canceled request while locking. It fixes the problem that `request_cancel` is ignored unexpectedly while locking.
- [logical_select] Supported `initial` and `filtered` stage dynamic columns. The examples are: `--columns[LABEL].stage initial` or `--columns[LABEL].stage filtered`.
- [logical_select] Supported `match_columns`, `query` and `drilldown_filter` option.
- [highlight_html] Supported similar search.
- [logical_select] Supported `initial` and stage dynamic columns in labeled drilldown. The example is: `--drilldowns[LABEL].stage initial`.
- [logical_select] Supported window function in dynamic column.
- [select] Added documentation about dynamic columns.
- [Window function] Added section about window functions.
- [CentOS] Dropped CentOS 5 support because of EOL.
- [httpd] Updated bundled nginx to 1.11.12
- Supported to disable AND match optimization by environment variable. You can disable this feature by `GRN_TABLE_SELECT_AND_MIN_SKIP_ENABLE=no`. This feature is enable by default.
- [vector_new] Added a new function to create a new vector.
- [select] Added documentation about `drilldown_filter`.

### Fixes

- [lock_clear] Fixed a crash bug against temporary database.
- Fixed a problem that dynamically updated index size was increased for natural language since Grooonga 6.1.4.
- [select] Fixed a bug that "A && B.C @ X" may not return records that should be matched.
- Fixed a conflict with `grn_io_flush()` and `grn_io_expire()`. Without this change, if `io_flush` and `load` command are executed simultaneously in specific timing, it causes a crash bug by access violation.
- [logical_table_remove] Fixed a crash bug when the max number of threads is 1.

### Thanks

- Gurunavi, Inc.

## Release 7.0.0 - 2017-02-09

### Improvements

- [in_values] Supported sequential search for reference vector column. [Patch by Naoya Murakami] [GitHub#629]
- [select] Changed to report error instead of ignoring on invalid `drilldown[LABEL].sort_keys`.
- [select] Removed needless metadata updates on DB. It reduces the case that database lock remains even though `select` command is executed. [Reported by aomi-n]
- [lock_clear] Changed to clear metadata lock by lock_clear against DB.
- [CentOS] Enabled EPEL by default to install Groonga on Amazon Linux.
- [query] Supported "@X" style in script syntax for prefix("@^"), suffix("@$"), regexp("@^") search.
- [query] Added documentation about available list of mode. The default mode is `MATCH` ("@") mode which executes full text search.
- [rpm][centos] Supported groonga-token-filter-stem package which provides stemming feature by `TokenFilterStem` token filter on CentOS 7. [GitHub#633] [Reported by Tim Bellefleur]
- [window_record_number] Marked `record_number` as deprecated. Use `window_record_number` instead. `record_number` is still available for backward compatibility.
- [window_sum] Added `window_sum` window function. It's similar behavior to window function sum() on PostgreSQL.
- Supported to construct offline indexing with in-memory (temporary) `TABLE_DAT_KEY` table. [GitHub#623] [Reported by Naoya Murakami]
- [onigmo] Updated bundled Onigmo to 6.1.1.
- Supported `columns[LABEL].window.group_keys`. It's used to apply window function for every group.
- [load] Supported to report error on invalid key. It enables you to detect mismatch type of key.
- [load] Supported `--output_errors yes` option. If you specify "yes", you can get errors for each load failed record. Note that this feature requires command version 3.
- [load] Improve error message on table key cast failure. Instead of "cast failed", type of table key and target type of table key are also contained in error message.
- [httpd] Updated bundled nginx to 1.11.9.

### Fixes

- Fixed a bug that nonexistent sort keys for `drilldowns[LABEL]` or `slices[LABEL]` causes invalid JSON parse error. [Patch by Naoya Murakami] [GitHub#627]
- Fixed a bug that access to nonexistent sub records for group causes a crash. For example, This bug affects the case when you use `drilldowns[LABEL].sort_keys _sum` without specifying `calc_types`. [Patch by Naoya Murakami] [GitHub#625]
- Fixed a crash bug when tokenizer has an error. It's caused when tokenizer and token filter are registered and tokenizer has an error.
- [window_record_number] Fixed a bug that arguments for window function is not correctly passed. [GitHub#634][Patch by Naoya Murakami]

### Thanks

- Naoya Murakami
- aomi-n

## The old releases

- News - 6.x
  - Release 6.1.5 - 2017-01-23
  - Release 6.1.4 - 2017-01-18
  - Release 6.1.3 - 2017-01-06
  - Release 6.1.2 - 2016-12-31
  - Release 6.1.1 - 2016-11-29
  - Release 6.1.0 - 2016-10-29
  - Release 6.0.9 - 2016-09-29
  - Release 6.0.8 - 2016-08-29
  - Release 6.0.7 - 2016-07-29
  - Release 6.0.5 - 2016-06-29
  - Release 6.0.4 - 2016-06-06
  - Release 6.0.3 - 2016-05-29
  - Release 6.0.2 - 2016-04-29
  - Release 6.0.1 - 2016-03-29
  - Release 6.0.0 - 2016-02-29
- News - 5.x
  - Release 5.1.2 - 2016-01-29
  - Release 5.1.1 - 2015-12-29
  - Release 5.1.0 - 2015-11-29
  - Release 5.0.9 - 2015-10-29
  - Release 5.0.8 - 2015-09-29
  - Release 5.0.7 - 2015-08-31
  - Release 5.0.6 - 2015-07-29
  - Release 5.0.5 - 2015-06-29
  - Release 5.0.4 - 2015-05-29
  - Release 5.0.3 - 2015-04-29
  - Release 5.0.2 - 2015-03-31
  - Release 5.0.1 - 2015-03-29
  - Release 5.0.0 - 2015-02-09
- News - 4.x
  - Release 4.1.1 - 2015-01-29
  - Release 4.1.0 - 2015-01-09
  - Release 4.0.9 - 2014-12-29
  - Release 4.0.8 - 2014-11-29
  - Release 4.0.7 - 2014-10-29
  - Release 4.0.6 - 2014-09-29
  - Release 4.0.5 - 2014-08-29
  - Release 4.0.4 - 2014-07-29
  - Release 4.0.3 - 2014-06-29
  - Release 4.0.2 - 2014-05-29
  - Release 4.0.1 - 2014-03-29
  - Release 4.0.0 - 2014-02-09
- News - 3.x
  - Release 3.1.2 - 2014-01-29
  - Release 3.1.1 - 2013-12-29
  - Release 3.1.0 - 2013-11-29
  - Release 3.0.9 - 2013-10-29
  - Release 3.0.8 - 2013-09-29
  - Release 3.0.7 - 2013-08-29
  - Release 3.0.6 - 2013-07-29
  - Release 3.0.5 - 2013-06-29
  - Release 3.0.4 - 2013-05-29
  - Release 3.0.3 - 2013-04-29
  - Release 3.0.2 - 2013-03-29
  - Release 3.0.1 - 2013-02-28
  - Release 3.0.0 - 2013-02-09
- News - 2.x
  - Release 2.1.2 - 2013-01-29
  - Release 2.1.1 - 2012-12-29
  - Release 2.1.0 - 2012-12-29
  - Release 2.0.9 - 2012-11-29
  - Release 2.0.8 - 2012-10-29
  - Release 2.0.7 - 2012-09-29
  - Release 2.0.6 - 2012-08-29
  - Release 2.0.5 - 2012-07-29
  - Release 2.0.4 - 2012-06-29
  - Release 2.0.3 - 2012-05-29
  - Release 2.0.2 - 2012-04-29
  - Release 2.0.1 - 2012-03-29
  - Release 2.0.0 - 2012-02-29
- News - 1.3.x
  - Release 1.3.0 - 2012-01-29
- News - 1.2.x
  - Release 1.2.9 - 2011-12-29
  - Release 1.2.8 - 2011-11-29
  - Release 1.2.7 - 2011-10-29
  - Release 1.2.6 - 2011-09-29
  - Release 1.2.5 - 2011-08-29
  - Release 1.2.4 - 2011-07-29
  - Release 1.2.3 - 2011-06-29
  - Release 1.2.2 - 2011-05-29
  - 1.2.1リリース - 2011-04-29
  - 1.2.0リリース - 2011-03-29
- バージョン1.1.xのお知らせ
  - 1.1.0リリース - 2011-02-09
- バージョン1.0.xのお知らせ
  - 1.0.8リリース - 2011-02-02
  - 1.0.7リリース - 2011-01-29
  - 1.0.6リリース - 2010-12-31
  - 1.0.5リリース - 2010-12-29
  - 1.0.4リリース - 2010-11-29
  - 1.0.3リリース - 2010-10-29
  - 1.0.2リリース - 2010-09-09
  - 1.0.1リリース - 2010-09-06
  - 1.0.0リリース - 2010-08-29
- バージョン0.xのお知らせ
  - 0.7.7リリース - 2010-08-25
  - 0.7.6リリース - 2010-08-19
- News in Senna period
  - Senna -> groonga - 2009-01-14
  - 2006-04-05
  - 2006-03-03
  - 2006-01-16
  - 2006-01-12
  - 2005-12-22
  - 2005-10-27
  - 2005-09-17
  - 2005-09-08
  - 2005-08-16
  - 2005-07-05
  - 2005-06-23
  - 2005-04-12