diff --git a/CEP/BB/BBSControl/sql/create_blackboard_functions.sql b/CEP/BB/BBSControl/sql/create_blackboard_functions.sql index 4d571de80f7d9c2d11837a12ec989b32e7a76880..7d8d0f6b38c28518b8458f18ab25c54120d9b5eb 100644 --- a/CEP/BB/BBSControl/sql/create_blackboard_functions.sql +++ b/CEP/BB/BBSControl/sql/create_blackboard_functions.sql @@ -56,13 +56,39 @@ LANGUAGE SQL; -- ---- -- -- STEP -- -- ---- -- +CREATE TYPE blackboard.iface_step AS +( + "Name" TEXT, + "Operation" TEXT, + "Baselines.Station1" TEXT[], + "Baselines.Station2" TEXT[], + "Correlation.Selection" TEXT, + "Correlation.Type" TEXT[], + "Sources" TEXT[], + "InstrumentModel" TEXT[], + "OutputData" TEXT +); + + +CREATE TYPE blackboard.iface_solve_arguments AS +( + "MaxIter" INTEGER, + "Epsilon" DOUBLE PRECISION, + "MinConverged" DOUBLE PRECISION, + "Parms" TEXT[], + "ExclParms" TEXT[], + "DomainSize.Freq" DOUBLE PRECISION, + "DomainSize.Time" DOUBLE PRECISION +); + + -- Function: blackboard.get_step -- Full signature: -- blackboard.get_step(_work_order_id INTEGER) CREATE OR REPLACE FUNCTION blackboard.get_step(INTEGER) -RETURNS blackboard.step AS +RETURNS blackboard.iface_step AS $$ - SELECT * + SELECT "Name", "Operation", "Baselines.Station1", "Baselines.Station2", "Correlation.Selection", "Correlation.Type", "Sources", "InstrumentModel", "OutputData" FROM blackboard.step WHERE blackboard.step.work_order_id = $1; $$ @@ -73,21 +99,24 @@ LANGUAGE SQL; -- Full signature: -- blackboard.get_solve_arguments(_work_order_id INTEGER) CREATE OR REPLACE FUNCTION blackboard.get_solve_arguments(INTEGER) -RETURNS blackboard.solve_arguments AS +RETURNS blackboard.iface_solve_arguments AS $$ DECLARE step blackboard.step%ROWTYPE; - arguments blackboard.solve_arguments%ROWTYPE; + arguments blackboard.iface_solve_arguments; BEGIN - SELECT * INTO step + SELECT * + INTO step FROM blackboard.step WHERE work_order_id = $1; IF NOT FOUND OR step."Operation" != 'SOLVE' THEN - RAISE EXCEPTION 'Work order % either does not exist or has no associated solve arguments.', $1; + RAISE EXCEPTION 'Work order % either is not a solve step or it is not a step at all.', $1; END IF; - SELECT * INTO arguments + + SELECT "MaxIter", "Epsilon", "MinConverged", "Parms", "ExclParms", "DomainSize.Freq", "DomainSize.Time" + INTO arguments FROM blackboard.solve_arguments WHERE step_id = step.id;