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