Kouhei Sutou
null+****@clear*****
Sun Feb 15 12:19:48 JST 2015
Kouhei Sutou 2015-02-15 12:19:48 +0900 (Sun, 15 Feb 2015) New Revision: 99d89c99fa53a833716068e564b61b89bc7271c0 https://github.com/pgroonga/pgroonga/commit/99d89c99fa53a833716068e564b61b89bc7271c0 Message: Drop bpchar support and add support varchar support instead text compare support is also dropped. Because we can't use over 4096 byte data as index key. Modified files: Makefile pgroonga.c pgroonga.h pgroonga.sql pgroonga_types.c Renamed files: expected/compare/varchar/single/equal/bitmapscan.out (from expected/compare/text/single/equal/bitmapscan.out) expected/compare/varchar/single/equal/indexscan.out (from expected/compare/text/single/equal/indexscan.out) expected/compare/varchar/single/equal/seqscan.out (from expected/compare/text/single/equal/seqscan.out) sql/compare/varchar/single/equal/bitmapscan.sql (from sql/compare/text/single/equal/bitmapscan.sql) sql/compare/varchar/single/equal/indexscan.sql (from sql/compare/text/single/equal/indexscan.sql) sql/compare/varchar/single/equal/seqscan.sql (from sql/compare/text/single/equal/seqscan.sql) Modified: Makefile (+2 -2) =================================================================== --- Makefile 2015-02-15 11:58:35 +0900 (4265960) +++ Makefile 2015-02-15 12:19:48 +0900 (5378744) @@ -33,7 +33,7 @@ installcheck: results/full-text-search/text/single/score installcheck: results/full-text-search/text/multiple/contain installcheck: results/full-text-search/text/options/tokenizer installcheck: results/full-text-search/text/options/normalizer -installcheck: results/compare/text/single/equal +installcheck: results/compare/varchar/single/equal installcheck: results/compare/integer/single/less-than-equal installcheck: results/compare/integer/single/greater-than-equal installcheck: results/compare/integer/single/between @@ -59,7 +59,7 @@ results/full-text-search/text/options/tokenizer: @mkdir -p $@ results/full-text-search/text/options/normalizer: @mkdir -p $@ -results/compare/text/single/equal: +results/compare/varchar/single/equal: @mkdir -p $@ results/compare/integer/single/less-than-equal: @mkdir -p $@ Renamed: expected/compare/varchar/single/equal/bitmapscan.out (+2 -3) 74% =================================================================== --- expected/compare/text/single/equal/bitmapscan.out 2015-02-15 11:58:35 +0900 (6455400) +++ expected/compare/varchar/single/equal/bitmapscan.out 2015-02-15 12:19:48 +0900 (775f1f6) @@ -1,12 +1,11 @@ CREATE TABLE memos ( id integer, - title text + title varchar(4096) ); INSERT INTO memos VALUES (1, 'PostgreSQL'); INSERT INTO memos VALUES (2, 'Groonga'); INSERT INTO memos VALUES (3, 'PGroonga'); -CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_ops); -ERROR: column "content" does not exist +CREATE INDEX grnindex ON memos USING pgroonga (title pgroonga.varchar_ops); SET enable_seqscan = off; SET enable_indexscan = off; SET enable_bitmapscan = on; Renamed: expected/compare/varchar/single/equal/indexscan.out (+1 -2) 77% =================================================================== --- expected/compare/text/single/equal/indexscan.out 2015-02-15 11:58:35 +0900 (7138d51) +++ expected/compare/varchar/single/equal/indexscan.out 2015-02-15 12:19:48 +0900 (149f9f7) @@ -5,8 +5,7 @@ CREATE TABLE memos ( INSERT INTO memos VALUES (1, 'PostgreSQL'); INSERT INTO memos VALUES (2, 'Groonga'); INSERT INTO memos VALUES (3, 'PGroonga'); -CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_ops); -ERROR: column "content" does not exist +CREATE INDEX grnindex ON memos USING pgroonga (title pgroonga.varchar_ops); SET enable_seqscan = off; SET enable_indexscan = on; SET enable_bitmapscan = off; Renamed: expected/compare/varchar/single/equal/seqscan.out (+1 -2) 77% =================================================================== --- expected/compare/text/single/equal/seqscan.out 2015-02-15 11:58:35 +0900 (745f030) +++ expected/compare/varchar/single/equal/seqscan.out 2015-02-15 12:19:48 +0900 (ed2db2f) @@ -5,8 +5,7 @@ CREATE TABLE memos ( INSERT INTO memos VALUES (1, 'PostgreSQL'); INSERT INTO memos VALUES (2, 'Groonga'); INSERT INTO memos VALUES (3, 'PGroonga'); -CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_ops); -ERROR: column "content" does not exist +CREATE INDEX grnindex ON memos USING pgroonga (title pgroonga.varchar_ops); SET enable_seqscan = on; SET enable_indexscan = off; SET enable_bitmapscan = off; Modified: pgroonga.c (+7 -7) =================================================================== --- pgroonga.c 2015-02-15 11:58:35 +0900 (ab0c5b1) +++ pgroonga.c 2015-02-15 12:19:48 +0900 (beebc84) @@ -96,7 +96,7 @@ PG_FUNCTION_INFO_V1(pgroonga_command); PG_FUNCTION_INFO_V1(pgroonga_contain_text); PG_FUNCTION_INFO_V1(pgroonga_contain_text_array); -PG_FUNCTION_INFO_V1(pgroonga_contain_bpchar); +PG_FUNCTION_INFO_V1(pgroonga_contain_varchar); PG_FUNCTION_INFO_V1(pgroonga_match); PG_FUNCTION_INFO_V1(pgroonga_insert); @@ -967,18 +967,18 @@ pgroonga_contain_text_array(PG_FUNCTION_ARGS) } /** - * pgroonga.contain(doc bpchar, key bpchar) : bool + * pgroonga.contain(doc varchar, key varchar) : bool */ Datum -pgroonga_contain_bpchar(PG_FUNCTION_ARGS) +pgroonga_contain_varchar(PG_FUNCTION_ARGS) { - BpChar *doc = PG_GETARG_BPCHAR_PP(0); - BpChar *key = PG_GETARG_BPCHAR_PP(1); + VarChar *doc = PG_GETARG_VARCHAR_PP(0); + VarChar *key = PG_GETARG_VARCHAR_PP(1); grn_bool contained; contained = - pgroonga_contain_raw(VARDATA_ANY(doc), pgroonga_bpchar_size(doc), - VARDATA_ANY(key), pgroonga_bpchar_size(key)); + pgroonga_contain_raw(VARDATA_ANY(doc), VARSIZE_ANY_EXHDR(doc), + VARDATA_ANY(key), VARSIZE_ANY_EXHDR(key)); PG_RETURN_BOOL(contained); } Modified: pgroonga.h (+2 -4) =================================================================== --- pgroonga.h 2015-02-15 11:58:35 +0900 (e9bdf06) +++ pgroonga.h 2015-02-15 12:19:48 +0900 (e689829) @@ -51,7 +51,7 @@ extern Datum PGDLLEXPORT pgroonga_command(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_contain_text(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_contain_text_array(PG_FUNCTION_ARGS); -extern Datum PGDLLEXPORT pgroonga_contain_bpchar(PG_FUNCTION_ARGS); +extern Datum PGDLLEXPORT pgroonga_contain_varchar(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_match(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_insert(PG_FUNCTION_ARGS); @@ -68,11 +68,9 @@ extern Datum PGDLLEXPORT pgroonga_costestimate(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_options(PG_FUNCTION_ARGS); /* in groonga_types.c */ -int pgroonga_bpchar_size(const BpChar *bpchar); - extern Datum PGDLLEXPORT pgroonga_get_text(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_get_text_array(PG_FUNCTION_ARGS); -extern Datum PGDLLEXPORT pgroonga_get_bpchar(PG_FUNCTION_ARGS); +extern Datum PGDLLEXPORT pgroonga_get_varchar(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_get_bool(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_get_int2(PG_FUNCTION_ARGS); extern Datum PGDLLEXPORT pgroonga_get_int4(PG_FUNCTION_ARGS); Modified: pgroonga.sql (+20 -30) =================================================================== --- pgroonga.sql 2015-02-15 11:58:35 +0900 (cea4a69) +++ pgroonga.sql 2015-02-15 12:19:48 +0900 (3cd1180) @@ -37,9 +37,9 @@ CREATE FUNCTION pgroonga.contain(target text[], query text) IMMUTABLE STRICT; -CREATE FUNCTION pgroonga.contain(bpchar, bpchar) +CREATE FUNCTION pgroonga.contain(varchar, varchar) RETURNS bool - AS 'MODULE_PATHNAME', 'pgroonga_contain_bpchar' + AS 'MODULE_PATHNAME', 'pgroonga_contain_varchar' LANGUAGE C IMMUTABLE STRICT; @@ -58,8 +58,8 @@ CREATE OPERATOR %% ( CREATE OPERATOR %% ( PROCEDURE = pgroonga.contain, - LEFTARG = bpchar, - RIGHTARG = bpchar + LEFTARG = varchar, + RIGHTARG = varchar ); @@ -77,7 +77,7 @@ CREATE FUNCTION pgroonga.match(text[], text) IMMUTABLE STRICT; -CREATE FUNCTION pgroonga.match(bpchar, bpchar) +CREATE FUNCTION pgroonga.match(varchar, varchar) RETURNS bool AS 'MODULE_PATHNAME', 'pgroonga_match' LANGUAGE C @@ -98,8 +98,8 @@ CREATE OPERATOR @@ ( CREATE OPERATOR @@ ( PROCEDURE = pgroonga.match, - LEFTARG = bpchar, - RIGHTARG = bpchar + LEFTARG = varchar, + RIGHTARG = varchar ); @@ -160,9 +160,9 @@ CREATE FUNCTION pgroonga.get_text_array(internal, internal, text[]) RETURNS void AS 'MODULE_PATHNAME', 'pgroonga_get_text_array' LANGUAGE C; -CREATE FUNCTION pgroonga.get_bpchar(internal, internal, bpchar) +CREATE FUNCTION pgroonga.get_varchar(internal, internal, varchar) RETURNS void - AS 'MODULE_PATHNAME', 'pgroonga_get_bpchar' + AS 'MODULE_PATHNAME', 'pgroonga_get_varchar' LANGUAGE C; CREATE FUNCTION pgroonga.get_bool(internal, internal, bool) RETURNS void @@ -239,16 +239,6 @@ CREATE OPERATOR CLASS pgroonga.full_text_search_text_ops DEFAULT FOR TYPE text FUNCTION 1 pgroonga.get_text(internal, internal, text), FUNCTION 2 pgroonga.get_text(internal, internal, text); -CREATE OPERATOR CLASS pgroonga.text_ops FOR TYPE text - USING pgroonga AS - OPERATOR 1 <, - OPERATOR 2 <=, - OPERATOR 3 =, - OPERATOR 4 >=, - OPERATOR 5 >, - FUNCTION 1 pgroonga.get_text(internal, internal, text), - FUNCTION 2 pgroonga.get_text(internal, internal, text); - CREATE OPERATOR CLASS pgroonga.full_text_search_text_array_ops FOR TYPE text[] USING pgroonga AS OPERATOR 7 %% (text[], text), @@ -262,22 +252,22 @@ CREATE OPERATOR CLASS pgroonga.text_array_ops DEFAULT FOR TYPE text[] FUNCTION 1 pgroonga.get_text_array(internal, internal, text[]), FUNCTION 2 pgroonga.get_text(internal, internal, text); -CREATE OPERATOR CLASS pgroonga.full_text_search_bpchar_ops DEFAULT FOR TYPE bpchar +CREATE OPERATOR CLASS pgroonga.full_text_search_varchar_ops DEFAULT FOR TYPE varchar USING pgroonga AS OPERATOR 7 %%, OPERATOR 8 @@, - FUNCTION 1 pgroonga.get_bpchar(internal, internal, bpchar), - FUNCTION 2 pgroonga.get_bpchar(internal, internal, bpchar); + FUNCTION 1 pgroonga.get_varchar(internal, internal, varchar), + FUNCTION 2 pgroonga.get_varchar(internal, internal, varchar); -CREATE OPERATOR CLASS pgroonga.bpchar_ops FOR TYPE bpchar +CREATE OPERATOR CLASS pgroonga.varchar_ops FOR TYPE varchar USING pgroonga AS - OPERATOR 1 <, - OPERATOR 2 <=, - OPERATOR 3 =, - OPERATOR 4 >=, - OPERATOR 5 >, - FUNCTION 1 pgroonga.get_bpchar(internal, internal, bpchar), - FUNCTION 2 pgroonga.get_bpchar(internal, internal, bpchar); + OPERATOR 1 < (text, text), + OPERATOR 2 <= (text, text), + OPERATOR 3 = (text, text), + OPERATOR 4 >= (text, text), + OPERATOR 5 > (text, text), + FUNCTION 1 pgroonga.get_varchar(internal, internal, varchar), + FUNCTION 2 pgroonga.get_varchar(internal, internal, varchar); CREATE OPERATOR CLASS pgroonga.bool_ops DEFAULT FOR TYPE bool USING pgroonga AS Modified: pgroonga_types.c (+4 -30) =================================================================== --- pgroonga_types.c 2015-02-15 11:58:35 +0900 (e8221c8) +++ pgroonga_types.c 2015-02-15 12:19:48 +0900 (853f624) @@ -14,25 +14,9 @@ #include <math.h> -int -pgroonga_bpchar_size(const BpChar *arg) -{ - char *s = VARDATA_ANY(arg); - int i; - int len; - - len = VARSIZE_ANY_EXHDR(arg); - for (i = len - 1; i >= 0; i--) - { - if (s[i] != ' ') - break; - } - return i + 1; -} - PG_FUNCTION_INFO_V1(pgroonga_get_text); PG_FUNCTION_INFO_V1(pgroonga_get_text_array); -PG_FUNCTION_INFO_V1(pgroonga_get_bpchar); +PG_FUNCTION_INFO_V1(pgroonga_get_varchar); PG_FUNCTION_INFO_V1(pgroonga_get_bool); PG_FUNCTION_INFO_V1(pgroonga_get_int2); PG_FUNCTION_INFO_V1(pgroonga_get_int4); @@ -41,16 +25,6 @@ PG_FUNCTION_INFO_V1(pgroonga_get_float4); PG_FUNCTION_INFO_V1(pgroonga_get_float8); PG_FUNCTION_INFO_V1(pgroonga_get_timestamp); PG_FUNCTION_INFO_V1(pgroonga_get_timestamptz); -PG_FUNCTION_INFO_V1(pgroonga_set_text); -PG_FUNCTION_INFO_V1(pgroonga_set_bpchar); -PG_FUNCTION_INFO_V1(pgroonga_set_bool); -PG_FUNCTION_INFO_V1(pgroonga_set_int2); -PG_FUNCTION_INFO_V1(pgroonga_set_int4); -PG_FUNCTION_INFO_V1(pgroonga_set_int8); -PG_FUNCTION_INFO_V1(pgroonga_set_float4); -PG_FUNCTION_INFO_V1(pgroonga_set_float8); -PG_FUNCTION_INFO_V1(pgroonga_set_timestamp); -PG_FUNCTION_INFO_V1(pgroonga_set_timestamptz); Datum pgroonga_get_text(PG_FUNCTION_ARGS) @@ -95,13 +69,13 @@ pgroonga_get_text_array(PG_FUNCTION_ARGS) } Datum -pgroonga_get_bpchar(PG_FUNCTION_ARGS) +pgroonga_get_varchar(PG_FUNCTION_ARGS) { grn_ctx *ctx = (grn_ctx *) PG_GETARG_POINTER(0); grn_obj *obj = (grn_obj *) PG_GETARG_POINTER(1); - BpChar *var = PG_GETARG_BPCHAR_PP(2); + VarChar *var = PG_GETARG_VARCHAR_PP(2); - GRN_TEXT_SET(ctx, obj, VARDATA_ANY(var), pgroonga_bpchar_size(var)); + GRN_TEXT_SET(ctx, obj, VARDATA_ANY(var), VARSIZE_ANY_EXHDR(var)); PG_RETURN_VOID(); } Renamed: sql/compare/varchar/single/equal/bitmapscan.sql (+2 -2) 76% =================================================================== --- sql/compare/text/single/equal/bitmapscan.sql 2015-02-15 11:58:35 +0900 (3b460f6) +++ sql/compare/varchar/single/equal/bitmapscan.sql 2015-02-15 12:19:48 +0900 (06e2eac) @@ -1,13 +1,13 @@ CREATE TABLE memos ( id integer, - title text + title varchar(4096) ); INSERT INTO memos VALUES (1, 'PostgreSQL'); INSERT INTO memos VALUES (2, 'Groonga'); INSERT INTO memos VALUES (3, 'PGroonga'); -CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_ops); +CREATE INDEX grnindex ON memos USING pgroonga (title pgroonga.varchar_ops); SET enable_seqscan = off; SET enable_indexscan = off; Renamed: sql/compare/varchar/single/equal/indexscan.sql (+1 -1) 81% =================================================================== --- sql/compare/text/single/equal/indexscan.sql 2015-02-15 11:58:35 +0900 (517c082) +++ sql/compare/varchar/single/equal/indexscan.sql 2015-02-15 12:19:48 +0900 (805e312) @@ -7,7 +7,7 @@ INSERT INTO memos VALUES (1, 'PostgreSQL'); INSERT INTO memos VALUES (2, 'Groonga'); INSERT INTO memos VALUES (3, 'PGroonga'); -CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_ops); +CREATE INDEX grnindex ON memos USING pgroonga (title pgroonga.varchar_ops); SET enable_seqscan = off; SET enable_indexscan = on; Renamed: sql/compare/varchar/single/equal/seqscan.sql (+1 -1) 81% =================================================================== --- sql/compare/text/single/equal/seqscan.sql 2015-02-15 11:58:35 +0900 (20f41aa) +++ sql/compare/varchar/single/equal/seqscan.sql 2015-02-15 12:19:48 +0900 (f2143a0) @@ -7,7 +7,7 @@ INSERT INTO memos VALUES (1, 'PostgreSQL'); INSERT INTO memos VALUES (2, 'Groonga'); INSERT INTO memos VALUES (3, 'PGroonga'); -CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_ops); +CREATE INDEX grnindex ON memos USING pgroonga (title pgroonga.varchar_ops); SET enable_seqscan = on; SET enable_indexscan = off; -------------- next part -------------- HTML����������������������������... 다운로드