diff --git a/src/main/java/com/redislabs/redisgraph/ResultSet.java b/src/main/java/com/redislabs/redisgraph/ResultSet.java index 251a4d0..9caea2d 100644 --- a/src/main/java/com/redislabs/redisgraph/ResultSet.java +++ b/src/main/java/com/redislabs/redisgraph/ResultSet.java @@ -14,6 +14,7 @@ enum ResultSetScalarTypes { PROPERTY_INTEGER, PROPERTY_BOOLEAN, PROPERTY_DOUBLE, + VALUE_ERROR } int size(); diff --git a/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java b/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java index fd208b6..86ad311 100644 --- a/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java +++ b/src/main/java/com/redislabs/redisgraph/impl/resultset/ResultSetImpl.java @@ -6,6 +6,7 @@ import com.redislabs.redisgraph.graph_entities.Node; import com.redislabs.redisgraph.graph_entities.Property; import com.redislabs.redisgraph.impl.graph_cache.GraphCache; +import redis.clients.jedis.exceptions.JedisException; import redis.clients.jedis.util.SafeEncoder; import java.util.ArrayList; @@ -226,6 +227,8 @@ private Object deserializeScalar(List rawScalarData) { return ((Long) obj).intValue(); case PROPERTY_STRING: return SafeEncoder.encode((byte[]) obj); + case VALUE_ERROR: + throw (JedisException) obj; case PROPERTY_UNKNOWN: default: return obj; diff --git a/src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java b/src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java index ce2aa59..c2bfcb2 100644 --- a/src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java +++ b/src/test/java/com/redislabs/redisgraph/RedisGraphAPITest.java @@ -15,9 +15,12 @@ import org.junit.After; import org.junit.Assert; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import com.redislabs.redisgraph.Statistics.Label; +import org.junit.rules.ExpectedException; +import redis.clients.jedis.exceptions.JedisDataException; import static com.redislabs.redisgraph.Header.ResultSetColumnTypes.*; @@ -756,4 +759,17 @@ public void testReadTransactionWatch(){ c1.close(); c2.close(); } + + @Rule + public ExpectedException exceptionRule = ExpectedException.none(); + + @Test + public void testRuntimeException() { + + api.query("social", "create ()"); + exceptionRule.expect(JedisDataException.class); + exceptionRule.expectMessage("Type mismatch: expected Integer but was String"); + api.query("social", "RETURN abs('q')"); + + } }