From ff5691ffb1a969e50e0bd5e4638be8e2bb342c4e Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Sun, 14 Dec 2025 00:27:18 -0300 Subject: Ephemeral relations, Refactor & Cleanup (#34) --- src/xml_server.erl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/xml_server.erl') diff --git a/src/xml_server.erl b/src/xml_server.erl index 4eef4c9..eaa08f9 100644 --- a/src/xml_server.erl +++ b/src/xml_server.erl @@ -33,7 +33,7 @@ %%% xml_server:start(8080). %%% %%% % Client connects and sends: -%%% % QUERY {scan, employees}\n +%%% % QUERY employees\n %%% % NEXT <session-id> 10\n %%% % NEXT <session-id> 10\n %%% % CLOSE <session-id>\n @@ -209,9 +209,12 @@ handle_query(QueryStr, DB, Sessions) -> {ok, Exprs} = erl_parse:parse_exprs(Tokens), {value, QueryPlan, _} = erl_eval:exprs(Exprs, erl_eval:new_bindings()), - % Prepare and execute query to get iterator + % Prepare and execute query to get ephemeral relation PreparedPlan = query_planner:prepare(QueryPlan), - Iterator = query_planner:execute(DB, PreparedPlan), + EphemeralRelation = query_planner:execute(DB, PreparedPlan), + + % Create actual iterator from ephemeral relation's generator + Iterator = (EphemeralRelation#relation.generator)(), % Generate session ID SessionId = generate_session_id(), -- cgit v1.2.3