[Groonga-commit] groonga/grnci at 9226a58 [master] Update DB.ObjectExist to return whether or not the target exists.

Back to archive index

Susumu Yata null+****@clear*****
Thu Sep 14 14:21:37 JST 2017


Susumu Yata	2017-09-14 14:21:37 +0900 (Thu, 14 Sep 2017)

  New Revision: 9226a58d9167665cd228dcbefdbda241f2d8f8f6
  https://github.com/groonga/grnci/commit/9226a58d9167665cd228dcbefdbda241f2d8f8f6

  Message:
    Update DB.ObjectExist to return whether or not the target exists.

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

  Modified: v2/db.go (+19 -3)
===================================================================
--- v2/db.go    2017-09-14 14:13:35 +0900 (2164194)
+++ v2/db.go    2017-09-14 14:21:37 +0900 (c1ead41)
@@ -1042,14 +1042,30 @@ func (db *DB) NormalizerList() ([]DBNormalizer, error) {
 }
 
 // ObjectExist executes object_exist.
-func (db *DB) ObjectExist(name string) error {
+func (db *DB) ObjectExist(name string) (bool, error) {
 	resp, err := db.Invoke("object_exist", map[string]interface{}{
 		"name": name,
 	}, nil)
 	if err != nil {
-		return err
+		return false, err
 	}
-	return db.recvBool(resp)
+	// recvBool must not be used because an object_exist can return false
+	// even if the operation completes successfully.
+	defer resp.Close()
+	if err := resp.Err(); err != nil {
+		return false, err
+	}
+	jsonData, err := ioutil.ReadAll(resp)
+	if err != nil {
+		return false, err
+	}
+	var result bool
+	if err := json.Unmarshal(jsonData, &result); err != nil {
+		return false, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+			"error": err.Error(),
+		})
+	}
+	return result, nil
 }
 
 // DBObjectIDName is a part of DBObject*.

  Modified: v2/libgrn/db_test.go (+1 -1)
===================================================================
--- v2/libgrn/db_test.go    2017-09-14 14:13:35 +0900 (53ec239)
+++ v2/libgrn/db_test.go    2017-09-14 14:21:37 +0900 (b71135e)
@@ -84,7 +84,7 @@ func TestDBColumnCreate(t *testing.T) {
 	if err := db.ColumnCreate("Tbl.col", "Text", nil); err != nil {
 		t.Fatalf("db.ColumnCreate failed: %v", err)
 	}
-	if err := db.ObjectExist("Tbl.col"); err != nil {
+	if ok, err := db.ObjectExist("Tbl.col"); !ok {
 		t.Fatalf("db.ObjectExist failed: %v", err)
 	}
 }
-------------- next part --------------
HTML����������������������������...
URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20170914/e9dbb8b2/attachment-0001.htm 



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