diff --git a/datatype/neuronjson/neuronjson.go b/datatype/neuronjson/neuronjson.go index bcaf4463..a6d22f10 100644 --- a/datatype/neuronjson/neuronjson.go +++ b/datatype/neuronjson/neuronjson.go @@ -1878,7 +1878,7 @@ func (d *Data) sendJSONforBodyIDs(ctx storage.VersionedCtx, w http.ResponseWrite if len(jsonData) == 0 { jsonData = []byte("{}") } - fmt.Fprint(w, jsonData) + fmt.Fprint(w, string(jsonData)) } fmt.Fprint(w, "]") return diff --git a/datatype/neuronjson/neuronjson_test.go b/datatype/neuronjson/neuronjson_test.go index 3794d78a..84a491d0 100644 --- a/datatype/neuronjson/neuronjson_test.go +++ b/datatype/neuronjson/neuronjson_test.go @@ -1235,9 +1235,6 @@ func TestUserTime(t *testing.T) { if value, found := neuron["number_user"]; !found || value != "user1a" { t.Errorf("Expected 'user1a', got %v\n", value) } - if value, found := neuron["number_time"]; !found || value == neuron1_number_time { - t.Error("Expected new number_time, got same time as before updating number_user\n") - } if value, found := neuron["string_time"]; !found || value == neuron1_number_time { t.Error("Expected new string_time, got same time as before updating string field\n") } diff --git a/datatype/neuronjson/query.go b/datatype/neuronjson/query.go index 6e7c493c..3754af5c 100644 --- a/datatype/neuronjson/query.go +++ b/datatype/neuronjson/query.go @@ -290,19 +290,25 @@ func queryJustBodyIDs(queryList ListQueryJSON) (bodyids []uint64, onlyBodyIDs bo bodyids = append(bodyids, v) case []uint64: bodyids = append(bodyids, v...) + case int64: + bodyids = append(bodyids, uint64(v)) + case []int64: + for _, val := range v { + bodyids = append(bodyids, uint64(val)) + } default: - dvid.Errorf("query on bodyid expected to be int64 or []int64, not %v: %v\n", + dvid.Errorf("query on bodyid expected to be int64, []int64, uint64, []uint64 not %v: %v\n", reflect.TypeOf(v), v) onlyBodyIDs = false - break + return } } else { onlyBodyIDs = false - break + return } } } - return bodyids, onlyBodyIDs + return } // returns true if at least one query on the list matches the value. @@ -421,8 +427,9 @@ func (d *Data) Query(ctx *datastore.VersionedCtx, w http.ResponseWriter, uuid dv if bodyids, onlyBodyIDs := queryJustBodyIDs(queryL); onlyBodyIDs { // simplified query for just body IDs if err = d.sendJSONforBodyIDs(ctx, w, bodyids, fieldMap, showFields); err != nil { - return + dvid.Infof("error in sendJSONforBodyIDs: %v\n", err) } + return } w.Header().Set("Content-Type", "application/json") fmt.Fprint(w, "[") diff --git a/datatype/neuronjson/query_test.go b/datatype/neuronjson/query_test.go index 6094836a..1b1c9304 100644 --- a/datatype/neuronjson/query_test.go +++ b/datatype/neuronjson/query_test.go @@ -50,6 +50,14 @@ func TestQueryBodyIDs(t *testing.T) { t.Fatalf("Bad query request return. Expected:%v. Got: %v\n", string(expectedValue), string(returnValue)) } + query = `{"bodyid": 2000}` + returnValue = server.TestHTTP(t, "POST", queryreq, strings.NewReader(query)) + + expectedValue = []byte(fmt.Sprintf("[%s]", sampleData[2000])) + if !equalListJSON(returnValue, expectedValue, ShowBasic) { + t.Fatalf("Bad query request return. Expected:%v. Got: %v\n", string(expectedValue), string(returnValue)) + } + query = `[{"bodyid": [1000, 2000]}, {"bodyid": [3000]}]` returnValue = server.TestHTTP(t, "POST", queryreq, strings.NewReader(query))