[Groonga-commit] pgroonga/pgroonga at 99d89c9 [master] Drop bpchar support and add support varchar support instead

Back to archive index

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����������������������������...
다운로드 



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