おしらせ

4.0.7: 2026-07-29

改良

[Ubuntu] Ubuntu 26.04 (Resolute Raccoon)をサポート

より大規模なデータに対しインデックス設定できるオプションを追加

PGroongaのインデックスは内部的には、Groongaのテーブルとして作成され、そこにインデックスのデータを追加します。デフォルトでは、このテーブルは TABLE_PAT_KEY です。

TABLE_PAT_KEY のトータルのキーサイズの上限は4GiBです。通常はこれで十分ですが、大規模なデータの環境では、データ追加時に"total key size is over"が発生することがあります。

この改良で、TABLE_PAT_KEY のトータルキーサイズの上限を4GiBから1TiBにするモードを新規に導入しました。この機能は、以下のように lexicon_flags_mapping を使うことで有効にできます。

CREATE TABLE memos (
  content text
);

CREATE INDEX pgrn_index ON memos
  USING pgroonga (content)
  WITH (lexicon_flags_mapping = '{
	  "content": ["LARGE"]
	}');

今のところ、このオプションは LARGE のみを指定できます。

[Debian] Debian GNU/Linux 12 (bookworm)のサポートをやめました

2026-06-10でEOLになったためです。

修正

PGroongaがUUIDカラムの値を32byteに切り詰めてしまう問題を修正

GH-947[Xuguang Wangさんの報告]

この問題は、Index Only scan または、マルチカラムインデックスでNOT NULLなカラムからUUIDの値を読み出す時にのみ発生します。UUIDの長さは33(32文字+NULL終端)ですが、ハイフンを含むUUIDは36文字になります。PGroongaは、ハイフンを含むUUIDを考慮していませんでした。

結果として、以下のような検索クエリーがエラーで失敗します:

CREATE TABLE data (
  id uuid NOT NULL
);

INSERT INTO data VALUES ('12345678-abcd-bcde-cdef-123456789012')

SELECT id
  FROM data
 WHERE id = '12345670-ABCD-BCDE-CDEF-123456789012';
-- ERROR:  invalid input syntax for type uuid: "12345670-ABCD-BCDE-CDEF-12345678"

Windows向けPGroongaがDebugモードでビルドされていた問題を修正

GH-954[r-setoyamaさんの報告]

PGroongaがデバッグモードでビルドされていると、PGroongaロード時にデバッグ用のランタイムDLLを要求します。しかし、通常のWindows環境にはデバッグ用のランタイムDLLはありません。

その結果、PGroongaの起動に失敗することがあります。

WHERE句を持つUPDATEとVACUUMが同時期に実行された時にクラッシュすることがある問題を修正

WHERE句を持つUPDATEとVACUUMが同時期に実行されると、PGroongaは開いているgrn_objを閉じますが、この閉じたgrn_objはWHERE句の評価時に参照されることがあり、それが原因でクラッシュすることがあります。

このリリースで、この競合状態を防止する条件を追加しました。

感謝

4.0.6: 2026-04-07

改良

PostgreSQL 13のサポートをやめました

PostgreSQL 13は2025-11でEOLになったためです。

修正

pgroonga_tokenize()に無効なトークナイザーを指定してもエラーを出さない問題を修正

GH-930[plw-pgさんの報告]

PGroongaは、以下のようにtokenizerに無効な値を設定してもエラーを出していませんでした。この修正でエラーを出すようになります。

SELECT pgroonga_tokenize('This is a pen.',
                         'tokenizer', 'invalid');

pgroonga.force_match_escalation = onがWindows版のPostgreSQL 18で動作しない問題を修正

GH-814

pgroonga_normalize()pgroonga_query_extract_keywords()のメモリーリークを修正

これらの関数が呼ばれるたび、メモリーリークが発生していました。

感謝

4.0.5: 2025-12-12

改良

セマンティックサーチをサポート

セマンティック検索が利用可能になりました。

まだ実験的な機能です。

インデックスの作成方法と検索方法については、以下のドキュメントをご覧ください。

pgroonga_language_model_vectorize()関数を追加

まだ実験的な機能です。

この関数は指定されたテキストの正規化されたエンべディングを返します。

修正

LIKEまたはILIKEORを使ったときにPGroongaがレコードを返さない問題を修正

GH-916

kurita0さんの報告。

PostgreSQLがseqscanを選択した場合は、この問題は発生しません。 この問題は、以下のようにPostgreSQLがindexscanまたはbitmapscanを選択した際に発生します。

CREATE TABLE memos (
  id integer,
  content text
);

INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');

CREATE INDEX grnindex
    ON memos
 USING pgroonga (content pgroonga_text_full_text_search_ops_v2)
  WITH (tokenizer='TokenNgram("unify_alphabet", false)');

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

EXPLAIN (COSTS OFF)
SELECT id, content
  FROM memos
 WHERE content LIKE 'Po%' OR content LIKE 'Gr%';
                      QUERY PLAN                      
------------------------------------------------------
 Index Scan using grnindex on memos
   Index Cond: (content ~~ ANY ('{Po%,Gr%}'::text[]))
(2 rows)

SELECT id, content
  FROM memos
 WHERE content LIKE 'Po%' OR content LIKE 'Gr%';
 id | content
----+---------
(0 rows)

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

EXPLAIN (COSTS OFF)
SELECT id, content
  FROM memos
 WHERE content LIKE 'Po%' OR content LIKE 'Gr%';
                               QUERY PLAN                               
------------------------------------------------------------------------
 Bitmap Heap Scan on memos
   Recheck Cond: ((content ~~ 'Po%'::text) OR (content ~~ 'Gr%'::text))
   ->  Bitmap Index Scan on grnindex
         Index Cond: (content ~~ ANY ('{Po%,Gr%}'::text[]))
(4 rows)

SELECT id, content
  FROM memos
 WHERE content LIKE 'Po%' OR content LIKE 'Gr%';
 id | content
----+---------
(0 rows)

感謝

4.0.4: 2025-10-02

改良

PostgreSQL 18をサポート

PostgreSQL 18向けのパッケージを提供しました。

[Debian] Debian GNU/Linux trixieをサポート

Debian GNU/Linux trixie 向けのパッケージを提供しました。

[AlmaLinux] AlmaLinux 10をサポート

AlmaLinux 10向けのRPMパッケージを提供しました。

[AlmaLinux] AlmaLinux 9のPostgreSQL 14をサポート

Almalinux 9のPostgreSQL 14向けのパッケージを提供出来ていなかったため、提供しました。

PostgreSQL 18でソート済みインデックススキャンをサポート

GH-771

PostgreSQL 18以降で、PostgreSQLのプランナはPGroongaをソート可能なインデックスとして認識できるようになりました。

WHERE ... ORDER BY ... LIMITのようなクエリで、PGroongaで絞り込みとソート済みのレコードをPostgreSQLに返すことができます。 これにより、多くのレコードがマッチするときの応答時間の改善が見込めます。

CREATE TABLE messages (
  id serial,
  content text
);

CREATE INDEX messages_index ON messages
  USING PGroonga (content, id);

INSERT INTO messages (content)
  SELECT content FROM (SELECT 'a' AS content, generate_series(0, 9999)) AS values;
INSERT INTO messages (content)
  SELECT content FROM (SELECT 'b' AS content, generate_series(0, 9999)) AS values;
INSERT INTO messages (content)
  SELECT content FROM (SELECT 'c' AS content, generate_series(0, 9999)) AS values;

EXPLAIN ANALYZE VERBOSE
  SELECT * FROM messages
    WHERE content = 'b'
    ORDER BY id DESC LIMIT 10;
--                                                                        QUERY PLAN
-- --------------------------------------------------------------------------------------------------------------------------------------------------------
--  Limit  (cost=0.00..6.67 rows=10 width=36) (actual time=0.385..0.389 rows=10.00 loops=1)
--    Output: id, content
--    Buffers: shared hit=1
--    ->  Index Scan Backward using messages_index on public.messages  (cost=0.00..100.02 rows=150 width=36) (actual time=0.384..0.387 rows=10.00 loops=1)
--          Output: id, content
--          Index Cond: (messages.content = 'b'::text)
--          Index Searches: 0
--          Buffers: shared hit=1
--  Planning:
--    Buffers: shared hit=35
--  Planning Time: 5.679 ms
--  Execution Time: 0.438 ms
-- (12 rows)

4.0.2: 2025-09-12

改良

最新のDockerイメージを公開

Dockerイメージを更新し、最新のPostgreSQLリリースバージョンに対応しました。対応バージョンは次のとおりです。

4.0.1: 2025-02-14

This is a bug fix release.

改良

Dropped support for Ubuntu 20.04

GH-709

Because Ubuntu 20.04 will reach EOL on 2025-05.

修正

Fixed an upgrade bug

GH-713

It depends on initial PGroonga version you installed whether this happens or not. If you installed PGroonga 2.4.1 or earlier as the initial version, this will happen. There was a bug in 2.4.1 to 2.4.2 upgrade code. pgroonga.snippet_html() signature wasn't upgraded.

If you installed PGroonga 2.4.1 or earlier as the initial version, you can ALTER EXTENSION pgroonga UPGRADE without error with 4.0.1.

If you installed PGroonga 2.4.2 or later as the initial version, you don't need 4.0.1. 4.0.0 works.

Reported by Tim Abbott. Thanks!!!

感謝

4.0.0: 2025-02-09

This is a major release!

This release includes backward incompatibility changes. But they are affected to only users who still use PGroonga 1 API (pgroonga.XXX API). PGroonga 1 API was deprecated when we released PGroonga 2.0.0 on 2017-08-17. It's about 8 years ago. We hope that nobody is still using PGroonga 1 API.

If you're still using PGroonga 1 API, you should migrate to PGroonga 2.0.0 or API (pgroonga.XXX -> pgroonga_XXX) before you upgrade to PGroonga 4.0.0.

改良

修正

感謝

3.2.5: 2024-12-05

改良

修正

3.2.4: 2024-10-03

改良

3.2.3: 2024-09-25

改良

修正

感謝

3.2.2: 2024-08-05

改良

修正

3.2.1: 2024-07-04

改良

修正

3.2.0: 2024-04-18

修正

3.1.9: 2024-03-27

改良

3.1.8: 2024-02-27

修正

3.1.7: 2024-02-05

改良

修正

3.1.6: 2024-01-10

改良

修正

感謝

3.1.5: 2023-09-29

修正

3.1.4: 2023-09-29

改良

3.1.3: 2023-08-17

修正

3.1.2: 2023-08-09

改良

修正

3.1.1: 2023-07-25

改良

3.1.0: 2023-07-12

改良

修正

3.0.9: 2023-07-03

改良

3.0.8: 2023-06-22

改良

3.0.7: 2023-06-13

改良

感謝

3.0.6: 2023-06-01

改良

修正

3.0.5: 2023-05-31

改良

修正

3.0.4: 2023-05-29

改良

修正

3.0.3: 2023-05-18

修正

感謝

3.0.2: 2023-05-11

修正

感謝

3.0.1: 2023-04-27

改良

修正

感謝

3.0.0: 2023-04-13

改良

感謝

2.4.7: 2023-03-27

改良

修正

感謝

2.4.6: 2023-03-24

改良

感謝

2.4.5: 2023-03-06

修正

感謝

2.4.4: 2023-01-29

改良

2.4.3: 2023-01-06

改良

修正

感謝

2.4.2: 2022-11-29

改良

修正

既知の問題

感謝

2.4.1: 2022-10-28

改良

感謝

2.4.0: 2022-10-07

改良

感謝

2.3.9: 2022-09-14

修正

2.3.8: 2022-08-08

改良

感謝

2.3.7: 2022-06-07

2.3.6: 2022-03-17

修正

2.3.5: 2022-03-09

改良

修正

感謝

2.3.4: 2021-11-09

改良

修正

2.3.3: 2021-11-05

改良

2.3.2: 2021-10-04

改良

修正

2.3.1: 2021-08-05

PGroonga requires Groonga 11.0.5 since this version.

改良

感謝

2.3.0: 2021-05-14

改良

修正

感謝

2.2.9: 2021-04-04

改良

感謝

2.2.8: 2020-12-27

改良

修正

感謝

2.2.7: 2020-11-10

改良

修正

感謝

2.2.6: 2020-07-01

NOTE: If you have PGroonga index for jsonb, you need to reindex all your PGroonga indexes for jsonb after you upgrade to this version. This version has a fix for jsonb.

改良

修正

感謝

2.2.5: 2020-03-12

修正

2.2.4: 2020-03-12

修正

感謝

2.2.3: 2020-03-11

改良

修正

感謝

2.2.2: 2019-11-14

改良

修正

2.2.1: 2019-07-19

改良

修正

2.2.0: 2019-06-05

改良

2.1.9: 2019-05-08

改良

2.1.8: 2019-01-11

改良

2.1.7: 2018-12-25

改良

修正

感謝

2.1.6: 2018-10-18

改良

修正

感謝

2.1.4: 2018-09-18

改良

感謝

2.1.3: 2018-09-11

改良

修正

感謝

2.1.2: 2018-08-23

改良

修正

2.1.1: 2018-08-08

修正

2.1.0: 2018-08-08

改良

修正

感謝

2.0.9: 2018-07-04

修正

2.0.8: 2018-07-03

改良

2.0.7: 2018-06-07

改良

修正

2.0.6: 2018-05-14

改良

修正

感謝

2.0.5: 2018-04-04

改良

修正

2.0.4: 2018-03-22

改良

感謝

2.0.3: 2018-03-08

改良

修正

感謝

2.0.2: 2017-10-10

改良

修正

感謝

2.0.1: 2017-08-17

修正

2.0.0: 2017-08-17

This is the second major release! It's upgradable from 1.X! 2.X is backward compatible with 1.X!

改良

修正

感謝

1.2.3: 2017-07-03

修正

1.2.2: 2017-07-03

改良

感謝

1.2.1: 2017-06-08

改良

修正

感謝

1.2.0: 2017-04-29

改良

修正

1.1.9: 2016-11-30

改良

修正

1.1.8: 2016-11-09

改良

1.1.7: 2016-11-03

修正

1.1.6: 2016-11-03

改良

修正

感謝

1.1.5: 2016-10-22

改良

修正

感謝

1.1.4: 2016-10-08

改良

修正

感謝

1.1.3: 2016-09-29

改良

修正

感謝

1.1.2: 2016-09-07

改良

修正

感謝

1.1.1: 2016-08-31

改良

修正

感謝

1.1.0: 2016-06-06

改良

1.0.9: 2016-06-02

改良

1.0.8: 2016-05-21

改良

修正

感謝

1.0.7: 2016-04-24

改良

1.0.6: 2016-04-15

改良

感謝

1.0.5: 2016-03-01

修正

1.0.4: 2016-03-01

修正

1.0.3: 2016-02-29

改良

修正

感謝

1.0.2: 2016-02-09

改良

修正

感謝

1.0.1: 2015-12-29

改良

修正

感謝

1.0.0: 2015-10-29

It's the first major release!!!

You need to run DROP EXTENSION pgroonga CASCADE, upgrade PGroonga binary, run CREATE EXTENSION pgroonga and create indexes again to upgrade to 1.0.0 from older versions.

改良

感謝

0.9.0: 2015-09-29

You can update to 0.9.0 from 0.8.0 by override install and executing the following SQL:

ALTER EXTENSION pgroonga UPDATE;

You don't need to re-create pgroonga indexes.

改良

0.8.0: 2015-09-01

You can update to 0.8.0 from 0.7.0 by override install. You don't need to re-create pgroonga indexes.

改良

感謝

0.7.0: 2015-07-10

You can update to 0.6.0 from 0.5.0 by override install. You don't need to re-create pgroonga indexes.

改良

修正

0.6.0: 2015-05-29

You can update to 0.6.0 from 0.5.0 by override install. You don't need to re-create pgroonga indexes.

改良

修正

0.5.0: 2015-04-29

You can't upgrade to 0.5.0 from 0.4.0 without re-creating pgroonga index. You need to re-install PGroonga:

DROP EXTENSION pgroonga CASCADE;
CREATE EXTENSION pgroonga;
-- Create your pgroonga indexes again.

改良

変更

0.4.0: 2015-03-29

You can't upgrade to 0.4.0 from 0.3.0 without re-creating pgroonga index. You need to re-install PGroonga:

DROP EXTENSION pgroonga CASCADE;
CREATE EXTENSION pgroonga;
-- Create your pgroonga indexes again.

改良

変更

0.3.0: 2015-02-09

You can't upgrade to 0.3.0 from 0.2.0 without re-creating pgroonga index. You need to re-install PGroonga:

DROP EXTENSION pgroonga CASCADE;
CREATE EXTENSION pgroonga;
-- Create your pgroonga indexes again.

改良

変更

0.2.0: 2015-01-29

The first release!!!