News - 5.x¶
Release 5.1.2 - 2016-01-29¶
Improvements¶
Improved performance for sequential search against constant value such as
true
and29
.Improved performance for sequential search against binary operation with constant value such as
x == 29
andx < 29
.[select] Changed score type to
Float
fromInt32
when Command version is 2. The current default command version is 1. Command version 2 is experimental. So this change isn’t affected to normal users. [GitHub#450][Patch by Naoya Murakami][grn_ts] Supported match operator.
[grndb] Added
--target
option tocheck
command. It reduces check target.[Windows] Updated bundled msgpack to 1.3.0 from 1.0.1.
[Windows] Updated bundled MeCab to 0.996 from 0.98.
[
grn_hash_size()
] Added a new API that returns the number of records in the hash table.[
GRN_HASH_TINY
] Added a new flag to create tiny hash table.[
grn_dump_table_create_flags()
] Added a new API that convertsflags
value of a table toflags
parameter format of table_create.[
grn_dump_column_create_flags()
] Added a new API that convertsflags
value of a column toflags
parameter format of column_create.[
grn_plugin_get_names()
] Added a new API that returns all plugin names in a database.[
grn_column_get_all_index_data()
] Added a new API that returns all index data for a table or data column.[schema] Added indexes information to indexed tables and data columns.
[
grn_config_get()
] Renamed fromgrn_conf_get()
.[
grn_config_set()
] Renamed fromgrn_conf_set()
.[
grn_config_delete()
] Added a new API that deletes a configuration item.[config_set] Added a new command that sets a configuration item.
[config_get] Added a new command that gets a configuration item value.
[config_delete] Added a new command that deletes a configuration item.
[
grn_config_cursor_open()
] Added a new API that opens a new cursor that iterates all configuration items.[
grn_config_cursor_next()
] Added a new API that moves to the next configuration item in the cursor.[
grn_config_cursor_get_key()
] Added a new API that gets the key of the current configuration item.[
grn_config_cursor_get_value()
] Added a new API that gets the value of the current configuration item.[Alias] Supported aliasing table and column names.
[hash table] Added total key size overflow check.
[dump] Supported dumping configurations set by config_set.
[patricia trie] Improved inspection. [GitHub#452][GitHub#457][Patch by Naoya Murakami]
[
grn_get_global_error_message()
] Added a new API that gets the current error message in the process.[lock_acquire] Added a new command that acquires a lock of a database, table or column.
[lock_release] Added a new command that releases a lock of a database, table or column.
[groonga-httpd] Updated bundled nginx version to 1.9.10 from 1.9.7.
Fixes¶
Fixed mruby related crash bugs.
[Windows] Fixed label in installer. [groonga-dev,03825][Reported by Atsushi Shinoda]
[doc] Fixed typos. [GitHub#456][GitHub#458][Patch by tSU_RooT]
[Memcached binary protocol] Added more description. [GitHub#454][Patch by Hiroyuki Sato]
Fixed a bug that Command version specified by
command_version
parameter in a request isn’t reset.
Thanks¶
Naoya Murakami
Atsushi Shinoda
tSU_RooT
Hiroyuki Sato
Release 5.1.1 - 2015-12-29¶
Improvements¶
[Script syntax] Supported
INDEX_COLUMN == VALUE
as index search with an equal supported index.Reduced the continuous same messages from inverted index module.
Supported detecting truncated tables by another process. [GitHub#447] [groonga-dev,03761] [Reported by Yutaro SHIMAMURA]
[
grn_db_recover()
] Supported detecting a broken object.Improved performance for sequential scan search by Regular expression match with constant pattern such as
COLUMN @~ "CONSTANT_PATTERN"
.
Fixes¶
Fixed build error on MessagePack support build. [groonga-dev,03708] [Reported by Ryo Sugimoto]
[mruby] Fixed a crash bug on error. mruby exception feature is disabled as workaround for now.
[thread_limit] Fixed a bug that
thread_limit?max=1
may not reduce the number of current running threads to1
.[thread_limit] Fixed a bug that
thread_limit?max=1
may not return.[Tuning] Fixed wrong
sysctl
argument. [GitHub#448] [Reported by Hiroyuki Sato]
Thanks¶
Ryo Sugimoto
Yutaro SHIMAMURA
Hiroyuki Sato
Release 5.1.0 - 2015-11-29¶
Improvements¶
[patiricia trie] Added an error check for the max total key size. See Limitations about the max total key size.
[grndb] Added a check for broken object. The check can detect a case that the object can’t be opened.
[
grn_obj_reindex()
] Added a new API that recreates existing indexes.[reindex] Added a new command that recreates existing indexes.
[inverted index] Improved estimation precision for query.
[logical_range_filter] Added fallback mode for sequential search. If sequential search checked many records but didn’t find required the number of records, index search is used as fallback.
[
grn_get_package_label()
] Added a new API that returns package label. It returnsGroonga
.[Groonga HTTP server] Added
Server: Groonga/VERSION
response header.[groonga-httpd] Improved performance by reusing
grn_ctx
object.[
grn_file_reader
] Added a new API that providesfgets()
feature. It fixes a crash bug of groonga executable file. If groonga executable file is built with static C runtime by Visual Studio, the crash bug is occurred.[prefix_rk_search] Added a new selector that provides prefix RK search feature.
[
grn_obj_is_accessor()
] Added a new predicate that checks whether the object is an accessor.[
grn_obj_is_key_accessor()
] Added a new predicate that checks whether the object is an accessor for_key
Pseudo column.Supported Pretty print for JSON output.
Fixes¶
[inverted index] Fixed a possible infinite loop bug when log level is
debug
.Fixed a bug that
@
operator (match operator) may not match record that should be matched in sequential search mode.[patricia trie] Fixed a bug that invalid value may be returned for empty string key. [groonga-dev,03632] [Reported by Naoya Murakami]
Thanks¶
Naoya Murakami
Release 5.0.9 - 2015-10-29¶
Improvements¶
[inverted index] Reduced log levels of logs for developers.
Flushed pending changed on creating new database. It guards database from crash.
[
grn_geo_table_sort()
] Added a new API that sorts table by geometry index.[experimental] Added expression rewrite mechanism. You can write custom expression rewriter by mruby. Expression rewriter can be used for optimizing an expression, changing conditions in an expression and so on.
[experimental] Added database global configuration mechanism. You can put configurations (key and value pairs) into database. For example, it will be used in TokenFilterStopWord to custom column name from
is_stop_word
.[
grn_conf_set()
] Added a new API that sets a configuration.[
grn_conf_get()
] Added a new API that gets a configuration.[deb] Changed to
all
fromany
forArchitecture
value. [debian-bugs:799167][Reported by Matthias Klose][Windows][CMake] Supported building bundled MeCab. [groonga-dev,03562][Reported by Sato]
[schema] Added a new command that returns schema. Schema is consists with loaded plugins, loaded tokenizers, loaded normalizers, loaded token filters, defined tables and defined columns.
[
grn_plugin_win32_base_dir()
] Deprecated. Usegrn_plugin_windows_base_dir()
instead.[
grn_plugin_windows_base_dir()
] Renamed fromgrn_plugin_win32_base_dir()
.[
grn_obj_is_type()
] Add a new API that returns true when the passed object is a type object.[
grn_obj_is_tokenizer_proc()
] Add a new API that returns true when the passed object is a tokenizer object.[
grn_obj_is_normalizer_proc()
] Add a new API that returns true when the passed object is a normalizer object.[
grn_obj_is_token_filter_proc()
] Add a new API that returns true when the passed object is a token filter object.[
grn_ctx_get_all_types()
] Add a new API that returns all type objects in database.[
grn_ctx_get_all_tokenizers()
] Add a new API that returns all tokenizer objects in database.[
grn_ctx_get_all_normalizers()
] Add a new API that returns all normalizer objects in database.[
grn_ctx_get_all_token_filters()
] Add a new API that returns all token filter objects in database.[
grn_ctx_output_uint64()
] Add a new API that outputs 64bit unsigned integer value.[
grn_ctx_output_null()
] Add a new API that outputsNULL
.[
GRN_OBJ_IS_TRUE()
] Add a new API that returns true when the passed object is true value.[experimental] Enabled grn_ts by default.
[Ubuntu] Added Ubuntu 15.10 Wily Werewolf support.
Fixes¶
[patricia trie] Fixed a bug that the number of records may be counted up unexpectedly on adding a new entry. [GitHub#417]
[patricia trie] Fixed a bug that a variable may be used uninitialized.
[patricia trie] Fixed a bug that
grn_pat_cursor_next()
may enter an infinite loop. [GitHub#419][patricia trie] Fixed a bug that deleting an entry may break patricia trie. [GitHub#415][groonga-dev,03515][Reported by Hiroshi Kagami]
[patricia trie] Fixed a bug that deleting a nonexistent entry may break patricia trie. [GitHub#420]
Fixed a bug that wrong proc type is used for token filter objects.
Thanks¶
Matthias Klose
Hiroshi Kagami
Sato
Release 5.0.8 - 2015-09-29¶
Improvements¶
[Windows] Supported build with MySQL again.
[Script syntax] Changed return value type to
Bool
fromInt32
for predicate operations such as Match operator and Equal operator.[API] Supported owning other
grn_obj
byGRN_PTR
andGRN_PVECTOR
bulk. If you specifyGRN_OBJ_OWN
flag toGRN_PTR
andGRN_PVECTOR
bulks, they callgrn_obj_close()
againstgrn_obj
that is held by them when they are closed.[incompatible][Regular expression] Changed to normalize regular expression match target text before matching. It’s for consistency and performance.
Other operations such as Prefix search operator normalize target text.
Some simple regular expressions such as
\Ahello
can be evaluated by index. It’s fast.If target text isn’t normalized, you need to use complex regular expressions such as
\A[Hh]ello
and\A(?i)hello
. Complex regular expressions can’t be evaluated by index. If target text is normalized, you can use simple regular expressions. They may be evaluated by index. It’s fast.[doc] Improved documents. [GitHub#393][GitHub#396][GitHub#397][GitHub#399][GitHub#403] [GitHub#405][GitHub#409] [Reported by Hiroyuki Sato][Patch by Hiroyuki Sato]
[highlight_html] Improved performance. [groonga-dev,03427] [Reported by Hiroyuki Sato]
[snippet_html] Improved performance.
[CMake] Stopped to run
pkg-config
twice. [Patch by Sergei Golubchik]Removed needless check for year in time. B.C. is always invalid time without this change. B.C. is valid time when system (
mktime()
) supports it with this change.[
grn_ctx_is_opened()
] Added a new API that checks whether object with the ID is opened or not.[
grn_obj_remove()
] Reduced the maximum memory usage. Ifgrn_thread_get_limit()
returns1
, it closes temporary opened objects after it finished to use them.[doc][table_remove] Updated with many descriptions.
[groonga executable file] Ensured to add the last new line to dump result on stand alone mode.
[Process log] Added Groonga version into
grn_init
log.Opened chat room on Gitter.
[status] Added
start_time
as alias ofstarttime
for consistency. Other keys usesnake_case
style.starttime
is deprecated. Usestart_time
instead.Updated bundled Onigmo.
[doc][scorer_tf_at_most] Documented.
Supported columns for temporary table. It’s only available C API users for now. select will use this feature in the next release.
[
grn_vector_pop_element()
] Exported.[groonga executable file] Added checks whether acquiring lock is succeeded or not.
[groonga-suggest-create-dataset] Changed to use
--normalizer
instead ofKEY_NORMALIZE
becauseKEY_NORMALIZE
is deprecated.[
grn_obj_cast()
] Exported.[experimental][
grn_ii_cursor
] Exported.[experimental][
grn_ii_cursor_open()
] Exported.[experimental][
grn_ii_cursor_next()
] Exported.[experimental][
grn_ii_cursor_close()
] Exported.[Match operator] Improved index detection. Index its lexicon has a tokenizer is preferred.
[groonga-httpd] Updated bundled nginx to 1.9.5 that supports HTTP/2. HTTP/2 module is enabled.
Fixes¶
[Script syntax] Fixed a bug that
&!
does nothing when right hand side istrue
.Fixed performance regression with libtool 2.4.6. [GitHub#406][GitHub#407] [Patch by Hiroyuki Sato]
[Equal operator] Fixed a bug that section is ignored.
Thanks¶
Hiroyuki Sato
Sergei Golubchik
Release 5.0.7 - 2015-08-31¶
This release includes a bug fix of Offline index construction.
If you’re using any multiple column index (index column with
WITH_SECTION
flag) and Offline index construction, we
recommend that you upgrade your Groonga.
This release has an important experimental feature for Windows users. See “sparse file support” entry in the following improvement list for details.
Improvements¶
[experimental][Windows] Added sparse file support. It’s experimental feature. It’s disabled by default. You can enable it by specifying
GRN_IO_USE_SPARSE=yes
environment variable.It reduces database file size on Windows. Please try the feature and report the result. Groonga developers are interested in the followings:
Disk usage
Performance (Improved? Degraded? No difference?)
Memory usage (Especially virtual memory usage)
[experimental][logical_shard_list] Added a command that returns a shard list of the specified logical table.
[experimental][Regular expression operator] Supported regular expression match against vector column without index.
[logical_range_filter] Supported
--cache no
option. It’s same as cache option in select.[groonga-httpd] Supported returning the max number of threads feature of thread_limit. You can’t set the max number of threads.
[
grn_db_unmap()
] Added a new API that unmaps all opened tables and columns. It’s a thread unsafe operation. You can’t touch the database whilegrn_db_unmap()
is running.[database_unmap] Added a command that unmaps all opened tables and columns in database.
[object_exist] Added a command that checks whether object with the specified name exists or not in database.
[column_copy] Added a command that copies all values from source column to destination column.
You can use this command to change column value type, column type, table type and so on.
Stopped to use non-standard
__uint32_t
type. [GitHub#375][Reported by Natanael Copa][experimental][Windows] Supported Windows Event log.
[mruby] Supported error handling on mruby initialization error.
[experimental][thread_limit] Renamed from
thread_count
.Supported logging used indexes in
info
level anddebug
level. It can be used likeEXPLAIN
in RDBMS. It’s useful to improve slow query.[doc] Replaced deprecated
KEY_NORMALIZE
flags. [GitHub#378][GitHub#380][GitHub#382] [Patch by Hiroyuki Sato][doc] Removed needless Sphinx configurations. [GitHub#379] [Patch by Ayumu Osanai]
[experimental][incompatible][Regular expression operator] Changed
.
match behavior..
matches new line. It’s backward incompatible change.[doc][How to build Groonga at the repository] Added a document about building Groonga as Groonga developer. [GitHub#353] [Suggested by Hiro Yoshioka]
Fixes¶
[mruby] Fixed a time overflow bug.
[groonga executable file] Fixed a crash bug when PID file can’t be created. [GitHub#368] [Reported by Hiroyuki Sato]
Fixed a bug that Offline index construction may generate broken index. It may be caused for multiple column index. In other words, index column with
WITH_SECTION
flag may be broken.If you’re using Online index construction for index columns with
WITH_SECTION
flag, this bug isn’t affected.You can recover this bug by recreating existing multiple column indexes.
[filter] Fixed a bug that Bitwise NOT operator against unsigned int value doesn’t work for comparing to
-NUMBER_LITERAL
.For example, the following expression doesn’t work:
~UINT32_COLUMN == -6
Fixed a bug that Regular expression operator doesn’t work in multithread.
Fixed some memory leaks.
Fixed a build error. [GitHub#381] [Patch by Hiroshi Hatake]
Thanks¶
Hiroyuki Sato
Natanael Copa
Ayumu Osanai
Hiroshi Hatake
Hiro Yoshioka
Release 5.0.6 - 2015-07-29¶
Improvements¶
[Ubuntu] Dropped Ubuntu 14.10 (Utopic Unicorn) support. It had been End of Life on July 23, 2015.
Supported offline index construction for reference vector. For example,
load
data beforecolumn_create
an index:table_create Entries TABLE_NO_KEY column_create Entries numbers COLUMN_VECTOR Int32 load --table Entries [ ["numbers"], [[18, 19, 20]], [[100, 200]] ] table_create Numbers TABLE_PAT_KEY Int32 column_create Numbers entries_numbers COLUMN_INDEX Entries numbers select Numbers --output_columns _key
Supported
'vector_text_column @ "element"'
without index. For example, theselect
command in the following commands:table_create Memos TABLE_NO_KEY column_create Memos tags COLUMN_VECTOR Text load --table Memos [ {"tags": ["Groonga", "Rroonga", "Mroonga"]} ] select Memos --filter 'tags @ "Rroonga"'
Supported
'fixed_size_type_vector_column @ n'
without index. For example, theselect
command in the following commands:table_create Memos TABLE_NO_KEY column_create Memos numbers COLUMN_VECTOR Int32 load --table Memos [ {"numbers": [1, 2, 3]} ] select Memos --filter 'numbers @ 2'
[CentOS][Server packages][groonga-httpd] Show exit status. [GitHub#357] [Patch by jacob16bit]
[Windows][groonga executable file] Supported
--pid-path
.[Windows] Allowed to delete file that is opened by other process.
Accepted selector only proc. Note that the proc can’t be used as function. It means that the proc can’t be used with sequential search.
Supported function call with complex argument. An example complex argument is
Table["key"].column
. For example:function(_key, Table["key"].column)
[doc][Tutorial] Added more description about database creation fails if DB_PATH points to an existing file. [GitHub#354] [Suggested by Hirotaka Takayama]
[doc][Tutorial] Described JSON formatting tools. [GitHub#355] [Suggested by tiwawan]
[experimental] Added an API to get/set the number of threads. It’s a experimental API.
[experimental][
thread_count
] Added a command that get/set the number of threads. It’s a experimental command.[experimental][groonga executable file] Supported changing the number of threads by
thread_count
command. It’s a experimental feature.[experimental][Windows] Added Windows event log support. It’s a experimental feature.
[experimental][groonga executable file] Added Windows event log related option
--use-windows-event-log
. It reports logs as Windows events. It’s a experimental feature.[Windows] Used Groonga’s default encoding for log message.
Log used indexes in
INFO
level. The default levelNOTICE
. So the logs aren’t showed by default.[API] Added
grn_log_level_to_string()
andgrn_log_level_parse()
.[groonga executable file] Accepted log level name (e.g.
info
,debug
and so on) for--log-level
value.[log_level][log_put] Accepted log level name for
--level
argument.[plugin] Added
grn_command_input_get_arguments()
.Updated sharding plugins.
[logical_select] Fixed output format. It has become select compatible format.
[logical_select] Supported the following parameters.
--output_columns
--offset
--limit
--drilldown
--drilldown_sortby
--drilldown_offset
--drilldown_limit
[logical_select] Used the same default output_columns (
"_id, _key, *"
) as select.[logical_select] Supported drilldowns[${LABEL}].calc_types and drilldowns[${LABEL}].calc_target for labeled drilldown.
[logical_select] Supported cache.
[logical_count] Supported logging whether range index is used or not.
[logical_count] Show target table name in debug log.
[logical_count] Supported cache.
[logical_range_filter] Supported
'fixed_size_type_vector_column @ element'
.[logical_range_filter] Added
use_range_index
parameter. It’s a parameter for test. It should not be used for production.[logical_range_filter] Log which mode (range-index or select mode) is used.
[logical_range_filter] Supported cache.
[logical_range_filter] Supported nested reference vector accessor.
[logical_range_filter] Used range_index value set by logical_parameters.
[logical_parameters] Added.
Added mruby APIs.
[mrb] Added
Accessor#name
.[mrb] Added
Column#[]
.[mrb] Added
Column#scalar?
,Column#vector?
andColumn#index?
.[mrb] Added
Context#command_version
andContext#command_version=
(accessors).[mrb] Added
Context#with_command_version
.[mrb] Added
Database#each_name
.[mrb] Added
Groonga::Cache.current
.[mrb] Added
Record
.[mrb] Added
Table#each
.[mrb] Added
TableCursor#key
.[mrb] Binded
grn_command_input_get_arguments()
toCommandInput#arguments
.[mrb] Binded
grn_table_group()
toTable#group
.[mrb] Binded
grn_table_group_flags()
toTableGroupFlags
.[mrb] Binded
GRN_COMMAND_VERSION_DEFAULT
.[mrb] Binded
grn_cache
.[mrb][estimate_size] Supported
(... || ...) && (... || ...)
as expression case.[mrb] Supported query log.
Fixes¶
Fixed a memory leak when an error is occurred in
grn_expr_exec()
. For example, unsupported operator (e.g.GRN_OP_TERM_EXTRACT
) is used (not implemented operator assigned
is occurred for the case).[bindings/php] Added a missing check for a memory allocation failure. [Reported by Bill Parker]
[CentOS][Server packages][logrotate] Fixed syntax error in script.
[CentOS][Server packages][logrotate] Fixed wrong daemon running check.
[CentOS][Server packages][logrotate] Stop to set owner/group to log files. Because it’s not consistent. groonga-httpd creates log files with root owner/group. But logrotated log files are created with groonga owner/group. [GitHub#358] [Reported by jacob16bit]
[groonga executable file] Fixed reported the maximum number of threads.
[groonga-httpd] Remove a needless space in log message:
|n| grn_fin (0) -> |n| grn_fin (0) ^
Fixed a bug that estimating size by regexp query with anchor (e.g.
\\\\A
in--filter 'comment @~ "\\\\Abc"'
) doesn’t work. The feature is used in logical_range_filter.[Request ID] Fixed a memory leak when
request_id
byte size >= 24.[lock_clear] Fixed a typo in command name in Syntax section. [GitHub#363] [Reported by Christian Kakesa]
[sharding] Fixed wrong min include detection for month range type.
Thanks¶
Bill Parker
jacob16bit
Hirotaka Takayama
tiwawan
Christian Kakesa
Release 5.0.5 - 2015-06-29¶
Improvements¶
Show correct error information such as NoSuchFileOrDirectory when opening a database.
Don’t set the default logger path for library use.
It’s backward incompatible change. But it will not effect to many users.
Server use (groonga command, Mroonga, PGroonga and so on) users can get log by default. In server use, developers set up log in their software.
Most library use (Rroonga, groonga-gobject and so on) users couldn’t get log by default with earlier versions. The default log path is system path such as /var/log/groonga/groonga.log. It’s not writable for normal users.
[windows] Show error information when memory isn’t enough on failing
CreateFileMapping()
.[tokenize] Updated example to show new “force_prefix” value. This value is added since 5.0.4.
[windows] Show error information when disk has any problem (disk full and so on) on failing
FlushViewOfFile()
.[API] Added
grn_obj_flush()
.[API] Added
grn_obj_flush_recursive()
.[io_flush] Added. It flushes memory mapped data to disk. Usually memory data automatically flush by an OS, but you can explicitly flush with this command.
[mruby] Binded
grn_obj_remove()
to Object#remove.[mruby] Binded
grn_table_delete()
andgrn_table_delete_by_id()
to Table#delete.[logical_table_remove] Added.
[logical_select] Added.
--filter
is only supported for now.[cmake] Supported embedded MeCab tokenizer.
[logical_count] Supported month and day mixed shards. In the same month, month shard must have earlier records rather than day shards in the same month. For example:
XXX_201506 <- includes only 2015-06-01 and 2015-06-02 records XXX_20150603 <- includes only 2015-06-03 records XXX_20150604 <- includes only 2015-06-04 records
Fixes¶
Fixed wrong macro to include netinet/in.h. [GitHub#348] [Reported by OBATA Akio]
[rpm][groonga-httpd] Fixed failing restart. [GitHub#351] [Patch by jacob16bit]
Thanks¶
OBATA Akio
jacob16bit
Release 5.0.4 - 2015-05-29¶
Improvements¶
[mruby] Changed to use
inspect
to show meaningful error message for error value.[mruby] Supported
Groonga::Bulk#inspect
to inspect bulk content.[mruby] Supported
Bulk#value
to extract the value of record from bulk content.[mruby] Supported estimating size for
reference_column == record_id
in logical_range_filter. In above case, it can be searched more effectively.[sub_filter] Supported index column as
scope
parameter.[Script syntax] Described clearly about numerical value. [GitHub groonga/groonga.org#16] [Suggested by Hiroyuki Sato]
[select] Supported accessing other table’s record in filter. You can use
--filter 'OTHER_TABLE[KEY].COLUMN'
for example.[select] Supported operator in table key. You can use
--filter 'OTHER_TABLE["SOME STRING" + "ANOTHER STRING"].COLUMN'"
for example.[example] Used Ruby 2.0 or later API in script for converting dictionary data.
Changed to show error message about invalid type of keys about table.
[doc] Fixed link from sourceforge.jp to osdn.me or osdn.jp about mailing list preference page. SourceForge.jp is marked as obsoleted because of branding issue since May 11, 2015.
[tokenize] Added
force_prefix
value to each token information. [Patch by Naoya Murakami]Supported to search by shorter words such as 2 or less characters for TokenTrigram. [Patch by Naoya Murakami]
[deb] Added service file for Systemd into groonga-httpd and groonga-server-gqtp packages.
[select] Ignored
--query
when its value consists of only space characters. Space characters include full-width space (U+3000 IDEOGRAPHIC SPACE
in Unicode). [Suggested by TomyGX]
Fixes¶
Fixed a crash bug when empty key is specified for
drilldown[label].keys
.Fixed a bug that the return value of
grn_parse_query_flags
is not properly checked. [GitHub#336] [Reported by Hiroaki Nakamura]Fixed a build error on some BSD systems. They doesn’t have
-i
option forsed
.Fixed a build error on Solaris. It is changed to initialize by
sizeof(msghdr)
inmemset()
becausemsg_control
,msg_controllen
andmsg_flags
doesn’t exist on Solaris by default.[Tokenizers] Fixed a typo. [GitHub#338] [Reported by Hiroyuki Sato]
[Output] Fixed markup. [GitHub groonga/groonga.org#17] [Reported by Hiroyuki Sato]
Reduced getenv() in each
grn_ii_cursor_set_min()
. This fixes performance regression on Windows.Fixed a build error on OpenBSD. [groonga-dev,03255] [Reported by fbnteqr]
[groonga-httpd] Fixed a bug that same message is logged.
Fixed a crash bug which is caused by double free memory.
Fixed a memory leak. It’s occurred when
--match_columns
and--query
are used for non indexed text field and text fields have a value that isn’t bulk embeddable. Normally, 32byte over size text isn’t bulk embeddable, so this bug doesn’t affect to the case if only small text less than 32byte are stored.[Tokenizers] [TokenRegexp] Fixed a bug that it can’t be searched correctly when query contains characters which are treated as blank character. For example, the newline - “\n” is typical one.
Thanks¶
Hiroaki Nakamura
Hiroyuki Sato
Naoya Murakami
fbnteqr
TomyGX
Release 5.0.3 - 2015-04-29¶
Improvements¶
[Tokenizers][Regular expression] Skip the last one character token.
[mruby] Supported regexp pattern for estimating size.
[mruby] Supported size estimation for accessor.
[logical_range_filter] Removed
GRN_LOGICAL_RANGE_FILTER_ENABLED
environment variable which is introduced since Groonga 5.0.2. UseGRN_LOGICAL_RANGE_FILTER_THRESHOLD=0
to disable range index search feature.[logical_range_filter] Supported negative limit and offset.
[Windows] Used Groonga Admin in package.
[logical_range_filter] Changed threshold meaning:
threshold <= 0.0: always use range index
threshold >= 1.0: never use range index
[dump] Supported plugin.
[dump] Added the following options:
--dump_plugins [yes(default)/no]
--dump_schema [yes(default)/no]
--dump_records [yes(default)/no]
--dump_indexes [yes(default)/no]
[API] Added
grn_plugin_get_ruby_suffix()
.[dump] Fixed order to put index columns after reference columns because index column may refer reference columns.
[dump] Don’t dump records of lexicon.
[dump] Show
_id
forTABLE_NO_KEY
again.[dump] Used offline index construnction.
Increased max hash key size from 4KiB (4096Byte) to 64KiB - 1 (65535Byte).
Increased max cache key size from 4KiB (4096Byte) to 64KiB - 1 (65535Byte).
Improved performance for nested index search.
Used index for nonexistent reference column value.
[experimental] Added plugin functions/vector. It includes vector_size function.
[Windows] Updated Visual Studio version [GitHub groonga/meetup#4] [Reported by Hiroyuki Mizuhara]
[cache_limit] Expired old caches when the max N caches is decreased. [Suggested by Gurunavi, Inc.]
Show more information such as errno for errors.
[windows] Used secure functions on Windows.
Added the following APIs to change log rotate threshold in file size.
grn_default_logger_set_rotate_threshold_size()
grn_default_logger_get_rotate_threshold_size()
grn_default_query_logger_set_rotate_threshold_size()
grn_default_query_logger_get_rotate_threshold_size()
[experimental] Supported log rotation. The feature is disabled by default. You can enable log rotation by the following options:
--log-rotate-threshold-size
--query-log-rotate-threshold-size
[GQTP] Documented about GQTP server.
[groonga executable file] Documented groonga executable file partially.
Supported Ubuntu 15.04 (Vivid Vervet).
Supported Debian 8.0 (Jessie).
[groonga-httpd] Updated bundled nginx version to the latest mainline (1.8.0).
Fixes¶
[windows] Fixed a bug that Offline index construction is failed for large data (at least 1GB or larger) with Groonga built by Microsoft Visual C++. [Reported by Hideki ARAI]
[mruby] Made
\\
index searchable in regular expression.Fixed a bug that
GRN_II_CURSOR_SET_MIN_ENABLE=yes
doesn’t return some matched records.[sharding] Fixed a bug that partial range is handled as all range.
[logical_range_filter] Fixed a bug that
:order => "descending"
doesn’t work.[logical_count] Re-supported counting with range index.
Fixed a bug causing malfunction of
grn_pat_del()
and added a test for invalid patricia trie node add case. [groonga-dev,03177] [Reported by yuya sako]
Thanks¶
Hideki ARAI
Hiroyuki Mizuhara
Gurunavi, Inc.
yuya sako
Release 5.0.2 - 2015-03-31¶
It’s a bug fix release of 5.0.1.
Improvements¶
Supported MessagePack 1.0.1. [Reported by Hiroshi Hatake]
[logical_range_filter] Disabled range index by default. It’s enabled when you set the enviromnent variable
GRN_LOGICAL_RANGE_FILTER_ENABLED
toyes
.
Fixes¶
Fixed a regression bug that JSONP doesn’t work. It was introduced in Groonga 4.1.1.
[windows] Fixed a bug that crash on x86 for Groonga 5.0.1. [groonga-dev,03131] [Reported by Atsushi Shinoda]
Fixed a crash bug that libedit is not properly initialized. The problem is fixed in the environment such as CentOS 7.
Thanks¶
Atsushi Shinoda
Hiroshi Hatake
Release 5.0.1 - 2015-03-29¶
Improvements¶
[logical_range_filter] Supported filter and sort.
Supported range search by multiple column index.
Added API Overview document for users who want to use Groonga as library.
[incompatible] Changed internal type of
_score
to floating point number from 32bit integer number. This is incompatible change for DB API users. This isn’t incompatible change for query API users. It means that users who just use select aren’t affected. Use the following code that works with both older and newer Groonga:grn_obj *score; double score_value; if (score->header.domain == GRN_DB_FLOAT) { score_value = GRN_FLOAT_VALUE(score); } else { score_value = (double)GRN_INT32_VALUE_FLOAT_VALUE(score); }
[select] Added more strict check for invalid drilldown parameter.
Added
grn_ctx_get_all_tables()
. [Suggested by Masatoshi Teruya]Supported to customize score function. See Scorer for details.
[incompatible] Custom score function feature introduced API and ABI incompatibilities in DB API layer. If you’re using
grn_search_optarg
, please check that your code initializes yourgrn_search_optarg
by0
like the following:grn_search_optarg options; memset(&options, 0, sizeof(grn_search_optarg));
If your code do the above thing, your code is API compatible and ABI incompatible. You just need to rebuild your code without modification.
If your code doesn’t the above thing, you need to added the above thing to your code.
Added the following predicates that check
grn_obj
type to DB API:grn_obj_is_table()
grn_obj_is_proc_proc()
grn_obj_is_function_proc()
grn_obj_is_selector_proc()
grn_obj_is_scorer_proc()
[experimental] Supported skipping posting list when searching popular term and rare term at the same time. It will improve performance. Set
GRN_II_CURSOR_SET_MIN_ENABLE
environment variable to1
to enable the feature. The feature is disabled by default.[doc] Added in_values document.
[doc] Added logical_count document.
[mruby] Implemented custom
#inspect
method. Is is useful for debugging.Added scorer_tf_at_most scorer. It limits not to exceed specified score regardless of term frequency.
[mruby] Supported estimating matched records for selecting index search or sequential search.
Added the following functions to estimate size by index:
grn_expr_estimate_size()
grn_ii_estimate_size_for_query()
grn_ii_estimate_size_for_lexicon_cursor()
Added missing NormalizerAuto availability check. [GitHub#283] [Reported by Tasuku SUENAGA]
Dropped Visual Studio 2010 support.
[experimental][mecab] Supported chunked tokenization. This feature is a workaround for MeCab’s “too long sentense” error. Specify
yes
toGRN_MECAB_CHUNKED_TOKENIZE_ENABLED
environment variable to enable it. By this configuration, Groonga splits a long text (8192 bytes over text by default) into small chunks and passes each chunk to MeCab. By this process, the above error isn’t occurred. Additionally, you can customize chunk threshold bytes byGRN_MECAB_CHUNK_SIZE_THRESHOLD
environment variable. Note that,
,.
,!
,?
,U+3001 IDEOGRAPHIC COMMA
,U+3002 IDEOGRAPHIC FULL STOP
,U+FF01 FULLWIDTH EXCLAMATION MARK
andU+FF1F FULLWIDTH QUESTION MARK
are treated as chunk delimiter characters.Supported
--pid-file
in server mode of groonga executable file.[groonga-httpd] Supported graceful stop to clean Groonga. It doesn’t terminate the open connections immediately.
[experimental] Supported regular expression. See Regular expression to know about how to use regular expression.
[experimental] Added plugin_unregister command.
[http][load] Added “,” as chunk separator in POST data. It decreases internal buffer size and improves load time when POST data don’t include any new line.
[doc] Added Tokenizers document.
Improved POSIX.2 compatibility by using
.
as bash’s “source” command replacement. [GitHub#317] [Patch by Jun Kuriyama][windows] Changed to the default IO version 1. It reduces disk usage on Windows. [groonga-dev,03118] [Tested by ongaeshi]
[httpd] Updated bundled nginx version to the latest mainline (1.7.11).
Changed mime-type for TSV output to
text/tab-separated-values
fromtext/plain
.[TokenFilterStopWord] Supported Offline index construction. [GitHub#296] [Patch by Naoya Murakami]
Fixes¶
Fixed not to use obsolete
--address
parameter in the default groonga.conf.--bind-address
is used instead. [Groonga-talk] [Reported by Dewangga][truncate] Fixed a bug that TABLE_NO_KEY table can’t be truncated.
[mecab] Reduced needless logs for “empty token” and “ignore empty token”.
Fixed a bug that wrong section in index is used. It means that wrong search result is returned. If you satisfy all of the following conditions, this bug is occurred:
Multiple indexes are available.
The first defined index or the last defined index are multi-column indexes.
When both of the first defined index and the last defined index are multi-column indexes, source column orders are different in them.
Fixed a bug that passing Groonga command line to groonga executable file from shell command line style usage always returns
0
as exit code. For example,groonga DB_PATH nonexistent_command
always returned0
as exist code.Fixed a bug that plugin path may be broken when two or more plugins registered. [Reported by Naoya Murakami]
Fixed a bug that
Lexicon.index.source_column_name
style in match_columns doesn’t work when source column specified bysource_column_name
has two or more indexes. [Reported by Naoya Murakami]
Thanks¶
Masatoshi Teruya
Tasuku SUENAGA
Dewangga
Jun Kuriyama
ongaeshi
Naoya Murakami
Release 5.0.0 - 2015-02-09¶
Bump version to 5.0.0!
Improvements¶
[doc] Added Security about Script syntax.
[experimental] Added sharding plugin. Execute register sharding to enable this feature in advance, then use logical_count to get the number of records.
[cmake] Supported embedded Groonga with Clang. It fixed compilation failure on FreeBSD 10.1. [MDEV-7293] [Reported by Bernard Spil]
Supported to customize plugins directory. Set GRN_PLUGINS_DIR environment variable.
Fixes¶
Fixed build failure when system has an incompatible version of onigmo/oniguruma headers installed. [GitHub#276] [Patch by Akinori MUSHA]
Fixed time related build failure on MSVC [GitHub#237]
Thanks¶
Akinori MUSHA
Bernard Spil