Kouhei Sutou
null+****@clear*****
Mon Jun 19 11:48:17 JST 2017
Kouhei Sutou 2017-06-19 11:48:17 +0900 (Mon, 19 Jun 2017) New Revision: d067f812354ecf1ad5c77f04c43b50fcaceeeff2 https://github.com/pgroonga/pgroonga/commit/d067f812354ecf1ad5c77f04c43b50fcaceeeff2 Message: Improve performance for operator against empty text[] value Modified files: expected/term-search/text-array/prefix/bitmapscan.out expected/term-search/text-array/prefix/indexscan.out expected/term-search/text-array/prefix/seqscan.out sql/term-search/text-array/prefix/bitmapscan.sql sql/term-search/text-array/prefix/indexscan.sql sql/term-search/text-array/prefix/seqscan.sql src/pgroonga.c Modified: expected/term-search/text-array/prefix/bitmapscan.out (+1 -0) =================================================================== --- expected/term-search/text-array/prefix/bitmapscan.out 2017-06-19 11:45:23 +0900 (37f91b7) +++ expected/term-search/text-array/prefix/bitmapscan.out 2017-06-19 11:48:17 +0900 (b652841) @@ -4,6 +4,7 @@ CREATE TABLE tags ( INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']); INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']); INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']); +INSERT INTO tags VALUES (ARRAY[]::text[]); CREATE INDEX pgrn_index ON tags USING pgroonga (names pgroonga.text_array_term_search_ops_v2); SET enable_seqscan = off; Modified: expected/term-search/text-array/prefix/indexscan.out (+1 -0) =================================================================== --- expected/term-search/text-array/prefix/indexscan.out 2017-06-19 11:45:23 +0900 (a3d37a3) +++ expected/term-search/text-array/prefix/indexscan.out 2017-06-19 11:48:17 +0900 (dfd7026) @@ -4,6 +4,7 @@ CREATE TABLE tags ( INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']); INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']); INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']); +INSERT INTO tags VALUES (ARRAY[]::text[]); CREATE INDEX pgrn_index ON tags USING pgroonga (names pgroonga.text_array_term_search_ops_v2); SET enable_seqscan = off; Modified: expected/term-search/text-array/prefix/seqscan.out (+1 -0) =================================================================== --- expected/term-search/text-array/prefix/seqscan.out 2017-06-19 11:45:23 +0900 (d927967) +++ expected/term-search/text-array/prefix/seqscan.out 2017-06-19 11:48:17 +0900 (09c1540) @@ -4,6 +4,7 @@ CREATE TABLE tags ( INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']); INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']); INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']); +INSERT INTO tags VALUES (ARRAY[]::text[]); SET enable_seqscan = on; SET enable_indexscan = off; SET enable_bitmapscan = off; Modified: sql/term-search/text-array/prefix/bitmapscan.sql (+1 -0) =================================================================== --- sql/term-search/text-array/prefix/bitmapscan.sql 2017-06-19 11:45:23 +0900 (a958186) +++ sql/term-search/text-array/prefix/bitmapscan.sql 2017-06-19 11:48:17 +0900 (14d8050) @@ -5,6 +5,7 @@ CREATE TABLE tags ( INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']); INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']); INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']); +INSERT INTO tags VALUES (ARRAY[]::text[]); CREATE INDEX pgrn_index ON tags USING pgroonga (names pgroonga.text_array_term_search_ops_v2); Modified: sql/term-search/text-array/prefix/indexscan.sql (+1 -0) =================================================================== --- sql/term-search/text-array/prefix/indexscan.sql 2017-06-19 11:45:23 +0900 (4665ed3) +++ sql/term-search/text-array/prefix/indexscan.sql 2017-06-19 11:48:17 +0900 (117c36a) @@ -5,6 +5,7 @@ CREATE TABLE tags ( INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']); INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']); INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']); +INSERT INTO tags VALUES (ARRAY[]::text[]); CREATE INDEX pgrn_index ON tags USING pgroonga (names pgroonga.text_array_term_search_ops_v2); Modified: sql/term-search/text-array/prefix/seqscan.sql (+1 -0) =================================================================== --- sql/term-search/text-array/prefix/seqscan.sql 2017-06-19 11:45:23 +0900 (ac5ea89) +++ sql/term-search/text-array/prefix/seqscan.sql 2017-06-19 11:48:17 +0900 (a477b04) @@ -5,6 +5,7 @@ CREATE TABLE tags ( INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']); INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']); INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']); +INSERT INTO tags VALUES (ARRAY[]::text[]); SET enable_seqscan = on; SET enable_indexscan = off; Modified: src/pgroonga.c (+3 -0) =================================================================== --- src/pgroonga.c 2017-06-19 11:45:23 +0900 (64c4807) +++ src/pgroonga.c 2017-06-19 11:48:17 +0900 (877bdd8) @@ -1531,6 +1531,9 @@ pgroonga_execute_binary_operator_in_string_array(ArrayType *operands1, { int i, n; + if (ARR_NDIM(operands1) == 0) + return false; + n = ARR_DIMS(operands1)[0]; for (i = 1; i <= n; i++) { -------------- next part -------------- HTML����������������������������...Download