Fix geef_ref:resolve/1
We never updated what the NIF returns, and we were making a lookup too many by trying to load the reference which we already have.
This commit is contained in:
@@ -74,11 +74,11 @@ next(#geef_iterator{type=ref, repo=Repo, handle=Handle}) ->
|
|||||||
-spec resolve(ref()) -> {ok, ref()} | {error, term()}.
|
-spec resolve(ref()) -> {ok, ref()} | {error, term()}.
|
||||||
resolve(Ref = #geef_reference{type=oid}) ->
|
resolve(Ref = #geef_reference{type=oid}) ->
|
||||||
{ok, Ref}; % resolving an oid ref is a no-op, skip going into the NIF
|
{ok, Ref}; % resolving an oid ref is a no-op, skip going into the NIF
|
||||||
resolve(#geef_reference{repo=Repo, name=Name, type=symbolic}) ->
|
resolve(#geef_reference{repo=Repo, type=symbolic, target=Name}) ->
|
||||||
RepoHandle = geef_repo:handle(Repo),
|
RepoHandle = geef_repo:handle(Repo),
|
||||||
case geef_nif:reference_resolve(RepoHandle, Name) of
|
case geef_nif:reference_resolve(RepoHandle, Name) of
|
||||||
{ok, Type, Target} ->
|
{ok, ResolvedName, Target} ->
|
||||||
{ok, make(Repo, Name, Type, Target)};
|
{ok, make(Repo, ResolvedName, oid, Target)};
|
||||||
Other = {error, _} ->
|
Other = {error, _} ->
|
||||||
Other
|
Other
|
||||||
end.
|
end.
|
||||||
|
|||||||
Reference in New Issue
Block a user