SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SELECT pg_catalog.set_config('search_path', '', false); SET check_function_bodies = false; SET client_min_messages = warning; SET row_security = off; -- -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - -- CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; -- -- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - -- COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; -- -- Name: que_validate_tags(jsonb); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION public.que_validate_tags(tags_array jsonb) RETURNS boolean LANGUAGE sql AS $$ SELECT bool_and( jsonb_typeof(value) = 'string' AND char_length(value::text) <= 100 ) FROM jsonb_array_elements(tags_array) $$; SET default_tablespace = ''; SET default_with_oids = false; -- -- Name: que_jobs; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.que_jobs ( priority smallint DEFAULT 100 NOT NULL, run_at timestamp with time zone DEFAULT now() NOT NULL, id bigint NOT NULL, job_class text NOT NULL, error_count integer DEFAULT 0 NOT NULL, last_error_message text, queue text DEFAULT 'default'::text NOT NULL, last_error_backtrace text, finished_at timestamp with time zone, expired_at timestamp with time zone, args jsonb DEFAULT '[]'::jsonb NOT NULL, data jsonb DEFAULT '{}'::jsonb NOT NULL, CONSTRAINT error_length CHECK (((char_length(last_error_message) <= 500) AND (char_length(last_error_backtrace) <= 10000))), CONSTRAINT job_class_length CHECK ((char_length( CASE job_class WHEN 'ActiveJob::QueueAdapters::QueAdapter::JobWrapper'::text THEN ((args -> 0) ->> 'job_class'::text) ELSE job_class END) <= 200)), CONSTRAINT queue_length CHECK ((char_length(queue) <= 100)), CONSTRAINT valid_args CHECK ((jsonb_typeof(args) = 'array'::text)), CONSTRAINT valid_data CHECK (((jsonb_typeof(data) = 'object'::text) AND ((NOT (data ? 'tags'::text)) OR ((jsonb_typeof((data -> 'tags'::text)) = 'array'::text) AND (jsonb_array_length((data -> 'tags'::text)) <= 5) AND public.que_validate_tags((data -> 'tags'::text)))))) ) WITH (fillfactor='90'); -- -- Name: TABLE que_jobs; Type: COMMENT; Schema: public; Owner: - -- COMMENT ON TABLE public.que_jobs IS '4'; -- -- Name: que_determine_job_state(public.que_jobs); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION public.que_determine_job_state(job public.que_jobs) RETURNS text LANGUAGE sql AS $$ SELECT CASE WHEN job.expired_at IS NOT NULL THEN 'expired' WHEN job.finished_at IS NOT NULL THEN 'finished' WHEN job.error_count > 0 THEN 'errored' WHEN job.run_at > CURRENT_TIMESTAMP THEN 'scheduled' ELSE 'ready' END $$; -- -- Name: que_job_notify(); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION public.que_job_notify() RETURNS trigger LANGUAGE plpgsql AS $$ DECLARE locker_pid integer; sort_key json; BEGIN -- Don't do anything if the job is scheduled for a future time. IF NEW.run_at IS NOT NULL AND NEW.run_at > now() THEN RETURN null; END IF; -- Pick a locker to notify of the job's insertion, weighted by their number -- of workers. Should bounce pseudorandomly between lockers on each -- invocation, hence the md5-ordering, but still touch each one equally, -- hence the modulo using the job_id. SELECT pid INTO locker_pid FROM ( SELECT *, last_value(row_number) OVER () + 1 AS count FROM ( SELECT *, row_number() OVER () - 1 AS row_number FROM ( SELECT * FROM public.que_lockers ql, generate_series(1, ql.worker_count) AS id WHERE listening AND queues @> ARRAY[NEW.queue] ORDER BY md5(pid::text || id::text) ) t1 ) t2 ) t3 WHERE NEW.id % count = row_number; IF locker_pid IS NOT NULL THEN -- There's a size limit to what can be broadcast via LISTEN/NOTIFY, so -- rather than throw errors when someone enqueues a big job, just -- broadcast the most pertinent information, and let the locker query for -- the record after it's taken the lock. The worker will have to hit the -- DB in order to make sure the job is still visible anyway. SELECT row_to_json(t) INTO sort_key FROM ( SELECT 'job_available' AS message_type, NEW.queue AS queue, NEW.priority AS priority, NEW.id AS id, -- Make sure we output timestamps as UTC ISO 8601 to_char(NEW.run_at AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"') AS run_at ) t; PERFORM pg_notify('que_listener_' || locker_pid::text, sort_key::text); END IF; RETURN null; END $$; -- -- Name: que_state_notify(); Type: FUNCTION; Schema: public; Owner: - -- CREATE FUNCTION public.que_state_notify() RETURNS trigger LANGUAGE plpgsql AS $$ DECLARE row record; message json; previous_state text; current_state text; BEGIN IF TG_OP = 'INSERT' THEN previous_state := 'nonexistent'; current_state := public.que_determine_job_state(NEW); row := NEW; ELSIF TG_OP = 'DELETE' THEN previous_state := public.que_determine_job_state(OLD); current_state := 'nonexistent'; row := OLD; ELSIF TG_OP = 'UPDATE' THEN previous_state := public.que_determine_job_state(OLD); current_state := public.que_determine_job_state(NEW); -- If the state didn't change, short-circuit. IF previous_state = current_state THEN RETURN null; END IF; row := NEW; ELSE RAISE EXCEPTION 'Unrecognized TG_OP: %', TG_OP; END IF; SELECT row_to_json(t) INTO message FROM ( SELECT 'job_change' AS message_type, row.id AS id, row.queue AS queue, coalesce(row.data->'tags', '[]'::jsonb) AS tags, to_char(row.run_at AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"') AS run_at, to_char(now() AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"') AS time, CASE row.job_class WHEN 'ActiveJob::QueueAdapters::QueAdapter::JobWrapper' THEN coalesce( row.args->0->>'job_class', 'ActiveJob::QueueAdapters::QueAdapter::JobWrapper' ) ELSE row.job_class END AS job_class, previous_state AS previous_state, current_state AS current_state ) t; PERFORM pg_notify('que_state', message::text); RETURN null; END $$; -- -- Name: ar_internal_metadata; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.ar_internal_metadata ( key character varying NOT NULL, value character varying, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL ); -- -- Name: govuk_guix_data_snapshots; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.govuk_guix_data_snapshots ( id bigint NOT NULL, store_path character varying NOT NULL, archived boolean DEFAULT false NOT NULL, manifest json NOT NULL, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL, govuk_guix_revision_commit_hash character varying NOT NULL, backend_type character varying, backend_id bigint ); -- -- Name: govuk_guix_data_snapshots_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.govuk_guix_data_snapshots_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: govuk_guix_data_snapshots_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.govuk_guix_data_snapshots_id_seq OWNED BY public.govuk_guix_data_snapshots.id; -- -- Name: govuk_guix_revisions; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.govuk_guix_revisions ( commit_hash character varying NOT NULL, store_path character varying, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL, archived boolean DEFAULT false NOT NULL, available_services json ); -- -- Name: mini_environment_services; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.mini_environment_services ( id bigint NOT NULL, name character varying, revision character varying, mini_environment_id bigint, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL ); -- -- Name: mini_environment_services_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.mini_environment_services_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: mini_environment_services_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.mini_environment_services_id_seq OWNED BY public.mini_environment_services.id; -- -- Name: mini_environments; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.mini_environments ( id bigint NOT NULL, name character varying, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL, info jsonb, govuk_guix_revision_id character varying, backend_type character varying, backend_id bigint, backend_data jsonb, signon_users jsonb, data_snapshot_id bigint ); -- -- Name: mini_environments_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.mini_environments_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: mini_environments_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.mini_environments_id_seq OWNED BY public.mini_environments.id; -- -- Name: que_jobs_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.que_jobs_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: que_jobs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.que_jobs_id_seq OWNED BY public.que_jobs.id; -- -- Name: que_lockers; Type: TABLE; Schema: public; Owner: - -- CREATE UNLOGGED TABLE public.que_lockers ( pid integer NOT NULL, worker_count integer NOT NULL, worker_priorities integer[] NOT NULL, ruby_pid integer NOT NULL, ruby_hostname text NOT NULL, queues text[] NOT NULL, listening boolean NOT NULL, CONSTRAINT valid_queues CHECK (((array_ndims(queues) = 1) AND (array_length(queues, 1) IS NOT NULL))), CONSTRAINT valid_worker_priorities CHECK (((array_ndims(worker_priorities) = 1) AND (array_length(worker_priorities, 1) IS NOT NULL))) ); -- -- Name: que_values; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.que_values ( key text NOT NULL, value jsonb DEFAULT '{}'::jsonb NOT NULL, CONSTRAINT valid_value CHECK ((jsonb_typeof(value) = 'object'::text)) ) WITH (fillfactor='90'); -- -- Name: schema_migrations; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.schema_migrations ( version character varying NOT NULL ); -- -- Name: terraform_aws_backends; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.terraform_aws_backends ( id bigint NOT NULL, label character varying, aws_region character varying, aws_access_key_id character varying, aws_secret_access_key character varying, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL, domain character varying, route_53_zone_id character varying NOT NULL, vpc_id character varying NOT NULL ); -- -- Name: terraform_aws_backends_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.terraform_aws_backends_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: terraform_aws_backends_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.terraform_aws_backends_id_seq OWNED BY public.terraform_aws_backends.id; -- -- Name: terraform_libvirt_backends; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.terraform_libvirt_backends ( id bigint NOT NULL, label character varying, uri character varying, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL, domain character varying ); -- -- Name: terraform_libvirt_backends_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.terraform_libvirt_backends_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: terraform_libvirt_backends_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.terraform_libvirt_backends_id_seq OWNED BY public.terraform_libvirt_backends.id; -- -- Name: terraform_states; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.terraform_states ( id bigint NOT NULL, data json, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL, state_id character varying DEFAULT ''::character varying NOT NULL ); -- -- Name: terraform_states_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.terraform_states_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: terraform_states_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.terraform_states_id_seq OWNED BY public.terraform_states.id; -- -- Name: users; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.users ( id bigint NOT NULL, name character varying, email character varying, uid character varying, organisation_slug character varying, organisation_content_id character varying, permissions text, remotely_signed_out boolean DEFAULT false, disabled boolean DEFAULT false ); -- -- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- CREATE SEQUENCE public.users_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; -- -- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - -- ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id; -- -- Name: govuk_guix_data_snapshots id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.govuk_guix_data_snapshots ALTER COLUMN id SET DEFAULT nextval('public.govuk_guix_data_snapshots_id_seq'::regclass); -- -- Name: mini_environment_services id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.mini_environment_services ALTER COLUMN id SET DEFAULT nextval('public.mini_environment_services_id_seq'::regclass); -- -- Name: mini_environments id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.mini_environments ALTER COLUMN id SET DEFAULT nextval('public.mini_environments_id_seq'::regclass); -- -- Name: que_jobs id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.que_jobs ALTER COLUMN id SET DEFAULT nextval('public.que_jobs_id_seq'::regclass); -- -- Name: terraform_aws_backends id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.terraform_aws_backends ALTER COLUMN id SET DEFAULT nextval('public.terraform_aws_backends_id_seq'::regclass); -- -- Name: terraform_libvirt_backends id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.terraform_libvirt_backends ALTER COLUMN id SET DEFAULT nextval('public.terraform_libvirt_backends_id_seq'::regclass); -- -- Name: terraform_states id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.terraform_states ALTER COLUMN id SET DEFAULT nextval('public.terraform_states_id_seq'::regclass); -- -- Name: users id; Type: DEFAULT; Schema: public; Owner: - -- ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass); -- -- Name: ar_internal_metadata ar_internal_metadata_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.ar_internal_metadata ADD CONSTRAINT ar_internal_metadata_pkey PRIMARY KEY (key); -- -- Name: govuk_guix_data_snapshots govuk_guix_data_snapshots_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.govuk_guix_data_snapshots ADD CONSTRAINT govuk_guix_data_snapshots_pkey PRIMARY KEY (id); -- -- Name: govuk_guix_revisions govuk_guix_revisions_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.govuk_guix_revisions ADD CONSTRAINT govuk_guix_revisions_pkey PRIMARY KEY (commit_hash); -- -- Name: mini_environment_services mini_environment_services_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.mini_environment_services ADD CONSTRAINT mini_environment_services_pkey PRIMARY KEY (id); -- -- Name: mini_environments mini_environments_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.mini_environments ADD CONSTRAINT mini_environments_pkey PRIMARY KEY (id); -- -- Name: que_jobs que_jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.que_jobs ADD CONSTRAINT que_jobs_pkey PRIMARY KEY (id); -- -- Name: que_lockers que_lockers_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.que_lockers ADD CONSTRAINT que_lockers_pkey PRIMARY KEY (pid); -- -- Name: que_values que_values_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.que_values ADD CONSTRAINT que_values_pkey PRIMARY KEY (key); -- -- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.schema_migrations ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version); -- -- Name: terraform_aws_backends terraform_aws_backends_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.terraform_aws_backends ADD CONSTRAINT terraform_aws_backends_pkey PRIMARY KEY (id); -- -- Name: terraform_libvirt_backends terraform_libvirt_backends_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.terraform_libvirt_backends ADD CONSTRAINT terraform_libvirt_backends_pkey PRIMARY KEY (id); -- -- Name: terraform_states terraform_states_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.terraform_states ADD CONSTRAINT terraform_states_pkey PRIMARY KEY (id); -- -- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.users ADD CONSTRAINT users_pkey PRIMARY KEY (id); -- -- Name: index_govuk_guix_data_snapshots_on_backend_type_and_backend_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX index_govuk_guix_data_snapshots_on_backend_type_and_backend_id ON public.govuk_guix_data_snapshots USING btree (backend_type, backend_id); -- -- Name: index_govuk_guix_data_snapshots_on_store_path; Type: INDEX; Schema: public; Owner: - -- CREATE UNIQUE INDEX index_govuk_guix_data_snapshots_on_store_path ON public.govuk_guix_data_snapshots USING btree (store_path); -- -- Name: index_govuk_guix_revisions_on_commit_hash; Type: INDEX; Schema: public; Owner: - -- CREATE UNIQUE INDEX index_govuk_guix_revisions_on_commit_hash ON public.govuk_guix_revisions USING btree (commit_hash); -- -- Name: index_mini_environment_services_on_mini_environment_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX index_mini_environment_services_on_mini_environment_id ON public.mini_environment_services USING btree (mini_environment_id); -- -- Name: index_mini_environments_on_backend_type_and_backend_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX index_mini_environments_on_backend_type_and_backend_id ON public.mini_environments USING btree (backend_type, backend_id); -- -- Name: index_mini_environments_on_data_snapshot_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX index_mini_environments_on_data_snapshot_id ON public.mini_environments USING btree (data_snapshot_id); -- -- Name: index_mini_environments_on_govuk_guix_revision_id; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX index_mini_environments_on_govuk_guix_revision_id ON public.mini_environments USING btree (govuk_guix_revision_id); -- -- Name: que_jobs_args_gin_idx; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX que_jobs_args_gin_idx ON public.que_jobs USING gin (args jsonb_path_ops); -- -- Name: que_jobs_data_gin_idx; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX que_jobs_data_gin_idx ON public.que_jobs USING gin (data jsonb_path_ops); -- -- Name: que_poll_idx; Type: INDEX; Schema: public; Owner: - -- CREATE INDEX que_poll_idx ON public.que_jobs USING btree (queue, priority, run_at, id) WHERE ((finished_at IS NULL) AND (expired_at IS NULL)); -- -- Name: que_jobs que_job_notify; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER que_job_notify AFTER INSERT ON public.que_jobs FOR EACH ROW EXECUTE PROCEDURE public.que_job_notify(); -- -- Name: que_jobs que_state_notify; Type: TRIGGER; Schema: public; Owner: - -- CREATE TRIGGER que_state_notify AFTER INSERT OR DELETE OR UPDATE ON public.que_jobs FOR EACH ROW EXECUTE PROCEDURE public.que_state_notify(); -- -- Name: mini_environments fk_rails_12ab275069; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.mini_environments ADD CONSTRAINT fk_rails_12ab275069 FOREIGN KEY (govuk_guix_revision_id) REFERENCES public.govuk_guix_revisions(commit_hash); -- -- Name: mini_environment_services fk_rails_36052da616; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.mini_environment_services ADD CONSTRAINT fk_rails_36052da616 FOREIGN KEY (mini_environment_id) REFERENCES public.mini_environments(id); -- -- Name: govuk_guix_data_snapshots fk_rails_59b1facc61; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.govuk_guix_data_snapshots ADD CONSTRAINT fk_rails_59b1facc61 FOREIGN KEY (govuk_guix_revision_commit_hash) REFERENCES public.govuk_guix_revisions(commit_hash); -- -- Name: mini_environments fk_rails_eba071cb24; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY public.mini_environments ADD CONSTRAINT fk_rails_eba071cb24 FOREIGN KEY (data_snapshot_id) REFERENCES public.govuk_guix_data_snapshots(id); -- -- PostgreSQL database dump complete -- SET search_path TO "$user", public; INSERT INTO "schema_migrations" (version) VALUES ('20180127201423'), ('20180127201504'), ('20180127220312'), ('20180127222948'), ('20180128125638'), ('20180206203924'), ('20180216231420'), ('20180217104954'), ('20180217105604'), ('20180217110041'), ('20180217131053'), ('20180227075519'), ('20180305202300'), ('20180305202557'), ('20180305222157'), ('20180311125442'), ('20180311125615'), ('20180326201857'), ('20180327204244'), ('20180327204322'), ('20180329035512'), ('20180406082851'), ('20180406123612'), ('20180406124443'), ('20180410192329'), ('20180410192412'), ('20180417195307'), ('20180523062426'), ('20180527183740'), ('20180530191341'), ('20180530192706'), ('20180601153537'), ('20180601182655'), ('20180603120426'), ('20180621065525'), ('20180621220505');