@@ -52,7 +52,7 @@ CREATE TABLE IF NOT EXISTS @extschema@.pathman_config_params (
52
52
partrelREGCLASSNOT NULL PRIMARY KEY ,
53
53
enable_parentBOOLEAN NOT NULL DEFAULT FALSE,
54
54
autoBOOLEAN NOT NULL DEFAULT TRUE,
55
- init_callbackTEXT ,
55
+ init_callbackTEXT DEFAULT NULL ,
56
56
spawn_using_bgwBOOLEAN NOT NULL DEFAULT FALSE
57
57
58
58
CHECK (@extschema@.validate_part_callback(init_callback))/* check signature*/
@@ -157,12 +157,21 @@ CREATE OR REPLACE FUNCTION @extschema@.set_init_callback(
157
157
callbackREGPROC DEFAULT0 )
158
158
RETURNS VOIDAS
159
159
$$
160
+ DECLARE
161
+ regproc_textTEXT ;
160
162
BEGIN
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);
166
175
END
167
176
$$
168
177
LANGUAGE plpgsql STRICT;