/* * Show Currently Running Jobs */ CREATE FUNCTION show_running(int default 10) RETURNS SETOF @extschema@.job_log LANGUAGE plpgsql STABLE AS $$ DECLARE v_job_list @extschema@.job_log%ROWTYPE; v_version int; BEGIN SELECT current_setting('server_version_num')::int INTO v_version; IF v_version >= 90200 THEN FOR v_job_list IN SELECT j.job_id, j.owner, j.job_name, j.start_time, j.end_time, j.status, j.pid FROM @extschema@.job_log j JOIN pg_stat_activity p ON j.pid = p.pid WHERE p.state <> 'idle' AND j.status IS NULL ORDER BY j.job_id DESC LIMIT $1 LOOP RETURN NEXT v_job_list; END LOOP; ELSE FOR v_job_list IN SELECT j.job_id, j.owner, j.job_name, j.start_time, j.end_time, j.status, j.pid FROM @extschema@.job_log j JOIN pg_stat_activity p ON j.pid = p.procpid WHERE p.current_query <> '' AND j.status IS NULL ORDER BY j.job_id DESC LIMIT $1 LOOP RETURN NEXT v_job_list; END LOOP; END IF; RETURN; END $$;