@@ -52,7 +52,7 @@ CREATE TABLE IF NOT EXISTS @extschema@.pathman_config_params (
5252partrelREGCLASSNOT NULL PRIMARY KEY ,
5353enable_parentBOOLEAN NOT NULL DEFAULT FALSE,
5454autoBOOLEAN NOT NULL DEFAULT TRUE,
55- init_callbackTEXT ,
55+ init_callbackTEXT DEFAULT NULL ,
5656spawn_using_bgwBOOLEAN NOT NULL DEFAULT FALSE
5757
5858CHECK (@extschema@.validate_part_callback(init_callback))/* check signature*/
@@ -157,12 +157,21 @@ CREATE OR REPLACE FUNCTION @extschema@.set_init_callback(
157157callbackREGPROC DEFAULT0 )
158158RETURNS VOIDAS
159159$$
160+ DECLARE
161+ regproc_textTEXT ;
160162BEGIN
161- PERFORM @extschema@.pathman_set_param(relation,' init_callback' ,
162- CASE WHEN callback<> 0
163- THEN regprocedureout(callback)::text
164- ELSENULL END);
165-
163+ IF callback!= 0 THEN
164+ EXECUTE' SELECT quote_ident(nspname) ||' ' .' ' || quote_ident(proname)'
165+ ' ||' ' (' ' || (SELECT string_agg(x.argtype::regtype::text,' ' ,' ' )'
166+ ' FROM unnest(proargtypes) AS x(argtype))'
167+ ' ||' ' )' ' '
168+ ' FROM pg_proc p JOIN pg_namespace n ON n.oid=p.pronamespace WHERE p.oid=$1'
169+ INTO regproc_text
170+ USING callback;
171+ ELSE
172+ regproc_text := NULL ;
173+ END IF;
174+ PERFORM @extschema@.pathman_set_param(relation,' init_callback' , regproc_text);
166175END
167176$$
168177LANGUAGE plpgsql STRICT;