BloGroonga

2020-04-29

Groonga 10.0.2 has been released

Groonga 10.0.2 has been released!

How to install: Install

Changes

Here are important changes in this release:

  • Added support for uvector for time_classify_* functions.

  • select Improve sort performance if sort key that can't refer value with zero-copy is mixed.

  • load Added support for loading weight vector as a JSON string.

  • Data type Added support for Float32 type.

  • Added following APIs

    • grn_obj_unref(grn_ctx *ctx, grn_obj *obj)
    • grn_get_version_major(void)
    • grn_get_version_minor(void)
    • grn_get_version_micro(void)
    • grn_posting_get_record_id(grn_ctx *ctx, grn_posting *posting)
    • grn_posting_get_section_id(grn_ctx *ctx, grn_posting *posting)
    • grn_posting_get_position(grn_ctx *ctx, grn_posting *posting)
    • grn_posting_get_tf(grn_ctx *ctx, grn_posting *posting)
    • grn_posting_get_weight(grn_ctx *ctx, grn_posting *posting)
    • grn_posting_get_weight_float(grn_ctx *ctx, grn_posting *posting)
    • grn_posting_get_rest(grn_ctx *ctx, grn_posting *posting)
  • Fixed a bug that Groonga for 32bit on GNU/Linux may crash.

  • Fixed a bug that unrelated column value may be cleared.

  • dump Fixed a memory leak when we dumped records with dump command.

  • select Fixed a memory leak when we specified invalid value into output_columns.

  • Fixed a memory leak when we executed snippet function.

  • Fixed a memory leak when we filled the below conditions.

    • If we used dynamic columns on the initial stage.
    • If we used slices argument with select command.
  • logical_table_remove Fixed a memory leak when we deleted tables with logical_table_remove.

  • Fixed a memory leak when we use the reference count mode.

  • Fixed a bug that Groonga too much unlink _key accessor when we load data for apache arrow format.

Conclusion

Let's search by Groonga!

2020-03-30

Groonga 10.0.1 has been released

Groonga 10.0.1 has been released!

How to install: Install

We have been released Groonga 10.0.1. Because Ubuntu and Windows(VC++ version) package in Groonga 10.0.0 were mistaken.

If we have already used Groonga 10.0.0 for CentOS, Debian, Windows(MinGW version), no problem with continued use it.

Changes

Here are important changes in this release:

  • [Windows] Added a missing runtime(vcruntime140_1.dll) in package for Windows VC++ version.

Conclusion

Let's search by Groonga!

2020-03-29

Groonga 10.0.0 has been released

Groonga 10.0.0 has been released!

How to install: Install

Changes

Here are important changes in this release:

  • [httpd] Updated bundled nginx to 1.17.9.

  • [httpd] Added support for specifying output type as an extension.

    • For example, we can write load.json instead of load?output_type=json.
  • log Outputted a path of opened or closed file into a log of dump level on Linux.

    • As the fllowing log is outputted.

      [io][open] file_path
      [io][close] file_path
      
  • log Outputted a path of closed file into a log of debug level on Windows.

    • As the fllowing log is outputted.

      [io][open] file_path
      [io][close] file_path
      
  • Added following API and macros

    • grn_timeval_from_double(grn_ctx, double)

      • This API converts double type to grn_timeval type.
      • It returns value of grn_timeval type.
    • GRN_TIMEVAL_TO_NSEC(timeval)

      • This macro converts value of grn_timeval type to nanosecond as the value of uint64_t type.
    • GRN_TIME_USEC_TO_SEC(usec)

      • This macro converts microsecond to second.
  • Deprecated the following macro.

    • GRN_OBJ_FORMAT_FIN(grn_ctx, grn_obj_format)

      • We grn_obj_format_fin(grn_ctx, grn_obj_format) use instead since 10.0.0.
  • logical_range_filter, dump Added support for stream output.

    • This feature requires command_version 3 or later. The header content is outputted after the body content.
    • Currently, this feature support only dump and logical_range_filter.
    • logical_range_filter always returns the output as a stream on command_version 3 or later.
    • This feature has the following limitations.

      • -1 is only allowed for negative limit
      • MessagePack output isn't supported
    • We a little changed the response contents of JSON by this modify.

      • The key order differs from before versions as below.
      • If we have processes depend on the order of key, have to be careful.

        • The key order in before versions.

          {
            "header": {...},
            "body": {...}
          }
          
        • The key order in this version(10.0.0).

          {
            "body": {...},
            "header": {...}
          }
          
    • Disabled caches of dump and logical_range_filter when they execute on command_version 3.

      • Because of dump and logical_range_filter on command_version 3 returns stream since 10.0.0, Groonga can not cache the whole response.
  • logical_range_filter Added support for outputting response as Apache Arrow format.

    • Supported data type as below.

      • UInt8
      • Int8
      • UInt16
      • Int16
      • UInt32
      • Int32
      • UInt64
      • Int64
      • Time
      • ShortText
      • Text
      • LongText
      • Vector of Int32
      • Reference vector
  • Supported Ubuntu 20.04 (Focal Fossa).

  • Dropped Ubuntu 19.04 (Disco Dingo).

    • Because this version has been EOL.

Conclusion

See Release 10.0.0 2020-03-29 about detailed changes since 9.1.2

Let's search by Groonga!

2020-03-12

PGroonga (fast full text search module for PostgreSQL) 2.2.5 has been released

PGroonga 2.2.5 has been released! PGroonga makes PostgreSQL fast full text search for all languages.

If you are new user, see also About PGroonga.

Note

PGroonga 2.2.3 and 2.2.4 have below problems. Therefore please don't use them.

  • PGroonga 2.2.3

    • This version fails to install packages for Debian and Ubuntu. Because these packages fail to resolve the dependency.
  • PGroonga 2.2.4

    • This version fails to upgrade using ALTER EXTENSION pgroonga UPDATE;.

Highlight

Here are highlights after PGroonga 2.2.2:

  • Added support for CREATE TABLE, CREATE INDEX, and TRUNCATE in the same transaction.

  • Regulated the number of estimated search cost of PGroonga's index for easy to select it when searched records.

    • In particular, PostgreSQL choice PGroonga's index when the record includes many same tokens.
  • Fixed a bug that we failed to upgrade to PGroonga 2.2.4.

  • Fixed a bug that execution of the query that had not conditional expression failed if the table had only jsonb index of PGroonga.

  • Fixed a bug that the sequential scan occurred error when we used Groonga library ( libgroonga ) version 10.0.0 or later.

Added support for CREATE TABLE, CREATE INDEX, and TRUNCATE in the same transaction.

By until before versions, TRUNCATE failed when we make the index of PGroonga and execute TRUNCATE in the same transaction.

For example, TRUNCATE failed if below case.

BEGIN TRANSACTION;
CREATE EXTENSION IF NOT EXISTS pgroonga;
CREATE TABLE test (
    id SERIAL PRIMARY KEY,
    content text
);
CREATE INDEX test_id ON test USING pgroonga (content);
TRUNCATE TABLE test CASCADE;
COMMIT;

Fixed a bug that execution of the query that had not conditional expression failed if the table had only jsonb index of PGroonga.

For example, SELECT COUNT(*) failed if below case.

CREATE TABLE logs (
  record jsonb
);
CREATE INDEX pgroonga_index ON logs
  USING pgroonga (record pgroonga_jsonb_ops_v2);
INSERT INTO logs VALUES ('{}');
SET enable_seqscan = off;
SELECT count(*) FROM logs;

Fixed a bug that the sequential scan occurred error when we used Groonga library ( libgroonga ) version 10.0.0 or later.

This problem didn't occur if we installed a package for PGroonga. Only when it occurred if we installed PGroonga and Groonga that built from source.

For example, SELECT failed if below case.

CREATE TABLE memos (
  content varchar(256)
);

INSERT INTO memos VALUES ('Green apple');
INSERT INTO memos VALUES ('Apple');

CREATE INDEX pgrn_index ON memos
 USING pgroonga (content pgroonga_varchar_full_text_search_ops_v2);

SET enable_seqscan = on;
SET enable_indexscan = off;
SET enable_bitmapscan = off;

SELECT content, pgroonga_score(tableoid, ctid)
  FROM memos
 WHERE content &@~ 'Apple';

We can confirm version of libgroonga by below query.

SHOW pgroonga.libgroonga_version;

 pgroonga.libgroonga_version 
-----------------------------
 10.0.0
(1 row)

How to upgrade

This version is compatible with before versions. You can upgrade by steps in "Compatible case" in Upgrade document.

Conclusion

Try PGroonga when you want to perform fast full text search against all languages on PostgreSQL!

2020-01-29

Groonga 9.1.2 has been released

Groonga 9.1.2 has been released!

How to install: Install

Changes

Here are important changes in this release:

  • [tools] Added a script for copying only files of specify tables or columns.

    • This script name is copy-related-files.rb.
    • This script is useful if we want to extract specifying tables or columns from a huge database.
    • Related files of specific tables or columns may need for reproducing fault.
    • If we difficult to offer a database whole, we can extract related files of target tables or columns by this tool.
    • This tool uses as below.
    copy-related-files.rb \
      --destination=db.copy \
      --target=column.index \
      db
    
    • We specify the directory of copy destination by --destination.
    • We specify --target a table or a column to be copied.
      • We can specify this option multiple times to copy multiple tables or columns.
  • shutdown Accept /d/shutdown?mode=immediate immediately even when all threads are used.

    • This feature can only use on the Groonga HTTP server.
  • Unused objects free immediately by using GRN_ENABLE_REFERENCE_COUNT=yes.

    • This feature is experimental. Performance degrade by this feature.
    • If we load to span many tables, we can expect to keep in the usage of memory by this feature.

Conclusion

See Release 9.1.2 2020-01-29 about detailed changes since 9.1.1

Let's search by Groonga!