[Groonga-commit] pgroonga/pgroonga at c3080d0 [master] Add ">" suffix to contain operator

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Jun 2 09:39:34 JST 2016


Kouhei Sutou	2016-06-02 09:39:34 +0900 (Thu, 02 Jun 2016)

  New Revision: c3080d02e7c43707f818a446c9ba8d820db0e15d
  https://github.com/pgroonga/pgroonga/commit/c3080d02e7c43707f818a446c9ba8d820db0e15d

  Message:
    Add ">" suffix to contain operator
    
    Because PostgreSQL uses the convention.

  Modified files:
    expected/term-search/text-array/combined/bitmapscan.out
    expected/term-search/text-array/combined/indexscan.out
    expected/term-search/text-array/combined/seqscan.out
    expected/term-search/text-array/prefix-rk/bitmapscan.out
    expected/term-search/text-array/prefix-rk/indexscan.out
    expected/term-search/text-array/prefix-rk/seqscan.out
    expected/term-search/text-array/prefix/bitmapscan.out
    expected/term-search/text-array/prefix/indexscan.out
    expected/term-search/text-array/prefix/seqscan.out
    pgroonga.sql
    sql/term-search/text-array/combined/bitmapscan.sql
    sql/term-search/text-array/combined/indexscan.sql
    sql/term-search/text-array/combined/seqscan.sql
    sql/term-search/text-array/prefix-rk/bitmapscan.sql
    sql/term-search/text-array/prefix-rk/indexscan.sql
    sql/term-search/text-array/prefix-rk/seqscan.sql
    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
    src/pgroonga.h

  Modified: expected/term-search/text-array/combined/bitmapscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/combined/bitmapscan.out    2016-06-01 11:50:39 +0900 (0a9cbae)
+++ expected/term-search/text-array/combined/bitmapscan.out    2016-06-02 09:39:34 +0900 (de1cabe)
@@ -21,7 +21,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = on;
 SELECT names, pgroonga.score(tags)
   FROM tags
-  WHERE names &^ 'Groon' OR
+  WHERE names &^> 'Groon' OR
         readings &^~ 'posu';
       names      | score 
 -----------------+-------

  Modified: expected/term-search/text-array/combined/indexscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/combined/indexscan.out    2016-06-01 11:50:39 +0900 (75fbdb1)
+++ expected/term-search/text-array/combined/indexscan.out    2016-06-02 09:39:34 +0900 (83bb37e)
@@ -21,7 +21,7 @@ SET enable_indexscan = on;
 SET enable_bitmapscan = off;
 SELECT names, pgroonga.score(tags)
   FROM tags
-  WHERE names &^ 'Groon' OR
+  WHERE names &^> 'Groon' OR
         readings &^~ 'posu';
       names      | score 
 -----------------+-------

  Modified: expected/term-search/text-array/combined/seqscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/combined/seqscan.out    2016-06-01 11:50:39 +0900 (2745f9a)
+++ expected/term-search/text-array/combined/seqscan.out    2016-06-02 09:39:34 +0900 (57f82a5)
@@ -17,7 +17,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT names, pgroonga.score(tags)
   FROM tags
-  WHERE names &^ 'Groon' OR
+  WHERE names &^> 'Groon' OR
         readings &^~ 'posu';
       names      | score 
 -----------------+-------

  Modified: expected/term-search/text-array/prefix-rk/bitmapscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/prefix-rk/bitmapscan.out    2016-06-01 11:50:39 +0900 (93d4dcc)
+++ expected/term-search/text-array/prefix-rk/bitmapscan.out    2016-06-02 09:39:34 +0900 (9221a74)
@@ -11,7 +11,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = on;
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~ 'p';
+ WHERE katakanas &^~> 'p';
              katakanas             
 -----------------------------------
  {ポストグレスキューエル,ポスグレ}

  Modified: expected/term-search/text-array/prefix-rk/indexscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/prefix-rk/indexscan.out    2016-06-01 11:50:39 +0900 (809724a)
+++ expected/term-search/text-array/prefix-rk/indexscan.out    2016-06-02 09:39:34 +0900 (c02cc3d)
@@ -11,7 +11,7 @@ SET enable_indexscan = on;
 SET enable_bitmapscan = off;
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~ 'p';
+ WHERE katakanas &^~> 'p';
              katakanas             
 -----------------------------------
  {ピージールンガ,ピーグルン}

  Modified: expected/term-search/text-array/prefix-rk/seqscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/prefix-rk/seqscan.out    2016-06-01 11:50:39 +0900 (b0fe3e0)
+++ expected/term-search/text-array/prefix-rk/seqscan.out    2016-06-02 09:39:34 +0900 (2e39994)
@@ -9,7 +9,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~ 'p';
+ WHERE katakanas &^~> 'p';
              katakanas             
 -----------------------------------
  {ポストグレスキューエル,ポスグレ}

  Modified: expected/term-search/text-array/prefix/bitmapscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/prefix/bitmapscan.out    2016-06-01 11:50:39 +0900 (5314daf)
+++ expected/term-search/text-array/prefix/bitmapscan.out    2016-06-02 09:39:34 +0900 (a284426)
@@ -11,7 +11,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = on;
 SELECT names
   FROM tags
- WHERE names &^ 'pG';
+ WHERE names &^> 'pG';
       names      
 -----------------
  {PostgreSQL,PG}

  Modified: expected/term-search/text-array/prefix/indexscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/prefix/indexscan.out    2016-06-01 11:50:39 +0900 (f84a7d0)
+++ expected/term-search/text-array/prefix/indexscan.out    2016-06-02 09:39:34 +0900 (2ce7f75)
@@ -11,7 +11,7 @@ SET enable_indexscan = on;
 SET enable_bitmapscan = off;
 SELECT names
   FROM tags
- WHERE names &^ 'pG';
+ WHERE names &^> 'pG';
       names      
 -----------------
  {PGroonga,pgrn}

  Modified: expected/term-search/text-array/prefix/seqscan.out (+1 -1)
===================================================================
--- expected/term-search/text-array/prefix/seqscan.out    2016-06-01 11:50:39 +0900 (d927967)
+++ expected/term-search/text-array/prefix/seqscan.out    2016-06-02 09:39:34 +0900 (aedd8f9)
@@ -9,7 +9,7 @@ SET enable_indexscan = off;
 SET enable_bitmapscan = off;
 SELECT names
   FROM tags
- WHERE names &^ 'pG';
+ WHERE names &^> 'pG';
       names      
 -----------------
  {PostgreSQL,PG}

  Modified: pgroonga.sql (+29 -29)
===================================================================
--- pgroonga.sql    2016-06-01 11:50:39 +0900 (3aaf01c)
+++ pgroonga.sql    2016-06-02 09:39:34 +0900 (0c14453)
@@ -247,7 +247,7 @@ EXCEPTION
 		DELETE FROM pg_catalog.pg_am WHERE amname = 'pgroonga';
 		INSERT INTO pg_catalog.pg_am VALUES(
 			'pgroonga',	-- amname
-			19,		-- amstrategies
+			21,		-- amstrategies
 			0,		-- amsupport
 			true,		-- amcanorder
 			true,		-- amcanorderbyop
@@ -469,19 +469,6 @@ CREATE OPERATOR &^ (
 	RIGHTARG = text
 );
 
-CREATE FUNCTION pgroonga.prefix_text_array(text[], text)
-	RETURNS bool
-	AS 'MODULE_PATHNAME', 'pgroonga_prefix_text_array'
-	LANGUAGE C
-	IMMUTABLE
-	STRICT;
-
-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'
@@ -495,19 +482,6 @@ CREATE OPERATOR &^~ (
 	RIGHTARG = text
 );
 
-CREATE FUNCTION pgroonga.prefix_rk_text_array(text[], text)
-	RETURNS bool
-	AS 'MODULE_PATHNAME', 'pgroonga_prefix_rk_text_array'
-	LANGUAGE C
-	IMMUTABLE
-	STRICT;
-
-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'
@@ -547,6 +521,32 @@ CREATE OPERATOR &?> (
 	RIGHTARG = text[]
 );
 
+CREATE FUNCTION pgroonga.prefix_contain_text_array(text[], text)
+	RETURNS bool
+	AS 'MODULE_PATHNAME', 'pgroonga_prefix_contain_text_array'
+	LANGUAGE C
+	IMMUTABLE
+	STRICT;
+
+CREATE OPERATOR &^> (
+	PROCEDURE = pgroonga.prefix_contain_text_array,
+	LEFTARG = text[],
+	RIGHTARG = text
+);
+
+CREATE FUNCTION pgroonga.prefix_rk_contain_text_array(text[], text)
+	RETURNS bool
+	AS 'MODULE_PATHNAME', 'pgroonga_prefix_rk_contain_text_array'
+	LANGUAGE C
+	IMMUTABLE
+	STRICT;
+
+CREATE OPERATOR &^~> (
+	PROCEDURE = pgroonga.prefix_rk_contain_text_array,
+	LEFTARG = text[],
+	RIGHTARG = text
+);
+
 CREATE OPERATOR CLASS pgroonga.text_full_text_search_ops_v2 FOR TYPE text
 	USING pgroonga AS
 		OPERATOR 6 pg_catalog.~~,
@@ -565,5 +565,5 @@ CREATE OPERATOR CLASS pgroonga.text_term_search_ops_v2 FOR TYPE 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);

  Modified: sql/term-search/text-array/combined/bitmapscan.sql (+2 -2)
===================================================================
--- sql/term-search/text-array/combined/bitmapscan.sql    2016-06-01 11:50:39 +0900 (f3cb2c2)
+++ sql/term-search/text-array/combined/bitmapscan.sql    2016-06-02 09:39:34 +0900 (5e76b0d)
@@ -25,7 +25,7 @@ SET enable_bitmapscan = on;
 
 SELECT names, pgroonga.score(tags)
   FROM tags
-  WHERE names &^ 'Groon' OR
-        readings &^~ 'posu';
+  WHERE names &^> 'Groon' OR
+        readings &^~> 'posu';
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/combined/indexscan.sql (+2 -2)
===================================================================
--- sql/term-search/text-array/combined/indexscan.sql    2016-06-01 11:50:39 +0900 (f4ccef4)
+++ sql/term-search/text-array/combined/indexscan.sql    2016-06-02 09:39:34 +0900 (bd91b82)
@@ -25,7 +25,7 @@ SET enable_bitmapscan = off;
 
 SELECT names, pgroonga.score(tags)
   FROM tags
-  WHERE names &^ 'Groon' OR
-        readings &^~ 'posu';
+  WHERE names &^> 'Groon' OR
+        readings &^~> 'posu';
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/combined/seqscan.sql (+2 -2)
===================================================================
--- sql/term-search/text-array/combined/seqscan.sql    2016-06-01 11:50:39 +0900 (537d7c7)
+++ sql/term-search/text-array/combined/seqscan.sql    2016-06-02 09:39:34 +0900 (98639f3)
@@ -20,7 +20,7 @@ SET enable_bitmapscan = off;
 
 SELECT names, pgroonga.score(tags)
   FROM tags
-  WHERE names &^ 'Groon' OR
-        readings &^~ 'posu';
+  WHERE names &^> 'Groon' OR
+        readings &^~> 'posu';
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/prefix-rk/bitmapscan.sql (+1 -1)
===================================================================
--- sql/term-search/text-array/prefix-rk/bitmapscan.sql    2016-06-01 11:50:39 +0900 (4646b3e)
+++ sql/term-search/text-array/prefix-rk/bitmapscan.sql    2016-06-02 09:39:34 +0900 (f2c157c)
@@ -15,6 +15,6 @@ SET enable_bitmapscan = on;
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~ 'p';
+ WHERE katakanas &^~> 'p';
 
 DROP TABLE readings;

  Modified: sql/term-search/text-array/prefix-rk/indexscan.sql (+1 -1)
===================================================================
--- sql/term-search/text-array/prefix-rk/indexscan.sql    2016-06-01 11:50:39 +0900 (4cce51f)
+++ sql/term-search/text-array/prefix-rk/indexscan.sql    2016-06-02 09:39:34 +0900 (af5b5ee)
@@ -15,6 +15,6 @@ SET enable_bitmapscan = off;
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~ 'p';
+ WHERE katakanas &^~> 'p';
 
 DROP TABLE readings;

  Modified: sql/term-search/text-array/prefix-rk/seqscan.sql (+1 -1)
===================================================================
--- sql/term-search/text-array/prefix-rk/seqscan.sql    2016-06-01 11:50:39 +0900 (63fcad9)
+++ sql/term-search/text-array/prefix-rk/seqscan.sql    2016-06-02 09:39:34 +0900 (c16b755)
@@ -12,6 +12,6 @@ SET enable_bitmapscan = off;
 
 SELECT katakanas
   FROM readings
- WHERE katakanas &^~ 'p';
+ WHERE katakanas &^~> 'p';
 
 DROP TABLE readings;

  Modified: sql/term-search/text-array/prefix/bitmapscan.sql (+1 -1)
===================================================================
--- sql/term-search/text-array/prefix/bitmapscan.sql    2016-06-01 11:50:39 +0900 (0f7e33b)
+++ sql/term-search/text-array/prefix/bitmapscan.sql    2016-06-02 09:39:34 +0900 (e4c5a2a)
@@ -15,6 +15,6 @@ SET enable_bitmapscan = on;
 
 SELECT names
   FROM tags
- WHERE names &^ 'pG';
+ WHERE names &^> 'pG';
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/prefix/indexscan.sql (+1 -1)
===================================================================
--- sql/term-search/text-array/prefix/indexscan.sql    2016-06-01 11:50:39 +0900 (b3b5ffe)
+++ sql/term-search/text-array/prefix/indexscan.sql    2016-06-02 09:39:34 +0900 (f3a079d)
@@ -15,6 +15,6 @@ SET enable_bitmapscan = off;
 
 SELECT names
   FROM tags
- WHERE names &^ 'pG';
+ WHERE names &^> 'pG';
 
 DROP TABLE tags;

  Modified: sql/term-search/text-array/prefix/seqscan.sql (+1 -1)
===================================================================
--- sql/term-search/text-array/prefix/seqscan.sql    2016-06-01 11:50:39 +0900 (ac5ea89)
+++ sql/term-search/text-array/prefix/seqscan.sql    2016-06-02 09:39:34 +0900 (520d495)
@@ -12,6 +12,6 @@ SET enable_bitmapscan = off;
 
 SELECT names
   FROM tags
- WHERE names &^ 'pG';
+ WHERE names &^> 'pG';
 
 DROP TABLE tags;

  Modified: src/pgroonga.c (+91 -77)
===================================================================
--- src/pgroonga.c    2016-06-01 11:50:39 +0900 (49f90b2)
+++ src/pgroonga.c    2016-06-02 09:39:34 +0900 (8b0ae4d)
@@ -161,11 +161,11 @@ PG_FUNCTION_INFO_V1(pgroonga_query_text);
 PG_FUNCTION_INFO_V1(pgroonga_similar_text);
 PG_FUNCTION_INFO_V1(pgroonga_script_text);
 PG_FUNCTION_INFO_V1(pgroonga_prefix_text);
-PG_FUNCTION_INFO_V1(pgroonga_prefix_text_array);
 PG_FUNCTION_INFO_V1(pgroonga_prefix_rk_text);
-PG_FUNCTION_INFO_V1(pgroonga_prefix_rk_text_array);
 PG_FUNCTION_INFO_V1(pgroonga_match_contain_text);
 PG_FUNCTION_INFO_V1(pgroonga_query_contain_text);
+PG_FUNCTION_INFO_V1(pgroonga_prefix_contain_text_array);
+PG_FUNCTION_INFO_V1(pgroonga_prefix_rk_contain_text_array);
 
 PG_FUNCTION_INFO_V1(pgroonga_insert);
 PG_FUNCTION_INFO_V1(pgroonga_beginscan);
@@ -749,6 +749,7 @@ static bool
 PGrnIsForPrefixSearchIndex(Relation index, int nthAttribute)
 {
 	Oid prefixStrategyOID;
+	Oid prefixContainStrategyOID;
 	Oid leftType;
 	Oid rightType;
 
@@ -771,7 +772,18 @@ PGrnIsForPrefixSearchIndex(Relation index, int nthAttribute)
 											leftType,
 											rightType,
 											PGrnPrefixStrategyV2Number);
-	return OidIsValid(prefixStrategyOID);
+	if (OidIsValid(prefixStrategyOID))
+		return true;
+
+	prefixContainStrategyOID =
+		get_opfamily_member(index->rd_opfamily[nthAttribute],
+							leftType,
+							rightType,
+							PGrnPrefixContainStrategyV2Number);
+	if (OidIsValid(prefixContainStrategyOID))
+		return true;
+
+	return false;
 }
 
 /**
@@ -1672,44 +1684,6 @@ pgroonga_prefix_text(PG_FUNCTION_ARGS)
 	PG_RETURN_BOOL(matched);
 }
 
-
-/**
- * pgroonga.prefix_text_array(targets text[], prefix text) : bool
- */
-Datum
-pgroonga_prefix_text_array(PG_FUNCTION_ARGS)
-{
-	ArrayType *targets = PG_GETARG_ARRAYTYPE_P(0);
-	text *prefix = PG_GETARG_TEXT_PP(1);
-	bool matched = false;
-
-	int i, n;
-
-	n = ARR_DIMS(targets)[0];
-	for (i = 1; i <= n; i++)
-	{
-		Datum targetDatum;
-		text *target;
-		bool isNULL;
-
-		targetDatum = array_ref(targets, 1, &i, -1, -1, false, 'i', &isNULL);
-		if (isNULL)
-			continue;
-
-		target = DatumGetTextPP(targetDatum);
-		matched = pgroonga_prefix_raw(VARDATA_ANY(target),
-									  VARSIZE_ANY_EXHDR(target),
-									  VARDATA_ANY(prefix),
-									  VARSIZE_ANY_EXHDR(prefix));
-		if (matched)
-		{
-			break;
-		}
-	}
-
-	PG_RETURN_BOOL(matched);
-}
-
 static grn_bool
 pgroonga_prefix_rk_raw(const char *text, unsigned int textSize,
 					   const char *prefix, unsigned int prefixSize)
@@ -1782,42 +1756,6 @@ pgroonga_prefix_rk_text(PG_FUNCTION_ARGS)
 }
 
 /**
- * pgroonga.prefix_rk_text_array(targets text[], prefix text) : bool
- */
-Datum
-pgroonga_prefix_rk_text_array(PG_FUNCTION_ARGS)
-{
-	ArrayType *targets = PG_GETARG_ARRAYTYPE_P(0);
-	text *prefix = PG_GETARG_TEXT_PP(1);
-	bool matched = false;
-	int i, n;
-
-	n = ARR_DIMS(targets)[0];
-	for (i = 1; i <= n; i++)
-	{
-		Datum targetDatum;
-		text *target;
-		bool isNULL;
-
-		targetDatum = array_ref(targets, 1, &i, -1, -1, false, 'i', &isNULL);
-		if (isNULL)
-			continue;
-
-		target = DatumGetTextPP(targetDatum);
-		matched = pgroonga_prefix_rk_raw(VARDATA_ANY(target),
-										 VARSIZE_ANY_EXHDR(target),
-										 VARDATA_ANY(prefix),
-										 VARSIZE_ANY_EXHDR(prefix));
-		if (matched)
-		{
-			break;
-		}
-	}
-
-	PG_RETURN_BOOL(matched);
-}
-
-/**
  * pgroonga.match_contain_text(target text, keywords text[]) : bool
  */
 Datum
@@ -1885,6 +1823,79 @@ pgroonga_query_contain_text(PG_FUNCTION_ARGS)
 	PG_RETURN_BOOL(matched);
 }
 
+/**
+ * pgroonga.prefix_contain_text_array(targets text[], prefix text) : bool
+ */
+Datum
+pgroonga_prefix_contain_text_array(PG_FUNCTION_ARGS)
+{
+	ArrayType *targets = PG_GETARG_ARRAYTYPE_P(0);
+	text *prefix = PG_GETARG_TEXT_PP(1);
+	bool matched = false;
+
+	int i, n;
+
+	n = ARR_DIMS(targets)[0];
+	for (i = 1; i <= n; i++)
+	{
+		Datum targetDatum;
+		text *target;
+		bool isNULL;
+
+		targetDatum = array_ref(targets, 1, &i, -1, -1, false, 'i', &isNULL);
+		if (isNULL)
+			continue;
+
+		target = DatumGetTextPP(targetDatum);
+		matched = pgroonga_prefix_raw(VARDATA_ANY(target),
+									  VARSIZE_ANY_EXHDR(target),
+									  VARDATA_ANY(prefix),
+									  VARSIZE_ANY_EXHDR(prefix));
+		if (matched)
+		{
+			break;
+		}
+	}
+
+	PG_RETURN_BOOL(matched);
+}
+
+/**
+ * pgroonga.prefix_rk_contain_text_array(targets text[], prefix text) : bool
+ */
+Datum
+pgroonga_prefix_rk_contain_text_array(PG_FUNCTION_ARGS)
+{
+	ArrayType *targets = PG_GETARG_ARRAYTYPE_P(0);
+	text *prefix = PG_GETARG_TEXT_PP(1);
+	bool matched = false;
+	int i, n;
+
+	n = ARR_DIMS(targets)[0];
+	for (i = 1; i <= n; i++)
+	{
+		Datum targetDatum;
+		text *target;
+		bool isNULL;
+
+		targetDatum = array_ref(targets, 1, &i, -1, -1, false, 'i', &isNULL);
+		if (isNULL)
+			continue;
+
+		target = DatumGetTextPP(targetDatum);
+		matched = pgroonga_prefix_rk_raw(VARDATA_ANY(target),
+										 VARSIZE_ANY_EXHDR(target),
+										 VARDATA_ANY(prefix),
+										 VARSIZE_ANY_EXHDR(prefix));
+		if (matched)
+		{
+			break;
+		}
+	}
+
+	PG_RETURN_BOOL(matched);
+}
+
 static void
 PGrnInsert(Relation index,
 		   grn_obj *sourcesTable,
@@ -2592,9 +2603,11 @@ PGrnSearchBuildCondition(IndexScanDesc scan,
 	case PGrnScriptStrategyV2Number:
 		break;
 	case PGrnPrefixStrategyV2Number:
+	case PGrnPrefixContainStrategyV2Number:
 		operator = GRN_OP_PREFIX;
 		break;
 	case PGrnPrefixRKStrategyV2Number:
+	case PGrnPrefixRKContainStrategyV2Number:
 		break;
 	case PGrnRegexpStrategyNumber:
 		operator = GRN_OP_REGEXP;
@@ -2651,6 +2664,7 @@ PGrnSearchBuildCondition(IndexScanDesc scan,
 									   GRN_TEXT_LEN(&(buffers->general)));
 		break;
 	case PGrnPrefixRKStrategyV2Number:
+	case PGrnPrefixRKContainStrategyV2Number:
 		PGrnSearchBuildConditionPrefixRK(so,
 										 data,
 										 targetColumn,

  Modified: src/pgroonga.h (+5 -3)
===================================================================
--- src/pgroonga.h    2016-06-01 11:50:39 +0900 (30cb638)
+++ src/pgroonga.h    2016-06-02 09:39:34 +0900 (fcf755c)
@@ -32,8 +32,10 @@
 #define PGrnPrefixRKStrategyV2Number	17	/* operator &^~ (prefix RK search) */
 #define PGrnMatchContainStrategyNumber	18	/* operator &@> (@ in Groonga) */
 #define PGrnQueryContainStrategyNumber	19	/* operator &?> (query in Groonga) */
+#define PGrnPrefixContainStrategyV2Number	20	/* operator &^>  (prefix search) */
+#define PGrnPrefixRKContainStrategyV2Number	21	/* operator &^~> (prefix RK search) */
 
-#define PGRN_N_STRATEGIES PGrnQueryContainStrategyNumber
+#define PGRN_N_STRATEGIES PGrnPrefixRKContainStrategyV2Number
 
 /* file and table names */
 #define PGrnLogBasename					"pgroonga.log"
@@ -79,11 +81,11 @@ extern Datum PGDLLEXPORT pgroonga_query_text(PG_FUNCTION_ARGS);
 extern Datum PGDLLEXPORT pgroonga_similar_text(PG_FUNCTION_ARGS);
 extern Datum PGDLLEXPORT pgroonga_script_text(PG_FUNCTION_ARGS);
 extern Datum PGDLLEXPORT pgroonga_prefix_text(PG_FUNCTION_ARGS);
-extern Datum PGDLLEXPORT pgroonga_prefix_text_array(PG_FUNCTION_ARGS);
 extern Datum PGDLLEXPORT pgroonga_prefix_rk_text(PG_FUNCTION_ARGS);
-extern Datum PGDLLEXPORT pgroonga_prefix_rk_text_array(PG_FUNCTION_ARGS);
 extern Datum PGDLLEXPORT pgroonga_match_contain_text(PG_FUNCTION_ARGS);
 extern Datum PGDLLEXPORT pgroonga_query_contain_text(PG_FUNCTION_ARGS);
+extern Datum PGDLLEXPORT pgroonga_prefix_contain_text_array(PG_FUNCTION_ARGS);
+extern Datum PGDLLEXPORT pgroonga_prefix_rk_contain_text_array(PG_FUNCTION_ARGS);
 
 extern Datum PGDLLEXPORT pgroonga_insert(PG_FUNCTION_ARGS);
 extern Datum PGDLLEXPORT pgroonga_beginscan(PG_FUNCTION_ARGS);
-------------- next part --------------
HTML����������������������������...
Download 



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