Loading 08-update_array.sql 0 → 100644 +14 −0 Original line number Original line Diff line number Diff line -- This function returns an array adding some elements and removing others -- It is used to update recursively groupread and groupwrite properties CREATE OR REPLACE FUNCTION update_array(input_array VARCHAR[], elements_to_add VARCHAR[], elements_to_remove VARCHAR[]) RETURNS VARCHAR[] AS $func$ SELECT array_agg(elements) FROM ( SELECT DISTINCT UNNEST(input_array) UNION SELECT DISTINCT UNNEST(elements_to_add) EXCEPT SELECT DISTINCT UNNEST(elements_to_remove) ) AS output_values(elements) $func$ LANGUAGE sql; SELECT update_array('{"group1","group2"}'::VARCHAR[],'{"group2","group3"}'::VARCHAR[],'{"group1"}'::VARCHAR[]) = '{"group2","group3"}' AS test_passed; Loading
08-update_array.sql 0 → 100644 +14 −0 Original line number Original line Diff line number Diff line -- This function returns an array adding some elements and removing others -- It is used to update recursively groupread and groupwrite properties CREATE OR REPLACE FUNCTION update_array(input_array VARCHAR[], elements_to_add VARCHAR[], elements_to_remove VARCHAR[]) RETURNS VARCHAR[] AS $func$ SELECT array_agg(elements) FROM ( SELECT DISTINCT UNNEST(input_array) UNION SELECT DISTINCT UNNEST(elements_to_add) EXCEPT SELECT DISTINCT UNNEST(elements_to_remove) ) AS output_values(elements) $func$ LANGUAGE sql; SELECT update_array('{"group1","group2"}'::VARCHAR[],'{"group2","group3"}'::VARCHAR[],'{"group1"}'::VARCHAR[]) = '{"group2","group3"}' AS test_passed;