Skip to content

Commit 9bef240

Browse files
authored
Merge pull request #14 from RedisGraph/runtime-errors
handle query runtime errors
2 parents eb62d44 + f25c6f8 commit 9bef240

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

Diff for: client_test.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,19 @@ func TestCreateQuery(t *testing.T) {
115115
assert.Equal(t, w.Label, "WorkPlace", "Unexpected node label.")
116116
}
117117

118-
func TestArray(t *testing.T) {
118+
func TestErrorReporting(t *testing.T) {
119+
q := "RETURN toupper(5)"
120+
res, err := graph.Query(q)
121+
assert.Nil(t, res)
122+
assert.NotNil(t, err)
119123

124+
q = "MATCH (p:Person) RETURN toupper(p.age)"
125+
res, err = graph.Query(q)
126+
assert.Nil(t, res)
127+
assert.NotNil(t, err)
128+
}
129+
130+
func TestArray(t *testing.T) {
120131
graph.Flush()
121132
graph.Query("MATCH (n) DELETE n")
122133

@@ -192,5 +203,4 @@ func TestArray(t *testing.T) {
192203
assert.Equal(t, b.GetProperty("name"), resB.GetProperty("name"), "Unexpected property value.")
193204
assert.Equal(t, b.GetProperty("age"), resB.GetProperty("age"), "Unexpected property value.")
194205
assert.Equal(t, b.GetProperty("array"), resB.GetProperty("array"), "Unexpected property value.")
195-
196206
}

Diff for: graph.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,7 @@ func (g *Graph) Query(q string) (*QueryResult, error) {
104104
return nil, err
105105
}
106106

107-
qr := QueryResultNew(g, r)
108-
return qr, nil
107+
return QueryResultNew(g, r)
109108
}
110109

111110
// Merge pattern

Diff for: query_result.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ type QueryResult struct {
5656
graph *Graph
5757
}
5858

59-
func QueryResultNew(g *Graph, response interface{}) *QueryResult {
59+
func QueryResultNew(g *Graph, response interface{}) (*QueryResult, error) {
6060
qr := &QueryResult{
6161
results: nil,
6262
statistics: nil,
@@ -68,14 +68,20 @@ func QueryResultNew(g *Graph, response interface{}) *QueryResult {
6868
}
6969

7070
r, _ := redis.Values(response, nil)
71+
72+
// Check to see if we're encountered a run-time error.
73+
if err, ok := r[len(r)-1].(redis.Error); ok {
74+
return nil, err
75+
}
76+
7177
if len(r) == 1 {
7278
qr.parseStatistics(r[0])
7379
} else {
7480
qr.parseResults(r)
7581
qr.parseStatistics(r[2])
7682
}
7783

78-
return qr
84+
return qr, nil
7985
}
8086

8187
func (qr *QueryResult) Empty() bool {

0 commit comments

Comments
 (0)