aboutsummaryrefslogtreecommitdiffstats
path: root/sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql')
-rw-r--r--sql/dawn.sql19
1 files changed, 10 insertions, 9 deletions
diff --git a/sql/dawn.sql b/sql/dawn.sql
index d2905dd8..20fc8921 100644
--- a/sql/dawn.sql
+++ b/sql/dawn.sql
@@ -1274,8 +1274,9 @@ END IF;
END;
$$ LANGUAGE plpgsql;
-CREATE TYPE LIST_CDS AS(
+CREATE TYPE "LIST_CDS" AS(
id integer,
+ fund fund,
trade_date date,
security_id varchar(12),
security_desc varchar(32),
@@ -1295,11 +1296,11 @@ CREATE TYPE LIST_CDS AS(
cp_code varchar(12)
);
-CREATE OR REPLACE function list_cds(p_date date, p_fund fund DEFAULT 'SERCGMAST'::fund)
-RETURNS SETOF LIST_CDS AS $$
+CREATE OR REPLACE function list_cds(p_date date, VARIADIC p_fund fund[] DEFAULT '{SERCGMAST}'::fund[])
+RETURNS SETOF "LIST_CDS" AS $$
BEGIN
RETURN QUERY
-SELECT id, trade_date, security_id, security_desc, maturity, fixed_rate, currency,
+SELECT id, fund, trade_date, security_id, security_desc, maturity, fixed_rate, currency,
folder, protection, (notional - coalesce(terminated_amount, 0.)) *
(CASE WHEN cds.protection='Buyer' THEN 1 ELSE -1 END)
AS notional,
@@ -1309,17 +1310,17 @@ SELECT id, trade_date, security_id, security_desc, maturity, fixed_rate, currenc
FROM cds LEFT JOIN (
SELECT dealid, SUM(termination_amount) AS terminated_amount
FROM terminations WHERE termination_date <= p_date GROUP BY dealid) b USING (dealid)
-WHERE fund=p_fund and notional IS DISTINCT FROM terminated_amount
+WHERE fund=ANY(p_fund) and notional IS DISTINCT FROM terminated_amount
AND trade_date <= p_date AND maturity > p_date;
END;
$$ LANGUAGE plpgsql;
-CREATE OR REPLACE function list_cds2(p_date date, p_fund fund DEFAULT 'SERCGMAST'::fund)
+CREATE OR REPLACE function list_cds2(p_date date, VARIADIC p_fund fund[] DEFAULT '{SERCGMAST}'::fund[])
-- Do not include unsettled terminations
-RETURNS SETOF LIST_CDS AS $$
+RETURNS SETOF "LIST_CDS" AS $$
BEGIN
RETURN QUERY
-SELECT id, trade_date, security_id, security_desc, maturity, fixed_rate, currency,
+SELECT id, fund, trade_date, security_id, security_desc, maturity, fixed_rate, currency,
folder, protection, (notional - coalesce(terminated_amount, 0.)) *
(CASE WHEN cds.protection='Buyer' THEN 1 ELSE -1 END)
AS notional,
@@ -1329,7 +1330,7 @@ SELECT id, trade_date, security_id, security_desc, maturity, fixed_rate, currenc
FROM cds LEFT JOIN (
SELECT dealid, SUM(termination_amount) AS terminated_amount
FROM terminations WHERE fee_payment_date < p_date GROUP BY dealid) b USING (dealid)
-WHERE fund=p_fund and notional IS DISTINCT FROM terminated_amount
+WHERE fund=ANY(p_fund) and notional IS DISTINCT FROM terminated_amount
AND trade_date <= p_date AND maturity > p_date;
END;
$$ LANGUAGE plpgsql;