[Groonga-commit] pgroonga/pgroonga at 53e0816 [master] Accept 'none' as none value for tokenizer and normalizer

Zurück zum Archiv-Index

Kouhei Sutou null+****@clear*****
Thu Nov 19 15:31:24 JST 2015


Kouhei Sutou	2015-11-19 15:31:24 +0900 (Thu, 19 Nov 2015)

  New Revision: 53e0816fa7db6c9b35b4f52353a8832ed7abc36c
  https://github.com/pgroonga/pgroonga/commit/53e0816fa7db6c9b35b4f52353a8832ed7abc36c

  Message:
    Accept 'none' as none value for tokenizer and normalizer
    
    Because pg_dump outputs empty value as 'WITH (normalizer=)'. It's
    invalid SQL.
    
    [groonga-dev,03664]
    
    Reported by Naoki Takami. Thanks!!!

  Copied files:
    expected/full-text-search/text/options/normalizer/empty.out
      (from expected/full-text-search/text/options/normalizer/none.out)
    expected/full-text-search/text/options/tokenizer/empty.out
      (from expected/full-text-search/text/options/tokenizer/none.out)
    sql/full-text-search/text/options/normalizer/empty.sql
      (from sql/full-text-search/text/options/normalizer/none.sql)
    sql/full-text-search/text/options/tokenizer/empty.sql
      (from sql/full-text-search/text/options/tokenizer/none.sql)
  Modified files:
    expected/full-text-search/text/options/normalizer/none.out
    expected/full-text-search/text/options/tokenizer/none.out
    pgroonga.c
    sql/full-text-search/text/options/normalizer/none.sql
    sql/full-text-search/text/options/tokenizer/none.sql

  Copied: expected/full-text-search/text/options/normalizer/empty.out (+0 -0) 100%
===================================================================

  Modified: expected/full-text-search/text/options/normalizer/none.out (+1 -1)
===================================================================
--- expected/full-text-search/text/options/normalizer/none.out    2015-10-30 09:43:54 +0900 (26b4ca6)
+++ expected/full-text-search/text/options/normalizer/none.out    2015-11-19 15:31:24 +0900 (cad877d)
@@ -7,7 +7,7 @@ INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
 INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
 CREATE INDEX grnindex ON memos
  USING pgroonga (content)
-  WITH (normalizer = '');
+  WITH (normalizer = 'none');
 SET enable_seqscan = off;
 SET enable_indexscan = on;
 SET enable_bitmapscan = off;

  Copied: expected/full-text-search/text/options/tokenizer/empty.out (+0 -0) 100%
===================================================================

  Modified: expected/full-text-search/text/options/tokenizer/none.out (+1 -1)
===================================================================
--- expected/full-text-search/text/options/tokenizer/none.out    2015-10-30 09:43:54 +0900 (9888bc5)
+++ expected/full-text-search/text/options/tokenizer/none.out    2015-11-19 15:31:24 +0900 (bb5eeb1)
@@ -7,7 +7,7 @@ INSERT INTO memos VALUES (2, 'PostgreSQL Groonga');
 INSERT INTO memos VALUES (3, 'Groonga');
 CREATE INDEX grnindex ON memos
  USING pgroonga (tag)
-  WITH (tokenizer = '');
+  WITH (tokenizer = 'none');
 SET enable_seqscan = off;
 SET enable_indexscan = on;
 SET enable_bitmapscan = off;

  Modified: pgroonga.c (+26 -13)
===================================================================
--- pgroonga.c    2015-10-30 09:43:54 +0900 (9c3715b)
+++ pgroonga.c    2015-11-19 15:31:24 +0900 (59e0418)
@@ -51,6 +51,8 @@ typedef struct stat pgrn_stat_buffer;
 
 #define VARCHARARRAYOID 1015
 
+#define PGRN_NONE_VALUE "none"
+
 PG_MODULE_MAGIC;
 
 static bool PGrnInitialized = false;
@@ -305,7 +307,7 @@ static void
 PGrnLogPathAssign(const char *new_value, void *extra)
 {
 	if (new_value) {
-		if (strcmp(new_value, "none") == 0) {
+		if (strcmp(new_value, PGRN_NONE_VALUE) == 0) {
 			grn_default_logger_set_path(NULL);
 		} else {
 			grn_default_logger_set_path(new_value);
@@ -487,17 +489,30 @@ PGrnIsTokenizer(grn_obj *object)
   return true;
 }
 
+static bool
+PGrnIsNoneValue(const char *value)
+{
+	if (!value)
+		return true;
+
+	if (!value[0])
+		return true;
+
+	if (strcmp(value, PGRN_NONE_VALUE) == 0)
+		return true;
+
+	return false;
+}
+
 static void
 PGrnOptionValidateTokenizer(char *name)
 {
 	grn_obj *tokenizer;
-	size_t name_length;
 
-	name_length = strlen(name);
-	if (name_length == 0)
+	if (PGrnIsNoneValue(name))
 		return;
 
-	tokenizer = grn_ctx_get(ctx, name, name_length);
+	tokenizer = grn_ctx_get(ctx, name, -1);
 	if (!tokenizer)
 	{
 		ereport(ERROR,
@@ -531,13 +546,11 @@ static void
 PGrnOptionValidateNormalizer(char *name)
 {
 	grn_obj *normalizer;
-	size_t name_length;
 
-	name_length = strlen(name);
-	if (name_length == 0)
+	if (PGrnIsNoneValue(name))
 		return;
 
-	normalizer = grn_ctx_get(ctx, name, name_length);
+	normalizer = grn_ctx_get(ctx, name, -1);
 	if (!normalizer)
 	{
 		ereport(ERROR,
@@ -1380,7 +1393,7 @@ PGrnCreateFullTextSearchIndexColumnForJSON(PGrnCreateData *data)
 		normalizerName = (const char *) (options) + options->normalizerOffset;
 	}
 
-	if (!tokenizerName || tokenizerName[0] == '\0')
+	if (PGrnIsNoneValue(tokenizerName))
 		return;
 
 	snprintf(lexiconName, sizeof(lexiconName),
@@ -1393,7 +1406,7 @@ PGrnCreateFullTextSearchIndexColumnForJSON(PGrnCreateData *data)
 
 	grn_obj_set_info(ctx, lexicon, GRN_INFO_DEFAULT_TOKENIZER,
 					 PGrnLookup(tokenizerName, ERROR));
-	if (normalizerName && normalizerName[0])
+	if (!PGrnIsNoneValue(normalizerName))
 	{
 		grn_obj_set_info(ctx, lexicon, GRN_INFO_NORMALIZER,
 						 PGrnLookup(normalizerName, ERROR));
@@ -1534,12 +1547,12 @@ PGrnCreateIndexColumn(PGrnCreateData *data)
 			tokenizerName = (const char *) (options) + options->tokenizerOffset;
 			normalizerName = (const char *) (options) + options->normalizerOffset;
 		}
-		if (tokenizerName && tokenizerName[0])
+		if (!PGrnIsNoneValue(tokenizerName))
 		{
 			grn_obj_set_info(ctx, lexicon, GRN_INFO_DEFAULT_TOKENIZER,
 							 PGrnLookup(tokenizerName, ERROR));
 		}
-		if (normalizerName && normalizerName[0])
+		if (!PGrnIsNoneValue(normalizerName))
 		{
 			grn_obj_set_info(ctx, lexicon, GRN_INFO_NORMALIZER,
 							 PGrnLookup(normalizerName, ERROR));

  Copied: sql/full-text-search/text/options/normalizer/empty.sql (+0 -0) 100%
===================================================================

  Modified: sql/full-text-search/text/options/normalizer/none.sql (+1 -1)
===================================================================
--- sql/full-text-search/text/options/normalizer/none.sql    2015-10-30 09:43:54 +0900 (70faf85)
+++ sql/full-text-search/text/options/normalizer/none.sql    2015-11-19 15:31:24 +0900 (e76c75c)
@@ -9,7 +9,7 @@ INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groon
 
 CREATE INDEX grnindex ON memos
  USING pgroonga (content)
-  WITH (normalizer = '');
+  WITH (normalizer = 'none');
 
 SET enable_seqscan = off;
 SET enable_indexscan = on;

  Copied: sql/full-text-search/text/options/tokenizer/empty.sql (+0 -0) 100%
===================================================================

  Modified: sql/full-text-search/text/options/tokenizer/none.sql (+1 -1)
===================================================================
--- sql/full-text-search/text/options/tokenizer/none.sql    2015-10-30 09:43:54 +0900 (5984d8f)
+++ sql/full-text-search/text/options/tokenizer/none.sql    2015-11-19 15:31:24 +0900 (b8e3cbc)
@@ -9,7 +9,7 @@ INSERT INTO memos VALUES (3, 'Groonga');
 
 CREATE INDEX grnindex ON memos
  USING pgroonga (tag)
-  WITH (tokenizer = '');
+  WITH (tokenizer = 'none');
 
 SET enable_seqscan = off;
 SET enable_indexscan = on;
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index