Skip to content
Snippets Groups Projects
Commit c3718da6 authored by Joris van Zwieten's avatar Joris van Zwieten
Browse files

BugID: 987

- API change: names of the columns returned by e.g. get_step() now match the names in the parset precisely.
parent 415870ce
No related branches found
No related tags found
No related merge requests found
-- -------- -- -- -------- --
-- STRATEGY -- -- STRATEGY --
-- -------- -- -- -------- --
CREATE OR REPLACE FUNCTION blackboard.set_strategy(data_set TEXT, local_sky_parmdb TEXT, instrument_parmdb TEXT, history_parmdb TEXT, stations TEXT[], input_column TEXT, work_domain_size DOUBLE PRECISION[2], correlation_selection TEXT, correlation_type TEXT[]) RETURNS VOID AS -- Function: blackboard.set_strategy
-- Full signature:
-- blackboard.set_strategy("DataSet" TEXT, "ParmDB.LocalSky" TEXT, "ParmDB.Instrument" TEXT, "ParmDB.History" TEXT, "Stations" TEXT[], "InputData" TEXT, "WorkDomainSize.Freq" DOUBLE PRECISION, "WorkDomainSize.Time" DOUBLE PRECISION, "Correlation.Selection" TEXT, "Correlation.Type" TEXT[])
CREATE OR REPLACE FUNCTION blackboard.set_strategy(TEXT, TEXT, TEXT, TEXT, TEXT[], TEXT, DOUBLE PRECISION, DOUBLE PRECISION, TEXT, TEXT[])
RETURNS VOID AS
$$ $$
INSERT INTO blackboard.strategy(data_set, local_sky_parmdb, instrument_parmdb, history_parmdb, stations, input_column, work_domain_size, correlation_selection, correlation_type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9); INSERT INTO blackboard.strategy("DataSet", "ParmDB.LocalSky", "ParmDB.Instrument", "ParmDB.History", "Stations", "InputData", "WorkDomainSize.Freq", "WorkDomainSize.Time", "Correlation.Selection", "Correlation.Type")
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);
$$ $$
LANGUAGE SQL; LANGUAGE SQL;
CREATE OR REPLACE FUNCTION blackboard.get_strategy() RETURNS blackboard.strategy AS CREATE OR REPLACE FUNCTION blackboard.get_strategy()
RETURNS blackboard.strategy AS
$$ $$
SELECT * FROM blackboard.strategy LIMIT 1; SELECT *
FROM blackboard.strategy
LIMIT 1;
$$ $$
LANGUAGE SQL; LANGUAGE SQL;
-- ---------- -- -- ---------- --
-- WORK ORDER -- -- WORK ORDER --
-- ---------- -- -- ---------- --
CREATE OR REPLACE FUNCTION blackboard.add_work_order() RETURNS INTEGER AS CREATE OR REPLACE FUNCTION blackboard.add_work_order()
RETURNS INTEGER AS
$$ $$
DECLARE DECLARE
_id INTEGER; _id INTEGER;
BEGIN BEGIN
_id := nextval('blackboard.work_order_id_seq'); _id := nextval('blackboard.work_order_id_seq');
INSERT INTO blackboard.work_order(id) VALUES (_id); INSERT INTO blackboard.work_order(id)
VALUES (_id);
RETURN _id; RETURN _id;
END; END;
$$ $$
LANGUAGE plpgsql; LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION blackboard.get_next_work_order(current_work_order_id INTEGER) RETURNS blackboard.work_order AS CREATE OR REPLACE FUNCTION blackboard.get_next_work_order(current_work_order_id INTEGER)
RETURNS blackboard.work_order AS
$$ $$
SELECT * FROM blackboard.work_order WHERE id > $1 ORDER BY id LIMIT 1; SELECT *
FROM blackboard.work_order
WHERE id > $1
ORDER BY id LIMIT 1;
$$ $$
LANGUAGE SQL; LANGUAGE SQL;
-- ---- -- -- ---- --
-- STEP -- -- STEP --
-- ---- -- -- ---- --
CREATE OR REPLACE FUNCTION blackboard.add_step(_name TEXT, _operation TEXT, _station1 TEXT[], _station2 TEXT[], _correlation_selection TEXT, _correlation_type TEXT[], _sources TEXT[], _instrument_model TEXT[], _output_column TEXT) RETURNS INTEGER AS -- 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
$$
SELECT *
FROM blackboard.step
WHERE blackboard.step.work_order_id = $1;
$$
LANGUAGE SQL;
-- Function: blackboard.add_step
-- Full signature:
-- blackboard.add_step("Name" TEXT, "Operation" TEXT, "Baselines.Station1" TEXT[], "Baselines.Station2" TEXT[], "Correlation.Selection" TEXT, "Correlation.Type" TEXT[], "Sources" TEXT[], "InstrumentModel" TEXT[], "OutputData" TEXT)
CREATE OR REPLACE FUNCTION blackboard.add_step(TEXT, TEXT, TEXT[], TEXT[], TEXT, TEXT[], TEXT[], TEXT[], TEXT)
RETURNS INTEGER AS
$$ $$
DECLARE DECLARE
_id INTEGER; _id INTEGER;
_work_order_id INTEGER; _work_order_id INTEGER;
BEGIN BEGIN
_work_order_id := add_work_order(); _work_order_id := blackboard.add_work_order();
_id := nextval('blackboard.step_id_seq'); _id := nextval('blackboard.step_id_seq');
INSERT INTO blackboard.step(id, work_order_id, name, operation, station1, station2, correlation_selection, correlation_type, sources, instrument_model, output_column) VALUES (_id, _work_order_id, _name, _operation, _station1, _station2, _correlation_selection, _correlation_type, _sources, _instrument_model, _output_column); INSERT INTO blackboard.step(id, work_order_id, "Name", "Operation", "Baselines.Station1", "Baselines.Station2", "Correlation.Selection", "Correlation.Type", "Sources", "InstrumentModel", "OutputData")
VALUES (_id, _work_order_id, $1, $2, $3, $4, $5, $6, $7, $8, $9);
RETURN _id; RETURN _id;
END; END;
$$ $$
LANGUAGE plpgsql; LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION blackboard.add_solve_step(_name TEXT, _station1 TEXT[], _station2 TEXT[], _correlation_selection TEXT, _correlation_type TEXT[], _sources TEXT[], _instrument_model TEXT[], _output_column TEXT, _max_iter INTEGER, _epsilon DOUBLE PRECISION, _min_converged DOUBLE PRECISION, _parms TEXT[], _excl_parms TEXT[], _solve_domain_size DOUBLE PRECISION[2]) RETURNS VOID AS -- Function: blackboard.get_solve_arguments
-- Full signature:
-- blackboard.add_solve_arguments(_step_id INTEGER)
CREATE OR REPLACE FUNCTION blackboard.get_solve_arguments(INTEGER)
RETURNS blackboard.solve_arguments AS
$$ $$
DECLARE DECLARE
_step_id INTEGER; step blackboard.step%ROWTYPE;
arguments blackboard.solve_arguments%ROWTYPE;
BEGIN BEGIN
_step_id := add_step(_name, 'SOLVE', _station1, _station2, _correlation_selection, _correlation_type, _sources, _instrument_model, _output_column); SELECT * INTO step
INSERT INTO blackboard.solve_arguments(step_id, max_iter, epsilon, min_converged, parms, excl_parms, solve_domain_size) VALUES (_step_id, _max_iter, _epsilon, _min_converged, _parms, _excl_parms, _solve_domain_size); FROM blackboard.step
END; WHERE id = $1;
$$
LANGUAGE plpgsql;
IF NOT FOUND OR step."Operation" != 'SOLVE' THEN
RAISE EXCEPTION 'Step % either does not exist or is not a solve step.', $1;
END IF;
CREATE OR REPLACE FUNCTION blackboard.add_predict_step(_name TEXT, _station1 TEXT[], _station2 TEXT[], _correlation_selection TEXT, _correlation_type TEXT[], _sources TEXT[], _instrument_model TEXT[], _output_column TEXT) RETURNS VOID AS SELECT * INTO arguments
$$ FROM blackboard.solve_arguments
-- DECLARE WHERE step_id = $1;
-- _step_id INTEGER;
BEGIN RETURN arguments;
-- _step_id := add_step(_name, 'PREDICT', _station1, _station2, _correlation_selection, _correlation_type, _sources, _instrument_model);
-- INSERT INTO blackboard.predict_arguments(step_id, output_column) VALUES (_step_id, _output_column);
PERFORM add_step(_name, 'PREDICT', _station1, _station2, _correlation_selection, _correlation_type, _sources, _instrument_model, _output_column);
END; END;
$$ $$
LANGUAGE plpgsql; LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION blackboard.add_subtract_step(_name TEXT, _station1 TEXT[], _station2 TEXT[], _correlation_selection TEXT, _correlation_type TEXT[], _sources TEXT[], _instrument_model TEXT[], _output_column TEXT) RETURNS VOID AS -- Function: blackboard.add_solve_arguments
-- Full signature:
-- blackboard.add_solve_arguments(step_id INTEGER, "MaxIter" INTEGER, "Epsilon" DOUBLE PRECISION, "MinConverged" DOUBLE PRECISION, "Parms" TEXT[], "ExclParms" TEXT[], "DomainSize.Freq" DOUBLE PRECISION, "DomainSize.Time" DOUBLE PRECISION)
CREATE OR REPLACE FUNCTION blackboard.add_solve_arguments(INTEGER, INTEGER, DOUBLE PRECISION, DOUBLE PRECISION, TEXT[], TEXT[], DOUBLE PRECISION, DOUBLE PRECISION)
RETURNS VOID AS
$$ $$
-- DECLARE INSERT INTO blackboard.solve_arguments(step_id, "MaxIter", "Epsilon", "MinConverged", "Parms", "ExclParms", "DomainSize.Freq", "DomainSize.Time")
-- _step_id INTEGER; VALUES ($1, $2, $3, $4, $5, $6, $7, $8);
BEGIN
-- _step_id := add_step(_name, 'SUBTRACT', _station1, _station2, _correlation_selection, _correlation_type, _sources, _instrument_model);
-- INSERT INTO blackboard.subtract_arguments(step_id, output_column) VALUES (_step_id, _output_column);
PERFORM add_step(_name, 'SUBTRACT', _station1, _station2, _correlation_selection, _correlation_type, _sources, _instrument_model, _output_column);
END;
$$ $$
LANGUAGE plpgsql; LANGUAGE SQL;
CREATE OR REPLACE FUNCTION blackboard.add_correct_step(_name TEXT, _station1 TEXT[], _station2 TEXT[], _correlation_selection TEXT, _correlation_type TEXT[], _sources TEXT[], _instrument_model TEXT[], _output_column TEXT) RETURNS VOID AS
$$
-- DECLARE
-- _step_id INTEGER;
BEGIN
-- _step_id := add_step(_name, 'CORRECT', _station1, _station2, _correlation_selection, _correlation_type, _sources, _instrument_model);
-- INSERT INTO blackboard.correct_arguments(step_id, output_column) VALUES (_step_id, _output_column);
PERFORM add_step(_name, 'CORRECT', _station1, _station2, _correlation_selection, _correlation_type, _sources, _instrument_model, _output_column);
END;
$$
LANGUAGE plpgsql;
-- ----------------- -- -- ----------------- --
-- WORK ORDER STATUS -- -- WORK ORDER STATUS --
-- ----------------- -- -- ----------------- --
CREATE OR REPLACE FUNCTION blackboard.set_status(work_order_id INTEGER, status_code INTEGER, message TEXT) RETURNS VOID AS CREATE OR REPLACE FUNCTION blackboard.set_status(work_order_id INTEGER, status_code INTEGER, message TEXT)
RETURNS VOID AS
$$ $$
INSERT INTO blackboard.status(work_order_id, status_code, status_message) VALUES ($1, $2, $3); INSERT INTO blackboard.status(work_order_id, status_code, status_message)
VALUES ($1, $2, $3);
$$ $$
LANGUAGE SQL; LANGUAGE SQL;
-- --- -- -- --- --
-- LOG -- -- LOG --
-- --- -- -- --- --
CREATE OR REPLACE FUNCTION blackboard.log(work_order_id INTEGER, level INTEGER, pid INTEGER, scope TEXT, line_no INTEGER, message TEXT) RETURNS VOID AS CREATE OR REPLACE FUNCTION blackboard.log(work_order_id INTEGER, level INTEGER, pid INTEGER, scope TEXT, line_no INTEGER, message TEXT)
RETURNS VOID AS
$$ $$
INSERT INTO blackboard.log(work_order_id, level, pid, scope, line_no, message) VALUES ($1, $2, $3, $4, $5, $6); INSERT INTO blackboard.log(work_order_id, level, pid, scope, line_no, message)
VALUES ($1, $2, $3, $4, $5, $6);
$$ $$
LANGUAGE SQL; LANGUAGE SQL;
CREATE TABLE blackboard.strategy CREATE TABLE blackboard.strategy
( (
data_set TEXT NOT NULL, "DataSet" TEXT NOT NULL,
local_sky_parmdb TEXT NOT NULL, "ParmDB.LocalSky" TEXT NOT NULL,
instrument_parmdb TEXT NOT NULL, "ParmDB.Instrument" TEXT NOT NULL,
history_parmdb TEXT NOT NULL, "ParmDB.History" TEXT NOT NULL,
stations TEXT[] DEFAULT '{}', "Stations" TEXT[] DEFAULT '{}',
input_column TEXT DEFAULT 'DATA', "InputData" TEXT DEFAULT 'DATA',
work_domain_size DOUBLE PRECISION[2] NOT NULL, "WorkDomainSize.Freq" DOUBLE PRECISION NOT NULL,
"WorkDomainSize.Time" DOUBLE PRECISION NOT NULL,
correlation_selection TEXT DEFAULT 'CROSS', "Correlation.Selection" TEXT DEFAULT 'CROSS',
correlation_type TEXT[] DEFAULT '{"XX","XY","YX","YY"}' "Correlation.Type" TEXT[] DEFAULT '{"XX","XY","YX","YY"}'
); );
...@@ -22,8 +23,7 @@ CREATE TABLE blackboard.strategy ...@@ -22,8 +23,7 @@ CREATE TABLE blackboard.strategy
CREATE SEQUENCE blackboard.work_order_id_seq; CREATE SEQUENCE blackboard.work_order_id_seq;
CREATE TABLE blackboard.work_order CREATE TABLE blackboard.work_order
( (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY
timestamp TIMESTAMP WITH TIME ZONE DEFAULT now()
); );
...@@ -33,58 +33,61 @@ CREATE TABLE blackboard.step ...@@ -33,58 +33,61 @@ CREATE TABLE blackboard.step
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
work_order_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.work_order (id) ON DELETE CASCADE, work_order_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.work_order (id) ON DELETE CASCADE,
name TEXT NOT NULL, "Name" TEXT NOT NULL,
operation TEXT NOT NULL, "Operation" TEXT NOT NULL,
station1 TEXT[] DEFAULT '{}', "Baselines.Station1" TEXT[] DEFAULT '{}',
station2 TEXT[] DEFAULT '{}', "Baselines.Station2" TEXT[] DEFAULT '{}',
correlation_selection TEXT DEFAULT 'CROSS', "Correlation.Selection" TEXT DEFAULT 'CROSS',
correlation_type TEXT[] DEFAULT '{"XX","XY","YX","YY"}', "Correlation.Type" TEXT[] DEFAULT '{"XX","XY","YX","YY"}',
sources TEXT[] DEFAULT '{}', "Sources" TEXT[] DEFAULT '{}',
instrument_model TEXT[] DEFAULT '{}', "InstrumentModel" TEXT[] DEFAULT '{}',
output_column TEXT DEFAULT 'CORRECTED_DATA' "OutputData" TEXT DEFAULT 'CORRECTED_DATA'
); );
CREATE TABLE blackboard.solve_arguments CREATE TABLE blackboard.solve_arguments
( (
step_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.step (id) ON DELETE CASCADE, step_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.step (id) ON DELETE CASCADE,
max_iter INTEGER DEFAULT 1,
epsilon DOUBLE PRECISION DEFAULT 1e-6, "MaxIter" INTEGER DEFAULT 1,
min_converged DOUBLE PRECISION DEFAULT 100.0, "Epsilon" DOUBLE PRECISION DEFAULT 1e-6,
parms TEXT[] DEFAULT '{}', "MinConverged" DOUBLE PRECISION DEFAULT 100.0,
excl_parms TEXT[] DEFAULT '{}', "Parms" TEXT[] DEFAULT '{}',
solve_domain_size DOUBLE PRECISION[2] NOT NULL "ExclParms" TEXT[] DEFAULT '{}',
"DomainSize.Freq" DOUBLE PRECISION NOT NULL,
"DomainSize.Time" DOUBLE PRECISION NOT NULL
); );
--CREATE TABLE blackboard.predict_arguments --CREATE TABLE blackboard.predict_arguments
--( --(
-- step_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.step (id) ON DELETE CASCADE, -- step_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.step (id) ON DELETE CASCADE,
-- output_column TEXT DEFAULT 'MODEL_DATA' -- "OutputData" TEXT DEFAULT 'CORRECTED_DATA'
--); --);
--CREATE TABLE blackboard.subtract_arguments --CREATE TABLE blackboard.subtract_arguments
--( --(
-- step_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.step (id) ON DELETE CASCADE, -- step_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.step (id) ON DELETE CASCADE,
-- output_column TEXT DEFAULT 'CORRECTED_DATA' -- "OutputData" TEXT DEFAULT 'CORRECTED_DATA'
--); --);
--CREATE TABLE blackboard.correct_arguments --CREATE TABLE blackboard.correct_arguments
--( --(
-- step_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.step (id) ON DELETE CASCADE, -- step_id INTEGER UNIQUE NOT NULL REFERENCES blackboard.step (id) ON DELETE CASCADE,
-- output_column TEXT DEFAULT 'CORRECTED_DATA' -- "OutputData" TEXT DEFAULT 'CORRECTED_DATA'
--); --);
CREATE TABLE blackboard.status CREATE TABLE blackboard.status
( (
work_order_id INTEGER NOT NULL REFERENCES blackboard.work_order (id) ON DELETE CASCADE, work_order_id INTEGER NOT NULL REFERENCES blackboard.work_order (id) ON DELETE CASCADE,
timestamp TIMESTAMP WITH TIME ZONE DEFAULT now(), timestamp TIMESTAMP WITH TIME ZONE DEFAULT now(),
node INET DEFAULT inet_client_addr(), node INET DEFAULT inet_client_addr(),
status_code INTEGER DEFAULT 0, status_code INTEGER DEFAULT 0,
...@@ -95,6 +98,7 @@ CREATE TABLE blackboard.status ...@@ -95,6 +98,7 @@ CREATE TABLE blackboard.status
CREATE TABLE blackboard.log CREATE TABLE blackboard.log
( (
work_order_id INTEGER DEFAULT NULL REFERENCES blackboard.work_order (id) ON DELETE CASCADE, work_order_id INTEGER DEFAULT NULL REFERENCES blackboard.work_order (id) ON DELETE CASCADE,
timestamp TIMESTAMP WITH TIME ZONE DEFAULT now(), timestamp TIMESTAMP WITH TIME ZONE DEFAULT now(),
node INET DEFAULT inet_client_addr(), node INET DEFAULT inet_client_addr(),
level INTEGER DEFAULT 7, level INTEGER DEFAULT 7,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment