Mercurial > gemma
diff schema/auth.sql @ 4785:1fef9d8e7eb2
Improved performance for RLS on read access.
Only do expensive regional test if data is in staging area (and on
write operations).
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Wed, 23 Oct 2019 15:23:52 +0200 |
parents | 2440d2f86f4e |
children | 9e077ca97505 |
line wrap: on
line diff
--- a/schema/auth.sql Tue Oct 22 17:56:53 2019 +0200 +++ b/schema/auth.sql Wed Oct 23 15:23:52 2019 +0200 @@ -129,25 +129,38 @@ CREATE POLICY same_country ON waterway.gauge_measurements FOR ALL TO waterway_admin - USING ((location).country_code - = (SELECT country FROM users.list_users WHERE username = current_user) - ); + USING (staging_done + OR (location).country_code = + (SELECT country FROM users.list_users + WHERE username = current_user)) + WITH CHECK ((location).country_code = + (SELECT country FROM users.list_users + WHERE username = current_user)); CREATE POLICY same_country ON waterway.waterway_profiles FOR ALL TO waterway_admin - USING ((location).country_code = (SELECT country FROM users.list_users WHERE username = current_user)); + USING (staging_done + OR (location).country_code = + (SELECT country FROM users.list_users + WHERE username = current_user)) + WITH CHECK ((location).country_code = + (SELECT country FROM users.list_users + WHERE username = current_user)); CREATE POLICY responsibility_area ON waterway.bottlenecks FOR ALL TO waterway_admin - USING (users.utm_covers(area)); + USING (staging_done OR users.utm_covers(area)) + WITH CHECK (users.utm_covers(area)); CREATE POLICY responsibility_area ON waterway.sounding_results FOR ALL TO waterway_admin - USING (users.utm_covers(area)); + USING (staging_done OR users.utm_covers(area)) + WITH CHECK (users.utm_covers(area)); CREATE POLICY responsibility_area ON waterway.fairway_dimensions FOR ALL TO waterway_admin - USING (users.utm_covers(area)); + USING (staging_done OR users.utm_covers(area)) + WITH CHECK (users.utm_covers(area)); CREATE POLICY same_country ON waterway.sections FOR ALL TO waterway_admin