@@ -49,24 +49,24 @@ TO public;
4949/*
5050 * Check if current user can alter/drop specified relation
5151 */
52- CREATE OR REPLACE FUNCTION @extschema@.can_manage_relation (relation regclass)
53- RETURNS BOOL AS ' pg_pathman' , ' can_manage_relation ' LANGUAGE C STRICT;
52+ CREATE OR REPLACE FUNCTION @extschema@.check_security_policy (relation regclass)
53+ RETURNS BOOL AS ' pg_pathman' , ' check_security_policy ' LANGUAGE C STRICT;
5454
5555/*
5656 * Check user permissions. If permission denied then throw an error.
5757 */
58- CREATE OR REPLACE FUNCTION @extschema@.check_permissions(relation regclass)
59- RETURNS BOOL AS ' pg_pathman' , ' check_permissions' LANGUAGE C STRICT;
58+ -- CREATE OR REPLACE FUNCTION @extschema@.check_permissions(relation regclass)
59+ -- RETURNS BOOL AS 'pg_pathman', 'check_permissions' LANGUAGE C STRICT;
6060
6161/*
6262 * Row security policy to restrict partitioning operations to owner and
6363 * superusers only
6464 */
6565CREATE POLICY deny_modification ON @extschema@.pathman_config
66- FOR ALL USING (can_manage_relation (partrel));
66+ FOR ALL USING (check_security_policy (partrel));
6767
6868CREATE POLICY deny_modification ON @extschema@.pathman_config_params
69- FOR ALL USING (can_manage_relation (partrel));
69+ FOR ALL USING (check_security_policy (partrel));
7070
7171CREATE POLICY allow_select ON @extschema@.pathman_config FOR SELECT USING (true);
7272
@@ -129,7 +129,7 @@ CREATE OR REPLACE FUNCTION @extschema@.pathman_set_param(
129129RETURNS VOID AS
130130$$
131131BEGIN
132- PERFORM @extschema@.check_permissions(relation);
132+ -- PERFORM @extschema@.check_permissions(relation);
133133
134134 EXECUTE format(' INSERT INTO @extschema@.pathman_config_params
135135 (partrel, %1$s) VALUES ($1, $2)
@@ -336,7 +336,7 @@ CREATE OR REPLACE FUNCTION @extschema@.disable_pathman_for(
336336RETURNS VOID AS
337337$$
338338BEGIN
339- PERFORM @extschema@.check_permissions(parent_relid);
339+ -- PERFORM @extschema@.check_permissions(parent_relid);
340340
341341 DELETE FROM @extschema@.pathman_config WHERE partrel = parent_relid;
342342 PERFORM @extschema@.drop_triggers(parent_relid);
468468LANGUAGE plpgsql;
469469
470470/*
471- * DDL trigger that deletes entry from pathman_config table.
471+ * DDL trigger that removes entry from pathman_config table.
472472 */
473473CREATE OR REPLACE FUNCTION @extschema@.pathman_ddl_trigger_func()
474474RETURNS event_trigger AS
475475$$
476476DECLARE
477477 obj record;
478478 pg_class_oid oid ;
479+ relids regclass[];
479480BEGIN
480481 pg_class_oid = ' pg_catalog.pg_class' ::regclass;
481482
482- /* Handle 'DROP TABLE' events */
483- WITH to_be_deleted AS (
484- SELECT cfg . partrel AS rel FROM pg_event_trigger_dropped_objects() AS events
485- JOIN @extschema@.pathman_config AS cfg ON cfg .partrel ::oid = events .objid
486- WHERE events .classid = pg_class_oid
487- )
488- DELETE FROM @extschema@. pathman_config
489- WHERE partrel IN ( SELECT rel FROM to_be_deleted );
483+ /* Find relids to remove from config */
484+ SELECT array_agg( cfg . partrel ) INTO relids
485+ FROM pg_event_trigger_dropped_objects() AS events
486+ JOIN @extschema@.pathman_config AS cfg ON cfg .partrel ::oid = events .objid
487+ WHERE events .classid = pg_class_oid;
488+
489+ /* Cleanup pathman_config */
490+ DELETE FROM @extschema@.pathman_config WHERE partrel = ANY(relids );
490491
491492 /* Cleanup params table too */
492- WITH to_be_deleted AS (
493- SELECT cfg .partrel AS rel FROM pg_event_trigger_dropped_objects() AS events
494- JOIN @extschema@.pathman_config_params AS cfg ON cfg .partrel ::oid = events .objid
495- WHERE events .classid = pg_class_oid
496- )
497- DELETE FROM @extschema@.pathman_config_params
498- WHERE partrel IN (SELECT rel FROM to_be_deleted);
493+ DELETE FROM @extschema@.pathman_config_params WHERE partrel = ANY(relids);
499494END
500495$$
501496LANGUAGE plpgsql;
@@ -530,7 +525,7 @@ DECLARE
530525 v_relkind CHAR ;
531526
532527BEGIN
533- PERFORM @extschema@.check_permissions(parent_relid);
528+ -- PERFORM @extschema@.check_permissions(parent_relid);
534529
535530 /* Drop trigger first */
536531 PERFORM @extschema@.drop_triggers(parent_relid);
0 commit comments