# HG changeset patch # User Sascha L. Teichmann # Date 1553680329 -3600 # Node ID 89f5af7e14adc647cdfc1d21d7397719ebc1b7bc # Parent ff58440ce809cbefafa06bdf20c537a4bcd71568 Due to performance problems with users.current_user_country() inlined it as (SELECT country FROM users.list_users WHERE username = current_user) in RLS policies. diff -r ff58440ce809 -r 89f5af7e14ad schema/auth.sql --- a/schema/auth.sql Wed Mar 27 10:19:31 2019 +0100 +++ b/schema/auth.sql Wed Mar 27 10:52:09 2019 +0100 @@ -112,10 +112,10 @@ -- RLS policies for templates -- CREATE POLICY select_templates ON users.templates FOR SELECT TO waterway_user - USING (country IS NULL OR country = users.current_user_country()); + USING (country IS NULL OR country = (SELECT country FROM users.list_users WHERE username = current_user)); CREATE POLICY user_templates ON users.templates FOR ALL TO waterway_admin - USING (country = users.current_user_country()); + USING (country = (SELECT country FROM users.list_users WHERE username = current_user)); CREATE POLICY admin_templates ON users.templates FOR ALL TO sys_admin USING (true); @@ -131,11 +131,11 @@ CREATE POLICY same_country ON waterway.gauge_measurements FOR ALL TO waterway_admin - USING ((fk_gauge_id).country_code = users.current_user_country()); + USING ((fk_gauge_id).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 = users.current_user_country()); + USING ((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 @@ -212,7 +212,7 @@ CREATE POLICY import_configuration_policy ON import.import_configuration FOR ALL TO waterway_admin USING ( - users.current_user_country() = ( + (SELECT country FROM users.list_users WHERE username = current_user) = ( SELECT country FROM users.list_users lu WHERE lu.username = import.import_configuration.username));