X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7db74f672f64b3e647a98c1d8e5978b50d79538d..HEAD:/services/api/db/structure.sql diff --git a/services/api/db/structure.sql b/services/api/db/structure.sql index 6e8b128c9e..0abf9e04b5 100644 --- a/services/api/db/structure.sql +++ b/services/api/db/structure.sql @@ -62,10 +62,10 @@ with permission (permission origin is self). */ perm_from_start(perm_origin_uuid, target_uuid, val, traverse_owned) as ( - + WITH RECURSIVE traverse_graph(origin_uuid, target_uuid, val, traverse_owned, starting_set) as ( - + values (perm_origin_uuid, starting_uuid, starting_perm, should_traverse_owned(starting_uuid, starting_perm), (perm_origin_uuid = starting_uuid or starting_uuid not like '_____-tpzed-_______________')) @@ -107,10 +107,10 @@ case (edges.edge_id = perm_edge_id) can_manage permission granted by ownership. */ additional_perms(perm_origin_uuid, target_uuid, val, traverse_owned) as ( - + WITH RECURSIVE traverse_graph(origin_uuid, target_uuid, val, traverse_owned, starting_set) as ( - + select edges.tail_uuid as origin_uuid, edges.head_uuid as target_uuid, edges.val, should_traverse_owned(edges.head_uuid, edges.val), edges.head_uuid like '_____-j7d0g-_______________' @@ -342,30 +342,6 @@ SET default_tablespace = ''; SET default_with_oids = false; --- --- Name: groups; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.groups ( - id bigint NOT NULL, - uuid character varying(255), - owner_uuid character varying(255), - created_at timestamp without time zone NOT NULL, - modified_by_client_uuid character varying(255), - modified_by_user_uuid character varying(255), - modified_at timestamp without time zone, - name character varying(255) NOT NULL, - description character varying(524288), - updated_at timestamp without time zone NOT NULL, - group_class character varying(255), - trash_at timestamp without time zone, - is_trashed boolean DEFAULT false NOT NULL, - delete_at timestamp without time zone, - properties jsonb DEFAULT '{}'::jsonb, - frozen_by_uuid character varying -); - - -- -- Name: api_client_authorizations; Type: TABLE; Schema: public; Owner: - -- @@ -592,7 +568,8 @@ CREATE TABLE public.container_requests ( runtime_token text, output_storage_classes jsonb DEFAULT '["default"]'::jsonb, output_properties jsonb DEFAULT '{}'::jsonb, - cumulative_cost double precision DEFAULT 0.0 NOT NULL + cumulative_cost double precision DEFAULT 0.0 NOT NULL, + output_glob text DEFAULT '[]'::text ); @@ -658,7 +635,8 @@ CREATE TABLE public.containers ( output_storage_classes jsonb DEFAULT '["default"]'::jsonb, output_properties jsonb DEFAULT '{}'::jsonb, cost double precision DEFAULT 0.0 NOT NULL, - subrequests_cost double precision DEFAULT 0.0 NOT NULL + subrequests_cost double precision DEFAULT 0.0 NOT NULL, + output_glob text DEFAULT '[]'::text ); @@ -690,6 +668,30 @@ CREATE TABLE public.frozen_groups ( ); +-- +-- Name: groups; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.groups ( + id bigint NOT NULL, + uuid character varying(255), + owner_uuid character varying(255), + created_at timestamp without time zone NOT NULL, + modified_by_client_uuid character varying(255), + modified_by_user_uuid character varying(255), + modified_at timestamp without time zone, + name character varying(255) NOT NULL, + description character varying(524288), + updated_at timestamp without time zone NOT NULL, + group_class character varying(255), + trash_at timestamp without time zone, + is_trashed boolean DEFAULT false NOT NULL, + delete_at timestamp without time zone, + properties jsonb DEFAULT '{}'::jsonb, + frozen_by_uuid character varying +); + + -- -- Name: groups_id_seq; Type: SEQUENCE; Schema: public; Owner: - -- @@ -1852,7 +1854,14 @@ CREATE INDEX collections_search_index ON public.collections USING btree (owner_u -- Name: collections_trgm_text_search_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX collections_trgm_text_search_idx ON public.collections USING gin (((((((((((((((((((COALESCE(owner_uuid, ''::character varying))::text || ' '::text) || (COALESCE(modified_by_client_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_user_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(portable_data_hash, ''::character varying))::text) || ' '::text) || (COALESCE(uuid, ''::character varying))::text) || ' '::text) || (COALESCE(name, ''::character varying))::text) || ' '::text) || (COALESCE(description, ''::character varying))::text) || ' '::text) || COALESCE((properties)::text, ''::text)) || ' '::text) || COALESCE(file_names, ''::text))) public.gin_trgm_ops); +CREATE INDEX collections_trgm_text_search_idx ON public.collections USING gin (((((((((COALESCE(name, ''::character varying))::text || ' '::text) || (COALESCE(description, ''::character varying))::text) || ' '::text) || COALESCE((properties)::text, ''::text)) || ' '::text) || COALESCE(file_names, ''::text))) public.gin_trgm_ops); + + +-- +-- Name: container_requests_full_text_search_idx; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX container_requests_full_text_search_idx ON public.container_requests USING gin (to_tsvector('english'::regconfig, substr((((((((((((((((((((((((((((((((((((((((((((((COALESCE(uuid, ''::character varying))::text || ' '::text) || (COALESCE(owner_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_client_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_user_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(name, ''::character varying))::text) || ' '::text) || COALESCE(description, ''::text)) || ' '::text) || COALESCE((properties)::text, ''::text)) || ' '::text) || (COALESCE(state, ''::character varying))::text) || ' '::text) || (COALESCE(requesting_container_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(container_uuid, ''::character varying))::text) || ' '::text) || COALESCE(runtime_constraints, ''::text)) || ' '::text) || (COALESCE(container_image, ''::character varying))::text) || ' '::text) || COALESCE(environment, ''::text)) || ' '::text) || (COALESCE(cwd, ''::character varying))::text) || ' '::text) || COALESCE(command, ''::text)) || ' '::text) || (COALESCE(output_path, ''::character varying))::text) || ' '::text) || COALESCE(filters, ''::text)) || ' '::text) || COALESCE(scheduling_parameters, ''::text)) || ' '::text) || (COALESCE(output_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(log_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(output_name, ''::character varying))::text) || ' '::text) || COALESCE((output_properties)::text, ''::text)) || ' '::text) || COALESCE(output_glob, ''::text)), 0, 8000))); -- @@ -1873,7 +1882,7 @@ CREATE INDEX container_requests_search_index ON public.container_requests USING -- Name: container_requests_trgm_text_search_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX container_requests_trgm_text_search_idx ON public.container_requests USING gin (((((((((((((((((((((((((((((((((((((((((((((COALESCE(uuid, ''::character varying))::text || ' '::text) || (COALESCE(owner_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_client_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_user_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(name, ''::character varying))::text) || ' '::text) || COALESCE(description, ''::text)) || ' '::text) || COALESCE((properties)::text, ''::text)) || ' '::text) || (COALESCE(state, ''::character varying))::text) || ' '::text) || (COALESCE(requesting_container_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(container_uuid, ''::character varying))::text) || ' '::text) || COALESCE(runtime_constraints, ''::text)) || ' '::text) || (COALESCE(container_image, ''::character varying))::text) || ' '::text) || COALESCE(environment, ''::text)) || ' '::text) || (COALESCE(cwd, ''::character varying))::text) || ' '::text) || COALESCE(command, ''::text)) || ' '::text) || (COALESCE(output_path, ''::character varying))::text) || ' '::text) || COALESCE(filters, ''::text)) || ' '::text) || COALESCE(scheduling_parameters, ''::text)) || ' '::text) || (COALESCE(output_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(log_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(output_name, ''::character varying))::text) || ' '::text) || COALESCE((output_properties)::text, ''::text))) public.gin_trgm_ops); +CREATE INDEX container_requests_trgm_text_search_idx ON public.container_requests USING gin (((((((((((((((((((((((((((((COALESCE(name, ''::character varying))::text || ' '::text) || COALESCE(description, ''::text)) || ' '::text) || COALESCE((properties)::text, ''::text)) || ' '::text) || (COALESCE(state, ''::character varying))::text) || ' '::text) || COALESCE(runtime_constraints, ''::text)) || ' '::text) || (COALESCE(container_image, ''::character varying))::text) || ' '::text) || COALESCE(environment, ''::text)) || ' '::text) || (COALESCE(cwd, ''::character varying))::text) || ' '::text) || COALESCE(command, ''::text)) || ' '::text) || (COALESCE(output_path, ''::character varying))::text) || ' '::text) || COALESCE(filters, ''::text)) || ' '::text) || COALESCE(scheduling_parameters, ''::text)) || ' '::text) || (COALESCE(output_name, ''::character varying))::text) || ' '::text) || COALESCE((output_properties)::text, ''::text))) public.gin_trgm_ops); -- @@ -1901,7 +1910,7 @@ CREATE INDEX groups_search_index ON public.groups USING btree (uuid, owner_uuid, -- Name: groups_trgm_text_search_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX groups_trgm_text_search_idx ON public.groups USING gin (((((((((((((((((COALESCE(uuid, ''::character varying))::text || ' '::text) || (COALESCE(owner_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_client_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_user_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(name, ''::character varying))::text) || ' '::text) || (COALESCE(description, ''::character varying))::text) || ' '::text) || (COALESCE(group_class, ''::character varying))::text) || ' '::text) || COALESCE((properties)::text, ''::text))) public.gin_trgm_ops); +CREATE INDEX groups_trgm_text_search_idx ON public.groups USING gin (((((((((COALESCE(name, ''::character varying))::text || ' '::text) || (COALESCE(description, ''::character varying))::text) || ' '::text) || (COALESCE(group_class, ''::character varying))::text) || ' '::text) || COALESCE((properties)::text, ''::text))) public.gin_trgm_ops); -- @@ -2037,6 +2046,13 @@ CREATE INDEX index_collections_on_modified_at_and_uuid ON public.collections USI CREATE INDEX index_collections_on_name ON public.collections USING gin (name public.gin_trgm_ops); +-- +-- Name: index_collections_on_name_btree; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_collections_on_name_btree ON public.collections USING btree (name); + + -- -- Name: index_collections_on_owner_uuid; Type: INDEX; Schema: public; Owner: - -- @@ -2160,7 +2176,7 @@ CREATE INDEX index_containers_on_queued_state ON public.containers USING btree ( -- Name: index_containers_on_reuse_columns; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX index_containers_on_reuse_columns ON public.containers USING btree (md5(command), cwd, md5(environment), output_path, container_image, md5(mounts), secret_mounts_md5, md5(runtime_constraints)); +CREATE INDEX index_containers_on_reuse_columns ON public.containers USING btree (md5(command), cwd, md5(environment), output_path, md5(output_glob), container_image, md5(mounts), secret_mounts_md5, md5(runtime_constraints)); -- @@ -2233,6 +2249,13 @@ CREATE INDEX index_groups_on_modified_at_and_uuid ON public.groups USING btree ( CREATE INDEX index_groups_on_name ON public.groups USING gin (name public.gin_trgm_ops); +-- +-- Name: index_groups_on_name_btree; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_groups_on_name_btree ON public.groups USING btree (name); + + -- -- Name: index_groups_on_owner_uuid; Type: INDEX; Schema: public; Owner: - -- @@ -2576,6 +2599,13 @@ CREATE INDEX index_logs_on_summary ON public.logs USING btree (summary); CREATE UNIQUE INDEX index_logs_on_uuid ON public.logs USING btree (uuid); +-- +-- Name: index_materialized_permissions_target_is_not_user; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_materialized_permissions_target_is_not_user ON public.materialized_permissions USING btree (target_uuid, traverse_owned, ((((user_uuid)::text = (target_uuid)::text) OR ((target_uuid)::text !~~ '_____-tpzed-_______________'::text)))); + + -- -- Name: index_nodes_on_created_at; Type: INDEX; Schema: public; Owner: - -- @@ -3070,7 +3100,7 @@ CREATE INDEX workflows_search_idx ON public.workflows USING btree (uuid, owner_u -- Name: workflows_trgm_text_search_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX workflows_trgm_text_search_idx ON public.workflows USING gin (((((((((((((COALESCE(uuid, ''::character varying))::text || ' '::text) || (COALESCE(owner_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_client_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(modified_by_user_uuid, ''::character varying))::text) || ' '::text) || (COALESCE(name, ''::character varying))::text) || ' '::text) || COALESCE(description, ''::text))) public.gin_trgm_ops); +CREATE INDEX workflows_trgm_text_search_idx ON public.workflows USING gin (((((COALESCE(name, ''::character varying))::text || ' '::text) || COALESCE(description, ''::text))) public.gin_trgm_ops); -- @@ -3293,6 +3323,9 @@ INSERT INTO "schema_migrations" (version) VALUES ('20230421142716'), ('20230503224107'), ('20230815160000'), -('20230821000000'); - - +('20230821000000'), +('20230922000000'), +('20231013000000'), +('20240329173437'), +('20240402162733'), +('20240604183200');