From 3b660af55ee8f6fa34336a47fde71c9e93504175 Mon Sep 17 00:00:00 2001 From: Luigi Dell'Aquila Date: Mon, 23 Oct 2017 12:22:50 +0200 Subject: [PATCH] Add support for multiple labels in shortestPath() function Resolves: #7842 --- .../sql/functions/OSQLFunctionShortestPath.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/graphdb/src/main/java/com/orientechnologies/orient/graph/sql/functions/OSQLFunctionShortestPath.java b/graphdb/src/main/java/com/orientechnologies/orient/graph/sql/functions/OSQLFunctionShortestPath.java index 734636506f7..092ff10daa2 100644 --- a/graphdb/src/main/java/com/orientechnologies/orient/graph/sql/functions/OSQLFunctionShortestPath.java +++ b/graphdb/src/main/java/com/orientechnologies/orient/graph/sql/functions/OSQLFunctionShortestPath.java @@ -43,7 +43,7 @@ * @author Luca Garulli (l.garulli--at--orientechnologies.com) */ public class OSQLFunctionShortestPath extends OSQLFunctionMathAbstract { - public static final String NAME = "shortestPath"; + public static final String NAME = "shortestPath"; public static final String PARAM_MAX_DEPTH = "maxDepth"; protected static final float DISTANCE = 1f; @@ -120,7 +120,16 @@ public List call(final OrientBaseGraph graph) { if (iParams.length > 3) { ctx.edgeType = iParams[3] == null ? null : "" + iParams[3]; } - ctx.edgeTypeParam = new String[] { ctx.edgeType }; + if (iParams != null && iParams.length > 2 && iParams[3] instanceof Collection) { + ctx.edgeTypeParam = new String[((Collection) iParams[3]).size()]; + Collection coll = (Collection) iParams[3]; + int i = 0; + for (Object o : coll) { + ctx.edgeTypeParam[i++] = "" + o; + } + } else { + ctx.edgeTypeParam = new String[] { ctx.edgeType }; + } if (iParams.length > 4) { bindAdditionalParams(iParams[4], ctx);