diff --git a/src/main/java/apoc/periodic/Periodic.java b/src/main/java/apoc/periodic/Periodic.java index 6ad86c49b4..3b04042f72 100644 --- a/src/main/java/apoc/periodic/Periodic.java +++ b/src/main/java/apoc/periodic/Periodic.java @@ -159,7 +159,7 @@ public Stream repeat(@Name("name") String name, @Name("statement") Stri } private void validateQuery(String statement) { - db.executeTransactionally("EXPLAIN " + statement); + Util.validateQuery(db, statement); } @Procedure(mode = Mode.WRITE) diff --git a/src/main/java/apoc/trigger/Trigger.java b/src/main/java/apoc/trigger/Trigger.java index 566a4fc6db..e5fc7aff5a 100644 --- a/src/main/java/apoc/trigger/Trigger.java +++ b/src/main/java/apoc/trigger/Trigger.java @@ -1,6 +1,7 @@ package apoc.trigger; import apoc.coll.SetBackedList; +import apoc.util.Util; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; @@ -91,6 +92,7 @@ public List> propertiesByKey(@Name("propertyEntries") Map add(@Name("name") String name, @Name("kernelTransaction") String statement, @Name(value = "selector"/*, defaultValue = "{}"*/) Map selector, @Name(value = "config", defaultValue = "{}") Map config) { + Util.validateQuery(db, statement); Map params = (Map)config.getOrDefault("params", Collections.emptyMap()); Map removed = triggerHandler.add(name, statement, selector, params); if (removed != null) { diff --git a/src/main/java/apoc/util/Util.java b/src/main/java/apoc/util/Util.java index ee73c200fa..2c5c39389d 100644 --- a/src/main/java/apoc/util/Util.java +++ b/src/main/java/apoc/util/Util.java @@ -896,4 +896,8 @@ public static Set intersection(Collection a, Collection b) { intersection.retainAll(b); return intersection; } + + public static void validateQuery(GraphDatabaseService db, String statement) { + db.executeTransactionally("EXPLAIN " + statement); + } } diff --git a/src/test/java/apoc/trigger/TriggerTest.java b/src/test/java/apoc/trigger/TriggerTest.java index e8a9801de5..b6ec9407df 100644 --- a/src/test/java/apoc/trigger/TriggerTest.java +++ b/src/test/java/apoc/trigger/TriggerTest.java @@ -6,6 +6,7 @@ import org.junit.Test; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; +import org.neo4j.graphdb.QueryExecutionException; import org.neo4j.test.rule.DbmsRule; import org.neo4j.test.rule.ImpermanentDbmsRule; @@ -219,6 +220,9 @@ public void testTriggerResume() throws Exception { }); } - + @Test(expected = QueryExecutionException.class) + public void showThrowAnException() throws Exception { + db.executeTransactionally("CALL apoc.trigger.add('test','UNWIND $createdNodes AS n SET n.txId = , n.txTime = $commitTime',{})"); + } }