@@ -338,7 +338,7 @@ LANGUAGE plpgsql set search_path FROM CURRENT;
338338CREATE FUNCTION _possible_args () RETURNS jsonbAS
339339$BODY$
340340BEGIN
341- RETURNjson_build_object (
341+ RETURNjsonb_build_object (
342342' node' ,' node name (default: master)' ,
343343' name' ,' job name' ,
344344' comments' ,' some comments on job' ,
@@ -437,9 +437,9 @@ BEGIN
437437IF N> 0 THEN
438438EXECUTE' SELECT array_agg(lll) FROM (SELECT distinct(date_trunc(' ' min' ' , unnest::timestamp with time zone)) as lll FROM unnest($1) ORDER BY date_trunc(' ' min' ' , unnest::timestamp with time zone)) as Z'
439439INTO dates USING dates;
440- cron := COALESCE(cron,' {}' ::jsonb)|| json_build_object (' dates' , array_to_json(dates))::jsonb ;
440+ cron := COALESCE(cron,' {}' ::jsonb)|| jsonb_build_object (' dates' , array_to_json(dates));
441441END IF;
442-
442+
443443clean_cron := ' {}' ::jsonb;
444444FOR nameIN SELECT * FROM unnest(' {dates, crontab, onstart, days, hours, wdays, months, minutes}' ::text [])
445445LOOP
@@ -635,7 +635,7 @@ LANGUAGE plpgsql
635635CREATE FUNCTION create_job (crontext , commandtext , nodetext DEFAULTNULL ) RETURNSinteger AS
636636$BODY$
637637BEGIN
638- RETURN create_job(json_build_object (' cron' , cron,' command' , command,' node' , node)::jsonb );
638+ RETURN create_job(jsonb_build_object (' cron' , cron,' command' , command,' node' , node));
639639END
640640$BODY$
641641LANGUAGE plpgsql
@@ -644,7 +644,7 @@ LANGUAGE plpgsql
644644CREATE FUNCTION create_job (dttimestamp with time zone , commandtext , nodetext DEFAULTNULL ) RETURNSinteger AS
645645$BODY$
646646BEGIN
647- RETURN create_job(json_build_object (' date' , dt::text ,' command' , command,' node' , node)::jsonb );
647+ RETURN create_job(jsonb_build_object (' date' , dt::text ,' command' , command,' node' , node));
648648END
649649$BODY$
650650LANGUAGE plpgsql
@@ -653,7 +653,7 @@ LANGUAGE plpgsql
653653CREATE FUNCTION create_job (dtstimestamp with time zone [], commandtext , nodetext DEFAULTNULL ) RETURNSinteger AS
654654$BODY$
655655BEGIN
656- RETURN create_job(json_build_object (' dates' , array_to_json(dts),' command' , command,' node' , node)::jsonb );
656+ RETURN create_job(jsonb_build_object (' dates' , array_to_json(dts),' command' , command,' node' , node));
657657END
658658$BODY$
659659LANGUAGE plpgsql
@@ -662,7 +662,7 @@ LANGUAGE plpgsql
662662CREATE FUNCTION create_job (crontext , commandstext [], nodetext DEFAULTNULL ) RETURNSinteger AS
663663$BODY$
664664BEGIN
665- RETURN create_job(json_build_object (' cron' , cron,' commands' , array_to_json(commands),' node' , node)::jsonb );
665+ RETURN create_job(jsonb_build_object (' cron' , cron,' commands' , array_to_json(commands),' node' , node));
666666END
667667$BODY$
668668LANGUAGE plpgsql
@@ -671,7 +671,7 @@ LANGUAGE plpgsql
671671CREATE FUNCTION create_job (dttimestamp with time zone , commandstext [], nodetext DEFAULTNULL ) RETURNSinteger AS
672672$BODY$
673673BEGIN
674- RETURN create_job(json_build_object (' date' , dt::text ,' commands' , array_to_json(commands),' node' , node)::jsonb );
674+ RETURN create_job(jsonb_build_object (' date' , dt::text ,' commands' , array_to_json(commands),' node' , node));
675675END
676676$BODY$
677677LANGUAGE plpgsql
@@ -680,7 +680,7 @@ LANGUAGE plpgsql
680680CREATE FUNCTION create_job (dtstimestamp with time zone [], commandstext [], nodetext DEFAULTNULL ) RETURNSinteger AS
681681$BODY$
682682BEGIN
683- RETURN create_job(json_build_object (' dates' , array_to_json(dts),' commands' , array_to_json(commands),' node' , node)::jsonb );
683+ RETURN create_job(jsonb_build_object (' dates' , array_to_json(dts),' commands' , array_to_json(commands),' node' , node));
684684END
685685$BODY$
686686LANGUAGE plpgsql
@@ -796,14 +796,27 @@ $BODY$
796796LANGUAGE plpgsql
797797 SECURITY DEFINERset search_pathFROM CURRENT;
798798
799+ CREATE FUNCTION set_job_attribute (jobIdinteger , nametext , value jsonb) RETURNSboolean AS
800+ $BODY$
801+ BEGIN
802+ IF name<> ' rule' THEN
803+ RAISE EXCEPTION' key % cannot have a jsonb value. Only "rule" allowed' , name;
804+ END IF;
805+
806+ RETURN set_job_attributes(jobId, jsonb_build_object(name, value));
807+ END
808+ $BODY$
809+ LANGUAGE plpgsql
810+ SECURITY DEFINERset search_pathFROM CURRENT;
811+
799812CREATE FUNCTION set_job_attribute (jobIdinteger , nametext , value anyarray) RETURNSboolean AS
800813$BODY$
801814BEGIN
802815 IF name<> ' dates' AND name<> ' commands' THEN
803816 RAISE EXCEPTION' key % cannot have an array value. Only dates, commands allowed' , name;
804817 END IF;
805818
806- RETURN set_job_attributes(jobId,json_build_object (name, array_to_json(value))::jsonb );
819+ RETURN set_job_attributes(jobId,jsonb_build_object (name, array_to_json(value)));
807820END
808821$BODY$
809822LANGUAGE plpgsql
@@ -815,9 +828,11 @@ DECLARE
815828 attrs jsonb;
816829BEGIN
817830 IF name= ' dates' OR name= ' commands' THEN
818- attrs := json_build_object(name, array_to_json(value::text []));
831+ attrs := jsonb_build_object(name, array_to_json(value::text []));
832+ ELSIF name= ' rule' THEN
833+ attrs := jsonb_build_object(' rule' , value::jsonb);
819834 ELSE
820- attrs := json_build_object (name, value);
835+ attrs := jsonb_build_object (name, value);
821836 END IF;
822837 RETURN set_job_attributes(jobId, attrs);
823838END