[Groonga-commit] pgroonga/pgroonga at 4853145 [master] Use "|" suffix instead of ">" suffix for "any of element" operator

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Jun 4 22:59:33 JST 2017


Kouhei Sutou	2017-06-04 22:59:33 +0900 (Sun, 04 Jun 2017)

  New Revision: 48531453299c665b733ea83c8bb1bc8302931668
  https://github.com/pgroonga/pgroonga/commit/48531453299c665b733ea83c8bb1bc8302931668

  Message:
    Use "|" suffix instead of ">" suffix for "any of element" operator
    
    Because PostgreSQL uses "|" suffix for "any of elements" such as "?|"
    for jsonb.

  Copied files:
    expected/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.out
      (from expected/full-text-search/text/single/match-in-v2/bitmapscan.out)
    expected/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.out
      (from expected/full-text-search/text/single/match-in-v2/indexscan.out)
    expected/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.out
      (from expected/full-text-search/text/single/match-in-v2/seqscan.out)
    expected/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.out
      (from expected/full-text-search/text/single/query-in-v2/bitmapscan.out)
    expected/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.out
      (from expected/full-text-search/text/single/query-in-v2/indexscan.out)
    expected/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.out
      (from expected/full-text-search/text/single/query-in-v2/seqscan.out)
    expected/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.out
      (from expected/term-search/text-array/prefix-rk-in/bitmapscan.out)
    expected/term-search/text-array/compatibility/v2/prefix-rk/indexscan.out
      (from expected/term-search/text-array/prefix-rk-in/indexscan.out)
    expected/term-search/text-array/compatibility/v2/prefix-rk/seqscan.out
      (from expected/term-search/text-array/prefix-rk-in/seqscan.out)
    expected/term-search/text-array/compatibility/v2/prefix/bitmapscan.out
      (from expected/term-search/text-array/prefix-in/bitmapscan.out)
    expected/term-search/text-array/compatibility/v2/prefix/indexscan.out
      (from expected/term-search/text-array/prefix-in/indexscan.out)
    expected/term-search/text-array/compatibility/v2/prefix/seqscan.out
      (from expected/term-search/text-array/prefix-in/seqscan.out)
    sql/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.sql
      (from sql/full-text-search/text/single/match-in-v2/bitmapscan.sql)
    sql/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.sql
      (from sql/full-text-search/text/single/match-in-v2/indexscan.sql)
    sql/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.sql
      (from sql/full-text-search/text/single/match-in-v2/seqscan.sql)
    sql/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.sql
      (from sql/full-text-search/text/single/query-in-v2/bitmapscan.sql)
    sql/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.sql
      (from sql/full-text-search/text/single/query-in-v2/indexscan.sql)
    sql/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.sql
      (from sql/full-text-search/text/single/query-in-v2/seqscan.sql)
    sql/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.sql
      (from sql/term-search/text-array/prefix-rk-in/bitmapscan.sql)
    sql/term-search/text-array/compatibility/v2/prefix-rk/indexscan.sql
      (from sql/term-search/text-array/prefix-rk-in/indexscan.sql)
    sql/term-search/text-array/compatibility/v2/prefix-rk/seqscan.sql
      (from sql/term-search/text-array/prefix-rk-in/seqscan.sql)
    sql/term-search/text-array/compatibility/v2/prefix/bitmapscan.sql
      (from sql/term-search/text-array/prefix-in/bitmapscan.sql)
    sql/term-search/text-array/compatibility/v2/prefix/indexscan.sql
      (from sql/term-search/text-array/prefix-in/indexscan.sql)
    sql/term-search/text-array/compatibility/v2/prefix/seqscan.sql
      (from sql/term-search/text-array/prefix-in/seqscan.sql)
  Modified files:
    data/pgroonga--1.2.0--1.2.1.sql
    data/pgroonga.sql
    expected/full-text-search/text-array/single/match-contain-v2/bitmapscan.out
    expected/full-text-search/text-array/single/match-contain-v2/indexscan.out
    expected/full-text-search/text-array/single/match-contain-v2/seqscan.out
    expected/full-text-search/text-array/single/query-contain-v2/bitmapscan.out
    expected/full-text-search/text-array/single/query-contain-v2/indexscan.out
    expected/full-text-search/text-array/single/query-contain-v2/seqscan.out
    expected/full-text-search/text/single/match-in-v2/bitmapscan.out
    expected/full-text-search/text/single/match-in-v2/indexscan.out
    expected/full-text-search/text/single/match-in-v2/seqscan.out
    expected/full-text-search/text/single/query-in-v2/bitmapscan.out
    expected/full-text-search/text/single/query-in-v2/indexscan.out
    expected/full-text-search/text/single/query-in-v2/seqscan.out
    expected/full-text-search/varchar/single/match-in-v2/bitmapscan.out
    expected/full-text-search/varchar/single/match-in-v2/indexscan.out
    expected/full-text-search/varchar/single/match-in-v2/seqscan.out
    expected/full-text-search/varchar/single/query-in-v2/bitmapscan.out
    expected/full-text-search/varchar/single/query-in-v2/indexscan.out
    expected/full-text-search/varchar/single/query-in-v2/seqscan.out
    expected/term-search/text-array/prefix-in/bitmapscan.out
    expected/term-search/text-array/prefix-in/indexscan.out
    expected/term-search/text-array/prefix-in/seqscan.out
    expected/term-search/text-array/prefix-rk-in/bitmapscan.out
    expected/term-search/text-array/prefix-rk-in/indexscan.out
    expected/term-search/text-array/prefix-rk-in/seqscan.out
    expected/term-search/text/prefix-in/bitmapscan.out
    expected/term-search/text/prefix-in/indexscan.out
    expected/term-search/text/prefix-in/seqscan.out
    expected/term-search/text/prefix-rk-in/bitmapscan.out
    expected/term-search/text/prefix-rk-in/indexscan.out
    expected/term-search/text/prefix-rk-in/seqscan.out
    sql/full-text-search/text-array/single/match-contain-v2/bitmapscan.sql
    sql/full-text-search/text-array/single/match-contain-v2/indexscan.sql
    sql/full-text-search/text-array/single/match-contain-v2/seqscan.sql
    sql/full-text-search/text-array/single/query-contain-v2/bitmapscan.sql
    sql/full-text-search/text-array/single/query-contain-v2/indexscan.sql
    sql/full-text-search/text-array/single/query-contain-v2/seqscan.sql
    sql/full-text-search/text/single/match-in-v2/bitmapscan.sql
    sql/full-text-search/text/single/match-in-v2/indexscan.sql
    sql/full-text-search/text/single/match-in-v2/seqscan.sql
    sql/full-text-search/text/single/query-in-v2/bitmapscan.sql
    sql/full-text-search/text/single/query-in-v2/indexscan.sql
    sql/full-text-search/text/single/query-in-v2/seqscan.sql
    sql/full-text-search/varchar/single/match-in-v2/bitmapscan.sql
    sql/full-text-search/varchar/single/match-in-v2/indexscan.sql
    sql/full-text-search/varchar/single/match-in-v2/seqscan.sql
    sql/full-text-search/varchar/single/query-in-v2/bitmapscan.sql
    sql/full-text-search/varchar/single/query-in-v2/indexscan.sql
    sql/full-text-search/varchar/single/query-in-v2/seqscan.sql
    sql/term-search/text-array/prefix-in/bitmapscan.sql
    sql/term-search/text-array/prefix-in/indexscan.sql
    sql/term-search/text-array/prefix-in/seqscan.sql
    sql/term-search/text-array/prefix-rk-in/bitmapscan.sql
    sql/term-search/text-array/prefix-rk-in/indexscan.sql
    sql/term-search/text-array/prefix-rk-in/seqscan.sql
    sql/term-search/text/prefix-in/bitmapscan.sql
    sql/term-search/text/prefix-in/indexscan.sql
    sql/term-search/text/prefix-in/seqscan.sql
    sql/term-search/text/prefix-rk-in/bitmapscan.sql
    sql/term-search/text/prefix-rk-in/indexscan.sql
    sql/term-search/text/prefix-rk-in/seqscan.sql
    src/pgroonga.c
    src/pgroonga.h

  Modified: data/pgroonga--1.2.0--1.2.1.sql (+96 -25)
===================================================================
--- data/pgroonga--1.2.0--1.2.1.sql    2017-06-01 22:11:25 +0900 (dedf9c6)
+++ data/pgroonga--1.2.0--1.2.1.sql    2017-06-04 22:59:33 +0900 (7f535d9)
@@ -1,8 +1,64 @@
--- Add v1 compatible operators to full text search ops for text
-ALTER OPERATOR FAMILY pgroonga.text_full_text_search_ops_v2 USING pgroonga
-	ADD
-		OPERATOR 8 %% (text, text),
-		OPERATOR 9 @@ (text, text);
+-- Update pgroonga.text_full_text_search_ops_v2
+DROP OPERATOR CLASS pgroonga.text_full_text_search_ops_v2 USING pgroonga;
+DROP OPERATOR &@> (text, text[]);
+DROP OPERATOR &?> (text, text[]);
+DROP FUNCTION pgroonga.match_contain_text(text[], text);
+DROP FUNCTION pgroonga.query_contain_text(text[], text);
+
+CREATE FUNCTION pgroonga.match_in_text(text, text[])
+	RETURNS bool
+	AS 'MODULE_PATHNAME', 'pgroonga_match_in_text'
+	LANGUAGE C
+	IMMUTABLE
+	STRICT;
+
+/* Deprecated since 1.2.1. */
+CREATE OPERATOR &@> (
+	PROCEDURE = pgroonga.match_in_text,
+	LEFTARG = text,
+	RIGHTARG = text[]
+);
+
+CREATE OPERATOR &@| (
+	PROCEDURE = pgroonga.match_in_text,
+	LEFTARG = text,
+	RIGHTARG = text[]
+);
+
+CREATE FUNCTION pgroonga.query_in_text(text, text[])
+	RETURNS bool
+	AS 'MODULE_PATHNAME', 'pgroonga_query_in_text'
+	LANGUAGE C
+	IMMUTABLE
+	STRICT;
+
+/* Deprecated since 1.2.1. */
+CREATE OPERATOR &?> (
+	PROCEDURE = pgroonga.query_in_text,
+	LEFTARG = text,
+	RIGHTARG = text[]
+);
+
+CREATE OPERATOR &?| (
+	PROCEDURE = pgroonga.query_in_text,
+	LEFTARG = text,
+	RIGHTARG = text[]
+);
+
+CREATE OPERATOR CLASS pgroonga.text_full_text_search_ops_v2 FOR TYPE text
+	USING pgroonga AS
+		OPERATOR 6 ~~,
+		OPERATOR 7 ~~*,
+		OPERATOR 8 %%, -- For backward compatibility
+		OPERATOR 9 @@, -- For backward compatibility
+		OPERATOR 12 &@,
+		OPERATOR 13 &?,
+		OPERATOR 14 &~?,
+		OPERATOR 15 &`,
+		OPERATOR 18 &@| (text, text[]),
+		OPERATOR 19 &?| (text, text[]),
+		OPERATOR 26 &@> (text, text[]), -- For backward compatibility
+		OPERATOR 27 &?> (text, text[]); -- For backward compatibility
 
 -- Add pgroonga.text_array_full_text_search_ops_v2
 CREATE FUNCTION pgroonga.match_text_array(text[], text)
@@ -64,7 +120,7 @@ CREATE FUNCTION pgroonga.match_in_text_array(text[], text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &@> (
+CREATE OPERATOR &@| (
 	PROCEDURE = pgroonga.match_in_text_array,
 	LEFTARG = text[],
 	RIGHTARG = text[]
@@ -77,7 +133,7 @@ CREATE FUNCTION pgroonga.query_in_text_array(text[], text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &?> (
+CREATE OPERATOR &?| (
 	PROCEDURE = pgroonga.query_in_text_array,
 	LEFTARG = text[],
 	RIGHTARG = text[]
@@ -92,8 +148,8 @@ CREATE OPERATOR CLASS pgroonga.text_array_full_text_search_ops_v2
 		OPERATOR 13 &? (text[], text),
 		OPERATOR 14 &~? (text[], text),
 		OPERATOR 15 &` (text[], text),
-		OPERATOR 18 &@> (text[], text[]),
-		OPERATOR 19 &?> (text[], text[]);
+		OPERATOR 18 &@| (text[], text[]),
+		OPERATOR 19 &?| (text[], text[]);
 
 -- Add pgroonga.varchar_full_text_search_ops_v2
 CREATE FUNCTION pgroonga.match_varchar(varchar, varchar)
@@ -155,7 +211,7 @@ CREATE FUNCTION pgroonga.match_in_varchar(varchar, varchar[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &@> (
+CREATE OPERATOR &@| (
 	PROCEDURE = pgroonga.match_in_varchar,
 	LEFTARG = varchar,
 	RIGHTARG = varchar[]
@@ -168,7 +224,7 @@ CREATE FUNCTION pgroonga.query_in_varchar(varchar, varchar[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &?> (
+CREATE OPERATOR &?| (
 	PROCEDURE = pgroonga.query_in_varchar,
 	LEFTARG = varchar,
 	RIGHTARG = varchar[]
@@ -183,8 +239,8 @@ CREATE OPERATOR CLASS pgroonga.varchar_full_text_search_ops_v2
 		OPERATOR 13 &?,
 		OPERATOR 14 &~?,
 		OPERATOR 15 &`,
-		OPERATOR 18 &@> (varchar, varchar[]),
-		OPERATOR 19 &?> (varchar, varchar[]);
+		OPERATOR 18 &@| (varchar, varchar[]),
+		OPERATOR 19 &?| (varchar, varchar[]);
 
 -- Add v2 compatible operators to full text search ops for varchar
 ALTER OPERATOR FAMILY pgroonga.varchar_full_text_search_ops USING pgroonga
@@ -192,10 +248,9 @@ ALTER OPERATOR FAMILY pgroonga.varchar_full_text_search_ops USING pgroonga
 		OPERATOR 12 &@ (varchar, varchar),
 		OPERATOR 13 &? (varchar, varchar);
 
--- Add &^> and &^~> to pgroonga.text_term_search_ops_v2.
+-- Add &^| and &^~| to pgroonga.text_term_search_ops_v2.
 -- Add &^ and &^~ to pgroonga.text_array_term_search_ops_v2.
--- &^> and &^~> signatures are changed to
--- (text[], text[]) and (text, text[]) from (text[], text).
+-- &^> and &^~> are alias of &^ and &^~.
 DROP OPERATOR CLASS pgroonga.text_array_term_search_ops_v2 USING pgroonga;
 DROP OPERATOR &^> (text[], text);
 DROP OPERATOR &^~> (text[], text);
@@ -215,6 +270,13 @@ CREATE OPERATOR &^ (
 	RIGHTARG = text
 );
 
+/* Deprecated since 1.2.1. */
+CREATE OPERATOR &^> (
+	PROCEDURE = pgroonga.prefix_text_array,
+	LEFTARG = text[],
+	RIGHTARG = text
+);
+
 CREATE FUNCTION pgroonga.prefix_rk_text_array(text[], text)
 	RETURNS bool
 	AS 'MODULE_PATHNAME', 'pgroonga_prefix_rk_text_array'
@@ -228,6 +290,13 @@ CREATE OPERATOR &^~ (
 	RIGHTARG = text
 );
 
+/* Deprecated since 1.2.1. */
+CREATE OPERATOR &^~> (
+	PROCEDURE = pgroonga.prefix_rk_text_array,
+	LEFTARG = text[],
+	RIGHTARG = text
+);
+
 CREATE FUNCTION pgroonga.prefix_in_text(text, text[])
 	RETURNS bool
 	AS 'MODULE_PATHNAME', 'pgroonga_prefix_in_text'
@@ -235,7 +304,7 @@ CREATE FUNCTION pgroonga.prefix_in_text(text, text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &^> (
+CREATE OPERATOR &^| (
 	PROCEDURE = pgroonga.prefix_in_text,
 	LEFTARG = text,
 	RIGHTARG = text[]
@@ -248,7 +317,7 @@ CREATE FUNCTION pgroonga.prefix_in_text_array(text[], text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &^> (
+CREATE OPERATOR &^| (
 	PROCEDURE = pgroonga.prefix_in_text_array,
 	LEFTARG = text[],
 	RIGHTARG = text[]
@@ -261,7 +330,7 @@ CREATE FUNCTION pgroonga.prefix_rk_in_text(text, text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &^~> (
+CREATE OPERATOR &^~| (
 	PROCEDURE = pgroonga.prefix_rk_in_text,
 	LEFTARG = text,
 	RIGHTARG = text[]
@@ -274,7 +343,7 @@ CREATE FUNCTION pgroonga.prefix_rk_in_text_array(text[], text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &^~> (
+CREATE OPERATOR &^~| (
 	PROCEDURE = pgroonga.prefix_rk_in_text_array,
 	LEFTARG = text[],
 	RIGHTARG = text[]
@@ -282,15 +351,17 @@ CREATE OPERATOR &^~> (
 
 ALTER OPERATOR FAMILY pgroonga.text_term_search_ops_v2 USING pgroonga
 	ADD
-		OPERATOR 20 &^> (text, text[]),
-		OPERATOR 21 &^~> (text, text[]);
+		OPERATOR 20 &^| (text, text[]),
+		OPERATOR 21 &^~| (text, text[]);
 
 CREATE OPERATOR CLASS pgroonga.text_array_term_search_ops_v2 FOR TYPE text[]
 	USING pgroonga AS
 		OPERATOR 16 &^ (text[], text),
 		OPERATOR 17 &^~ (text[], text),
-		OPERATOR 20 &^> (text[], text[]),
-		OPERATOR 21 &^~> (text[], text[]);
+		OPERATOR 20 &^| (text[], text[]),
+		OPERATOR 21 &^~| (text[], text[]),
+		OPERATOR 24 &^> (text[], text), -- For backward compatibility
+		OPERATOR 25 &^~> (text[], text); -- For backward compatibility
 
 -- Add pgroonga.text_regexp_ops_v2.
 -- Add pgroonga.varchar_regexp_ops_v2.
@@ -299,7 +370,7 @@ BEGIN
 	SELECT amstrategies FROM pg_am LIMIT 0;
 EXCEPTION
 	WHEN syntax_error THEN
-		UPDATE pg_am SET amstrategies = 23
+		UPDATE pg_am SET amstrategies = 25
 		 WHERE amname = 'pgroonga';
 END;
 $$;

  Modified: data/pgroonga.sql (+51 -19)
===================================================================
--- data/pgroonga.sql    2017-06-01 22:11:25 +0900 (54f30d1)
+++ data/pgroonga.sql    2017-06-04 22:59:33 +0900 (6e6965d)
@@ -481,6 +481,13 @@ CREATE OPERATOR &^ (
 	RIGHTARG = text
 );
 
+/* Deprecated since 1.2.1. */
+CREATE OPERATOR &^> (
+	PROCEDURE = pgroonga.prefix_text_array,
+	LEFTARG = text[],
+	RIGHTARG = text
+);
+
 CREATE FUNCTION pgroonga.prefix_rk_text(text, text)
 	RETURNS bool
 	AS 'MODULE_PATHNAME', 'pgroonga_prefix_rk_text'
@@ -507,6 +514,13 @@ CREATE OPERATOR &^~ (
 	RIGHTARG = text
 );
 
+/* Deprecated since 1.2.1. */
+CREATE OPERATOR &^~> (
+	PROCEDURE = pgroonga.prefix_rk_text_array,
+	LEFTARG = text[],
+	RIGHTARG = text
+);
+
 CREATE FUNCTION pgroonga.script_text(text, text)
 	RETURNS bool
 	AS 'MODULE_PATHNAME', 'pgroonga_script_text'
@@ -576,12 +590,19 @@ CREATE FUNCTION pgroonga.match_in_text(text, text[])
 	IMMUTABLE
 	STRICT;
 
+/* Deprecated since 1.2.1. */
 CREATE OPERATOR &@> (
 	PROCEDURE = pgroonga.match_in_text,
 	LEFTARG = text,
 	RIGHTARG = text[]
 );
 
+CREATE OPERATOR &@| (
+	PROCEDURE = pgroonga.match_in_text,
+	LEFTARG = text,
+	RIGHTARG = text[]
+);
+
 CREATE FUNCTION pgroonga.match_in_text_array(text[], text[])
 	RETURNS bool
 	AS 'MODULE_PATHNAME', 'pgroonga_match_in_text_array'
@@ -589,7 +610,7 @@ CREATE FUNCTION pgroonga.match_in_text_array(text[], text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &@> (
+CREATE OPERATOR &@| (
 	PROCEDURE = pgroonga.match_in_text_array,
 	LEFTARG = text[],
 	RIGHTARG = text[]
@@ -602,7 +623,7 @@ CREATE FUNCTION pgroonga.match_in_varchar(varchar, varchar[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &@> (
+CREATE OPERATOR &@| (
 	PROCEDURE = pgroonga.match_in_varchar,
 	LEFTARG = varchar,
 	RIGHTARG = varchar[]
@@ -615,12 +636,19 @@ CREATE FUNCTION pgroonga.query_in_text(text, text[])
 	IMMUTABLE
 	STRICT;
 
+/* Deprecated since 1.2.1. */
 CREATE OPERATOR &?> (
 	PROCEDURE = pgroonga.query_in_text,
 	LEFTARG = text,
 	RIGHTARG = text[]
 );
 
+CREATE OPERATOR &?| (
+	PROCEDURE = pgroonga.query_in_text,
+	LEFTARG = text,
+	RIGHTARG = text[]
+);
+
 CREATE FUNCTION pgroonga.query_in_text_array(text[], text[])
 	RETURNS bool
 	AS 'MODULE_PATHNAME', 'pgroonga_query_in_text_array'
@@ -628,7 +656,7 @@ CREATE FUNCTION pgroonga.query_in_text_array(text[], text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &?> (
+CREATE OPERATOR &?| (
 	PROCEDURE = pgroonga.query_in_text_array,
 	LEFTARG = text[],
 	RIGHTARG = text[]
@@ -641,7 +669,7 @@ CREATE FUNCTION pgroonga.query_in_varchar(varchar, varchar[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &?> (
+CREATE OPERATOR &?| (
 	PROCEDURE = pgroonga.query_in_varchar,
 	LEFTARG = varchar,
 	RIGHTARG = varchar[]
@@ -654,7 +682,7 @@ CREATE FUNCTION pgroonga.prefix_in_text(text, text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &^> (
+CREATE OPERATOR &^| (
 	PROCEDURE = pgroonga.prefix_in_text,
 	LEFTARG = text,
 	RIGHTARG = text[]
@@ -667,7 +695,7 @@ CREATE FUNCTION pgroonga.prefix_in_text_array(text[], text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &^> (
+CREATE OPERATOR &^| (
 	PROCEDURE = pgroonga.prefix_in_text_array,
 	LEFTARG = text[],
 	RIGHTARG = text[]
@@ -680,7 +708,7 @@ CREATE FUNCTION pgroonga.prefix_rk_in_text(text, text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &^~> (
+CREATE OPERATOR &^~| (
 	PROCEDURE = pgroonga.prefix_rk_in_text,
 	LEFTARG = text,
 	RIGHTARG = text[]
@@ -693,7 +721,7 @@ CREATE FUNCTION pgroonga.prefix_rk_in_text_array(text[], text[])
 	IMMUTABLE
 	STRICT;
 
-CREATE OPERATOR &^~> (
+CREATE OPERATOR &^~| (
 	PROCEDURE = pgroonga.prefix_rk_in_text_array,
 	LEFTARG = text[],
 	RIGHTARG = text[]
@@ -793,7 +821,7 @@ EXCEPTION
 		DELETE FROM pg_am WHERE amname = 'pgroonga';
 		INSERT INTO pg_am VALUES(
 			'pgroonga',	-- amname
-			23,		-- amstrategies
+			25,		-- amstrategies
 			0,		-- amsupport
 			true,		-- amcanorder
 			true,		-- amcanorderbyop
@@ -986,8 +1014,10 @@ CREATE OPERATOR CLASS pgroonga.text_full_text_search_ops_v2 FOR TYPE text
 		OPERATOR 13 &?,
 		OPERATOR 14 &~?,
 		OPERATOR 15 &`,
-		OPERATOR 18 &@> (text, text[]),
-		OPERATOR 19 &?> (text, text[]);
+		OPERATOR 18 &@| (text, text[]),
+		OPERATOR 19 &?| (text, text[]),
+		OPERATOR 26 &@> (text, text[]), -- For backward compatibility
+		OPERATOR 27 &?> (text, text[]); -- For backward compatibility
 
 CREATE OPERATOR CLASS pgroonga.text_array_full_text_search_ops_v2
 	FOR TYPE text[]
@@ -998,22 +1028,24 @@ CREATE OPERATOR CLASS pgroonga.text_array_full_text_search_ops_v2
 		OPERATOR 13 &? (text[], text),
 		OPERATOR 14 &~? (text[], text),
 		OPERATOR 15 &` (text[], text),
-		OPERATOR 18 &@> (text[], text[]),
-		OPERATOR 19 &?> (text[], text[]);
+		OPERATOR 18 &@| (text[], text[]),
+		OPERATOR 19 &?| (text[], text[]);
 
 CREATE OPERATOR CLASS pgroonga.text_term_search_ops_v2 FOR TYPE text
 	USING pgroonga AS
 		OPERATOR 16 &^,
 		OPERATOR 17 &^~,
-		OPERATOR 20 &^> (text, text[]),
-		OPERATOR 21 &^~> (text, text[]);
+		OPERATOR 20 &^| (text, text[]),
+		OPERATOR 21 &^~| (text, text[]);
 
 CREATE OPERATOR CLASS pgroonga.text_array_term_search_ops_v2 FOR TYPE text[]
 	USING pgroonga AS
 		OPERATOR 16 &^ (text[], text),
 		OPERATOR 17 &^~ (text[], text),
-		OPERATOR 20 &^> (text[], text[]),
-		OPERATOR 21 &^~> (text[], text[]);
+		OPERATOR 20 &^| (text[], text[]),
+		OPERATOR 21 &^~| (text[], text[]),
+		OPERATOR 24 &^> (text[], text), -- For backward compatibility
+		OPERATOR 25 &^~> (text[], text); -- For backward compatibility
 
 CREATE OPERATOR CLASS pgroonga.text_regexp_ops_v2 FOR TYPE text
 	USING pgroonga AS
@@ -1031,8 +1063,8 @@ CREATE OPERATOR CLASS pgroonga.varchar_full_text_search_ops_v2
 		OPERATOR 13 &?,
 		OPERATOR 14 &~?,
 		OPERATOR 15 &`,
-		OPERATOR 18 &@> (varchar, varchar[]),
-		OPERATOR 19 &?> (varchar, varchar[]);
+		OPERATOR 18 &@| (varchar, varchar[]),
+		OPERATOR 19 &?| (varchar, varchar[]);
 
 CREATE OPERATOR CLASS pgroonga.varchar_array_term_search_ops_v2
 	FOR TYPE varchar[]

  Modified: expected/full-text-search/text-array/single/match-contain-v2/bitmapscan.out (+4 -4)
===================================================================
--- expected/full-text-search/text-array/single/match-contain-v2/bitmapscan.out    2017-06-01 22:11:25 +0900 (a7a80b0)
+++ expected/full-text-search/text-array/single/match-contain-v2/bitmapscan.out    2017-06-04 22:59:33 +0900 (4665ca3)
@@ -21,18 +21,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
                          QUERY PLAN                          
 -------------------------------------------------------------
  Bitmap Heap Scan on memos
-   Recheck Cond: (contents &@> '{rdbms,engine}'::text[])
+   Recheck Cond: (contents &@| '{rdbms,engine}'::text[])
    ->  Bitmap Index Scan on pgroonga_memos_index
-         Index Cond: (contents &@> '{rdbms,engine}'::text[])
+         Index Cond: (contents &@| '{rdbms,engine}'::text[])
 (4 rows)
 
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
    title    |                                         contents                                          
 ------------+-------------------------------------------------------------------------------------------
  PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}

  Modified: expected/full-text-search/text-array/single/match-contain-v2/indexscan.out (+3 -3)
===================================================================
--- expected/full-text-search/text-array/single/match-contain-v2/indexscan.out    2017-06-01 22:11:25 +0900 (c60276d)
+++ expected/full-text-search/text-array/single/match-contain-v2/indexscan.out    2017-06-04 22:59:33 +0900 (fe9ccad)
@@ -21,16 +21,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
                       QUERY PLAN                       
 -------------------------------------------------------
  Index Scan using pgroonga_memos_index on memos
-   Index Cond: (contents &@> '{rdbms,engine}'::text[])
+   Index Cond: (contents &@| '{rdbms,engine}'::text[])
 (2 rows)
 
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
    title    |                                         contents                                          
 ------------+-------------------------------------------------------------------------------------------
  PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}

  Modified: expected/full-text-search/text-array/single/match-contain-v2/seqscan.out (+1 -1)
===================================================================
--- expected/full-text-search/text-array/single/match-contain-v2/seqscan.out    2017-06-01 22:11:25 +0900 (6e6336e)
+++ expected/full-text-search/text-array/single/match-contain-v2/seqscan.out    2017-06-04 22:59:33 +0900 (1eb62c2)
@@ -20,7 +20,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
    title    |                                         contents                                          
 ------------+-------------------------------------------------------------------------------------------
  PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}

  Modified: expected/full-text-search/text-array/single/query-contain-v2/bitmapscan.out (+4 -4)
===================================================================
--- expected/full-text-search/text-array/single/query-contain-v2/bitmapscan.out    2017-06-01 22:11:25 +0900 (265bf72)
+++ expected/full-text-search/text-array/single/query-contain-v2/bitmapscan.out    2017-06-04 22:59:33 +0900 (e7ab7df)
@@ -21,18 +21,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
                               QUERY PLAN                               
 -----------------------------------------------------------------------
  Bitmap Heap Scan on memos
-   Recheck Cond: (contents &?> '{rdbms,"groonga engine"}'::text[])
+   Recheck Cond: (contents &?| '{rdbms,"groonga engine"}'::text[])
    ->  Bitmap Index Scan on pgroonga_memos_index
-         Index Cond: (contents &?> '{rdbms,"groonga engine"}'::text[])
+         Index Cond: (contents &?| '{rdbms,"groonga engine"}'::text[])
 (4 rows)
 
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
    title    |                                         contents                                          
 ------------+-------------------------------------------------------------------------------------------
  PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}

  Modified: expected/full-text-search/text-array/single/query-contain-v2/indexscan.out (+3 -3)
===================================================================
--- expected/full-text-search/text-array/single/query-contain-v2/indexscan.out    2017-06-01 22:11:25 +0900 (8ab3fd5)
+++ expected/full-text-search/text-array/single/query-contain-v2/indexscan.out    2017-06-04 22:59:33 +0900 (f8d58e0)
@@ -21,16 +21,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
                            QUERY PLAN                            
 -----------------------------------------------------------------
  Index Scan using pgroonga_memos_index on memos
-   Index Cond: (contents &?> '{rdbms,"groonga engine"}'::text[])
+   Index Cond: (contents &?| '{rdbms,"groonga engine"}'::text[])
 (2 rows)
 
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
    title    |                                         contents                                          
 ------------+-------------------------------------------------------------------------------------------
  Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}

  Modified: expected/full-text-search/text-array/single/query-contain-v2/seqscan.out (+1 -1)
===================================================================
--- expected/full-text-search/text-array/single/query-contain-v2/seqscan.out    2017-06-01 22:11:25 +0900 (454cb2f)
+++ expected/full-text-search/text-array/single/query-contain-v2/seqscan.out    2017-06-04 22:59:33 +0900 (f476857)
@@ -20,7 +20,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
    title    |                                         contents                                          
 ------------+-------------------------------------------------------------------------------------------
  PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}

  Copied: expected/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.out (+0 -0) 100%
===================================================================

  Copied: expected/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.out (+0 -0) 100%
===================================================================

  Copied: expected/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.out (+0 -0) 100%
===================================================================

  Copied: expected/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.out (+0 -0) 100%
===================================================================

  Copied: expected/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.out (+0 -0) 100%
===================================================================

  Copied: expected/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.out (+0 -0) 100%
===================================================================

  Modified: expected/full-text-search/text/single/match-in-v2/bitmapscan.out (+4 -4)
===================================================================
--- expected/full-text-search/text/single/match-in-v2/bitmapscan.out    2017-06-01 22:11:25 +0900 (17f3783)
+++ expected/full-text-search/text/single/match-in-v2/bitmapscan.out    2017-06-04 22:59:33 +0900 (25e3720)
@@ -13,18 +13,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
                          QUERY PLAN                         
 ------------------------------------------------------------
  Bitmap Heap Scan on memos
-   Recheck Cond: (content &@> '{rdbms,engine}'::text[])
+   Recheck Cond: (content &@| '{rdbms,engine}'::text[])
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (content &@> '{rdbms,engine}'::text[])
+         Index Cond: (content &@| '{rdbms,engine}'::text[])
 (4 rows)
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/text/single/match-in-v2/indexscan.out (+3 -3)
===================================================================
--- expected/full-text-search/text/single/match-in-v2/indexscan.out    2017-06-01 22:11:25 +0900 (c5ebcc1)
+++ expected/full-text-search/text/single/match-in-v2/indexscan.out    2017-06-04 22:59:33 +0900 (72010d4)
@@ -13,16 +13,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
                       QUERY PLAN                      
 ------------------------------------------------------
  Index Scan using pgrn_index on memos
-   Index Cond: (content &@> '{rdbms,engine}'::text[])
+   Index Cond: (content &@| '{rdbms,engine}'::text[])
 (2 rows)
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/text/single/match-in-v2/seqscan.out (+1 -1)
===================================================================
--- expected/full-text-search/text/single/match-in-v2/seqscan.out    2017-06-01 22:11:25 +0900 (d830ff5)
+++ expected/full-text-search/text/single/match-in-v2/seqscan.out    2017-06-04 22:59:33 +0900 (c1bbe31)
@@ -10,7 +10,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/text/single/query-in-v2/bitmapscan.out (+4 -4)
===================================================================
--- expected/full-text-search/text/single/query-in-v2/bitmapscan.out    2017-06-01 22:11:25 +0900 (e96c2d4)
+++ expected/full-text-search/text/single/query-in-v2/bitmapscan.out    2017-06-04 22:59:33 +0900 (4a7734f)
@@ -13,18 +13,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
                               QUERY PLAN                              
 ----------------------------------------------------------------------
  Bitmap Heap Scan on memos
-   Recheck Cond: (content &?> '{rdbms,"groonga engine"}'::text[])
+   Recheck Cond: (content &?| '{rdbms,"groonga engine"}'::text[])
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (content &?> '{rdbms,"groonga engine"}'::text[])
+         Index Cond: (content &?| '{rdbms,"groonga engine"}'::text[])
 (4 rows)
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/text/single/query-in-v2/indexscan.out (+3 -3)
===================================================================
--- expected/full-text-search/text/single/query-in-v2/indexscan.out    2017-06-01 22:11:25 +0900 (245ae2c)
+++ expected/full-text-search/text/single/query-in-v2/indexscan.out    2017-06-04 22:59:33 +0900 (dddc69e)
@@ -13,16 +13,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
                            QUERY PLAN                           
 ----------------------------------------------------------------
  Index Scan using pgrn_index on memos
-   Index Cond: (content &?> '{rdbms,"groonga engine"}'::text[])
+   Index Cond: (content &?| '{rdbms,"groonga engine"}'::text[])
 (2 rows)
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
  id |                 content                  
 ----+------------------------------------------
   2 | Groonga is fast full text search engine.

  Modified: expected/full-text-search/text/single/query-in-v2/seqscan.out (+1 -1)
===================================================================
--- expected/full-text-search/text/single/query-in-v2/seqscan.out    2017-06-01 22:11:25 +0900 (071b37e)
+++ expected/full-text-search/text/single/query-in-v2/seqscan.out    2017-06-04 22:59:33 +0900 (8906877)
@@ -10,7 +10,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/varchar/single/match-in-v2/bitmapscan.out (+4 -4)
===================================================================
--- expected/full-text-search/varchar/single/match-in-v2/bitmapscan.out    2017-06-01 22:11:25 +0900 (b4343f0)
+++ expected/full-text-search/varchar/single/match-in-v2/bitmapscan.out    2017-06-04 22:59:33 +0900 (954762d)
@@ -13,18 +13,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
                                QUERY PLAN                                
 -------------------------------------------------------------------------
  Bitmap Heap Scan on memos
-   Recheck Cond: (content &@> '{rdbms,engine}'::character varying[])
+   Recheck Cond: (content &@| '{rdbms,engine}'::character varying[])
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (content &@> '{rdbms,engine}'::character varying[])
+         Index Cond: (content &@| '{rdbms,engine}'::character varying[])
 (4 rows)
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/varchar/single/match-in-v2/indexscan.out (+3 -3)
===================================================================
--- expected/full-text-search/varchar/single/match-in-v2/indexscan.out    2017-06-01 22:11:25 +0900 (bc4943e)
+++ expected/full-text-search/varchar/single/match-in-v2/indexscan.out    2017-06-04 22:59:33 +0900 (834f358)
@@ -13,16 +13,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
                             QUERY PLAN                             
 -------------------------------------------------------------------
  Index Scan using pgrn_index on memos
-   Index Cond: (content &@> '{rdbms,engine}'::character varying[])
+   Index Cond: (content &@| '{rdbms,engine}'::character varying[])
 (2 rows)
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/varchar/single/match-in-v2/seqscan.out (+1 -1)
===================================================================
--- expected/full-text-search/varchar/single/match-in-v2/seqscan.out    2017-06-01 22:11:25 +0900 (fd313eb)
+++ expected/full-text-search/varchar/single/match-in-v2/seqscan.out    2017-06-04 22:59:33 +0900 (2d7a247)
@@ -10,7 +10,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/varchar/single/query-in-v2/bitmapscan.out (+4 -4)
===================================================================
--- expected/full-text-search/varchar/single/query-in-v2/bitmapscan.out    2017-06-01 22:11:25 +0900 (46b5716)
+++ expected/full-text-search/varchar/single/query-in-v2/bitmapscan.out    2017-06-04 22:59:33 +0900 (e778d1c)
@@ -13,18 +13,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
                                     QUERY PLAN                                     
 -----------------------------------------------------------------------------------
  Bitmap Heap Scan on memos
-   Recheck Cond: (content &?> '{rdbms,"groonga engine"}'::character varying[])
+   Recheck Cond: (content &?| '{rdbms,"groonga engine"}'::character varying[])
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (content &?> '{rdbms,"groonga engine"}'::character varying[])
+         Index Cond: (content &?| '{rdbms,"groonga engine"}'::character varying[])
 (4 rows)
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Modified: expected/full-text-search/varchar/single/query-in-v2/indexscan.out (+3 -3)
===================================================================
--- expected/full-text-search/varchar/single/query-in-v2/indexscan.out    2017-06-01 22:11:25 +0900 (9bcc3d6)
+++ expected/full-text-search/varchar/single/query-in-v2/indexscan.out    2017-06-04 22:59:33 +0900 (8d28603)
@@ -13,16 +13,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
                                  QUERY PLAN                                  
 -----------------------------------------------------------------------------
  Index Scan using pgrn_index on memos
-   Index Cond: (content &?> '{rdbms,"groonga engine"}'::character varying[])
+   Index Cond: (content &?| '{rdbms,"groonga engine"}'::character varying[])
 (2 rows)
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
  id |                 content                  
 ----+------------------------------------------
   2 | Groonga is fast full text search engine.

  Modified: expected/full-text-search/varchar/single/query-in-v2/seqscan.out (+1 -1)
===================================================================
--- expected/full-text-search/varchar/single/query-in-v2/seqscan.out    2017-06-01 22:11:25 +0900 (0e3cbf3)
+++ expected/full-text-search/varchar/single/query-in-v2/seqscan.out    2017-06-04 22:59:33 +0900 (77b80a3)
@@ -10,7 +10,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
  id |                 content                  
 ----+------------------------------------------
   1 | PostgreSQL is a RDBMS.

  Copied: expected/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.out (+7 -7) 70%
===================================================================
--- expected/term-search/text-array/prefix-rk-in/bitmapscan.out    2017-06-01 22:11:25 +0900 (58304a5)
+++ expected/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.out    2017-06-04 22:59:33 +0900 (c2f8a98)
@@ -12,22 +12,22 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
-                       QUERY PLAN                       
---------------------------------------------------------
+ WHERE katakanas &^~> 'p';
+                   QUERY PLAN                   
+------------------------------------------------
  Bitmap Heap Scan on readings
-   Recheck Cond: (katakanas &^~> '{po,gu}'::text[])
+   Recheck Cond: (katakanas &^~> 'p'::text)
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (katakanas &^~> '{po,gu}'::text[])
+         Index Cond: (katakanas &^~> 'p'::text)
 (4 rows)
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~> 'p';
              katakanas             
 -----------------------------------
  {ポストグレスキューエル,ポスグレ}
- {グルンガ,グルン}
+ {ピージールンガ,ピーグルン}
 (2 rows)
 
 DROP TABLE readings;

  Copied: expected/term-search/text-array/compatibility/v2/prefix-rk/indexscan.out (+6 -6) 74%
===================================================================
--- expected/term-search/text-array/prefix-rk-in/indexscan.out    2017-06-01 22:11:25 +0900 (68b2691)
+++ expected/term-search/text-array/compatibility/v2/prefix-rk/indexscan.out    2017-06-04 22:59:33 +0900 (e148d63)
@@ -12,20 +12,20 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
-                    QUERY PLAN                    
---------------------------------------------------
+ WHERE katakanas &^~> 'p';
+                QUERY PLAN                
+------------------------------------------
  Index Scan using pgrn_index on readings
-   Index Cond: (katakanas &^~> '{po,gu}'::text[])
+   Index Cond: (katakanas &^~> 'p'::text)
 (2 rows)
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~> 'p';
              katakanas             
 -----------------------------------
+ {ピージールンガ,ピーグルン}
  {ポストグレスキューエル,ポスグレ}
- {グルンガ,グルン}
 (2 rows)
 
 DROP TABLE readings;

  Copied: expected/term-search/text-array/compatibility/v2/prefix-rk/seqscan.out (+2 -2) 89%
===================================================================
--- expected/term-search/text-array/prefix-rk-in/seqscan.out    2017-06-01 22:11:25 +0900 (1f8cd6c)
+++ expected/term-search/text-array/compatibility/v2/prefix-rk/seqscan.out    2017-06-04 22:59:33 +0900 (2e39994)
@@ -9,11 +9,11 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~> 'p';
              katakanas             
 -----------------------------------
  {ポストグレスキューエル,ポスグレ}
- {グルンガ,グルン}
+ {ピージールンガ,ピーグルン}
 (2 rows)
 
 DROP TABLE readings;

  Copied: expected/term-search/text-array/compatibility/v2/prefix/bitmapscan.out (+7 -7) 66%
===================================================================
--- expected/term-search/text-array/prefix-in/bitmapscan.out    2017-06-01 22:11:25 +0900 (e15c5a7)
+++ expected/term-search/text-array/compatibility/v2/prefix/bitmapscan.out    2017-06-04 22:59:33 +0900 (58acbca)
@@ -12,22 +12,22 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
-                     QUERY PLAN                      
------------------------------------------------------
+ WHERE names &^> 'pG';
+                 QUERY PLAN                 
+--------------------------------------------
  Bitmap Heap Scan on tags
-   Recheck Cond: (names &^> '{gro,pos}'::text[])
+   Recheck Cond: (names &^> 'pG'::text)
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (names &^> '{gro,pos}'::text[])
+         Index Cond: (names &^> 'pG'::text)
 (4 rows)
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^> 'pG';
       names      
 -----------------
  {PostgreSQL,PG}
- {Groonga,grn}
+ {PGroonga,pgrn}
 (2 rows)
 
 DROP TABLE tags;

  Copied: expected/term-search/text-array/compatibility/v2/prefix/indexscan.out (+6 -6) 70%
===================================================================
--- expected/term-search/text-array/prefix-in/indexscan.out    2017-06-01 22:11:25 +0900 (27db30e)
+++ expected/term-search/text-array/compatibility/v2/prefix/indexscan.out    2017-06-04 22:59:33 +0900 (9979b35)
@@ -12,19 +12,19 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
-                  QUERY PLAN                   
------------------------------------------------
+ WHERE names &^> 'pG';
+              QUERY PLAN              
+--------------------------------------
  Index Scan using pgrn_index on tags
-   Index Cond: (names &^> '{gro,pos}'::text[])
+   Index Cond: (names &^> 'pG'::text)
 (2 rows)
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^> 'pG';
       names      
 -----------------
- {Groonga,grn}
+ {PGroonga,pgrn}
  {PostgreSQL,PG}
 (2 rows)
 

  Copied: expected/term-search/text-array/compatibility/v2/prefix/seqscan.out (+2 -2) 87%
===================================================================
--- expected/term-search/text-array/prefix-in/seqscan.out    2017-06-01 22:11:25 +0900 (b1251ce)
+++ expected/term-search/text-array/compatibility/v2/prefix/seqscan.out    2017-06-04 22:59:33 +0900 (aedd8f9)
@@ -9,11 +9,11 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^> 'pG';
       names      
 -----------------
  {PostgreSQL,PG}
- {Groonga,grn}
+ {PGroonga,pgrn}
 (2 rows)
 
 DROP TABLE tags;

  Modified: expected/term-search/text-array/prefix-in/bitmapscan.out (+4 -4)
===================================================================
--- expected/term-search/text-array/prefix-in/bitmapscan.out    2017-06-01 22:11:25 +0900 (e15c5a7)
+++ expected/term-search/text-array/prefix-in/bitmapscan.out    2017-06-04 22:59:33 +0900 (bc30314)
@@ -12,18 +12,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
                      QUERY PLAN                      
 -----------------------------------------------------
  Bitmap Heap Scan on tags
-   Recheck Cond: (names &^> '{gro,pos}'::text[])
+   Recheck Cond: (names &^| '{gro,pos}'::text[])
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (names &^> '{gro,pos}'::text[])
+         Index Cond: (names &^| '{gro,pos}'::text[])
 (4 rows)
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
       names      
 -----------------
  {PostgreSQL,PG}

  Modified: expected/term-search/text-array/prefix-in/indexscan.out (+3 -3)
===================================================================
--- expected/term-search/text-array/prefix-in/indexscan.out    2017-06-01 22:11:25 +0900 (27db30e)
+++ expected/term-search/text-array/prefix-in/indexscan.out    2017-06-04 22:59:33 +0900 (e49bc96)
@@ -12,16 +12,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
                   QUERY PLAN                   
 -----------------------------------------------
  Index Scan using pgrn_index on tags
-   Index Cond: (names &^> '{gro,pos}'::text[])
+   Index Cond: (names &^| '{gro,pos}'::text[])
 (2 rows)
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
       names      
 -----------------
  {Groonga,grn}

  Modified: expected/term-search/text-array/prefix-in/seqscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/prefix-in/seqscan.out    2017-06-01 22:11:25 +0900 (b1251ce)
+++ expected/term-search/text-array/prefix-in/seqscan.out    2017-06-04 22:59:33 +0900 (2e42c12)
@@ -9,7 +9,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
       names      
 -----------------
  {PostgreSQL,PG}

  Modified: expected/term-search/text-array/prefix-rk-in/bitmapscan.out (+4 -4)
===================================================================
--- expected/term-search/text-array/prefix-rk-in/bitmapscan.out    2017-06-01 22:11:25 +0900 (58304a5)
+++ expected/term-search/text-array/prefix-rk-in/bitmapscan.out    2017-06-04 22:59:33 +0900 (e87e225)
@@ -12,18 +12,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
                        QUERY PLAN                       
 --------------------------------------------------------
  Bitmap Heap Scan on readings
-   Recheck Cond: (katakanas &^~> '{po,gu}'::text[])
+   Recheck Cond: (katakanas &^~| '{po,gu}'::text[])
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (katakanas &^~> '{po,gu}'::text[])
+         Index Cond: (katakanas &^~| '{po,gu}'::text[])
 (4 rows)
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
              katakanas             
 -----------------------------------
  {ポストグレスキューエル,ポスグレ}

  Modified: expected/term-search/text-array/prefix-rk-in/indexscan.out (+3 -3)
===================================================================
--- expected/term-search/text-array/prefix-rk-in/indexscan.out    2017-06-01 22:11:25 +0900 (68b2691)
+++ expected/term-search/text-array/prefix-rk-in/indexscan.out    2017-06-04 22:59:33 +0900 (f5d9142)
@@ -12,16 +12,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
                     QUERY PLAN                    
 --------------------------------------------------
  Index Scan using pgrn_index on readings
-   Index Cond: (katakanas &^~> '{po,gu}'::text[])
+   Index Cond: (katakanas &^~| '{po,gu}'::text[])
 (2 rows)
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
              katakanas             
 -----------------------------------
  {ポストグレスキューエル,ポスグレ}

  Modified: expected/term-search/text-array/prefix-rk-in/seqscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/prefix-rk-in/seqscan.out    2017-06-01 22:11:25 +0900 (1f8cd6c)
+++ expected/term-search/text-array/prefix-rk-in/seqscan.out    2017-06-04 22:59:33 +0900 (02c4eb3)
@@ -9,7 +9,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
              katakanas             
 -----------------------------------
  {ポストグレスキューエル,ポスグレ}

  Modified: expected/term-search/text/prefix-in/bitmapscan.out (+4 -4)
===================================================================
--- expected/term-search/text/prefix-in/bitmapscan.out    2017-06-01 22:11:25 +0900 (22a2f16)
+++ expected/term-search/text/prefix-in/bitmapscan.out    2017-06-04 22:59:33 +0900 (1afc70c)
@@ -13,18 +13,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
                      QUERY PLAN                     
 ----------------------------------------------------
  Bitmap Heap Scan on tags
-   Recheck Cond: (name &^> '{gro,pos}'::text[])
+   Recheck Cond: (name &^| '{gro,pos}'::text[])
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (name &^> '{gro,pos}'::text[])
+         Index Cond: (name &^| '{gro,pos}'::text[])
 (4 rows)
 
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
     name    
 ------------
  PostgreSQL

  Modified: expected/term-search/text/prefix-in/indexscan.out (+3 -3)
===================================================================
--- expected/term-search/text/prefix-in/indexscan.out    2017-06-01 22:11:25 +0900 (0ec1f6b)
+++ expected/term-search/text/prefix-in/indexscan.out    2017-06-04 22:59:33 +0900 (9b7459d)
@@ -13,16 +13,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
                   QUERY PLAN                  
 ----------------------------------------------
  Index Scan using pgrn_index on tags
-   Index Cond: (name &^> '{gro,pos}'::text[])
+   Index Cond: (name &^| '{gro,pos}'::text[])
 (2 rows)
 
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
     name    
 ------------
  Groonga

  Modified: expected/term-search/text/prefix-in/seqscan.out (+1 -1)
===================================================================
--- expected/term-search/text/prefix-in/seqscan.out    2017-06-01 22:11:25 +0900 (c444b50)
+++ expected/term-search/text/prefix-in/seqscan.out    2017-06-04 22:59:33 +0900 (953198d)
@@ -10,7 +10,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
     name    
 ------------
  PostgreSQL

  Modified: expected/term-search/text/prefix-rk-in/bitmapscan.out (+4 -4)
===================================================================
--- expected/term-search/text/prefix-rk-in/bitmapscan.out    2017-06-01 22:11:25 +0900 (728ad3b)
+++ expected/term-search/text/prefix-rk-in/bitmapscan.out    2017-06-04 22:59:33 +0900 (bb63df6)
@@ -13,18 +13,18 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
                       QUERY PLAN                       
 -------------------------------------------------------
  Bitmap Heap Scan on readings
-   Recheck Cond: (katakana &^~> '{po,gu}'::text[])
+   Recheck Cond: (katakana &^~| '{po,gu}'::text[])
    ->  Bitmap Index Scan on pgrn_index
-         Index Cond: (katakana &^~> '{po,gu}'::text[])
+         Index Cond: (katakana &^~| '{po,gu}'::text[])
 (4 rows)
 
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
         katakana        
 ------------------------
  ポストグレスキューエル

  Modified: expected/term-search/text/prefix-rk-in/indexscan.out (+3 -3)
===================================================================
--- expected/term-search/text/prefix-rk-in/indexscan.out    2017-06-01 22:11:25 +0900 (b9e848b)
+++ expected/term-search/text/prefix-rk-in/indexscan.out    2017-06-04 22:59:33 +0900 (138177d)
@@ -13,16 +13,16 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
                    QUERY PLAN                    
 -------------------------------------------------
  Index Scan using pgrn_index on readings
-   Index Cond: (katakana &^~> '{po,gu}'::text[])
+   Index Cond: (katakana &^~| '{po,gu}'::text[])
 (2 rows)
 
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
         katakana        
 ------------------------
  ポストグレスキューエル

  Modified: expected/term-search/text/prefix-rk-in/seqscan.out (+1 -1)
===================================================================
--- expected/term-search/text/prefix-rk-in/seqscan.out    2017-06-01 22:11:25 +0900 (1c8a271)
+++ expected/term-search/text/prefix-rk-in/seqscan.out    2017-06-04 22:59:33 +0900 (1de9ee4)
@@ -10,7 +10,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
         katakana        
 ------------------------
  ポストグレスキューエル

  Modified: sql/full-text-search/text-array/single/match-contain-v2/bitmapscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/text-array/single/match-contain-v2/bitmapscan.sql    2017-06-01 22:11:25 +0900 (c5fbb98)
+++ sql/full-text-search/text-array/single/match-contain-v2/bitmapscan.sql    2017-06-04 22:59:33 +0900 (db83a4d)
@@ -25,10 +25,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
 
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text-array/single/match-contain-v2/indexscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/text-array/single/match-contain-v2/indexscan.sql    2017-06-01 22:11:25 +0900 (2f5eb6c)
+++ sql/full-text-search/text-array/single/match-contain-v2/indexscan.sql    2017-06-04 22:59:33 +0900 (28a5f69)
@@ -25,10 +25,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
 
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text-array/single/match-contain-v2/seqscan.sql (+1 -1)
===================================================================
--- sql/full-text-search/text-array/single/match-contain-v2/seqscan.sql    2017-06-01 22:11:25 +0900 (a259812)
+++ sql/full-text-search/text-array/single/match-contain-v2/seqscan.sql    2017-06-04 22:59:33 +0900 (0276998)
@@ -24,6 +24,6 @@ SET enable_bitmapscan = off;
 
 SELECT title, contents
   FROM memos
- WHERE contents &@> Array['rdbms', 'engine'];
+ WHERE contents &@| Array['rdbms', 'engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text-array/single/query-contain-v2/bitmapscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/text-array/single/query-contain-v2/bitmapscan.sql    2017-06-01 22:11:25 +0900 (9e9b667)
+++ sql/full-text-search/text-array/single/query-contain-v2/bitmapscan.sql    2017-06-04 22:59:33 +0900 (753b299)
@@ -25,10 +25,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
 
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text-array/single/query-contain-v2/indexscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/text-array/single/query-contain-v2/indexscan.sql    2017-06-01 22:11:25 +0900 (57846f5)
+++ sql/full-text-search/text-array/single/query-contain-v2/indexscan.sql    2017-06-04 22:59:33 +0900 (bcffcd2)
@@ -25,10 +25,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
 
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text-array/single/query-contain-v2/seqscan.sql (+1 -1)
===================================================================
--- sql/full-text-search/text-array/single/query-contain-v2/seqscan.sql    2017-06-01 22:11:25 +0900 (13956a2)
+++ sql/full-text-search/text-array/single/query-contain-v2/seqscan.sql    2017-06-04 22:59:33 +0900 (5c8eac9)
@@ -24,6 +24,6 @@ SET enable_bitmapscan = off;
 
 SELECT title, contents
   FROM memos
- WHERE contents &?> Array['rdbms', 'groonga engine'];
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
 
 DROP TABLE memos;

  Copied: sql/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.sql (+0 -0) 100%
===================================================================

  Copied: sql/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.sql (+0 -0) 100%
===================================================================

  Copied: sql/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.sql (+0 -0) 100%
===================================================================

  Copied: sql/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.sql (+0 -0) 100%
===================================================================

  Copied: sql/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.sql (+0 -0) 100%
===================================================================

  Copied: sql/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.sql (+0 -0) 100%
===================================================================

  Modified: sql/full-text-search/text/single/match-in-v2/bitmapscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/text/single/match-in-v2/bitmapscan.sql    2017-06-01 22:11:25 +0900 (8a634f8)
+++ sql/full-text-search/text/single/match-in-v2/bitmapscan.sql    2017-06-04 22:59:33 +0900 (7f7c102)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text/single/match-in-v2/indexscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/text/single/match-in-v2/indexscan.sql    2017-06-01 22:11:25 +0900 (30194e6)
+++ sql/full-text-search/text/single/match-in-v2/indexscan.sql    2017-06-04 22:59:33 +0900 (a412f5d)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text/single/match-in-v2/seqscan.sql (+1 -1)
===================================================================
--- sql/full-text-search/text/single/match-in-v2/seqscan.sql    2017-06-01 22:11:25 +0900 (1897290)
+++ sql/full-text-search/text/single/match-in-v2/seqscan.sql    2017-06-04 22:59:33 +0900 (c486ce9)
@@ -13,6 +13,6 @@ SET enable_bitmapscan = off;
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine'];
+ WHERE content &@| Array['rdbms', 'engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text/single/query-in-v2/bitmapscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/text/single/query-in-v2/bitmapscan.sql    2017-06-01 22:11:25 +0900 (d8a732a)
+++ sql/full-text-search/text/single/query-in-v2/bitmapscan.sql    2017-06-04 22:59:33 +0900 (79c9345)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text/single/query-in-v2/indexscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/text/single/query-in-v2/indexscan.sql    2017-06-01 22:11:25 +0900 (9e867c2)
+++ sql/full-text-search/text/single/query-in-v2/indexscan.sql    2017-06-04 22:59:33 +0900 (e73b601)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/text/single/query-in-v2/seqscan.sql (+1 -1)
===================================================================
--- sql/full-text-search/text/single/query-in-v2/seqscan.sql    2017-06-01 22:11:25 +0900 (14d34bb)
+++ sql/full-text-search/text/single/query-in-v2/seqscan.sql    2017-06-04 22:59:33 +0900 (86f270e)
@@ -13,6 +13,6 @@ SET enable_bitmapscan = off;
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine'];
+ WHERE content &?| Array['rdbms', 'groonga engine'];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/varchar/single/match-in-v2/bitmapscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/varchar/single/match-in-v2/bitmapscan.sql    2017-06-01 22:11:25 +0900 (4adddad)
+++ sql/full-text-search/varchar/single/match-in-v2/bitmapscan.sql    2017-06-04 22:59:33 +0900 (9a5217b)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/varchar/single/match-in-v2/indexscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/varchar/single/match-in-v2/indexscan.sql    2017-06-01 22:11:25 +0900 (11b1ff3)
+++ sql/full-text-search/varchar/single/match-in-v2/indexscan.sql    2017-06-04 22:59:33 +0900 (5fed708)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/varchar/single/match-in-v2/seqscan.sql (+1 -1)
===================================================================
--- sql/full-text-search/varchar/single/match-in-v2/seqscan.sql    2017-06-01 22:11:25 +0900 (6d42cf4)
+++ sql/full-text-search/varchar/single/match-in-v2/seqscan.sql    2017-06-04 22:59:33 +0900 (7b76815)
@@ -13,6 +13,6 @@ SET enable_bitmapscan = off;
 
 SELECT id, content
   FROM memos
- WHERE content &@> Array['rdbms', 'engine']::varchar[];
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/varchar/single/query-in-v2/bitmapscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/varchar/single/query-in-v2/bitmapscan.sql    2017-06-01 22:11:25 +0900 (bc6dbff)
+++ sql/full-text-search/varchar/single/query-in-v2/bitmapscan.sql    2017-06-04 22:59:33 +0900 (82394a3)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/varchar/single/query-in-v2/indexscan.sql (+2 -2)
===================================================================
--- sql/full-text-search/varchar/single/query-in-v2/indexscan.sql    2017-06-01 22:11:25 +0900 (5f5257e)
+++ sql/full-text-search/varchar/single/query-in-v2/indexscan.sql    2017-06-04 22:59:33 +0900 (5b6eccb)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
 
 DROP TABLE memos;

  Modified: sql/full-text-search/varchar/single/query-in-v2/seqscan.sql (+1 -1)
===================================================================
--- sql/full-text-search/varchar/single/query-in-v2/seqscan.sql    2017-06-01 22:11:25 +0900 (8c3c9db)
+++ sql/full-text-search/varchar/single/query-in-v2/seqscan.sql    2017-06-04 22:59:33 +0900 (e5a43a4)
@@ -13,6 +13,6 @@ SET enable_bitmapscan = off;
 
 SELECT id, content
   FROM memos
- WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
 
 DROP TABLE memos;

  Copied: sql/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.sql (+2 -2) 87%
===================================================================
--- sql/term-search/text-array/prefix-rk-in/bitmapscan.sql    2017-06-01 22:11:25 +0900 (5a4b4ef)
+++ sql/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.sql    2017-06-04 22:59:33 +0900 (5087be5)
@@ -16,10 +16,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~> 'p';
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~> 'p';
 
 DROP TABLE readings;

  Copied: sql/term-search/text-array/compatibility/v2/prefix-rk/indexscan.sql (+2 -2) 87%
===================================================================
--- sql/term-search/text-array/prefix-rk-in/indexscan.sql    2017-06-01 22:11:25 +0900 (eaa292d)
+++ sql/term-search/text-array/compatibility/v2/prefix-rk/indexscan.sql    2017-06-04 22:59:33 +0900 (6faccd9)
@@ -16,10 +16,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~> 'p';
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~> 'p';
 
 DROP TABLE readings;

  Copied: sql/term-search/text-array/compatibility/v2/prefix-rk/seqscan.sql (+1 -1) 91%
===================================================================
--- sql/term-search/text-array/prefix-rk-in/seqscan.sql    2017-06-01 22:11:25 +0900 (8d3aec4)
+++ sql/term-search/text-array/compatibility/v2/prefix-rk/seqscan.sql    2017-06-04 22:59:33 +0900 (c16b755)
@@ -12,6 +12,6 @@ SET enable_bitmapscan = off;
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~> 'p';
 
 DROP TABLE readings;

  Copied: sql/term-search/text-array/compatibility/v2/prefix/bitmapscan.sql (+2 -2) 86%
===================================================================
--- sql/term-search/text-array/prefix-in/bitmapscan.sql    2017-06-01 22:11:25 +0900 (d5ba243)
+++ sql/term-search/text-array/compatibility/v2/prefix/bitmapscan.sql    2017-06-04 22:59:33 +0900 (fa98c5f)
@@ -16,10 +16,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^> 'pG';
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^> 'pG';
 
 DROP TABLE tags;

  Copied: sql/term-search/text-array/compatibility/v2/prefix/indexscan.sql (+2 -2) 86%
===================================================================
--- sql/term-search/text-array/prefix-in/indexscan.sql    2017-06-01 22:11:25 +0900 (7caf6b7)
+++ sql/term-search/text-array/compatibility/v2/prefix/indexscan.sql    2017-06-04 22:59:33 +0900 (4a5a983)
@@ -16,10 +16,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^> 'pG';
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^> 'pG';
 
 DROP TABLE tags;

  Copied: sql/term-search/text-array/compatibility/v2/prefix/seqscan.sql (+1 -1) 89%
===================================================================
--- sql/term-search/text-array/prefix-in/seqscan.sql    2017-06-01 22:11:25 +0900 (908adb6)
+++ sql/term-search/text-array/compatibility/v2/prefix/seqscan.sql    2017-06-04 22:59:33 +0900 (520d495)
@@ -12,6 +12,6 @@ SET enable_bitmapscan = off;
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^> 'pG';
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/prefix-in/bitmapscan.sql (+2 -2)
===================================================================
--- sql/term-search/text-array/prefix-in/bitmapscan.sql    2017-06-01 22:11:25 +0900 (d5ba243)
+++ sql/term-search/text-array/prefix-in/bitmapscan.sql    2017-06-04 22:59:33 +0900 (2a68a5c)
@@ -16,10 +16,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/prefix-in/indexscan.sql (+2 -2)
===================================================================
--- sql/term-search/text-array/prefix-in/indexscan.sql    2017-06-01 22:11:25 +0900 (7caf6b7)
+++ sql/term-search/text-array/prefix-in/indexscan.sql    2017-06-04 22:59:33 +0900 (a186e5d)
@@ -16,10 +16,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/prefix-in/seqscan.sql (+1 -1)
===================================================================
--- sql/term-search/text-array/prefix-in/seqscan.sql    2017-06-01 22:11:25 +0900 (908adb6)
+++ sql/term-search/text-array/prefix-in/seqscan.sql    2017-06-04 22:59:33 +0900 (7068778)
@@ -12,6 +12,6 @@ SET enable_bitmapscan = off;
 
 SELECT names
   FROM tags
- WHERE names &^> ARRAY['gro', 'pos'];
+ WHERE names &^| ARRAY['gro', 'pos'];
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/prefix-rk-in/bitmapscan.sql (+2 -2)
===================================================================
--- sql/term-search/text-array/prefix-rk-in/bitmapscan.sql    2017-06-01 22:11:25 +0900 (5a4b4ef)
+++ sql/term-search/text-array/prefix-rk-in/bitmapscan.sql    2017-06-04 22:59:33 +0900 (a47a893)
@@ -16,10 +16,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
 
 DROP TABLE readings;

  Modified: sql/term-search/text-array/prefix-rk-in/indexscan.sql (+2 -2)
===================================================================
--- sql/term-search/text-array/prefix-rk-in/indexscan.sql    2017-06-01 22:11:25 +0900 (eaa292d)
+++ sql/term-search/text-array/prefix-rk-in/indexscan.sql    2017-06-04 22:59:33 +0900 (b563ea8)
@@ -16,10 +16,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
 
 DROP TABLE readings;

  Modified: sql/term-search/text-array/prefix-rk-in/seqscan.sql (+1 -1)
===================================================================
--- sql/term-search/text-array/prefix-rk-in/seqscan.sql    2017-06-01 22:11:25 +0900 (8d3aec4)
+++ sql/term-search/text-array/prefix-rk-in/seqscan.sql    2017-06-04 22:59:33 +0900 (9f4951a)
@@ -12,6 +12,6 @@ SET enable_bitmapscan = off;
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~> ARRAY['po', 'gu'];
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
 
 DROP TABLE readings;

  Modified: sql/term-search/text/prefix-in/bitmapscan.sql (+2 -2)
===================================================================
--- sql/term-search/text/prefix-in/bitmapscan.sql    2017-06-01 22:11:25 +0900 (803b501)
+++ sql/term-search/text/prefix-in/bitmapscan.sql    2017-06-04 22:59:33 +0900 (e1d52e1)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
 
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
 
 DROP TABLE tags;

  Modified: sql/term-search/text/prefix-in/indexscan.sql (+2 -2)
===================================================================
--- sql/term-search/text/prefix-in/indexscan.sql    2017-06-01 22:11:25 +0900 (004d8e8)
+++ sql/term-search/text/prefix-in/indexscan.sql    2017-06-04 22:59:33 +0900 (ef80b44)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
 
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
 
 DROP TABLE tags;

  Modified: sql/term-search/text/prefix-in/seqscan.sql (+1 -1)
===================================================================
--- sql/term-search/text/prefix-in/seqscan.sql    2017-06-01 22:11:25 +0900 (8a57bd1)
+++ sql/term-search/text/prefix-in/seqscan.sql    2017-06-04 22:59:33 +0900 (91b6e16)
@@ -13,6 +13,6 @@ SET enable_bitmapscan = off;
 
 SELECT name
   FROM tags
- WHERE name &^> ARRAY['gro', 'pos'];
+ WHERE name &^| ARRAY['gro', 'pos'];
 
 DROP TABLE tags;

  Modified: sql/term-search/text/prefix-rk-in/bitmapscan.sql (+2 -2)
===================================================================
--- sql/term-search/text/prefix-rk-in/bitmapscan.sql    2017-06-01 22:11:25 +0900 (2428abc)
+++ sql/term-search/text/prefix-rk-in/bitmapscan.sql    2017-06-04 22:59:33 +0900 (565b93a)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = on;
 EXPLAIN (COSTS OFF)
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
 
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
 
 DROP TABLE readings;

  Modified: sql/term-search/text/prefix-rk-in/indexscan.sql (+2 -2)
===================================================================
--- sql/term-search/text/prefix-rk-in/indexscan.sql    2017-06-01 22:11:25 +0900 (4479590)
+++ sql/term-search/text/prefix-rk-in/indexscan.sql    2017-06-04 22:59:33 +0900 (1f153fe)
@@ -17,10 +17,10 @@ SET enable_bitmapscan = off;
 EXPLAIN (COSTS OFF)
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
 
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
 
 DROP TABLE readings;

  Modified: sql/term-search/text/prefix-rk-in/seqscan.sql (+1 -1)
===================================================================
--- sql/term-search/text/prefix-rk-in/seqscan.sql    2017-06-01 22:11:25 +0900 (286d16e)
+++ sql/term-search/text/prefix-rk-in/seqscan.sql    2017-06-04 22:59:33 +0900 (d096673)
@@ -13,6 +13,6 @@ SET enable_bitmapscan = off;
 
 SELECT katakana
   FROM readings
- WHERE katakana &^~> ARRAY['po', 'gu'];
+ WHERE katakana &^~| ARRAY['po', 'gu'];
 
 DROP TABLE readings;

  Modified: src/pgroonga.c (+27 -1)
===================================================================
--- src/pgroonga.c    2017-06-01 22:11:25 +0900 (b68bab4)
+++ src/pgroonga.c    2017-06-04 22:59:33 +0900 (82038dc)
@@ -784,7 +784,17 @@ PGrnIsQueryInStrategyIndex(Relation index, int nthAttribute)
 									  leftType,
 									  rightType,
 									  PGrnQueryInStrategyV2Number);
-	return OidIsValid(strategyOID);
+	if (OidIsValid(strategyOID))
+		return true;
+
+	strategyOID = get_opfamily_member(index->rd_opfamily[nthAttribute],
+									  leftType,
+									  rightType,
+									  PGrnQueryInStrategyV2DeprecatedNumber);
+	if (OidIsValid(strategyOID))
+		return true;
+
+	return false;
 }
 
 static bool
@@ -880,6 +890,13 @@ PGrnIsForPrefixSearchIndex(Relation index, int nthAttribute)
 	if (OidIsValid(prefixStrategyOID))
 		return true;
 
+	prefixStrategyOID = get_opfamily_member(index->rd_opfamily[nthAttribute],
+											leftType,
+											rightType,
+											PGrnPrefixStrategyV2DeprecatedNumber);
+	if (OidIsValid(prefixStrategyOID))
+		return true;
+
 	prefixInStrategyOID =
 		get_opfamily_member(index->rd_opfamily[nthAttribute],
 							leftType,
@@ -3314,7 +3331,9 @@ PGrnSearchBuildCondition(Relation index,
 	case PGrnPrefixInStrategyV2Number:
 	case PGrnPrefixRKInStrategyV2Number:
 	case PGrnQueryInStrategyV2Number:
+	case PGrnQueryInStrategyV2DeprecatedNumber:
 	case PGrnMatchInStrategyV2Number:
+	case PGrnMatchInStrategyV2DeprecatedNumber:
 		switch (valueTypeID)
 		{
 		case VARCHAROID:
@@ -3373,10 +3392,12 @@ PGrnSearchBuildCondition(Relation index,
 	case PGrnScriptStrategyV2Number:
 		break;
 	case PGrnPrefixStrategyV2Number:
+	case PGrnPrefixStrategyV2DeprecatedNumber:
 	case PGrnPrefixInStrategyV2Number:
 		operator = GRN_OP_PREFIX;
 		break;
 	case PGrnPrefixRKStrategyV2Number:
+	case PGrnPrefixRKStrategyV2DeprecatedNumber:
 	case PGrnPrefixRKInStrategyV2Number:
 		break;
 	case PGrnRegexpStrategyNumber:
@@ -3384,8 +3405,10 @@ PGrnSearchBuildCondition(Relation index,
 		operator = GRN_OP_REGEXP;
 		break;
 	case PGrnQueryInStrategyV2Number:
+	case PGrnQueryInStrategyV2DeprecatedNumber:
 		break;
 	case PGrnMatchInStrategyV2Number:
+	case PGrnMatchInStrategyV2DeprecatedNumber:
 		operator = GRN_OP_MATCH;
 		break;
 	case PGrnContainStrategyV2Number:
@@ -3432,6 +3455,7 @@ PGrnSearchBuildCondition(Relation index,
 									   GRN_TEXT_LEN(&(buffers->general)));
 		break;
 	case PGrnPrefixRKStrategyV2Number:
+	case PGrnPrefixRKStrategyV2DeprecatedNumber:
 		PGrnSearchBuildConditionPrefixRK(data,
 										 targetColumn,
 										 GRN_TEXT_VALUE(&(buffers->general)),
@@ -3460,6 +3484,7 @@ PGrnSearchBuildCondition(Relation index,
 		break;
 	}
 	case PGrnQueryInStrategyV2Number:
+	case PGrnQueryInStrategyV2DeprecatedNumber:
 	{
 		grn_obj *queries = &(buffers->general);
 		unsigned int i, n;
@@ -3483,6 +3508,7 @@ PGrnSearchBuildCondition(Relation index,
 	}
 	case PGrnPrefixInStrategyV2Number:
 	case PGrnMatchInStrategyV2Number:
+	case PGrnMatchInStrategyV2DeprecatedNumber:
 	{
 		grn_obj *keywords = &(buffers->general);
 		grn_obj keywordBuffer;

  Modified: src/pgroonga.h (+13 -5)
===================================================================
--- src/pgroonga.h    2017-06-01 22:11:25 +0900 (695fca8)
+++ src/pgroonga.h    2017-06-04 22:59:33 +0900 (f692f9d)
@@ -30,14 +30,22 @@
 #define PGrnScriptStrategyV2Number		15	/* operator &`  (script in Groonga) */
 #define PGrnPrefixStrategyV2Number		16	/* operator &^  (prefix search) */
 #define PGrnPrefixRKStrategyV2Number	17	/* operator &^~ (prefix RK search) */
-#define PGrnMatchInStrategyV2Number		18	/* operator &@> (@ in Groonga) */
-#define PGrnQueryInStrategyV2Number		19	/* operator &?> (query in Groonga) */
-#define PGrnPrefixInStrategyV2Number	20	/* operator &^>  (prefix search) */
-#define PGrnPrefixRKInStrategyV2Number	21	/* operator &^~> (prefix RK search) */
+#define PGrnMatchInStrategyV2Number		18	/* operator &@| (multiple conditions of @ in Groonga) */
+#define PGrnQueryInStrategyV2Number		19	/* operator &?| (multiple conditions of query in Groonga) */
+#define PGrnPrefixInStrategyV2Number	20	/* operator &^| (multiple conditions of prefix search) */
+#define PGrnPrefixRKInStrategyV2Number	21	/* operator &^~| (multiple conditions of prefix RK search) */
 #define PGrnRegexpStrategyV2Number		22	/* operator &~ (@~ in Groonga) */
 #define PGrnContainStrategyV2Number		23	/* operator &> (@ for vector in Groonga) */
+/* operator &^> (prefix search against text[]). Deprecated since 1.2.1. */
+#define PGrnPrefixStrategyV2DeprecatedNumber	24
+/* operator &^~> (prefix RK search against text[]). Deprecated since 1.2.1. */
+#define PGrnPrefixRKStrategyV2DeprecatedNumber	25
+/* operator &@> (multiple conditions of @ in Groonga). Deprecated since 1.2.1. */
+#define PGrnMatchInStrategyV2DeprecatedNumber	26
+/* operator &?> (multiple conditions of query in Groonga). Deprecated since 1.2.1. */
+#define PGrnQueryInStrategyV2DeprecatedNumber	27
 
-#define PGRN_N_STRATEGIES PGrnContainStrategyV2Number
+#define PGRN_N_STRATEGIES PGrnQueryInStrategyV2DeprecatedNumber
 
 /* file and table names */
 #define PGrnLogPathDefault				"pgroonga.log"




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