aboutsummaryrefslogtreecommitdiffstats
path: root/src/operations.erl
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2025-11-25 15:59:08 -0300
committerGitHub <noreply@github.com>2025-11-25 15:59:08 -0300
commit3f7cb91ef7ae44d3f641f2e77826965fcd0afeed (patch)
treeadb493947fe7c3ee511346c984f8046b4c48856e /src/operations.erl
parent62a017ce95ad2f6d9445b5b96f7aeba3f7c0d42f (diff)
downloadSakura-3f7cb91ef7ae44d3f641f2e77826965fcd0afeed.tar.gz
Sakura-3f7cb91ef7ae44d3f641f2e77826965fcd0afeed.zip
Pseudo-REPL and sketch planner (#12)
Diffstat (limited to 'src/operations.erl')
-rw-r--r--src/operations.erl17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/operations.erl b/src/operations.erl
index d91eec9..36fb7e2 100644
--- a/src/operations.erl
+++ b/src/operations.erl
@@ -951,7 +951,10 @@ select_loop(ChildPid, Predicate) ->
end;
done ->
close_iterator(ChildPid),
- Caller ! done
+ Caller ! done;
+ {error, Reason} ->
+ close_iterator(ChildPid),
+ Caller ! {error, Reason}
end;
stop ->
close_iterator(ChildPid),
@@ -1008,7 +1011,10 @@ project_loop(ChildPid, Attributes) ->
project_loop(ChildPid, Attributes);
done ->
close_iterator(ChildPid),
- Caller ! done
+ Caller ! done;
+ {error, Reason} ->
+ close_iterator(ChildPid),
+ Caller ! {error, Reason}
end;
stop ->
close_iterator(ChildPid),
@@ -1092,7 +1098,10 @@ take_iter_loop(ChildPid, Limit, Count, OriginalN) when Count < Limit ->
take_iter_loop(ChildPid, Limit, Count + 1, OriginalN);
done ->
close_iterator(ChildPid),
- Caller ! done
+ Caller ! done;
+ {error, Reason} ->
+ close_iterator(ChildPid),
+ Caller ! {error, Reason}
end;
stop ->
close_iterator(ChildPid),
@@ -1343,6 +1352,7 @@ equijoin_emit_loop(LeftIter, RightTuples, JoinAttr) ->
end
end;
{error, Reason} ->
+ close_iterator(LeftIter),
Caller ! {error, Reason},
ok % Stop after sending error
end;
@@ -1396,6 +1406,7 @@ theta_join_emit_loop(LeftIter, RightTuples, Pred) ->
theta_join_emit_buffered(LeftIter, RightTuples, Pred, RestMatches)
end;
{error, Reason} ->
+ close_iterator(LeftIter),
Caller ! {error, Reason}
end;
stop ->