[Groonga-commit] groonga/grnci at 42602cf [master] Simplify DB.TableTokenize and DB.Tokenize.

Back to archive index

Susumu Yata null+****@clear*****
Mon Sep 11 18:00:27 JST 2017


Susumu Yata	2017-09-11 18:00:27 +0900 (Mon, 11 Sep 2017)

  New Revision: 42602cf9e130f74a78abea9c449a0af244323828
  https://github.com/groonga/grnci/commit/42602cf9e130f74a78abea9c449a0af244323828

  Message:
    Simplify DB.TableTokenize and DB.Tokenize.
    
    Ref: #42

  Modified files:
    v2/db.go
    v2/libgrn/db_test.go

  Modified: v2/db.go (+18 -20)
===================================================================
--- v2/db.go    2017-09-11 17:51:04 +0900 (ddd8806)
+++ v2/db.go    2017-09-11 18:00:27 +0900 (d58b820)
@@ -2408,7 +2408,7 @@ type DBToken struct {
 }
 
 // TableTokenize executes tokenize.
-func (db *DB) TableTokenize(tbl, str string, options *DBTableTokenizeOptions) ([]DBToken, Response, error) {
+func (db *DB) TableTokenize(tbl, str string, options *DBTableTokenizeOptions) ([]DBToken, error) {
 	if options == nil {
 		options = NewDBTableTokenizeOptions()
 	}
@@ -2427,23 +2427,22 @@ func (db *DB) TableTokenize(tbl, str string, options *DBTableTokenizeOptions) ([
 	}
 	resp, err := db.Invoke("table_tokenize", params, nil)
 	if err != nil {
-		return nil, nil, err
+		return nil, err
 	}
 	defer resp.Close()
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
-		return nil, resp, err
+		return nil, err
 	}
 	var result []DBToken
-	if err := json.Unmarshal(jsonData, &result); err != nil {
-		if resp.Err() != nil {
-			return nil, resp, nil
+	if len(jsonData) != 0 {
+		if err := json.Unmarshal(jsonData, &result); err != nil {
+			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+				"error": err.Error(),
+			})
 		}
-		return nil, resp, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-			"error": err.Error(),
-		})
 	}
-	return result, resp, nil
+	return result, resp.Err()
 }
 
 // ThreadLimit executes thread_limit.
@@ -2476,7 +2475,7 @@ func NewDBTokenizeOptions() *DBTokenizeOptions {
 }
 
 // Tokenize executes tokenize.
-func (db *DB) Tokenize(tokenizer, str string, options *DBTokenizeOptions) ([]DBToken, Response, error) {
+func (db *DB) Tokenize(tokenizer, str string, options *DBTokenizeOptions) ([]DBToken, error) {
 	if options == nil {
 		options = NewDBTokenizeOptions()
 	}
@@ -2498,23 +2497,22 @@ func (db *DB) Tokenize(tokenizer, str string, options *DBTokenizeOptions) ([]DBT
 	}
 	resp, err := db.Invoke("tokenize", params, nil)
 	if err != nil {
-		return nil, nil, err
+		return nil, err
 	}
 	defer resp.Close()
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
-		return nil, resp, err
+		return nil, err
 	}
 	var result []DBToken
-	if err := json.Unmarshal(jsonData, &result); err != nil {
-		if resp.Err() != nil {
-			return nil, resp, nil
+	if len(jsonData) != 0 {
+		if err := json.Unmarshal(jsonData, &result); err != nil {
+			return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+				"error": err.Error(),
+			})
 		}
-		return nil, resp, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-			"error": err.Error(),
-		})
 	}
-	return result, resp, nil
+	return result, resp.Err()
 }
 
 // DBTokenizer is a result of tokenizer_list.

  Modified: v2/libgrn/db_test.go (+6 -26)
===================================================================
--- v2/libgrn/db_test.go    2017-09-11 17:51:04 +0900 (9a0bd02)
+++ v2/libgrn/db_test.go    2017-09-11 18:00:27 +0900 (17da67d)
@@ -573,10 +573,7 @@ func TestDBTableTokenize(t *testing.T) {
 	if _, err := db.Restore(strings.NewReader(dump), nil, true); err != nil {
 		t.Fatalf("db.Restore failed: %v", err)
 	}
-	result, resp, err := db.TableTokenize("Tbl", "あいうえお", nil)
-	if err == nil {
-		err = resp.Err()
-	}
+	result, err := db.TableTokenize("Tbl", "あいうえお", nil)
 	if err != nil {
 		t.Fatalf("db.TableTokenize failed: %v", err)
 	}
@@ -598,11 +595,7 @@ func TestDBTableTokenizeInvalidTable(t *testing.T) {
 	db, dir := makeDB(t)
 	defer removeDB(db, dir)
 
-	_, resp, err := db.TableTokenize("no_such_table", "あいうえお", nil)
-	if err != nil {
-		t.Fatalf("db.TableTokenize failed: %v", err)
-	}
-	if resp.Err() == nil {
+	if _, err := db.TableTokenize("no_such_table", "あいうえお", nil); err == nil {
 		t.Fatalf("db.TableTokenize wrongly succeeded")
 	}
 }
@@ -618,10 +611,7 @@ func TestDBTableTokenizeWithOptions(t *testing.T) {
 	options := grnci.NewDBTableTokenizeOptions()
 	options.Flags = []string{"NONE"}
 	options.Mode = "ADD"
-	result, resp, err := db.TableTokenize("Tbl", "あいうえお", options)
-	if err == nil {
-		err = resp.Err()
-	}
+	result, err := db.TableTokenize("Tbl", "あいうえお", options)
 	if err != nil {
 		t.Fatalf("db.TableTokenize failed: %v", err)
 	}
@@ -643,10 +633,7 @@ func TestDBTokenize(t *testing.T) {
 	db, dir := makeDB(t)
 	defer removeDB(db, dir)
 
-	result, resp, err := db.Tokenize("TokenBigram", "あいうえお", nil)
-	if err == nil {
-		err = resp.Err()
-	}
+	result, err := db.Tokenize("TokenBigram", "あいうえお", nil)
 	if err != nil {
 		t.Fatalf("db.Tokenize failed: %v", err)
 	}
@@ -668,11 +655,7 @@ func TestDBTokenizeInvalidTokenizer(t *testing.T) {
 	db, dir := makeDB(t)
 	defer removeDB(db, dir)
 
-	_, resp, err := db.Tokenize("", "あいうえお", nil)
-	if err != nil {
-		t.Fatalf("db.Tokenize failed: %v", err)
-	}
-	if resp.Err() == nil {
+	if _, err := db.Tokenize("", "あいうえお", nil); err == nil {
 		t.Fatalf("db.Tokenize wrongly succeeded")
 	}
 }
@@ -687,10 +670,7 @@ func TestDBTokenizeWithOptions(t *testing.T) {
 	options.Flags = []string{"NONE"}
 	options.Mode = "ADD"
 	options.TokenFilters = []string{"TokenFilterStem"}
-	result, resp, err := db.Tokenize("TokenBigram", "It works well.", options)
-	if err == nil {
-		err = resp.Err()
-	}
+	result, err := db.Tokenize("TokenBigram", "It works well.", options)
 	if err != nil {
 		t.Fatalf("db.Tokenize failed: %v", err)
 	}
-------------- next part --------------
HTML����������������������������...
URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20170911/5603b2ad/attachment-0001.htm 



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