Skip to content

Commit

Permalink
fix: first fixes in traverse with variables implementation, issue #10292
Browse files Browse the repository at this point in the history
  • Loading branch information
tglman committed Sep 10, 2024
1 parent 75e3e0f commit fd8a616
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.orientechnologies.orient.core.record.impl.ODocument;
import com.orientechnologies.orient.core.record.impl.ODocumentHelper;
import com.orientechnologies.orient.core.serialization.serializer.OStringSerializerHelper;
import com.orientechnologies.orient.core.sql.executor.OResult;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
Expand Down Expand Up @@ -121,8 +122,13 @@ else if (firstPart.equalsIgnoreCase("ROOT")) {
else result = getVariableFromParentHierarchy(firstPart);
}
}

if (pos > -1) result = ODocumentHelper.getFieldValue(result, lastPart, this);
if (pos > -1) {
if (result instanceof OResult) {
result = ODocumentHelper.getFieldValue(((OResult) result).toElement(), lastPart, this);
} else {
result = ODocumentHelper.getFieldValue(result, lastPart, this);
}
}

return result != null ? resolveValue(result) : iDefault;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,11 @@ public static Object foreachRecord(
for (Object inner : OMultiValue.getMultiValueIterable(o, false)) {
result.add(iCallable.call((OIdentifiable) inner));
}
} else result.add(iCallable.call((OIdentifiable) o));
} else if (o instanceof OIdentifiable) {
result.add(iCallable.call((OIdentifiable) o));
} else if (o instanceof OResult) {
return iCallable.call(((OResult) o).toElement());
}
}
return result;
} else if (iCurrent instanceof OIdentifiable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.orientechnologies.common.exception.OException;
import com.orientechnologies.orient.core.command.OCommandContext;
import com.orientechnologies.orient.core.exception.OCommandExecutionException;
import com.orientechnologies.orient.core.id.ORID;
import com.orientechnologies.orient.core.record.OElement;
import com.orientechnologies.orient.core.sql.executor.resultset.OLimitedResultSet;
import com.orientechnologies.orient.core.sql.parser.OFromItem;
Expand Down Expand Up @@ -92,6 +93,9 @@ private void init() {
} else if (src instanceof OResultSet) {
source = (OResultSet) src;
source.reset();
} else if (src instanceof ORID) {
source = new OInternalResultSet();
((OInternalResultSet) source).add(new OResultInternal(ctx.getDatabase().load((ORID) src)));
} else if (src instanceof OElement) {
source = new OInternalResultSet();
((OInternalResultSet) source).add(new OResultInternal((OElement) src));
Expand Down

0 comments on commit fd8a616

Please sign in to comment.