You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// XIRR result may differ between platforms, so we truncate the results with LEFT(_, 10).
2815
+
let r = service
2816
+
.exec_query(
2817
+
r#"
2818
+
SELECT LEFT(XIRR(payment, date)::varchar, 10) AS xirr
2819
+
FROM (
2820
+
SELECT '2014-01-01'::date AS date, -10000.0 AS payment
2821
+
UNION ALL
2822
+
SELECT '2014-03-01'::date AS date, 2750.0 AS payment
2823
+
UNION ALL
2824
+
SELECT '2014-10-30'::date AS date, 4250.0 AS payment
2825
+
UNION ALL
2826
+
SELECT '2015-02-15'::date AS date, 3250.0 AS payment
2827
+
UNION ALL
2828
+
SELECT '2015-04-01'::date AS date, 2750.0 AS payment
2829
+
) AS "t"
2830
+
"#,
2831
+
)
2832
+
.await
2833
+
.unwrap();
2834
+
2835
+
assert_eq!(to_rows(&r), rows(&["0.37485859"]));
2836
+
2837
+
let r = service
2838
+
.exec_query(
2839
+
r#"
2840
+
SELECT LEFT(XIRR(payment, date)::varchar, 10) AS xirr
2841
+
FROM (
2842
+
SELECT '2014-01-01'::date AS date, -10000.0 AS payment
2843
+
) AS "t"
2844
+
WHERE 0 = 1
2845
+
"#,
2846
+
)
2847
+
.await
2848
+
.unwrap_err();
2849
+
assert_eq!(r.elide_backtrace(),CubeError::internal("Execution error: A result for XIRR couldn't be determined because the arguments are empty".to_owned()));
2850
+
2851
+
let r = service
2852
+
.exec_query(
2853
+
r#"
2854
+
SELECT LEFT(XIRR(payment, date)::varchar, 10) AS xirr
2855
+
FROM (
2856
+
SELECT '2014-01-01'::date AS date, 10000.0 AS payment
2857
+
) AS "t"
2858
+
"#,
2859
+
)
2860
+
.await
2861
+
.unwrap_err();
2862
+
assert_eq!(r.elide_backtrace(),CubeError::internal("Execution error: The XIRR function couldn't find a solution".to_owned()));
2863
+
2864
+
// --- on_error testing ---
2865
+
2866
+
let r = service
2867
+
.exec_query(
2868
+
r#"
2869
+
SELECT LEFT(XIRR(payment, date, 0, NULL::double)::varchar, 10) AS xirr
2870
+
FROM (
2871
+
SELECT '2014-01-01'::date AS date, -10000.0 AS payment
2872
+
UNION ALL
2873
+
SELECT '2014-03-01'::date AS date, 2750.0 AS payment
2874
+
UNION ALL
2875
+
SELECT '2014-10-30'::date AS date, 4250.0 AS payment
2876
+
UNION ALL
2877
+
SELECT '2015-02-15'::date AS date, 3250.0 AS payment
2878
+
UNION ALL
2879
+
SELECT '2015-04-01'::date AS date, 2750.0 AS payment
2880
+
) AS "t"
2881
+
"#,
2882
+
)
2883
+
.await
2884
+
.unwrap();
2885
+
2886
+
assert_eq!(to_rows(&r), rows(&["0.37485859"]));
2887
+
2888
+
let r = service
2889
+
.exec_query(
2890
+
r#"
2891
+
SELECT LEFT(XIRR(payment, date, 0, NULL::double)::varchar, 10) AS xirr
2892
+
FROM (
2893
+
SELECT '2014-01-01'::date AS date, -10000.0 AS payment
2894
+
) AS "t"
2895
+
WHERE 0 = 1
2896
+
"#,
2897
+
)
2898
+
.await
2899
+
.unwrap_err();
2900
+
assert_eq!(r.elide_backtrace(),CubeError::internal("Execution error: A result for XIRR couldn't be determined because the arguments are empty".to_owned()));
2901
+
2902
+
let r = service
2903
+
.exec_query(
2904
+
r#"
2905
+
SELECT LEFT(XIRR(payment, date, 0, NULL::double)::varchar, 10) AS xirr
2906
+
FROM (
2907
+
SELECT '2014-01-01'::date AS date, 10000.0 AS payment
2908
+
) AS "t"
2909
+
"#,
2910
+
)
2911
+
.await
2912
+
.unwrap();
2913
+
assert_eq!(to_rows(&r), rows(&[()]));
2914
+
2915
+
let r = service
2916
+
.exec_query(
2917
+
r#"
2918
+
SELECT LEFT(XIRR(payment, date, 0, 12345)::varchar, 10) AS xirr
2919
+
FROM (
2920
+
SELECT '2014-01-01'::date AS date, 10000.0 AS payment
0 commit comments