[Groonga-commit] pgroonga/pgroonga at d067f81 [master] Improve performance for operator against empty text[] value

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index