BloGroonga

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!