/* * Add Job Autonmous */ CREATE FUNCTION _autonomous_add_job(p_owner text, p_job_name text, p_pid integer) RETURNS bigint LANGUAGE plpgsql AS $$ DECLARE v_job_id bigint; BEGIN SELECT nextval('@extschema@.job_log_job_id_seq') INTO v_job_id; INSERT INTO @extschema@.job_log (job_id, owner, job_name, start_time, pid) VALUES (v_job_id, p_owner, upper(p_job_name), current_timestamp, p_pid); RETURN v_job_id; END $$; /* * Add Job */ CREATE OR REPLACE FUNCTION add_job(p_job_name text) RETURNS bigint LANGUAGE plpgsql AS $$ DECLARE v_job_id bigint; v_remote_query text; v_dblink_schema text; BEGIN SELECT nspname INTO v_dblink_schema FROM pg_namespace n, pg_extension e WHERE e.extname = 'dblink' AND e.extnamespace = n.oid; v_remote_query := 'SELECT @extschema@._autonomous_add_job (' || quote_literal(current_user) || ',' || quote_literal(p_job_name) || ',' || pg_backend_pid() || ')'; EXECUTE 'SELECT job_id FROM ' || v_dblink_schema || '.dblink('||quote_literal(@extschema@.auth())|| ','|| quote_literal(v_remote_query) || ',TRUE) t (job_id int)' INTO v_job_id; IF v_job_id IS NULL THEN RAISE EXCEPTION 'Job creation failed'; END IF; RETURN v_job_id; END $$;