mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-05-30 03:24:47 +00:00
Update caldav_functions.sql for Postgresql 10
From version 10, Postgresql does not allow set-returning functions in CASE statements. As we're using the functions recursively, we cannot use LATERAL as suggested in the error message, but we can switch the condition inside-out with only a limited amount of repetition.
This commit is contained in:
parent
6ad5511c1e
commit
39001794a3
@ -897,21 +897,37 @@ LANGUAGE plpgsql IMMUTABLE STRICT;
|
|||||||
|
|
||||||
-- Expanded group memberships out to some depth
|
-- Expanded group memberships out to some depth
|
||||||
CREATE or REPLACE FUNCTION expand_memberships( INT8, INT ) RETURNS SETOF INT8 AS $$
|
CREATE or REPLACE FUNCTION expand_memberships( INT8, INT ) RETURNS SETOF INT8 AS $$
|
||||||
SELECT group_id FROM group_member WHERE member_id = $1
|
BEGIN
|
||||||
UNION
|
IF $2 > 0 THEN
|
||||||
SELECT expanded.g_id FROM (SELECT CASE WHEN $2 > 0 THEN expand_memberships( group_id, $2 - 1) END AS g_id
|
RETURN QUERY
|
||||||
FROM group_member WHERE member_id = $1) AS expanded
|
SELECT group_id FROM group_member WHERE member_id = $1
|
||||||
WHERE expanded.g_id IS NOT NULL;
|
UNION
|
||||||
$$ LANGUAGE sql STABLE STRICT;
|
SELECT expanded.g_id FROM (SELECT expand_memberships( group_id, $2 - 1) AS g_id
|
||||||
|
FROM group_member WHERE member_id = $1) AS expanded
|
||||||
|
WHERE expanded.g_id IS NOT NULL;
|
||||||
|
ELSE
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT group_id FROM group_member WHERE member_id = $1;
|
||||||
|
END IF;
|
||||||
|
END
|
||||||
|
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
|
||||||
|
|
||||||
-- Expanded group members out to some depth
|
-- Expanded group members out to some depth
|
||||||
CREATE or REPLACE FUNCTION expand_members( INT8, INT ) RETURNS SETOF INT8 AS $$
|
CREATE or REPLACE FUNCTION expand_members( INT8, INT ) RETURNS SETOF INT8 AS $$
|
||||||
SELECT member_id FROM group_member WHERE group_id = $1
|
BEGIN
|
||||||
UNION
|
IF $2 > 0 THEN
|
||||||
SELECT expanded.m_id FROM (SELECT CASE WHEN $2 > 0 THEN expand_members( member_id, $2 - 1) END AS m_id
|
RETURN QUERY
|
||||||
FROM group_member WHERE group_id = $1) AS expanded
|
SELECT member_id FROM group_member WHERE group_id = $1
|
||||||
WHERE expanded.m_id IS NOT NULL;
|
UNION
|
||||||
$$ LANGUAGE sql STABLE STRICT;
|
SELECT expanded.m_id FROM (SELECT expand_members( member_id, $2 - 1) AS m_id
|
||||||
|
FROM group_member WHERE group_id = $1) AS expanded
|
||||||
|
WHERE expanded.m_id IS NOT NULL;
|
||||||
|
ELSE
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT member_id FROM group_member WHERE group_id = $1;
|
||||||
|
END IF;
|
||||||
|
END
|
||||||
|
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
The database is version 9.6 currently at revision 1.3.2.
|
The database is version 10.0 currently at revision 1.3.2.
|
||||||
No patches were applied.
|
No patches were applied.
|
||||||
Supported locales updated.
|
Supported locales updated.
|
||||||
Updated view: dav_principal.sql applied.
|
Updated view: dav_principal.sql applied.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user