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
|
||||
CREATE or REPLACE FUNCTION expand_memberships( INT8, INT ) RETURNS SETOF INT8 AS $$
|
||||
BEGIN
|
||||
IF $2 > 0 THEN
|
||||
RETURN QUERY
|
||||
SELECT group_id FROM group_member WHERE member_id = $1
|
||||
UNION
|
||||
SELECT expanded.g_id FROM (SELECT CASE WHEN $2 > 0 THEN expand_memberships( group_id, $2 - 1) END AS g_id
|
||||
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;
|
||||
$$ LANGUAGE sql STABLE STRICT;
|
||||
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
|
||||
CREATE or REPLACE FUNCTION expand_members( INT8, INT ) RETURNS SETOF INT8 AS $$
|
||||
BEGIN
|
||||
IF $2 > 0 THEN
|
||||
RETURN QUERY
|
||||
SELECT member_id FROM group_member WHERE group_id = $1
|
||||
UNION
|
||||
SELECT expanded.m_id FROM (SELECT CASE WHEN $2 > 0 THEN expand_members( member_id, $2 - 1) END AS m_id
|
||||
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;
|
||||
$$ LANGUAGE sql STABLE STRICT;
|
||||
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.
|
||||
Supported locales updated.
|
||||
Updated view: dav_principal.sql applied.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user