diff options
Diffstat (limited to 'sql')
| -rw-r--r-- | sql/mlpdb.sql | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sql/mlpdb.sql b/sql/mlpdb.sql index 4d992732..8e2e3873 100644 --- a/sql/mlpdb.sql +++ b/sql/mlpdb.sql @@ -143,8 +143,6 @@ CREATE OR REPLACE FUNCTION nameToBasketID(index_name varchar(4)) RETURNS integer END;
$$ LANGUAGE plpgsql;
-GRANT ALL ON nameToBasketID TO mlpdb_user;
-
CREATE OR REPLACE FUNCTION index_members(index_name varchar(4))
RETURNS SETOF CDS_Issuers AS $$
DECLARE
@@ -156,17 +154,19 @@ CREATE OR REPLACE FUNCTION index_members(index_name varchar(4)) $$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION historical_cds_quotes(date) RETURNS SETOF cds_quotes AS $$
- RETURN QUERY SELECT b.*
- FROM (SELECT max(c.Date) AS latestdate, c.curve_ticker FROM cds_quotes c
- WHERE cds_quotes.Date<=p_date GROUP BY c.curve_ticker) a
- JOIN cds_quotes b ON a.curve_ticker = b.curve_ticker AND a.latestdate=b.Date;
+ BEGIN
+ RETURN QUERY SELECT b.*
+ FROM (SELECT max(c.Date) AS latestdate, c.curve_ticker FROM cds_quotes c
+ WHERE c.Date<=$1 GROUP BY c.curve_ticker) a
+ JOIN cds_quotes b ON a.curve_ticker = b.curve_ticker AND a.latestdate=b.Date;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION curve_quotes(varchar(4), date) RETURNS
- TABLE(cds_ticker text, spread_curve float[]) AS $$
+ TABLE(cds_ticker text, spread_curve float[], recovery_curve float[]) AS $$
BEGIN
- RETURN QUERY SELECT max(ticker) AS t, array_agg((a.runningbid+a.runningask)/2 ORDER BY tenor) FROM historical_cds_quotes($2) a JOIN
+ RETURN QUERY SELECT max(ticker) AS t, array_agg((a.runningbid+a.runningask)/2 ORDER BY tenor),
+ array_agg(a.Recovery ORDER BY tenor) FROM historical_cds_quotes($2) a JOIN
(SELECT generate_series(1, 8) AS tenor, unnest(cds_curve) AS curve_ticker, ticker, company_id FROM index_members($1)) b
ON b.curve_ticker = a.curve_ticker GROUP by company_id ORDER BY t;
END;
|
