Output format is unaligned. Field separator is "|". ### ROLES erun_operations|f erun_tenant|f ### SCHEMA USAGE erun_operations|t erun_tenant|t ### COLUMNS ai_sessions|created_at|timestamp with time zone|YES||NO| ai_sessions|environment_id|uuid|NO||NO| ai_sessions|event|text|NO||NO| ai_sessions|exit_code|integer|YES||NO| ai_sessions|exit_reason|text|YES||NO| ai_sessions|occurred_at|timestamp with time zone|NO||NO| ai_sessions|session_id|text|NO||NO| ai_sessions|tenant_id|uuid|NO|erun_current_tenant_id()|NO| ai_sessions|tool|text|YES||NO| ai_sessions|updated_at|timestamp with time zone|YES||NO| audit_events|api_method|text|YES||NO| audit_events|api_parameters|text|YES||NO| audit_events|api_path|text|YES||NO| audit_events|audit_event_id|uuid|NO|uuidv7()|NO| audit_events|cli_command|text|YES||NO| audit_events|cli_parameters|text|YES||NO| audit_events|created_at|timestamp with time zone|NO|now()|NO| audit_events|erun_user_id|uuid|NO||NO| audit_events|external_issuer_id|text|NO||NO| audit_events|external_org_id|text|YES||NO| audit_events|external_user_id|text|NO||NO| audit_events|mcp_tool|text|YES||NO| audit_events|mcp_tool_parameters|text|YES||NO| audit_events|tenant_id|uuid|NO|erun_current_tenant_id()|NO| audit_events|type|text|NO||NO| builds|build_id|uuid|NO|uuidv7()|NO| builds|commit_id|text|NO||NO| builds|created_at|timestamp with time zone|YES||NO| builds|environment_id|uuid|YES||NO| builds|failure_detail|text|YES||NO| builds|kind|text|NO|'RECORDED'::text|NO| builds|profile|jsonb|YES||NO| builds|review_id|uuid|YES||NO| builds|successful|boolean|NO||NO| builds|tenant_id|uuid|NO|erun_current_tenant_id()|NO| builds|updated_at|timestamp with time zone|YES||NO| builds|version|text|YES||NO| cloud_provider_aliases|alias|text|NO||NO| cloud_provider_aliases|cloud_provider_alias_id|uuid|NO|uuidv7()|NO| cloud_provider_aliases|created_at|timestamp with time zone|YES||NO| cloud_provider_aliases|credentials_encrypted|bytea|NO||NO| cloud_provider_aliases|provider|text|NO||NO| cloud_provider_aliases|tenant_id|uuid|NO|erun_current_tenant_id()|NO| cloud_provider_aliases|updated_at|timestamp with time zone|YES||NO| comments|body|text|NO||NO| comments|comment_id|uuid|NO|uuidv7()|NO| comments|commit_id|text|NO||NO| comments|created_at|timestamp with time zone|YES||NO| comments|creator_user_id|uuid|NO||NO| comments|file_path|text|NO||NO| comments|line|integer|NO||NO| comments|parent_comment_id|uuid|YES||NO| comments|review_id|uuid|NO||NO| comments|status|text|NO||NO| comments|tenant_id|uuid|NO|erun_current_tenant_id()|NO| comments|updated_at|timestamp with time zone|YES||NO| context_credentials|context_credential_id|uuid|NO|uuidv7()|NO| context_credentials|context_id|uuid|NO||NO| context_credentials|created_at|timestamp with time zone|YES||NO| context_credentials|k3s_admin_token_encrypted|bytea|NO||NO| context_credentials|tenant_id|uuid|NO|erun_current_tenant_id()|NO| context_credentials|updated_at|timestamp with time zone|YES||NO| contexts|cloud_provider_alias|text|YES||NO| contexts|context_id|uuid|NO|uuidv7()|NO| contexts|created_at|timestamp with time zone|YES||NO| contexts|disk_size_gb|integer|YES||NO| contexts|disk_type|text|YES||NO| contexts|instance_id|text|YES||NO| contexts|instance_type|text|YES||NO| contexts|kubernetes_context|text|YES||NO| contexts|max_environments|integer|NO|20|NO| contexts|name|text|NO||NO| contexts|provider|text|NO||NO| contexts|provision_error|text|YES||NO| contexts|public_ip|text|YES||NO| contexts|region|text|YES||NO| contexts|status|text|NO|'provisioning'::text|NO| contexts|tenant_id|uuid|NO|erun_current_tenant_id()|NO| contexts|updated_at|timestamp with time zone|YES||NO| environment_definitions|created_at|timestamp with time zone|YES||NO| environment_definitions|definition|jsonb|NO||NO| environment_definitions|environment_id|uuid|NO||NO| environment_definitions|revision|integer|NO|1|NO| environment_definitions|tenant_id|uuid|NO|erun_current_tenant_id()|NO| environment_definitions|updated_at|timestamp with time zone|YES||NO| environment_definitions|written_by_user_id|uuid|NO|erun_current_user_id()|NO| environment_events|created_at|timestamp with time zone|YES||NO| environment_events|detail|text|YES||NO| environment_events|environment_event_id|uuid|NO|uuidv7()|NO| environment_events|environment_event_seq|bigint|NO||YES|BY DEFAULT environment_events|environment_id|uuid|NO||NO| environment_events|kind|text|NO||NO| environment_events|occurred_at|timestamp with time zone|NO|now()|NO| environment_events|tenant_id|uuid|NO|erun_current_tenant_id()|NO| environment_events|updated_at|timestamp with time zone|YES||NO| environments|context_id|uuid|YES||NO| environments|created_at|timestamp with time zone|YES||NO| environments|delete_attempts|integer|NO|0|NO| environments|delete_error|text|YES||NO| environments|deployed_version|text|YES||NO| environments|environment_id|uuid|NO|uuidv7()|NO| environments|expose_error|text|YES||NO| environments|exposed_hostname|text|YES||NO| environments|kubernetes_context|text|YES||NO| environments|name|text|NO||NO| environments|provision_error|text|YES||NO| environments|runtime_version|text|YES||NO| environments|status|text|NO|'registered'::text|NO| environments|tenant_id|uuid|NO|erun_current_tenant_id()|NO| environments|type|text|NO||NO| environments|updated_at|timestamp with time zone|YES||NO| gate_runs|created_at|timestamp with time zone|YES||NO| gate_runs|failing_step|text|YES||NO| gate_runs|gate_run_id|uuid|NO|uuidv7()|NO| gate_runs|log_ref|text|YES||NO| gate_runs|merge_commit|text|YES||NO| gate_runs|review_id|uuid|YES||NO| gate_runs|source_branch|text|NO||NO| gate_runs|source_commit|text|NO||NO| gate_runs|status|text|NO|'RUNNING'::text|NO| gate_runs|target_branch|text|NO||NO| gate_runs|tenant_id|uuid|NO|erun_current_tenant_id()|NO| gate_runs|updated_at|timestamp with time zone|YES||NO| invite_requests|created_at|timestamp with time zone|YES||NO| invite_requests|decided_by_user_id|uuid|YES||NO| invite_requests|decline_reason|text|YES||NO| invite_requests|display_name|text|YES||NO| invite_requests|email|text|YES||NO| invite_requests|environment_name|text|YES||NO| invite_requests|invite_request_id|uuid|NO|uuidv7()|NO| invite_requests|issuer|text|NO||NO| invite_requests|kind|text|NO||NO| invite_requests|minted_invite_id|uuid|YES||NO| invite_requests|note|text|YES||NO| invite_requests|status|text|NO|'PENDING'::text|NO| invite_requests|subject|text|NO||NO| invite_requests|tenant_name|text|NO||NO| invite_requests|updated_at|timestamp with time zone|YES||NO| invites|consumed_at|timestamp with time zone|YES||NO| invites|created_at|timestamp with time zone|YES||NO| invites|created_by_user_id|uuid|NO|erun_current_user_id()|NO| invites|email|text|YES||NO| invites|expires_at|timestamp with time zone|NO||NO| invites|invite_id|uuid|NO|uuidv7()|NO| invites|issuer|text|NO||NO| invites|tenant_id|uuid|NO|erun_current_tenant_id()|NO| invites|token|text|NO||NO| invites|updated_at|timestamp with time zone|YES||NO| issuers|created_at|timestamp with time zone|YES||NO| issuers|issuer|text|NO||NO| issuers|org_field_key|text|YES||NO| issuers|updated_at|timestamp with time zone|YES||NO| jobs|actor_id|text|NO||NO| jobs|actor_kind|text|NO||NO| jobs|created_at|timestamp with time zone|YES||NO| jobs|ended_at|timestamp with time zone|YES||NO| jobs|environment_id|uuid|YES||NO| jobs|issue_ref|text|YES||NO| jobs|job_id|uuid|NO|uuidv7()|NO| jobs|job_type|text|NO||NO| jobs|local_job_id|text|YES||NO| jobs|scope|text|YES||NO| jobs|started_at|timestamp with time zone|NO|now()|NO| jobs|status|text|NO|'RUNNING'::text|NO| jobs|summary|text|NO||NO| jobs|tenant_id|uuid|NO|erun_current_tenant_id()|NO| jobs|updated_at|timestamp with time zone|YES||NO| platform_rate_limits|created_at|timestamp with time zone|YES||NO| platform_rate_limits|invite_request_window_seconds|integer|NO|60|NO| platform_rate_limits|singleton|boolean|NO|true|NO| platform_rate_limits|updated_at|timestamp with time zone|YES||NO| releases|attempt|integer|NO|1|NO| releases|build_id|uuid|YES||NO| releases|commit_id|text|NO||NO| releases|created_at|timestamp with time zone|YES||NO| releases|failure_reason|text|YES||NO| releases|release_id|uuid|NO|uuidv7()|NO| releases|review_id|uuid|YES||NO| releases|status|text|NO|'queued'::text|NO| releases|target_branch|text|NO||NO| releases|tenant_id|uuid|NO|erun_current_tenant_id()|NO| releases|updated_at|timestamp with time zone|YES||NO| releases|version|text|YES||NO| retention_runs|created_at|timestamp with time zone|NO|now()|NO| retention_runs|deleted_count|bigint|NO||NO| retention_runs|dry_run|boolean|NO||NO| retention_runs|eligible_count|bigint|NO||NO| retention_runs|policy_name|text|NO||NO| retention_runs|retention_run_id|uuid|NO|uuidv7()|NO| retention_runs|table_name|text|NO||NO| review_merge_queue|created_at|timestamp with time zone|YES||NO| review_merge_queue|review_id|uuid|NO||NO| review_merge_queue|review_merge_queue_id|integer|NO||YES|BY DEFAULT review_merge_queue|target_branch|text|NO||NO| review_merge_queue|tenant_id|uuid|NO|erun_current_tenant_id()|NO| review_merge_queue|updated_at|timestamp with time zone|YES||NO| review_reviewers|created_at|timestamp with time zone|YES||NO| review_reviewers|review_id|uuid|NO||NO| review_reviewers|tenant_id|uuid|NO|erun_current_tenant_id()|NO| review_reviewers|updated_at|timestamp with time zone|YES||NO| review_reviewers|user_id|uuid|NO||NO| reviews|author_user_id|uuid|NO|erun_current_user_id()|NO| reviews|created_at|timestamp with time zone|YES||NO| reviews|issue_ref|text|YES||NO| reviews|last_failed_build_id|uuid|YES||NO| reviews|last_merged_build_id|uuid|YES||NO| reviews|last_ready_build_id|uuid|YES||NO| reviews|name|text|NO||NO| reviews|repository|text|YES||NO| reviews|review_id|uuid|NO|uuidv7()|NO| reviews|source_branch|text|NO||NO| reviews|status|text|NO||NO| reviews|target_branch|text|NO||NO| reviews|tenant_id|uuid|NO|erun_current_tenant_id()|NO| reviews|updated_at|timestamp with time zone|YES||NO| role_permissions|api_method|text|YES||NO| role_permissions|api_method_pattern|text|YES||NO| role_permissions|api_path|text|YES||NO| role_permissions|api_path_pattern|text|YES||NO| role_permissions|created_at|timestamp with time zone|YES||NO| role_permissions|role_id|uuid|NO||NO| role_permissions|role_permission_id|uuid|NO|uuidv7()|NO| role_permissions|tenant_id|uuid|NO|erun_current_tenant_id()|NO| role_permissions|updated_at|timestamp with time zone|YES||NO| roles|created_at|timestamp with time zone|YES||NO| roles|name|text|NO||NO| roles|role_id|uuid|NO|uuidv7()|NO| roles|tenant_id|uuid|NO|erun_current_tenant_id()|NO| roles|updated_at|timestamp with time zone|YES||NO| tenant_issuers|created_at|timestamp with time zone|YES||NO| tenant_issuers|issuer|text|NO||NO| tenant_issuers|name|text|NO||NO| tenant_issuers|org_field_value|text|YES||NO| tenant_issuers|tenant_id|uuid|NO|erun_current_tenant_id()|NO| tenant_issuers|updated_at|timestamp with time zone|YES||NO| tenant_quotas|created_at|timestamp with time zone|YES||NO| tenant_quotas|max_cpu_millicores|integer|NO|8000|NO| tenant_quotas|max_environments|integer|NO||NO| tenant_quotas|max_memory_mb|integer|NO|17832|NO| tenant_quotas|max_storage_gb|integer|NO|72|NO| tenant_quotas|max_total_cpu_millicores|integer|NO|80000|NO| tenant_quotas|max_total_memory_mb|integer|NO|178320|NO| tenant_quotas|max_total_storage_gb|integer|NO|720|NO| tenant_quotas|tenant_id|uuid|NO|erun_current_tenant_id()|NO| tenant_quotas|updated_at|timestamp with time zone|YES||NO| tenants|created_at|timestamp with time zone|YES||NO| tenants|name|text|NO||NO| tenants|tenant_id|uuid|NO|uuidv7()|NO| tenants|type|text|NO|'COMPANY'::text|NO| tenants|updated_at|timestamp with time zone|YES||NO| usage_events|cpu_millicores|integer|YES||NO| usage_events|created_at|timestamp with time zone|NO|now()|NO| usage_events|environment_id|uuid|YES||NO| usage_events|event_type|text|NO||NO| usage_events|memory_mb|integer|YES||NO| usage_events|storage_gb|integer|YES||NO| usage_events|tenant_id|uuid|NO|erun_current_tenant_id()|NO| usage_events|usage_event_id|uuid|NO|uuidv7()|NO| user_external_ids|created_at|timestamp with time zone|YES||NO| user_external_ids|external_id|text|NO||NO| user_external_ids|issuer|text|NO||NO| user_external_ids|tenant_id|uuid|NO|erun_current_tenant_id()|NO| user_external_ids|updated_at|timestamp with time zone|YES||NO| user_external_ids|user_id|uuid|NO||NO| user_roles|created_at|timestamp with time zone|YES||NO| user_roles|role_id|uuid|NO||NO| user_roles|tenant_id|uuid|NO|erun_current_tenant_id()|NO| user_roles|updated_at|timestamp with time zone|YES||NO| user_roles|user_id|uuid|NO||NO| users|created_at|timestamp with time zone|YES||NO| users|tenant_id|uuid|NO|erun_current_tenant_id()|NO| users|updated_at|timestamp with time zone|YES||NO| users|user_id|uuid|NO|uuidv7()|NO| users|username|text|NO||NO| ### CONSTRAINTS ai_sessions|ai_sessions_environment_id_not_null|NOT NULL environment_id ai_sessions|ai_sessions_event_check|CHECK ((event = ANY (ARRAY['turn-start'::text, 'tool-use'::text, 'turn-end'::text, 'notify'::text, 'exit'::text]))) ai_sessions|ai_sessions_event_not_null|NOT NULL event ai_sessions|ai_sessions_occurred_at_not_null|NOT NULL occurred_at ai_sessions|ai_sessions_pkey|PRIMARY KEY (tenant_id, environment_id, session_id) ai_sessions|ai_sessions_session_id_check|CHECK ((length(TRIM(BOTH FROM session_id)) > 0)) ai_sessions|ai_sessions_session_id_not_null|NOT NULL session_id ai_sessions|ai_sessions_tenant_environment_fkey|FOREIGN KEY (tenant_id, environment_id) REFERENCES environments(tenant_id, environment_id) ON DELETE CASCADE ai_sessions|ai_sessions_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) ai_sessions|ai_sessions_tenant_id_not_null|NOT NULL tenant_id audit_events|audit_events_api_fields_check|CHECK (((type <> 'API'::text) OR ((api_method IS NOT NULL) AND (api_path IS NOT NULL)))) audit_events|audit_events_api_method_check|CHECK (((api_method IS NULL) OR (api_method = ANY (ARRAY['GET'::text, 'POST'::text, 'PUT'::text, 'PATCH'::text, 'DELETE'::text, 'OPTIONS'::text, 'HEAD'::text])))) audit_events|audit_events_audit_event_id_not_null|NOT NULL audit_event_id audit_events|audit_events_cli_fields_check|CHECK (((type <> 'CLI'::text) OR (cli_command IS NOT NULL))) audit_events|audit_events_created_at_not_null|NOT NULL created_at audit_events|audit_events_erun_user_id_not_null|NOT NULL erun_user_id audit_events|audit_events_external_issuer_id_not_null|NOT NULL external_issuer_id audit_events|audit_events_external_user_id_not_null|NOT NULL external_user_id audit_events|audit_events_mcp_fields_check|CHECK (((type <> 'MCP'::text) OR (mcp_tool IS NOT NULL))) audit_events|audit_events_pkey|PRIMARY KEY (audit_event_id) audit_events|audit_events_tenant_event_key|UNIQUE (tenant_id, audit_event_id) audit_events|audit_events_tenant_id_erun_user_id_fkey|FOREIGN KEY (tenant_id, erun_user_id) REFERENCES users(tenant_id, user_id) audit_events|audit_events_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) audit_events|audit_events_tenant_id_not_null|NOT NULL tenant_id audit_events|audit_events_type_check|CHECK ((type = ANY (ARRAY['API'::text, 'MCP'::text, 'CLI'::text]))) audit_events|audit_events_type_not_null|NOT NULL type builds|builds_build_id_not_null|NOT NULL build_id builds|builds_commit_id_check|CHECK ((length(TRIM(BOTH FROM commit_id)) > 0)) builds|builds_commit_id_not_null|NOT NULL commit_id builds|builds_failure_detail_check|CHECK ((successful OR (kind <> 'GATE'::text) OR ((failure_detail IS NOT NULL) AND (length(TRIM(BOTH FROM failure_detail)) > 0)))) builds|builds_gate_requires_review_check|CHECK (((kind <> 'GATE'::text) OR (review_id IS NOT NULL))) builds|builds_kind_check|CHECK ((kind = ANY (ARRAY['RECORDED'::text, 'GATE'::text]))) builds|builds_kind_not_null|NOT NULL kind builds|builds_pkey|PRIMARY KEY (build_id) builds|builds_successful_not_null|NOT NULL successful builds|builds_tenant_build_key|UNIQUE (tenant_id, build_id) builds|builds_tenant_environment_fkey|FOREIGN KEY (tenant_id, environment_id) REFERENCES environments(tenant_id, environment_id) ON DELETE SET NULL (environment_id) builds|builds_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) builds|builds_tenant_id_not_null|NOT NULL tenant_id builds|builds_tenant_id_review_id_fkey|FOREIGN KEY (tenant_id, review_id) REFERENCES reviews(tenant_id, review_id) builds|builds_tenant_review_build_key|UNIQUE (tenant_id, review_id, build_id) builds|builds_version_check|CHECK ((((kind = 'RECORDED'::text) AND (version IS NOT NULL) AND (length(TRIM(BOTH FROM version)) > 0)) OR ((kind = 'GATE'::text) AND (version IS NULL)))) cloud_provider_aliases|cloud_provider_aliases_alias_not_null|NOT NULL alias cloud_provider_aliases|cloud_provider_aliases_cloud_provider_alias_id_not_null|NOT NULL cloud_provider_alias_id cloud_provider_aliases|cloud_provider_aliases_credentials_encrypted_not_null|NOT NULL credentials_encrypted cloud_provider_aliases|cloud_provider_aliases_pkey|PRIMARY KEY (cloud_provider_alias_id) cloud_provider_aliases|cloud_provider_aliases_provider_check|CHECK ((provider = 'aws'::text)) cloud_provider_aliases|cloud_provider_aliases_provider_not_null|NOT NULL provider cloud_provider_aliases|cloud_provider_aliases_tenant_alias_key|UNIQUE (tenant_id, alias) cloud_provider_aliases|cloud_provider_aliases_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) cloud_provider_aliases|cloud_provider_aliases_tenant_id_not_null|NOT NULL tenant_id comments|comments_body_check|CHECK (((btrim(body) <> ''::text) AND (octet_length(body) <= 8192))) comments|comments_body_not_null|NOT NULL body comments|comments_comment_id_not_null|NOT NULL comment_id comments|comments_commit_id_not_null|NOT NULL commit_id comments|comments_creator_user_id_not_null|NOT NULL creator_user_id comments|comments_file_path_check|CHECK ((file_path <> ''::text)) comments|comments_file_path_not_null|NOT NULL file_path comments|comments_line_check|CHECK ((line > 0)) comments|comments_line_not_null|NOT NULL line comments|comments_no_self_parent_check|CHECK (((parent_comment_id IS NULL) OR (parent_comment_id <> comment_id))) comments|comments_pkey|PRIMARY KEY (comment_id) comments|comments_review_id_not_null|NOT NULL review_id comments|comments_status_check|CHECK ((status = ANY (ARRAY['OPEN'::text, 'CLOSED'::text]))) comments|comments_status_not_null|NOT NULL status comments|comments_tenant_comment_key|UNIQUE (tenant_id, comment_id) comments|comments_tenant_id_creator_user_id_fkey|FOREIGN KEY (tenant_id, creator_user_id) REFERENCES users(tenant_id, user_id) comments|comments_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) comments|comments_tenant_id_not_null|NOT NULL tenant_id comments|comments_tenant_id_parent_comment_id_fkey|FOREIGN KEY (tenant_id, parent_comment_id) REFERENCES comments(tenant_id, comment_id) comments|comments_tenant_id_review_id_fkey|FOREIGN KEY (tenant_id, review_id) REFERENCES reviews(tenant_id, review_id) comments|comments_tenant_review_comment_key|UNIQUE (tenant_id, review_id, comment_id) context_credentials|context_credentials_context_credential_id_not_null|NOT NULL context_credential_id context_credentials|context_credentials_context_fkey|FOREIGN KEY (tenant_id, context_id) REFERENCES contexts(tenant_id, context_id) ON DELETE CASCADE context_credentials|context_credentials_context_id_not_null|NOT NULL context_id context_credentials|context_credentials_k3s_admin_token_encrypted_not_null|NOT NULL k3s_admin_token_encrypted context_credentials|context_credentials_pkey|PRIMARY KEY (context_credential_id) context_credentials|context_credentials_tenant_context_key|UNIQUE (tenant_id, context_id) context_credentials|context_credentials_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) context_credentials|context_credentials_tenant_id_not_null|NOT NULL tenant_id contexts|contexts_context_id_not_null|NOT NULL context_id contexts|contexts_max_environments_check|CHECK ((max_environments >= 0)) contexts|contexts_max_environments_not_null|NOT NULL max_environments contexts|contexts_name_check|CHECK ((length(TRIM(BOTH FROM name)) > 0)) contexts|contexts_name_not_null|NOT NULL name contexts|contexts_pkey|PRIMARY KEY (context_id) contexts|contexts_provider_check|CHECK ((length(TRIM(BOTH FROM provider)) > 0)) contexts|contexts_provider_not_null|NOT NULL provider contexts|contexts_status_check|CHECK ((status = ANY (ARRAY['provisioning'::text, 'running'::text, 'failed'::text]))) contexts|contexts_status_not_null|NOT NULL status contexts|contexts_tenant_context_key|UNIQUE (tenant_id, context_id) contexts|contexts_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) contexts|contexts_tenant_id_not_null|NOT NULL tenant_id contexts|contexts_tenant_name_key|UNIQUE (tenant_id, name) environment_definitions|environment_definitions_definition_not_null|NOT NULL definition environment_definitions|environment_definitions_definition_object_check|CHECK ((jsonb_typeof(definition) = 'object'::text)) environment_definitions|environment_definitions_environment_id_not_null|NOT NULL environment_id environment_definitions|environment_definitions_pkey|PRIMARY KEY (tenant_id, environment_id) environment_definitions|environment_definitions_revision_check|CHECK ((revision > 0)) environment_definitions|environment_definitions_revision_not_null|NOT NULL revision environment_definitions|environment_definitions_tenant_environment_fkey|FOREIGN KEY (tenant_id, environment_id) REFERENCES environments(tenant_id, environment_id) ON DELETE CASCADE environment_definitions|environment_definitions_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) environment_definitions|environment_definitions_tenant_id_not_null|NOT NULL tenant_id environment_definitions|environment_definitions_written_by_user_id_not_null|NOT NULL written_by_user_id environment_events|environment_events_environment_event_id_not_null|NOT NULL environment_event_id environment_events|environment_events_environment_event_seq_not_null|NOT NULL environment_event_seq environment_events|environment_events_environment_id_not_null|NOT NULL environment_id environment_events|environment_events_kind_check|CHECK ((kind = ANY (ARRAY['environment-status-changed'::text, 'session-awaiting-input'::text, 'job-finished'::text]))) environment_events|environment_events_kind_not_null|NOT NULL kind environment_events|environment_events_occurred_at_not_null|NOT NULL occurred_at environment_events|environment_events_pkey|PRIMARY KEY (environment_event_id) environment_events|environment_events_tenant_environment_fkey|FOREIGN KEY (tenant_id, environment_id) REFERENCES environments(tenant_id, environment_id) ON DELETE CASCADE environment_events|environment_events_tenant_event_key|UNIQUE (tenant_id, environment_event_id) environment_events|environment_events_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) environment_events|environment_events_tenant_id_not_null|NOT NULL tenant_id environment_events|environment_events_tenant_seq_key|UNIQUE (tenant_id, environment_event_seq) environments|environments_delete_attempts_not_null|NOT NULL delete_attempts environments|environments_environment_id_not_null|NOT NULL environment_id environments|environments_name_check|CHECK ((length(TRIM(BOTH FROM name)) > 0)) environments|environments_name_not_null|NOT NULL name environments|environments_pkey|PRIMARY KEY (environment_id) environments|environments_status_check|CHECK ((status = ANY (ARRAY['registered'::text, 'provisioning'::text, 'running'::text, 'failed'::text, 'deleting'::text, 'deletion-blocked'::text]))) environments|environments_status_not_null|NOT NULL status environments|environments_tenant_environment_key|UNIQUE (tenant_id, environment_id) environments|environments_tenant_id_context_id_fkey|FOREIGN KEY (tenant_id, context_id) REFERENCES contexts(tenant_id, context_id) environments|environments_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) environments|environments_tenant_id_not_null|NOT NULL tenant_id environments|environments_tenant_name_key|UNIQUE (tenant_id, name) environments|environments_type_check|CHECK ((type = ANY (ARRAY['local-agent'::text, 'remote-agent'::text, 'runtime'::text]))) environments|environments_type_not_null|NOT NULL type gate_runs|gate_runs_failing_step_check|CHECK (((status <> 'FAILED'::text) OR ((failing_step IS NOT NULL) AND (length(TRIM(BOTH FROM failing_step)) > 0)))) gate_runs|gate_runs_gate_run_id_not_null|NOT NULL gate_run_id gate_runs|gate_runs_merge_commit_check|CHECK (((merge_commit IS NULL) OR (length(TRIM(BOTH FROM merge_commit)) > 0))) gate_runs|gate_runs_merge_commit_required_check|CHECK (((status = ANY (ARRAY['FAILED'::text, 'INCONCLUSIVE'::text])) OR (merge_commit IS NOT NULL))) gate_runs|gate_runs_pkey|PRIMARY KEY (gate_run_id) gate_runs|gate_runs_source_branch_check|CHECK ((length(TRIM(BOTH FROM source_branch)) > 0)) gate_runs|gate_runs_source_branch_not_null|NOT NULL source_branch gate_runs|gate_runs_source_commit_check|CHECK ((length(TRIM(BOTH FROM source_commit)) > 0)) gate_runs|gate_runs_source_commit_not_null|NOT NULL source_commit gate_runs|gate_runs_status_check|CHECK ((status = ANY (ARRAY['RUNNING'::text, 'PASSED'::text, 'FAILED'::text, 'INCONCLUSIVE'::text]))) gate_runs|gate_runs_status_not_null|NOT NULL status gate_runs|gate_runs_target_branch_check|CHECK ((length(TRIM(BOTH FROM target_branch)) > 0)) gate_runs|gate_runs_target_branch_not_null|NOT NULL target_branch gate_runs|gate_runs_tenant_gate_run_key|UNIQUE (tenant_id, gate_run_id) gate_runs|gate_runs_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) gate_runs|gate_runs_tenant_id_not_null|NOT NULL tenant_id gate_runs|gate_runs_tenant_review_fkey|FOREIGN KEY (tenant_id, review_id) REFERENCES reviews(tenant_id, review_id) invite_requests|invite_requests_decided_by_user_id_fkey|FOREIGN KEY (decided_by_user_id) REFERENCES users(user_id) invite_requests|invite_requests_decline_reason_check|CHECK (((status <> 'DECLINED'::text) OR ((decline_reason IS NOT NULL) AND (length(TRIM(BOTH FROM decline_reason)) > 0)))) invite_requests|invite_requests_invite_request_id_not_null|NOT NULL invite_request_id invite_requests|invite_requests_issuer_check|CHECK ((length(TRIM(BOTH FROM issuer)) > 0)) invite_requests|invite_requests_issuer_not_null|NOT NULL issuer invite_requests|invite_requests_kind_check|CHECK ((kind = ANY (ARRAY['JOIN_TENANT'::text, 'CREATE_TENANT'::text]))) invite_requests|invite_requests_kind_not_null|NOT NULL kind invite_requests|invite_requests_minted_invite_id_fkey|FOREIGN KEY (minted_invite_id) REFERENCES invites(invite_id) invite_requests|invite_requests_pkey|PRIMARY KEY (invite_request_id) invite_requests|invite_requests_status_check|CHECK ((status = ANY (ARRAY['PENDING'::text, 'APPROVED'::text, 'DECLINED'::text]))) invite_requests|invite_requests_status_not_null|NOT NULL status invite_requests|invite_requests_subject_check|CHECK ((length(TRIM(BOTH FROM subject)) > 0)) invite_requests|invite_requests_subject_not_null|NOT NULL subject invite_requests|invite_requests_tenant_name_check|CHECK ((length(TRIM(BOTH FROM tenant_name)) > 0)) invite_requests|invite_requests_tenant_name_not_null|NOT NULL tenant_name invites|invites_created_by_user_id_fkey|FOREIGN KEY (created_by_user_id) REFERENCES users(user_id) invites|invites_created_by_user_id_not_null|NOT NULL created_by_user_id invites|invites_expires_at_not_null|NOT NULL expires_at invites|invites_invite_id_not_null|NOT NULL invite_id invites|invites_issuer_check|CHECK ((length(TRIM(BOTH FROM issuer)) > 0)) invites|invites_issuer_not_null|NOT NULL issuer invites|invites_pkey|PRIMARY KEY (invite_id) invites|invites_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) invites|invites_tenant_id_not_null|NOT NULL tenant_id invites|invites_tenant_invite_key|UNIQUE (tenant_id, invite_id) invites|invites_token_check|CHECK ((length(TRIM(BOTH FROM token)) > 0)) invites|invites_token_key|UNIQUE (token) invites|invites_token_not_null|NOT NULL token issuers|issuers_issuer_not_null|NOT NULL issuer issuers|issuers_pkey|PRIMARY KEY (issuer) jobs|jobs_actor_id_check|CHECK ((length(TRIM(BOTH FROM actor_id)) > 0)) jobs|jobs_actor_id_not_null|NOT NULL actor_id jobs|jobs_actor_kind_check|CHECK ((actor_kind = ANY (ARRAY['agent'::text, 'orchestrator'::text, 'human'::text]))) jobs|jobs_actor_kind_not_null|NOT NULL actor_kind jobs|jobs_ended_at_check|CHECK (((status = ANY (ARRAY['PLANNED'::text, 'RUNNING'::text])) = (ended_at IS NULL))) jobs|jobs_issue_ref_check|CHECK (((issue_ref IS NULL) OR (length(TRIM(BOTH FROM issue_ref)) > 0))) jobs|jobs_job_id_not_null|NOT NULL job_id jobs|jobs_job_type_check|CHECK ((job_type = ANY (ARRAY['fix'::text, 'review'::text, 'gate'::text, 'release'::text, 'deploy'::text, 'investigate'::text, 'plan'::text, 'triage'::text, 'maintenance'::text]))) jobs|jobs_job_type_not_null|NOT NULL job_type jobs|jobs_local_job_id_check|CHECK (((local_job_id IS NULL) OR (length(TRIM(BOTH FROM local_job_id)) > 0))) jobs|jobs_pkey|PRIMARY KEY (job_id) jobs|jobs_scope_check|CHECK (((scope IS NULL) OR (length(TRIM(BOTH FROM scope)) > 0))) jobs|jobs_started_at_not_null|NOT NULL started_at jobs|jobs_status_check|CHECK ((status = ANY (ARRAY['PLANNED'::text, 'RUNNING'::text, 'SUCCEEDED'::text, 'FAILED'::text, 'ABANDONED'::text, 'SUPERSEDED'::text]))) jobs|jobs_status_not_null|NOT NULL status jobs|jobs_summary_check|CHECK ((length(TRIM(BOTH FROM summary)) > 0)) jobs|jobs_summary_not_null|NOT NULL summary jobs|jobs_tenant_environment_fkey|FOREIGN KEY (tenant_id, environment_id) REFERENCES environments(tenant_id, environment_id) jobs|jobs_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) jobs|jobs_tenant_id_not_null|NOT NULL tenant_id jobs|jobs_tenant_job_key|UNIQUE (tenant_id, job_id) platform_rate_limits|platform_rate_limits_invite_request_window_seconds_check|CHECK ((invite_request_window_seconds > 0)) platform_rate_limits|platform_rate_limits_invite_request_window_seconds_not_null|NOT NULL invite_request_window_seconds platform_rate_limits|platform_rate_limits_pkey|PRIMARY KEY (singleton) platform_rate_limits|platform_rate_limits_singleton_check|CHECK (singleton) platform_rate_limits|platform_rate_limits_singleton_not_null|NOT NULL singleton releases|releases_attempt_check|CHECK ((attempt > 0)) releases|releases_attempt_not_null|NOT NULL attempt releases|releases_build_fkey|FOREIGN KEY (tenant_id, build_id) REFERENCES builds(tenant_id, build_id) releases|releases_commit_id_check|CHECK ((length(TRIM(BOTH FROM commit_id)) > 0)) releases|releases_commit_id_not_null|NOT NULL commit_id releases|releases_pkey|PRIMARY KEY (release_id) releases|releases_release_id_not_null|NOT NULL release_id releases|releases_released_version_check|CHECK (((status <> 'released'::text) OR ((version IS NOT NULL) AND (length(TRIM(BOTH FROM version)) > 0)))) releases|releases_review_fkey|FOREIGN KEY (tenant_id, review_id) REFERENCES reviews(tenant_id, review_id) releases|releases_status_check|CHECK ((status = ANY (ARRAY['queued'::text, 'running'::text, 'released'::text, 'failed'::text]))) releases|releases_status_not_null|NOT NULL status releases|releases_target_branch_check|CHECK ((length(TRIM(BOTH FROM target_branch)) > 0)) releases|releases_target_branch_not_null|NOT NULL target_branch releases|releases_tenant_commit_key|UNIQUE (tenant_id, commit_id) releases|releases_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) releases|releases_tenant_id_not_null|NOT NULL tenant_id releases|releases_tenant_release_key|UNIQUE (tenant_id, release_id) retention_runs|retention_runs_created_at_not_null|NOT NULL created_at retention_runs|retention_runs_deleted_count_check|CHECK (((deleted_count >= 0) AND (deleted_count <= eligible_count))) retention_runs|retention_runs_deleted_count_not_null|NOT NULL deleted_count retention_runs|retention_runs_dry_run_deleted_count_check|CHECK (((NOT dry_run) OR (deleted_count = 0))) retention_runs|retention_runs_dry_run_not_null|NOT NULL dry_run retention_runs|retention_runs_eligible_count_check|CHECK ((eligible_count >= 0)) retention_runs|retention_runs_eligible_count_not_null|NOT NULL eligible_count retention_runs|retention_runs_pkey|PRIMARY KEY (retention_run_id) retention_runs|retention_runs_policy_name_check|CHECK ((length(TRIM(BOTH FROM policy_name)) > 0)) retention_runs|retention_runs_policy_name_not_null|NOT NULL policy_name retention_runs|retention_runs_retention_run_id_not_null|NOT NULL retention_run_id retention_runs|retention_runs_table_name_check|CHECK ((length(TRIM(BOTH FROM table_name)) > 0)) retention_runs|retention_runs_table_name_not_null|NOT NULL table_name review_merge_queue|review_merge_queue_pkey|PRIMARY KEY (review_merge_queue_id) review_merge_queue|review_merge_queue_review_id_not_null|NOT NULL review_id review_merge_queue|review_merge_queue_review_merge_queue_id_not_null|NOT NULL review_merge_queue_id review_merge_queue|review_merge_queue_target_branch_check|CHECK ((length(TRIM(BOTH FROM target_branch)) > 0)) review_merge_queue|review_merge_queue_target_branch_not_null|NOT NULL target_branch review_merge_queue|review_merge_queue_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) review_merge_queue|review_merge_queue_tenant_id_not_null|NOT NULL tenant_id review_merge_queue|review_merge_queue_tenant_id_target_branch_review_id_fkey|FOREIGN KEY (tenant_id, target_branch, review_id) REFERENCES reviews(tenant_id, target_branch, review_id) review_merge_queue|review_merge_queue_tenant_queue_key|UNIQUE (tenant_id, review_merge_queue_id) review_merge_queue|review_merge_queue_tenant_review_key|UNIQUE (tenant_id, review_id) review_reviewers|review_reviewers_pkey|PRIMARY KEY (tenant_id, review_id, user_id) review_reviewers|review_reviewers_review_id_not_null|NOT NULL review_id review_reviewers|review_reviewers_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) review_reviewers|review_reviewers_tenant_id_not_null|NOT NULL tenant_id review_reviewers|review_reviewers_tenant_id_review_id_fkey|FOREIGN KEY (tenant_id, review_id) REFERENCES reviews(tenant_id, review_id) review_reviewers|review_reviewers_tenant_id_user_id_fkey|FOREIGN KEY (tenant_id, user_id) REFERENCES users(tenant_id, user_id) review_reviewers|review_reviewers_user_id_not_null|NOT NULL user_id reviews|reviews_author_user_id_not_null|NOT NULL author_user_id reviews|reviews_issue_ref_check|CHECK (((issue_ref IS NULL) OR (length(TRIM(BOTH FROM issue_ref)) > 0))) reviews|reviews_last_failed_build_fk|FOREIGN KEY (tenant_id, review_id, last_failed_build_id) REFERENCES builds(tenant_id, review_id, build_id) reviews|reviews_last_merged_build_fk|FOREIGN KEY (tenant_id, review_id, last_merged_build_id) REFERENCES builds(tenant_id, review_id, build_id) reviews|reviews_last_ready_build_fk|FOREIGN KEY (tenant_id, review_id, last_ready_build_id) REFERENCES builds(tenant_id, review_id, build_id) reviews|reviews_name_not_null|NOT NULL name reviews|reviews_pkey|PRIMARY KEY (review_id) reviews|reviews_repository_check|CHECK (((repository IS NULL) OR (length(TRIM(BOTH FROM repository)) > 0))) reviews|reviews_review_id_not_null|NOT NULL review_id reviews|reviews_source_branch_check|CHECK ((length(TRIM(BOTH FROM source_branch)) > 0)) reviews|reviews_source_branch_not_null|NOT NULL source_branch reviews|reviews_status_build_link_check|CHECK ((((status <> 'FAILED'::text) OR (last_failed_build_id IS NOT NULL)) AND ((status <> 'READY'::text) OR (last_ready_build_id IS NOT NULL)) AND ((status <> 'MERGE'::text) OR (last_ready_build_id IS NOT NULL)))) reviews|reviews_status_check|CHECK ((status = ANY (ARRAY['OPEN'::text, 'CLOSED'::text, 'FAILED'::text, 'READY'::text, 'MERGE'::text, 'MERGED'::text]))) reviews|reviews_status_not_null|NOT NULL status reviews|reviews_target_branch_check|CHECK ((length(TRIM(BOTH FROM target_branch)) > 0)) reviews|reviews_target_branch_not_null|NOT NULL target_branch reviews|reviews_tenant_id_author_user_id_fkey|FOREIGN KEY (tenant_id, author_user_id) REFERENCES users(tenant_id, user_id) reviews|reviews_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) reviews|reviews_tenant_id_not_null|NOT NULL tenant_id reviews|reviews_tenant_review_key|UNIQUE (tenant_id, review_id) reviews|reviews_tenant_target_review_key|UNIQUE (tenant_id, target_branch, review_id) role_permissions|role_permissions_api_method_check|CHECK (((api_method IS NULL) OR (api_method = ANY (ARRAY['GET'::text, 'POST'::text, 'PUT'::text, 'PATCH'::text, 'DELETE'::text, 'OPTIONS'::text, 'HEAD'::text])))) role_permissions|role_permissions_exact_or_pattern_check|CHECK ((((api_method IS NOT NULL) AND (api_path IS NOT NULL) AND (api_method_pattern IS NULL) AND (api_path_pattern IS NULL)) OR ((api_method IS NULL) AND (api_path IS NULL) AND (api_method_pattern IS NOT NULL) AND (api_path_pattern IS NOT NULL)))) role_permissions|role_permissions_pkey|PRIMARY KEY (role_permission_id) role_permissions|role_permissions_role_id_not_null|NOT NULL role_id role_permissions|role_permissions_role_permission_id_not_null|NOT NULL role_permission_id role_permissions|role_permissions_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) role_permissions|role_permissions_tenant_id_not_null|NOT NULL tenant_id role_permissions|role_permissions_tenant_id_role_id_fkey|FOREIGN KEY (tenant_id, role_id) REFERENCES roles(tenant_id, role_id) role_permissions|role_permissions_tenant_permission_key|UNIQUE (tenant_id, role_id, api_method, api_path) role_permissions|role_permissions_tenant_permission_pattern_key|UNIQUE (tenant_id, role_id, api_method_pattern, api_path_pattern) roles|roles_name_not_null|NOT NULL name roles|roles_pkey|PRIMARY KEY (role_id) roles|roles_role_id_not_null|NOT NULL role_id roles|roles_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) roles|roles_tenant_id_not_null|NOT NULL tenant_id roles|roles_tenant_name_key|UNIQUE (tenant_id, name) roles|roles_tenant_role_key|UNIQUE (tenant_id, role_id) tenant_issuers|tenant_issuers_issuer_fkey|FOREIGN KEY (issuer) REFERENCES issuers(issuer) tenant_issuers|tenant_issuers_issuer_not_null|NOT NULL issuer tenant_issuers|tenant_issuers_issuer_org_key|UNIQUE NULLS NOT DISTINCT (issuer, org_field_value) tenant_issuers|tenant_issuers_name_check|CHECK ((length(TRIM(BOTH FROM name)) > 0)) tenant_issuers|tenant_issuers_name_not_null|NOT NULL name tenant_issuers|tenant_issuers_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) tenant_issuers|tenant_issuers_tenant_id_not_null|NOT NULL tenant_id tenant_issuers|tenant_issuers_tenant_issuer_key|UNIQUE (tenant_id, issuer) tenant_quotas|tenant_quotas_max_cpu_millicores_check|CHECK ((max_cpu_millicores >= 0)) tenant_quotas|tenant_quotas_max_cpu_millicores_not_null|NOT NULL max_cpu_millicores tenant_quotas|tenant_quotas_max_environments_check|CHECK ((max_environments >= 0)) tenant_quotas|tenant_quotas_max_environments_not_null|NOT NULL max_environments tenant_quotas|tenant_quotas_max_memory_mb_check|CHECK ((max_memory_mb >= 0)) tenant_quotas|tenant_quotas_max_memory_mb_not_null|NOT NULL max_memory_mb tenant_quotas|tenant_quotas_max_storage_gb_check|CHECK ((max_storage_gb >= 0)) tenant_quotas|tenant_quotas_max_storage_gb_not_null|NOT NULL max_storage_gb tenant_quotas|tenant_quotas_max_total_cpu_millicores_check|CHECK ((max_total_cpu_millicores >= 0)) tenant_quotas|tenant_quotas_max_total_cpu_millicores_not_null|NOT NULL max_total_cpu_millicores tenant_quotas|tenant_quotas_max_total_memory_mb_check|CHECK ((max_total_memory_mb >= 0)) tenant_quotas|tenant_quotas_max_total_memory_mb_not_null|NOT NULL max_total_memory_mb tenant_quotas|tenant_quotas_max_total_storage_gb_check|CHECK ((max_total_storage_gb >= 0)) tenant_quotas|tenant_quotas_max_total_storage_gb_not_null|NOT NULL max_total_storage_gb tenant_quotas|tenant_quotas_pkey|PRIMARY KEY (tenant_id) tenant_quotas|tenant_quotas_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) tenant_quotas|tenant_quotas_tenant_id_not_null|NOT NULL tenant_id tenants|tenants_name_key|UNIQUE (name) tenants|tenants_name_not_null|NOT NULL name tenants|tenants_pkey|PRIMARY KEY (tenant_id) tenants|tenants_tenant_id_not_null|NOT NULL tenant_id tenants|tenants_type_check|CHECK ((type = ANY (ARRAY['OPERATIONS'::text, 'COMPANY'::text]))) tenants|tenants_type_not_null|NOT NULL type usage_events|usage_events_created_at_not_null|NOT NULL created_at usage_events|usage_events_environment_fkey|FOREIGN KEY (environment_id) REFERENCES environments(environment_id) ON DELETE SET NULL usage_events|usage_events_event_type_check|CHECK ((event_type = ANY (ARRAY['environment_provisioned'::text, 'environment_stopped'::text, 'environment_deleted'::text]))) usage_events|usage_events_event_type_not_null|NOT NULL event_type usage_events|usage_events_pkey|PRIMARY KEY (usage_event_id) usage_events|usage_events_tenant_event_key|UNIQUE (tenant_id, usage_event_id) usage_events|usage_events_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) usage_events|usage_events_tenant_id_not_null|NOT NULL tenant_id usage_events|usage_events_usage_event_id_not_null|NOT NULL usage_event_id user_external_ids|user_external_ids_external_id_not_null|NOT NULL external_id user_external_ids|user_external_ids_issuer_not_null|NOT NULL issuer user_external_ids|user_external_ids_pkey|PRIMARY KEY (tenant_id, issuer, external_id) user_external_ids|user_external_ids_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) user_external_ids|user_external_ids_tenant_id_issuer_fkey|FOREIGN KEY (tenant_id, issuer) REFERENCES tenant_issuers(tenant_id, issuer) user_external_ids|user_external_ids_tenant_id_not_null|NOT NULL tenant_id user_external_ids|user_external_ids_tenant_id_user_id_fkey|FOREIGN KEY (tenant_id, user_id) REFERENCES users(tenant_id, user_id) user_external_ids|user_external_ids_user_id_not_null|NOT NULL user_id user_roles|user_roles_pkey|PRIMARY KEY (tenant_id, user_id, role_id) user_roles|user_roles_role_id_not_null|NOT NULL role_id user_roles|user_roles_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) user_roles|user_roles_tenant_id_not_null|NOT NULL tenant_id user_roles|user_roles_tenant_id_role_id_fkey|FOREIGN KEY (tenant_id, role_id) REFERENCES roles(tenant_id, role_id) user_roles|user_roles_tenant_id_user_id_fkey|FOREIGN KEY (tenant_id, user_id) REFERENCES users(tenant_id, user_id) user_roles|user_roles_user_id_not_null|NOT NULL user_id users|users_pkey|PRIMARY KEY (user_id) users|users_tenant_id_fkey|FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) users|users_tenant_id_not_null|NOT NULL tenant_id users|users_tenant_user_key|UNIQUE (tenant_id, user_id) users|users_tenant_username_key|UNIQUE (tenant_id, username) users|users_user_id_not_null|NOT NULL user_id users|users_username_not_null|NOT NULL username ### INDEXES ai_sessions|ai_sessions_pkey|CREATE UNIQUE INDEX ai_sessions_pkey ON public.ai_sessions USING btree (tenant_id, environment_id, session_id) audit_events|audit_events_pkey|CREATE UNIQUE INDEX audit_events_pkey ON public.audit_events USING btree (audit_event_id) audit_events|audit_events_tenant_api_created_at_idx|CREATE INDEX audit_events_tenant_api_created_at_idx ON public.audit_events USING btree (tenant_id, api_method, api_path, created_at DESC) audit_events|audit_events_tenant_created_at_idx|CREATE INDEX audit_events_tenant_created_at_idx ON public.audit_events USING btree (tenant_id, created_at DESC) audit_events|audit_events_tenant_event_key|CREATE UNIQUE INDEX audit_events_tenant_event_key ON public.audit_events USING btree (tenant_id, audit_event_id) audit_events|audit_events_tenant_user_created_at_idx|CREATE INDEX audit_events_tenant_user_created_at_idx ON public.audit_events USING btree (tenant_id, erun_user_id, created_at DESC) builds|builds_pkey|CREATE UNIQUE INDEX builds_pkey ON public.builds USING btree (build_id) builds|builds_tenant_build_key|CREATE UNIQUE INDEX builds_tenant_build_key ON public.builds USING btree (tenant_id, build_id) builds|builds_tenant_commit_idx|CREATE INDEX builds_tenant_commit_idx ON public.builds USING btree (tenant_id, commit_id) builds|builds_tenant_created_at_idx|CREATE INDEX builds_tenant_created_at_idx ON public.builds USING btree (tenant_id, created_at DESC) builds|builds_tenant_environment_created_at_idx|CREATE INDEX builds_tenant_environment_created_at_idx ON public.builds USING btree (tenant_id, environment_id, created_at DESC) WHERE (environment_id IS NOT NULL) builds|builds_tenant_review_build_key|CREATE UNIQUE INDEX builds_tenant_review_build_key ON public.builds USING btree (tenant_id, review_id, build_id) builds|builds_tenant_review_created_at_idx|CREATE INDEX builds_tenant_review_created_at_idx ON public.builds USING btree (tenant_id, review_id, created_at) cloud_provider_aliases|cloud_provider_aliases_pkey|CREATE UNIQUE INDEX cloud_provider_aliases_pkey ON public.cloud_provider_aliases USING btree (cloud_provider_alias_id) cloud_provider_aliases|cloud_provider_aliases_tenant_alias_key|CREATE UNIQUE INDEX cloud_provider_aliases_tenant_alias_key ON public.cloud_provider_aliases USING btree (tenant_id, alias) comments|comments_pkey|CREATE UNIQUE INDEX comments_pkey ON public.comments USING btree (comment_id) comments|comments_tenant_comment_key|CREATE UNIQUE INDEX comments_tenant_comment_key ON public.comments USING btree (tenant_id, comment_id) comments|comments_tenant_parent_idx|CREATE INDEX comments_tenant_parent_idx ON public.comments USING btree (tenant_id, parent_comment_id) comments|comments_tenant_review_comment_key|CREATE UNIQUE INDEX comments_tenant_review_comment_key ON public.comments USING btree (tenant_id, review_id, comment_id) comments|comments_tenant_review_idx|CREATE INDEX comments_tenant_review_idx ON public.comments USING btree (tenant_id, review_id) comments|comments_tenant_review_line_idx|CREATE INDEX comments_tenant_review_line_idx ON public.comments USING btree (tenant_id, review_id, commit_id, file_path, line) context_credentials|context_credentials_pkey|CREATE UNIQUE INDEX context_credentials_pkey ON public.context_credentials USING btree (context_credential_id) context_credentials|context_credentials_tenant_context_key|CREATE UNIQUE INDEX context_credentials_tenant_context_key ON public.context_credentials USING btree (tenant_id, context_id) contexts|contexts_pkey|CREATE UNIQUE INDEX contexts_pkey ON public.contexts USING btree (context_id) contexts|contexts_tenant_context_key|CREATE UNIQUE INDEX contexts_tenant_context_key ON public.contexts USING btree (tenant_id, context_id) contexts|contexts_tenant_name_key|CREATE UNIQUE INDEX contexts_tenant_name_key ON public.contexts USING btree (tenant_id, name) contexts|contexts_tenant_provider_idx|CREATE INDEX contexts_tenant_provider_idx ON public.contexts USING btree (tenant_id, provider) environment_definitions|environment_definitions_pkey|CREATE UNIQUE INDEX environment_definitions_pkey ON public.environment_definitions USING btree (tenant_id, environment_id) environment_definitions|environment_definitions_tenant_updated_at_idx|CREATE INDEX environment_definitions_tenant_updated_at_idx ON public.environment_definitions USING btree (tenant_id, updated_at DESC) environment_events|environment_events_pkey|CREATE UNIQUE INDEX environment_events_pkey ON public.environment_events USING btree (environment_event_id) environment_events|environment_events_tenant_environment_seq_idx|CREATE INDEX environment_events_tenant_environment_seq_idx ON public.environment_events USING btree (tenant_id, environment_id, environment_event_seq) environment_events|environment_events_tenant_event_key|CREATE UNIQUE INDEX environment_events_tenant_event_key ON public.environment_events USING btree (tenant_id, environment_event_id) environment_events|environment_events_tenant_seq_key|CREATE UNIQUE INDEX environment_events_tenant_seq_key ON public.environment_events USING btree (tenant_id, environment_event_seq) environments|environments_pkey|CREATE UNIQUE INDEX environments_pkey ON public.environments USING btree (environment_id) environments|environments_tenant_context_idx|CREATE INDEX environments_tenant_context_idx ON public.environments USING btree (tenant_id, context_id) environments|environments_tenant_environment_key|CREATE UNIQUE INDEX environments_tenant_environment_key ON public.environments USING btree (tenant_id, environment_id) environments|environments_tenant_name_key|CREATE UNIQUE INDEX environments_tenant_name_key ON public.environments USING btree (tenant_id, name) environments|environments_tenant_type_idx|CREATE INDEX environments_tenant_type_idx ON public.environments USING btree (tenant_id, type) gate_runs|gate_runs_pkey|CREATE UNIQUE INDEX gate_runs_pkey ON public.gate_runs USING btree (gate_run_id) gate_runs|gate_runs_tenant_gate_run_key|CREATE UNIQUE INDEX gate_runs_tenant_gate_run_key ON public.gate_runs USING btree (tenant_id, gate_run_id) gate_runs|gate_runs_tenant_review_idx|CREATE INDEX gate_runs_tenant_review_idx ON public.gate_runs USING btree (tenant_id, review_id) WHERE (review_id IS NOT NULL) gate_runs|gate_runs_tenant_status_idx|CREATE INDEX gate_runs_tenant_status_idx ON public.gate_runs USING btree (tenant_id, status) gate_runs|gate_runs_tenant_target_created_at_idx|CREATE INDEX gate_runs_tenant_target_created_at_idx ON public.gate_runs USING btree (tenant_id, target_branch, created_at DESC) invite_requests|invite_requests_pending_issuer_subject_idx|CREATE UNIQUE INDEX invite_requests_pending_issuer_subject_idx ON public.invite_requests USING btree (issuer, subject) WHERE (status = 'PENDING'::text) invite_requests|invite_requests_pkey|CREATE UNIQUE INDEX invite_requests_pkey ON public.invite_requests USING btree (invite_request_id) invite_requests|invite_requests_status_tenant_name_idx|CREATE INDEX invite_requests_status_tenant_name_idx ON public.invite_requests USING btree (status, tenant_name, created_at) invites|invites_pkey|CREATE UNIQUE INDEX invites_pkey ON public.invites USING btree (invite_id) invites|invites_tenant_invite_key|CREATE UNIQUE INDEX invites_tenant_invite_key ON public.invites USING btree (tenant_id, invite_id) invites|invites_tenant_outstanding_idx|CREATE INDEX invites_tenant_outstanding_idx ON public.invites USING btree (tenant_id, created_at) WHERE (consumed_at IS NULL) invites|invites_token_key|CREATE UNIQUE INDEX invites_token_key ON public.invites USING btree (token) issuers|issuers_pkey|CREATE UNIQUE INDEX issuers_pkey ON public.issuers USING btree (issuer) jobs|jobs_pkey|CREATE UNIQUE INDEX jobs_pkey ON public.jobs USING btree (job_id) jobs|jobs_tenant_issue_ref_idx|CREATE INDEX jobs_tenant_issue_ref_idx ON public.jobs USING btree (tenant_id, issue_ref) WHERE (issue_ref IS NOT NULL) jobs|jobs_tenant_job_key|CREATE UNIQUE INDEX jobs_tenant_job_key ON public.jobs USING btree (tenant_id, job_id) jobs|jobs_tenant_scope_status_idx|CREATE INDEX jobs_tenant_scope_status_idx ON public.jobs USING btree (tenant_id, scope, status) jobs|jobs_tenant_started_at_idx|CREATE INDEX jobs_tenant_started_at_idx ON public.jobs USING btree (tenant_id, started_at DESC) jobs|jobs_tenant_status_idx|CREATE INDEX jobs_tenant_status_idx ON public.jobs USING btree (tenant_id, status) platform_rate_limits|platform_rate_limits_pkey|CREATE UNIQUE INDEX platform_rate_limits_pkey ON public.platform_rate_limits USING btree (singleton) releases|releases_pkey|CREATE UNIQUE INDEX releases_pkey ON public.releases USING btree (release_id) releases|releases_tenant_commit_key|CREATE UNIQUE INDEX releases_tenant_commit_key ON public.releases USING btree (tenant_id, commit_id) releases|releases_tenant_release_key|CREATE UNIQUE INDEX releases_tenant_release_key ON public.releases USING btree (tenant_id, release_id) releases|releases_tenant_review_idx|CREATE INDEX releases_tenant_review_idx ON public.releases USING btree (tenant_id, review_id) releases|releases_tenant_running_key|CREATE UNIQUE INDEX releases_tenant_running_key ON public.releases USING btree (tenant_id) WHERE (status = 'running'::text) releases|releases_tenant_status_release_idx|CREATE INDEX releases_tenant_status_release_idx ON public.releases USING btree (tenant_id, status, release_id) retention_runs|retention_runs_created_at_idx|CREATE INDEX retention_runs_created_at_idx ON public.retention_runs USING btree (created_at DESC) retention_runs|retention_runs_pkey|CREATE UNIQUE INDEX retention_runs_pkey ON public.retention_runs USING btree (retention_run_id) review_merge_queue|review_merge_queue_pkey|CREATE UNIQUE INDEX review_merge_queue_pkey ON public.review_merge_queue USING btree (review_merge_queue_id) review_merge_queue|review_merge_queue_tenant_queue_key|CREATE UNIQUE INDEX review_merge_queue_tenant_queue_key ON public.review_merge_queue USING btree (tenant_id, review_merge_queue_id) review_merge_queue|review_merge_queue_tenant_review_key|CREATE UNIQUE INDEX review_merge_queue_tenant_review_key ON public.review_merge_queue USING btree (tenant_id, review_id) review_merge_queue|review_merge_queue_tenant_target_idx|CREATE INDEX review_merge_queue_tenant_target_idx ON public.review_merge_queue USING btree (tenant_id, target_branch, review_merge_queue_id) review_reviewers|review_reviewers_pkey|CREATE UNIQUE INDEX review_reviewers_pkey ON public.review_reviewers USING btree (tenant_id, review_id, user_id) review_reviewers|review_reviewers_tenant_user_idx|CREATE INDEX review_reviewers_tenant_user_idx ON public.review_reviewers USING btree (tenant_id, user_id, review_id) reviews|reviews_pkey|CREATE UNIQUE INDEX reviews_pkey ON public.reviews USING btree (review_id) reviews|reviews_tenant_author_idx|CREATE INDEX reviews_tenant_author_idx ON public.reviews USING btree (tenant_id, author_user_id) reviews|reviews_tenant_live_source_target_idx|CREATE UNIQUE INDEX reviews_tenant_live_source_target_idx ON public.reviews USING btree (tenant_id, repository, source_branch, target_branch) NULLS NOT DISTINCT WHERE (status <> ALL (ARRAY['MERGED'::text, 'CLOSED'::text])) reviews|reviews_tenant_repository_idx|CREATE INDEX reviews_tenant_repository_idx ON public.reviews USING btree (tenant_id, repository) reviews|reviews_tenant_repository_name_idx|CREATE UNIQUE INDEX reviews_tenant_repository_name_idx ON public.reviews USING btree (tenant_id, repository, name) NULLS NOT DISTINCT WHERE (status <> 'CLOSED'::text) reviews|reviews_tenant_review_key|CREATE UNIQUE INDEX reviews_tenant_review_key ON public.reviews USING btree (tenant_id, review_id) reviews|reviews_tenant_source_branch_idx|CREATE INDEX reviews_tenant_source_branch_idx ON public.reviews USING btree (tenant_id, source_branch) reviews|reviews_tenant_status_idx|CREATE INDEX reviews_tenant_status_idx ON public.reviews USING btree (tenant_id, status) reviews|reviews_tenant_target_branch_idx|CREATE INDEX reviews_tenant_target_branch_idx ON public.reviews USING btree (tenant_id, target_branch) reviews|reviews_tenant_target_review_key|CREATE UNIQUE INDEX reviews_tenant_target_review_key ON public.reviews USING btree (tenant_id, target_branch, review_id) role_permissions|role_permissions_pkey|CREATE UNIQUE INDEX role_permissions_pkey ON public.role_permissions USING btree (role_permission_id) role_permissions|role_permissions_tenant_api_idx|CREATE INDEX role_permissions_tenant_api_idx ON public.role_permissions USING btree (tenant_id, api_method, api_path) role_permissions|role_permissions_tenant_api_pattern_idx|CREATE INDEX role_permissions_tenant_api_pattern_idx ON public.role_permissions USING btree (tenant_id, api_method_pattern, api_path_pattern) role_permissions|role_permissions_tenant_permission_key|CREATE UNIQUE INDEX role_permissions_tenant_permission_key ON public.role_permissions USING btree (tenant_id, role_id, api_method, api_path) role_permissions|role_permissions_tenant_permission_pattern_key|CREATE UNIQUE INDEX role_permissions_tenant_permission_pattern_key ON public.role_permissions USING btree (tenant_id, role_id, api_method_pattern, api_path_pattern) role_permissions|role_permissions_tenant_role_idx|CREATE INDEX role_permissions_tenant_role_idx ON public.role_permissions USING btree (tenant_id, role_id) roles|roles_pkey|CREATE UNIQUE INDEX roles_pkey ON public.roles USING btree (role_id) roles|roles_tenant_name_key|CREATE UNIQUE INDEX roles_tenant_name_key ON public.roles USING btree (tenant_id, name) roles|roles_tenant_role_key|CREATE UNIQUE INDEX roles_tenant_role_key ON public.roles USING btree (tenant_id, role_id) tenant_issuers|tenant_issuers_issuer_org_key|CREATE UNIQUE INDEX tenant_issuers_issuer_org_key ON public.tenant_issuers USING btree (issuer, org_field_value) NULLS NOT DISTINCT tenant_issuers|tenant_issuers_tenant_issuer_key|CREATE UNIQUE INDEX tenant_issuers_tenant_issuer_key ON public.tenant_issuers USING btree (tenant_id, issuer) tenant_quotas|tenant_quotas_pkey|CREATE UNIQUE INDEX tenant_quotas_pkey ON public.tenant_quotas USING btree (tenant_id) tenants|tenants_name_key|CREATE UNIQUE INDEX tenants_name_key ON public.tenants USING btree (name) tenants|tenants_pkey|CREATE UNIQUE INDEX tenants_pkey ON public.tenants USING btree (tenant_id) usage_events|usage_events_pkey|CREATE UNIQUE INDEX usage_events_pkey ON public.usage_events USING btree (usage_event_id) usage_events|usage_events_tenant_created_at_idx|CREATE INDEX usage_events_tenant_created_at_idx ON public.usage_events USING btree (tenant_id, created_at DESC) usage_events|usage_events_tenant_environment_idx|CREATE INDEX usage_events_tenant_environment_idx ON public.usage_events USING btree (tenant_id, environment_id) usage_events|usage_events_tenant_event_key|CREATE UNIQUE INDEX usage_events_tenant_event_key ON public.usage_events USING btree (tenant_id, usage_event_id) user_external_ids|user_external_ids_pkey|CREATE UNIQUE INDEX user_external_ids_pkey ON public.user_external_ids USING btree (tenant_id, issuer, external_id) user_external_ids|user_external_ids_tenant_user_idx|CREATE INDEX user_external_ids_tenant_user_idx ON public.user_external_ids USING btree (tenant_id, user_id) user_roles|user_roles_pkey|CREATE UNIQUE INDEX user_roles_pkey ON public.user_roles USING btree (tenant_id, user_id, role_id) user_roles|user_roles_tenant_role_idx|CREATE INDEX user_roles_tenant_role_idx ON public.user_roles USING btree (tenant_id, role_id) users|users_pkey|CREATE UNIQUE INDEX users_pkey ON public.users USING btree (user_id) users|users_tenant_id_idx|CREATE INDEX users_tenant_id_idx ON public.users USING btree (tenant_id) users|users_tenant_user_key|CREATE UNIQUE INDEX users_tenant_user_key ON public.users USING btree (tenant_id, user_id) users|users_tenant_username_key|CREATE UNIQUE INDEX users_tenant_username_key ON public.users USING btree (tenant_id, username) ### TRIGGERS ai_sessions|ai_sessions_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() ai_sessions|ai_sessions_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() builds|builds_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() builds|builds_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() cloud_provider_aliases|cloud_provider_aliases_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() cloud_provider_aliases|cloud_provider_aliases_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() comments|comments_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() comments|comments_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() comments|comments_validate|BEFORE|INSERT|EXECUTE FUNCTION erun_validate_comments() comments|comments_validate|BEFORE|UPDATE|EXECUTE FUNCTION erun_validate_comments() context_credentials|context_credentials_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() context_credentials|context_credentials_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() contexts|contexts_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() contexts|contexts_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() environment_definitions|environment_definitions_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() environment_definitions|environment_definitions_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() environment_events|environment_events_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() environment_events|environment_events_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() environments|environments_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() environments|environments_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() gate_runs|gate_runs_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() gate_runs|gate_runs_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() invite_requests|invite_requests_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() invite_requests|invite_requests_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() invites|invites_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() invites|invites_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() issuers|issuers_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() issuers|issuers_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() jobs|jobs_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() jobs|jobs_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() platform_rate_limits|platform_rate_limits_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() platform_rate_limits|platform_rate_limits_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() releases|releases_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() releases|releases_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() review_merge_queue|review_merge_queue_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() review_merge_queue|review_merge_queue_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() review_reviewers|review_reviewers_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() review_reviewers|review_reviewers_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() reviews|reviews_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() reviews|reviews_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() role_permissions|role_permissions_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() role_permissions|role_permissions_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() roles|roles_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() roles|roles_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() tenant_issuers|tenant_issuers_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() tenant_issuers|tenant_issuers_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() tenant_quotas|tenant_quotas_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() tenant_quotas|tenant_quotas_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() tenants|tenants_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() tenants|tenants_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() user_external_ids|user_external_ids_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() user_external_ids|user_external_ids_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() user_roles|user_roles_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() user_roles|user_roles_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() users|users_set_timestamps|BEFORE|INSERT|EXECUTE FUNCTION erun_set_timestamps() users|users_set_timestamps|BEFORE|UPDATE|EXECUTE FUNCTION erun_set_timestamps() ### RLS FLAGS ai_sessions|t|t audit_events|t|t builds|t|t cloud_provider_aliases|t|t comments|t|t context_credentials|t|t contexts|t|t environment_definitions|t|t environment_events|t|t environments|t|t gate_runs|t|t invite_requests|f|f invites|t|t issuers|f|f jobs|t|t platform_rate_limits|f|f releases|t|t retention_runs|f|f review_merge_queue|t|t review_reviewers|t|t reviews|t|t role_permissions|t|t roles|t|t tenant_issuers|f|f tenant_quotas|t|t tenants|f|f usage_events|t|t user_external_ids|t|t user_roles|t|t users|t|t ### RLS POLICIES ai_sessions|ai_sessions_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true ai_sessions|ai_sessions_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) audit_events|audit_events_operations_insert|PERMISSIVE|{erun_operations}|INSERT||true audit_events|audit_events_operations_select|PERMISSIVE|{erun_operations}|SELECT|true| audit_events|audit_events_tenant_insert|PERMISSIVE|{erun_tenant}|INSERT||(tenant_id = erun_current_tenant_id()) audit_events|audit_events_tenant_isolation|PERMISSIVE|{erun_tenant}|SELECT|(tenant_id = erun_current_tenant_id())| builds|builds_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true builds|builds_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) cloud_provider_aliases|cloud_provider_aliases_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true cloud_provider_aliases|cloud_provider_aliases_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) comments|comments_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true comments|comments_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) context_credentials|context_credentials_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true context_credentials|context_credentials_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) contexts|contexts_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true contexts|contexts_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) environment_definitions|environment_definitions_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true environment_definitions|environment_definitions_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) environment_events|environment_events_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true environment_events|environment_events_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) environments|environments_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true environments|environments_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) gate_runs|gate_runs_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true gate_runs|gate_runs_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) invites|invites_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true invites|invites_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) jobs|jobs_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true jobs|jobs_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) releases|releases_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true releases|releases_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) review_merge_queue|review_merge_queue_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true review_merge_queue|review_merge_queue_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) review_reviewers|review_reviewers_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true review_reviewers|review_reviewers_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) reviews|reviews_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true reviews|reviews_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) role_permissions|role_permissions_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true role_permissions|role_permissions_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) roles|roles_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true roles|roles_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) tenant_quotas|tenant_quotas_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true tenant_quotas|tenant_quotas_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) usage_events|usage_events_operations_insert|PERMISSIVE|{erun_operations}|INSERT||true usage_events|usage_events_operations_select|PERMISSIVE|{erun_operations}|SELECT|true| usage_events|usage_events_tenant_insert|PERMISSIVE|{erun_tenant}|INSERT||(tenant_id = erun_current_tenant_id()) usage_events|usage_events_tenant_isolation|PERMISSIVE|{erun_tenant}|SELECT|(tenant_id = erun_current_tenant_id())| user_external_ids|user_external_ids_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true user_external_ids|user_external_ids_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) user_roles|user_roles_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true user_roles|user_roles_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) users|users_operations_access|PERMISSIVE|{erun_operations}|ALL|true|true users|users_tenant_isolation|PERMISSIVE|{erun_tenant}|ALL|(tenant_id = erun_current_tenant_id())|(tenant_id = erun_current_tenant_id()) ### TABLE GRANTS ai_sessions|erun_operations|DELETE ai_sessions|erun_operations|INSERT ai_sessions|erun_operations|REFERENCES ai_sessions|erun_operations|SELECT ai_sessions|erun_operations|UPDATE ai_sessions|erun_tenant|DELETE ai_sessions|erun_tenant|INSERT ai_sessions|erun_tenant|REFERENCES ai_sessions|erun_tenant|SELECT ai_sessions|erun_tenant|UPDATE audit_events|erun_operations|INSERT audit_events|erun_operations|REFERENCES audit_events|erun_operations|SELECT audit_events|erun_tenant|INSERT audit_events|erun_tenant|REFERENCES audit_events|erun_tenant|SELECT builds|erun_operations|DELETE builds|erun_operations|INSERT builds|erun_operations|REFERENCES builds|erun_operations|SELECT builds|erun_operations|UPDATE builds|erun_tenant|DELETE builds|erun_tenant|INSERT builds|erun_tenant|REFERENCES builds|erun_tenant|SELECT builds|erun_tenant|UPDATE cloud_provider_aliases|erun_operations|DELETE cloud_provider_aliases|erun_operations|INSERT cloud_provider_aliases|erun_operations|REFERENCES cloud_provider_aliases|erun_operations|SELECT cloud_provider_aliases|erun_operations|UPDATE cloud_provider_aliases|erun_tenant|DELETE cloud_provider_aliases|erun_tenant|INSERT cloud_provider_aliases|erun_tenant|REFERENCES cloud_provider_aliases|erun_tenant|SELECT cloud_provider_aliases|erun_tenant|UPDATE comments|erun_operations|DELETE comments|erun_operations|INSERT comments|erun_operations|REFERENCES comments|erun_operations|SELECT comments|erun_operations|UPDATE comments|erun_tenant|DELETE comments|erun_tenant|INSERT comments|erun_tenant|REFERENCES comments|erun_tenant|SELECT comments|erun_tenant|UPDATE context_credentials|erun_operations|DELETE context_credentials|erun_operations|INSERT context_credentials|erun_operations|REFERENCES context_credentials|erun_operations|SELECT context_credentials|erun_operations|UPDATE context_credentials|erun_tenant|DELETE context_credentials|erun_tenant|INSERT context_credentials|erun_tenant|REFERENCES context_credentials|erun_tenant|SELECT context_credentials|erun_tenant|UPDATE contexts|erun_operations|DELETE contexts|erun_operations|INSERT contexts|erun_operations|REFERENCES contexts|erun_operations|SELECT contexts|erun_operations|UPDATE contexts|erun_tenant|DELETE contexts|erun_tenant|INSERT contexts|erun_tenant|REFERENCES contexts|erun_tenant|SELECT contexts|erun_tenant|UPDATE environment_definitions|erun_operations|DELETE environment_definitions|erun_operations|INSERT environment_definitions|erun_operations|REFERENCES environment_definitions|erun_operations|SELECT environment_definitions|erun_operations|UPDATE environment_definitions|erun_tenant|DELETE environment_definitions|erun_tenant|INSERT environment_definitions|erun_tenant|REFERENCES environment_definitions|erun_tenant|SELECT environment_definitions|erun_tenant|UPDATE environment_events|erun_operations|DELETE environment_events|erun_operations|INSERT environment_events|erun_operations|REFERENCES environment_events|erun_operations|SELECT environment_events|erun_operations|UPDATE environment_events|erun_tenant|DELETE environment_events|erun_tenant|INSERT environment_events|erun_tenant|REFERENCES environment_events|erun_tenant|SELECT environment_events|erun_tenant|UPDATE environments|erun_operations|DELETE environments|erun_operations|INSERT environments|erun_operations|REFERENCES environments|erun_operations|SELECT environments|erun_operations|UPDATE environments|erun_tenant|DELETE environments|erun_tenant|INSERT environments|erun_tenant|REFERENCES environments|erun_tenant|SELECT environments|erun_tenant|UPDATE gate_runs|erun_operations|DELETE gate_runs|erun_operations|INSERT gate_runs|erun_operations|REFERENCES gate_runs|erun_operations|SELECT gate_runs|erun_operations|UPDATE gate_runs|erun_tenant|DELETE gate_runs|erun_tenant|INSERT gate_runs|erun_tenant|REFERENCES gate_runs|erun_tenant|SELECT gate_runs|erun_tenant|UPDATE invite_requests|erun_operations|DELETE invite_requests|erun_operations|INSERT invite_requests|erun_operations|REFERENCES invite_requests|erun_operations|SELECT invite_requests|erun_operations|UPDATE invite_requests|erun_tenant|DELETE invite_requests|erun_tenant|INSERT invite_requests|erun_tenant|REFERENCES invite_requests|erun_tenant|SELECT invite_requests|erun_tenant|UPDATE invites|erun_operations|DELETE invites|erun_operations|INSERT invites|erun_operations|REFERENCES invites|erun_operations|SELECT invites|erun_operations|UPDATE invites|erun_tenant|DELETE invites|erun_tenant|INSERT invites|erun_tenant|REFERENCES invites|erun_tenant|SELECT invites|erun_tenant|UPDATE issuers|erun_operations|DELETE issuers|erun_operations|INSERT issuers|erun_operations|REFERENCES issuers|erun_operations|SELECT issuers|erun_operations|UPDATE issuers|erun_tenant|SELECT jobs|erun_operations|DELETE jobs|erun_operations|INSERT jobs|erun_operations|REFERENCES jobs|erun_operations|SELECT jobs|erun_operations|UPDATE jobs|erun_tenant|DELETE jobs|erun_tenant|INSERT jobs|erun_tenant|REFERENCES jobs|erun_tenant|SELECT jobs|erun_tenant|UPDATE platform_rate_limits|erun_operations|INSERT platform_rate_limits|erun_operations|REFERENCES platform_rate_limits|erun_operations|SELECT platform_rate_limits|erun_operations|UPDATE platform_rate_limits|erun_tenant|SELECT releases|erun_operations|DELETE releases|erun_operations|INSERT releases|erun_operations|REFERENCES releases|erun_operations|SELECT releases|erun_operations|UPDATE releases|erun_tenant|DELETE releases|erun_tenant|INSERT releases|erun_tenant|REFERENCES releases|erun_tenant|SELECT releases|erun_tenant|UPDATE retention_runs|erun_operations|INSERT retention_runs|erun_operations|SELECT review_merge_queue|erun_operations|DELETE review_merge_queue|erun_operations|INSERT review_merge_queue|erun_operations|REFERENCES review_merge_queue|erun_operations|SELECT review_merge_queue|erun_operations|UPDATE review_merge_queue|erun_tenant|DELETE review_merge_queue|erun_tenant|INSERT review_merge_queue|erun_tenant|REFERENCES review_merge_queue|erun_tenant|SELECT review_merge_queue|erun_tenant|UPDATE review_reviewers|erun_operations|DELETE review_reviewers|erun_operations|INSERT review_reviewers|erun_operations|REFERENCES review_reviewers|erun_operations|SELECT review_reviewers|erun_operations|UPDATE review_reviewers|erun_tenant|DELETE review_reviewers|erun_tenant|INSERT review_reviewers|erun_tenant|REFERENCES review_reviewers|erun_tenant|SELECT review_reviewers|erun_tenant|UPDATE reviews|erun_operations|DELETE reviews|erun_operations|INSERT reviews|erun_operations|REFERENCES reviews|erun_operations|SELECT reviews|erun_operations|UPDATE reviews|erun_tenant|DELETE reviews|erun_tenant|INSERT reviews|erun_tenant|REFERENCES reviews|erun_tenant|SELECT reviews|erun_tenant|UPDATE role_permissions|erun_operations|DELETE role_permissions|erun_operations|INSERT role_permissions|erun_operations|REFERENCES role_permissions|erun_operations|SELECT role_permissions|erun_operations|UPDATE role_permissions|erun_tenant|DELETE role_permissions|erun_tenant|INSERT role_permissions|erun_tenant|REFERENCES role_permissions|erun_tenant|SELECT role_permissions|erun_tenant|UPDATE roles|erun_operations|DELETE roles|erun_operations|INSERT roles|erun_operations|REFERENCES roles|erun_operations|SELECT roles|erun_operations|UPDATE roles|erun_tenant|DELETE roles|erun_tenant|INSERT roles|erun_tenant|REFERENCES roles|erun_tenant|SELECT roles|erun_tenant|UPDATE tenant_issuers|erun_operations|DELETE tenant_issuers|erun_operations|INSERT tenant_issuers|erun_operations|REFERENCES tenant_issuers|erun_operations|SELECT tenant_issuers|erun_operations|UPDATE tenant_issuers|erun_tenant|SELECT tenant_quotas|erun_operations|DELETE tenant_quotas|erun_operations|INSERT tenant_quotas|erun_operations|REFERENCES tenant_quotas|erun_operations|SELECT tenant_quotas|erun_operations|UPDATE tenant_quotas|erun_tenant|DELETE tenant_quotas|erun_tenant|INSERT tenant_quotas|erun_tenant|REFERENCES tenant_quotas|erun_tenant|SELECT tenant_quotas|erun_tenant|UPDATE tenants|erun_operations|DELETE tenants|erun_operations|INSERT tenants|erun_operations|REFERENCES tenants|erun_operations|SELECT tenants|erun_operations|UPDATE tenants|erun_tenant|SELECT usage_events|erun_operations|INSERT usage_events|erun_operations|REFERENCES usage_events|erun_operations|SELECT usage_events|erun_tenant|INSERT usage_events|erun_tenant|REFERENCES usage_events|erun_tenant|SELECT user_external_ids|erun_operations|DELETE user_external_ids|erun_operations|INSERT user_external_ids|erun_operations|REFERENCES user_external_ids|erun_operations|SELECT user_external_ids|erun_operations|UPDATE user_external_ids|erun_tenant|DELETE user_external_ids|erun_tenant|INSERT user_external_ids|erun_tenant|REFERENCES user_external_ids|erun_tenant|SELECT user_external_ids|erun_tenant|UPDATE user_roles|erun_operations|DELETE user_roles|erun_operations|INSERT user_roles|erun_operations|REFERENCES user_roles|erun_operations|SELECT user_roles|erun_operations|UPDATE user_roles|erun_tenant|DELETE user_roles|erun_tenant|INSERT user_roles|erun_tenant|REFERENCES user_roles|erun_tenant|SELECT user_roles|erun_tenant|UPDATE users|erun_operations|DELETE users|erun_operations|INSERT users|erun_operations|REFERENCES users|erun_operations|SELECT users|erun_operations|UPDATE users|erun_tenant|DELETE users|erun_tenant|INSERT users|erun_tenant|REFERENCES users|erun_tenant|SELECT users|erun_tenant|UPDATE ### COLUMN GRANTS ai_sessions|created_at|erun_operations|INSERT ai_sessions|created_at|erun_operations|REFERENCES ai_sessions|created_at|erun_operations|SELECT ai_sessions|created_at|erun_operations|UPDATE ai_sessions|created_at|erun_tenant|INSERT ai_sessions|created_at|erun_tenant|REFERENCES ai_sessions|created_at|erun_tenant|SELECT ai_sessions|created_at|erun_tenant|UPDATE ai_sessions|environment_id|erun_operations|INSERT ai_sessions|environment_id|erun_operations|REFERENCES ai_sessions|environment_id|erun_operations|SELECT ai_sessions|environment_id|erun_operations|UPDATE ai_sessions|environment_id|erun_tenant|INSERT ai_sessions|environment_id|erun_tenant|REFERENCES ai_sessions|environment_id|erun_tenant|SELECT ai_sessions|environment_id|erun_tenant|UPDATE ai_sessions|event|erun_operations|INSERT ai_sessions|event|erun_operations|REFERENCES ai_sessions|event|erun_operations|SELECT ai_sessions|event|erun_operations|UPDATE ai_sessions|event|erun_tenant|INSERT ai_sessions|event|erun_tenant|REFERENCES ai_sessions|event|erun_tenant|SELECT ai_sessions|event|erun_tenant|UPDATE ai_sessions|exit_code|erun_operations|INSERT ai_sessions|exit_code|erun_operations|REFERENCES ai_sessions|exit_code|erun_operations|SELECT ai_sessions|exit_code|erun_operations|UPDATE ai_sessions|exit_code|erun_tenant|INSERT ai_sessions|exit_code|erun_tenant|REFERENCES ai_sessions|exit_code|erun_tenant|SELECT ai_sessions|exit_code|erun_tenant|UPDATE ai_sessions|exit_reason|erun_operations|INSERT ai_sessions|exit_reason|erun_operations|REFERENCES ai_sessions|exit_reason|erun_operations|SELECT ai_sessions|exit_reason|erun_operations|UPDATE ai_sessions|exit_reason|erun_tenant|INSERT ai_sessions|exit_reason|erun_tenant|REFERENCES ai_sessions|exit_reason|erun_tenant|SELECT ai_sessions|exit_reason|erun_tenant|UPDATE ai_sessions|occurred_at|erun_operations|INSERT ai_sessions|occurred_at|erun_operations|REFERENCES ai_sessions|occurred_at|erun_operations|SELECT ai_sessions|occurred_at|erun_operations|UPDATE ai_sessions|occurred_at|erun_tenant|INSERT ai_sessions|occurred_at|erun_tenant|REFERENCES ai_sessions|occurred_at|erun_tenant|SELECT ai_sessions|occurred_at|erun_tenant|UPDATE ai_sessions|session_id|erun_operations|INSERT ai_sessions|session_id|erun_operations|REFERENCES ai_sessions|session_id|erun_operations|SELECT ai_sessions|session_id|erun_operations|UPDATE ai_sessions|session_id|erun_tenant|INSERT ai_sessions|session_id|erun_tenant|REFERENCES ai_sessions|session_id|erun_tenant|SELECT ai_sessions|session_id|erun_tenant|UPDATE ai_sessions|tenant_id|erun_operations|INSERT ai_sessions|tenant_id|erun_operations|REFERENCES ai_sessions|tenant_id|erun_operations|SELECT ai_sessions|tenant_id|erun_operations|UPDATE ai_sessions|tenant_id|erun_tenant|INSERT ai_sessions|tenant_id|erun_tenant|REFERENCES ai_sessions|tenant_id|erun_tenant|SELECT ai_sessions|tenant_id|erun_tenant|UPDATE ai_sessions|tool|erun_operations|INSERT ai_sessions|tool|erun_operations|REFERENCES ai_sessions|tool|erun_operations|SELECT ai_sessions|tool|erun_operations|UPDATE ai_sessions|tool|erun_tenant|INSERT ai_sessions|tool|erun_tenant|REFERENCES ai_sessions|tool|erun_tenant|SELECT ai_sessions|tool|erun_tenant|UPDATE ai_sessions|updated_at|erun_operations|INSERT ai_sessions|updated_at|erun_operations|REFERENCES ai_sessions|updated_at|erun_operations|SELECT ai_sessions|updated_at|erun_operations|UPDATE ai_sessions|updated_at|erun_tenant|INSERT ai_sessions|updated_at|erun_tenant|REFERENCES ai_sessions|updated_at|erun_tenant|SELECT ai_sessions|updated_at|erun_tenant|UPDATE audit_events|api_method|erun_operations|INSERT audit_events|api_method|erun_operations|REFERENCES audit_events|api_method|erun_operations|SELECT audit_events|api_method|erun_tenant|INSERT audit_events|api_method|erun_tenant|REFERENCES audit_events|api_method|erun_tenant|SELECT audit_events|api_parameters|erun_operations|INSERT audit_events|api_parameters|erun_operations|REFERENCES audit_events|api_parameters|erun_operations|SELECT audit_events|api_parameters|erun_tenant|INSERT audit_events|api_parameters|erun_tenant|REFERENCES audit_events|api_parameters|erun_tenant|SELECT audit_events|api_path|erun_operations|INSERT audit_events|api_path|erun_operations|REFERENCES audit_events|api_path|erun_operations|SELECT audit_events|api_path|erun_tenant|INSERT audit_events|api_path|erun_tenant|REFERENCES audit_events|api_path|erun_tenant|SELECT audit_events|audit_event_id|erun_operations|INSERT audit_events|audit_event_id|erun_operations|REFERENCES audit_events|audit_event_id|erun_operations|SELECT audit_events|audit_event_id|erun_tenant|INSERT audit_events|audit_event_id|erun_tenant|REFERENCES audit_events|audit_event_id|erun_tenant|SELECT audit_events|cli_command|erun_operations|INSERT audit_events|cli_command|erun_operations|REFERENCES audit_events|cli_command|erun_operations|SELECT audit_events|cli_command|erun_tenant|INSERT audit_events|cli_command|erun_tenant|REFERENCES audit_events|cli_command|erun_tenant|SELECT audit_events|cli_parameters|erun_operations|INSERT audit_events|cli_parameters|erun_operations|REFERENCES audit_events|cli_parameters|erun_operations|SELECT audit_events|cli_parameters|erun_tenant|INSERT audit_events|cli_parameters|erun_tenant|REFERENCES audit_events|cli_parameters|erun_tenant|SELECT audit_events|created_at|erun_operations|INSERT audit_events|created_at|erun_operations|REFERENCES audit_events|created_at|erun_operations|SELECT audit_events|created_at|erun_tenant|INSERT audit_events|created_at|erun_tenant|REFERENCES audit_events|created_at|erun_tenant|SELECT audit_events|erun_user_id|erun_operations|INSERT audit_events|erun_user_id|erun_operations|REFERENCES audit_events|erun_user_id|erun_operations|SELECT audit_events|erun_user_id|erun_tenant|INSERT audit_events|erun_user_id|erun_tenant|REFERENCES audit_events|erun_user_id|erun_tenant|SELECT audit_events|external_issuer_id|erun_operations|INSERT audit_events|external_issuer_id|erun_operations|REFERENCES audit_events|external_issuer_id|erun_operations|SELECT audit_events|external_issuer_id|erun_tenant|INSERT audit_events|external_issuer_id|erun_tenant|REFERENCES audit_events|external_issuer_id|erun_tenant|SELECT audit_events|external_org_id|erun_operations|INSERT audit_events|external_org_id|erun_operations|REFERENCES audit_events|external_org_id|erun_operations|SELECT audit_events|external_org_id|erun_tenant|INSERT audit_events|external_org_id|erun_tenant|REFERENCES audit_events|external_org_id|erun_tenant|SELECT audit_events|external_user_id|erun_operations|INSERT audit_events|external_user_id|erun_operations|REFERENCES audit_events|external_user_id|erun_operations|SELECT audit_events|external_user_id|erun_tenant|INSERT audit_events|external_user_id|erun_tenant|REFERENCES audit_events|external_user_id|erun_tenant|SELECT audit_events|mcp_tool|erun_operations|INSERT audit_events|mcp_tool|erun_operations|REFERENCES audit_events|mcp_tool|erun_operations|SELECT audit_events|mcp_tool|erun_tenant|INSERT audit_events|mcp_tool|erun_tenant|REFERENCES audit_events|mcp_tool|erun_tenant|SELECT audit_events|mcp_tool_parameters|erun_operations|INSERT audit_events|mcp_tool_parameters|erun_operations|REFERENCES audit_events|mcp_tool_parameters|erun_operations|SELECT audit_events|mcp_tool_parameters|erun_tenant|INSERT audit_events|mcp_tool_parameters|erun_tenant|REFERENCES audit_events|mcp_tool_parameters|erun_tenant|SELECT audit_events|tenant_id|erun_operations|INSERT audit_events|tenant_id|erun_operations|REFERENCES audit_events|tenant_id|erun_operations|SELECT audit_events|tenant_id|erun_tenant|INSERT audit_events|tenant_id|erun_tenant|REFERENCES audit_events|tenant_id|erun_tenant|SELECT audit_events|type|erun_operations|INSERT audit_events|type|erun_operations|REFERENCES audit_events|type|erun_operations|SELECT audit_events|type|erun_tenant|INSERT audit_events|type|erun_tenant|REFERENCES audit_events|type|erun_tenant|SELECT builds|build_id|erun_operations|INSERT builds|build_id|erun_operations|REFERENCES builds|build_id|erun_operations|SELECT builds|build_id|erun_operations|UPDATE builds|build_id|erun_tenant|INSERT builds|build_id|erun_tenant|REFERENCES builds|build_id|erun_tenant|SELECT builds|build_id|erun_tenant|UPDATE builds|commit_id|erun_operations|INSERT builds|commit_id|erun_operations|REFERENCES builds|commit_id|erun_operations|SELECT builds|commit_id|erun_operations|UPDATE builds|commit_id|erun_tenant|INSERT builds|commit_id|erun_tenant|REFERENCES builds|commit_id|erun_tenant|SELECT builds|commit_id|erun_tenant|UPDATE builds|created_at|erun_operations|INSERT builds|created_at|erun_operations|REFERENCES builds|created_at|erun_operations|SELECT builds|created_at|erun_operations|UPDATE builds|created_at|erun_tenant|INSERT builds|created_at|erun_tenant|REFERENCES builds|created_at|erun_tenant|SELECT builds|created_at|erun_tenant|UPDATE builds|environment_id|erun_operations|INSERT builds|environment_id|erun_operations|REFERENCES builds|environment_id|erun_operations|SELECT builds|environment_id|erun_operations|UPDATE builds|environment_id|erun_tenant|INSERT builds|environment_id|erun_tenant|REFERENCES builds|environment_id|erun_tenant|SELECT builds|environment_id|erun_tenant|UPDATE builds|failure_detail|erun_operations|INSERT builds|failure_detail|erun_operations|REFERENCES builds|failure_detail|erun_operations|SELECT builds|failure_detail|erun_operations|UPDATE builds|failure_detail|erun_tenant|INSERT builds|failure_detail|erun_tenant|REFERENCES builds|failure_detail|erun_tenant|SELECT builds|failure_detail|erun_tenant|UPDATE builds|kind|erun_operations|INSERT builds|kind|erun_operations|REFERENCES builds|kind|erun_operations|SELECT builds|kind|erun_operations|UPDATE builds|kind|erun_tenant|INSERT builds|kind|erun_tenant|REFERENCES builds|kind|erun_tenant|SELECT builds|kind|erun_tenant|UPDATE builds|profile|erun_operations|INSERT builds|profile|erun_operations|REFERENCES builds|profile|erun_operations|SELECT builds|profile|erun_operations|UPDATE builds|profile|erun_tenant|INSERT builds|profile|erun_tenant|REFERENCES builds|profile|erun_tenant|SELECT builds|profile|erun_tenant|UPDATE builds|review_id|erun_operations|INSERT builds|review_id|erun_operations|REFERENCES builds|review_id|erun_operations|SELECT builds|review_id|erun_operations|UPDATE builds|review_id|erun_tenant|INSERT builds|review_id|erun_tenant|REFERENCES builds|review_id|erun_tenant|SELECT builds|review_id|erun_tenant|UPDATE builds|successful|erun_operations|INSERT builds|successful|erun_operations|REFERENCES builds|successful|erun_operations|SELECT builds|successful|erun_operations|UPDATE builds|successful|erun_tenant|INSERT builds|successful|erun_tenant|REFERENCES builds|successful|erun_tenant|SELECT builds|successful|erun_tenant|UPDATE builds|tenant_id|erun_operations|INSERT builds|tenant_id|erun_operations|REFERENCES builds|tenant_id|erun_operations|SELECT builds|tenant_id|erun_operations|UPDATE builds|tenant_id|erun_tenant|INSERT builds|tenant_id|erun_tenant|REFERENCES builds|tenant_id|erun_tenant|SELECT builds|tenant_id|erun_tenant|UPDATE builds|updated_at|erun_operations|INSERT builds|updated_at|erun_operations|REFERENCES builds|updated_at|erun_operations|SELECT builds|updated_at|erun_operations|UPDATE builds|updated_at|erun_tenant|INSERT builds|updated_at|erun_tenant|REFERENCES builds|updated_at|erun_tenant|SELECT builds|updated_at|erun_tenant|UPDATE builds|version|erun_operations|INSERT builds|version|erun_operations|REFERENCES builds|version|erun_operations|SELECT builds|version|erun_operations|UPDATE builds|version|erun_tenant|INSERT builds|version|erun_tenant|REFERENCES builds|version|erun_tenant|SELECT builds|version|erun_tenant|UPDATE cloud_provider_aliases|alias|erun_operations|INSERT cloud_provider_aliases|alias|erun_operations|REFERENCES cloud_provider_aliases|alias|erun_operations|SELECT cloud_provider_aliases|alias|erun_operations|UPDATE cloud_provider_aliases|alias|erun_tenant|INSERT cloud_provider_aliases|alias|erun_tenant|REFERENCES cloud_provider_aliases|alias|erun_tenant|SELECT cloud_provider_aliases|alias|erun_tenant|UPDATE cloud_provider_aliases|cloud_provider_alias_id|erun_operations|INSERT cloud_provider_aliases|cloud_provider_alias_id|erun_operations|REFERENCES cloud_provider_aliases|cloud_provider_alias_id|erun_operations|SELECT cloud_provider_aliases|cloud_provider_alias_id|erun_operations|UPDATE cloud_provider_aliases|cloud_provider_alias_id|erun_tenant|INSERT cloud_provider_aliases|cloud_provider_alias_id|erun_tenant|REFERENCES cloud_provider_aliases|cloud_provider_alias_id|erun_tenant|SELECT cloud_provider_aliases|cloud_provider_alias_id|erun_tenant|UPDATE cloud_provider_aliases|created_at|erun_operations|INSERT cloud_provider_aliases|created_at|erun_operations|REFERENCES cloud_provider_aliases|created_at|erun_operations|SELECT cloud_provider_aliases|created_at|erun_operations|UPDATE cloud_provider_aliases|created_at|erun_tenant|INSERT cloud_provider_aliases|created_at|erun_tenant|REFERENCES cloud_provider_aliases|created_at|erun_tenant|SELECT cloud_provider_aliases|created_at|erun_tenant|UPDATE cloud_provider_aliases|credentials_encrypted|erun_operations|INSERT cloud_provider_aliases|credentials_encrypted|erun_operations|REFERENCES cloud_provider_aliases|credentials_encrypted|erun_operations|SELECT cloud_provider_aliases|credentials_encrypted|erun_operations|UPDATE cloud_provider_aliases|credentials_encrypted|erun_tenant|INSERT cloud_provider_aliases|credentials_encrypted|erun_tenant|REFERENCES cloud_provider_aliases|credentials_encrypted|erun_tenant|SELECT cloud_provider_aliases|credentials_encrypted|erun_tenant|UPDATE cloud_provider_aliases|provider|erun_operations|INSERT cloud_provider_aliases|provider|erun_operations|REFERENCES cloud_provider_aliases|provider|erun_operations|SELECT cloud_provider_aliases|provider|erun_operations|UPDATE cloud_provider_aliases|provider|erun_tenant|INSERT cloud_provider_aliases|provider|erun_tenant|REFERENCES cloud_provider_aliases|provider|erun_tenant|SELECT cloud_provider_aliases|provider|erun_tenant|UPDATE cloud_provider_aliases|tenant_id|erun_operations|INSERT cloud_provider_aliases|tenant_id|erun_operations|REFERENCES cloud_provider_aliases|tenant_id|erun_operations|SELECT cloud_provider_aliases|tenant_id|erun_operations|UPDATE cloud_provider_aliases|tenant_id|erun_tenant|INSERT cloud_provider_aliases|tenant_id|erun_tenant|REFERENCES cloud_provider_aliases|tenant_id|erun_tenant|SELECT cloud_provider_aliases|tenant_id|erun_tenant|UPDATE cloud_provider_aliases|updated_at|erun_operations|INSERT cloud_provider_aliases|updated_at|erun_operations|REFERENCES cloud_provider_aliases|updated_at|erun_operations|SELECT cloud_provider_aliases|updated_at|erun_operations|UPDATE cloud_provider_aliases|updated_at|erun_tenant|INSERT cloud_provider_aliases|updated_at|erun_tenant|REFERENCES cloud_provider_aliases|updated_at|erun_tenant|SELECT cloud_provider_aliases|updated_at|erun_tenant|UPDATE comments|body|erun_operations|INSERT comments|body|erun_operations|REFERENCES comments|body|erun_operations|SELECT comments|body|erun_operations|UPDATE comments|body|erun_tenant|INSERT comments|body|erun_tenant|REFERENCES comments|body|erun_tenant|SELECT comments|body|erun_tenant|UPDATE comments|comment_id|erun_operations|INSERT comments|comment_id|erun_operations|REFERENCES comments|comment_id|erun_operations|SELECT comments|comment_id|erun_operations|UPDATE comments|comment_id|erun_tenant|INSERT comments|comment_id|erun_tenant|REFERENCES comments|comment_id|erun_tenant|SELECT comments|comment_id|erun_tenant|UPDATE comments|commit_id|erun_operations|INSERT comments|commit_id|erun_operations|REFERENCES comments|commit_id|erun_operations|SELECT comments|commit_id|erun_operations|UPDATE comments|commit_id|erun_tenant|INSERT comments|commit_id|erun_tenant|REFERENCES comments|commit_id|erun_tenant|SELECT comments|commit_id|erun_tenant|UPDATE comments|created_at|erun_operations|INSERT comments|created_at|erun_operations|REFERENCES comments|created_at|erun_operations|SELECT comments|created_at|erun_operations|UPDATE comments|created_at|erun_tenant|INSERT comments|created_at|erun_tenant|REFERENCES comments|created_at|erun_tenant|SELECT comments|created_at|erun_tenant|UPDATE comments|creator_user_id|erun_operations|INSERT comments|creator_user_id|erun_operations|REFERENCES comments|creator_user_id|erun_operations|SELECT comments|creator_user_id|erun_operations|UPDATE comments|creator_user_id|erun_tenant|INSERT comments|creator_user_id|erun_tenant|REFERENCES comments|creator_user_id|erun_tenant|SELECT comments|creator_user_id|erun_tenant|UPDATE comments|file_path|erun_operations|INSERT comments|file_path|erun_operations|REFERENCES comments|file_path|erun_operations|SELECT comments|file_path|erun_operations|UPDATE comments|file_path|erun_tenant|INSERT comments|file_path|erun_tenant|REFERENCES comments|file_path|erun_tenant|SELECT comments|file_path|erun_tenant|UPDATE comments|line|erun_operations|INSERT comments|line|erun_operations|REFERENCES comments|line|erun_operations|SELECT comments|line|erun_operations|UPDATE comments|line|erun_tenant|INSERT comments|line|erun_tenant|REFERENCES comments|line|erun_tenant|SELECT comments|line|erun_tenant|UPDATE comments|parent_comment_id|erun_operations|INSERT comments|parent_comment_id|erun_operations|REFERENCES comments|parent_comment_id|erun_operations|SELECT comments|parent_comment_id|erun_operations|UPDATE comments|parent_comment_id|erun_tenant|INSERT comments|parent_comment_id|erun_tenant|REFERENCES comments|parent_comment_id|erun_tenant|SELECT comments|parent_comment_id|erun_tenant|UPDATE comments|review_id|erun_operations|INSERT comments|review_id|erun_operations|REFERENCES comments|review_id|erun_operations|SELECT comments|review_id|erun_operations|UPDATE comments|review_id|erun_tenant|INSERT comments|review_id|erun_tenant|REFERENCES comments|review_id|erun_tenant|SELECT comments|review_id|erun_tenant|UPDATE comments|status|erun_operations|INSERT comments|status|erun_operations|REFERENCES comments|status|erun_operations|SELECT comments|status|erun_operations|UPDATE comments|status|erun_tenant|INSERT comments|status|erun_tenant|REFERENCES comments|status|erun_tenant|SELECT comments|status|erun_tenant|UPDATE comments|tenant_id|erun_operations|INSERT comments|tenant_id|erun_operations|REFERENCES comments|tenant_id|erun_operations|SELECT comments|tenant_id|erun_operations|UPDATE comments|tenant_id|erun_tenant|INSERT comments|tenant_id|erun_tenant|REFERENCES comments|tenant_id|erun_tenant|SELECT comments|tenant_id|erun_tenant|UPDATE comments|updated_at|erun_operations|INSERT comments|updated_at|erun_operations|REFERENCES comments|updated_at|erun_operations|SELECT comments|updated_at|erun_operations|UPDATE comments|updated_at|erun_tenant|INSERT comments|updated_at|erun_tenant|REFERENCES comments|updated_at|erun_tenant|SELECT comments|updated_at|erun_tenant|UPDATE context_credentials|context_credential_id|erun_operations|INSERT context_credentials|context_credential_id|erun_operations|REFERENCES context_credentials|context_credential_id|erun_operations|SELECT context_credentials|context_credential_id|erun_operations|UPDATE context_credentials|context_credential_id|erun_tenant|INSERT context_credentials|context_credential_id|erun_tenant|REFERENCES context_credentials|context_credential_id|erun_tenant|SELECT context_credentials|context_credential_id|erun_tenant|UPDATE context_credentials|context_id|erun_operations|INSERT context_credentials|context_id|erun_operations|REFERENCES context_credentials|context_id|erun_operations|SELECT context_credentials|context_id|erun_operations|UPDATE context_credentials|context_id|erun_tenant|INSERT context_credentials|context_id|erun_tenant|REFERENCES context_credentials|context_id|erun_tenant|SELECT context_credentials|context_id|erun_tenant|UPDATE context_credentials|created_at|erun_operations|INSERT context_credentials|created_at|erun_operations|REFERENCES context_credentials|created_at|erun_operations|SELECT context_credentials|created_at|erun_operations|UPDATE context_credentials|created_at|erun_tenant|INSERT context_credentials|created_at|erun_tenant|REFERENCES context_credentials|created_at|erun_tenant|SELECT context_credentials|created_at|erun_tenant|UPDATE context_credentials|k3s_admin_token_encrypted|erun_operations|INSERT context_credentials|k3s_admin_token_encrypted|erun_operations|REFERENCES context_credentials|k3s_admin_token_encrypted|erun_operations|SELECT context_credentials|k3s_admin_token_encrypted|erun_operations|UPDATE context_credentials|k3s_admin_token_encrypted|erun_tenant|INSERT context_credentials|k3s_admin_token_encrypted|erun_tenant|REFERENCES context_credentials|k3s_admin_token_encrypted|erun_tenant|SELECT context_credentials|k3s_admin_token_encrypted|erun_tenant|UPDATE context_credentials|tenant_id|erun_operations|INSERT context_credentials|tenant_id|erun_operations|REFERENCES context_credentials|tenant_id|erun_operations|SELECT context_credentials|tenant_id|erun_operations|UPDATE context_credentials|tenant_id|erun_tenant|INSERT context_credentials|tenant_id|erun_tenant|REFERENCES context_credentials|tenant_id|erun_tenant|SELECT context_credentials|tenant_id|erun_tenant|UPDATE context_credentials|updated_at|erun_operations|INSERT context_credentials|updated_at|erun_operations|REFERENCES context_credentials|updated_at|erun_operations|SELECT context_credentials|updated_at|erun_operations|UPDATE context_credentials|updated_at|erun_tenant|INSERT context_credentials|updated_at|erun_tenant|REFERENCES context_credentials|updated_at|erun_tenant|SELECT context_credentials|updated_at|erun_tenant|UPDATE contexts|cloud_provider_alias|erun_operations|INSERT contexts|cloud_provider_alias|erun_operations|REFERENCES contexts|cloud_provider_alias|erun_operations|SELECT contexts|cloud_provider_alias|erun_operations|UPDATE contexts|cloud_provider_alias|erun_tenant|INSERT contexts|cloud_provider_alias|erun_tenant|REFERENCES contexts|cloud_provider_alias|erun_tenant|SELECT contexts|cloud_provider_alias|erun_tenant|UPDATE contexts|context_id|erun_operations|INSERT contexts|context_id|erun_operations|REFERENCES contexts|context_id|erun_operations|SELECT contexts|context_id|erun_operations|UPDATE contexts|context_id|erun_tenant|INSERT contexts|context_id|erun_tenant|REFERENCES contexts|context_id|erun_tenant|SELECT contexts|context_id|erun_tenant|UPDATE contexts|created_at|erun_operations|INSERT contexts|created_at|erun_operations|REFERENCES contexts|created_at|erun_operations|SELECT contexts|created_at|erun_operations|UPDATE contexts|created_at|erun_tenant|INSERT contexts|created_at|erun_tenant|REFERENCES contexts|created_at|erun_tenant|SELECT contexts|created_at|erun_tenant|UPDATE contexts|disk_size_gb|erun_operations|INSERT contexts|disk_size_gb|erun_operations|REFERENCES contexts|disk_size_gb|erun_operations|SELECT contexts|disk_size_gb|erun_operations|UPDATE contexts|disk_size_gb|erun_tenant|INSERT contexts|disk_size_gb|erun_tenant|REFERENCES contexts|disk_size_gb|erun_tenant|SELECT contexts|disk_size_gb|erun_tenant|UPDATE contexts|disk_type|erun_operations|INSERT contexts|disk_type|erun_operations|REFERENCES contexts|disk_type|erun_operations|SELECT contexts|disk_type|erun_operations|UPDATE contexts|disk_type|erun_tenant|INSERT contexts|disk_type|erun_tenant|REFERENCES contexts|disk_type|erun_tenant|SELECT contexts|disk_type|erun_tenant|UPDATE contexts|instance_id|erun_operations|INSERT contexts|instance_id|erun_operations|REFERENCES contexts|instance_id|erun_operations|SELECT contexts|instance_id|erun_operations|UPDATE contexts|instance_id|erun_tenant|INSERT contexts|instance_id|erun_tenant|REFERENCES contexts|instance_id|erun_tenant|SELECT contexts|instance_id|erun_tenant|UPDATE contexts|instance_type|erun_operations|INSERT contexts|instance_type|erun_operations|REFERENCES contexts|instance_type|erun_operations|SELECT contexts|instance_type|erun_operations|UPDATE contexts|instance_type|erun_tenant|INSERT contexts|instance_type|erun_tenant|REFERENCES contexts|instance_type|erun_tenant|SELECT contexts|instance_type|erun_tenant|UPDATE contexts|kubernetes_context|erun_operations|INSERT contexts|kubernetes_context|erun_operations|REFERENCES contexts|kubernetes_context|erun_operations|SELECT contexts|kubernetes_context|erun_operations|UPDATE contexts|kubernetes_context|erun_tenant|INSERT contexts|kubernetes_context|erun_tenant|REFERENCES contexts|kubernetes_context|erun_tenant|SELECT contexts|kubernetes_context|erun_tenant|UPDATE contexts|max_environments|erun_operations|INSERT contexts|max_environments|erun_operations|REFERENCES contexts|max_environments|erun_operations|SELECT contexts|max_environments|erun_operations|UPDATE contexts|max_environments|erun_tenant|INSERT contexts|max_environments|erun_tenant|REFERENCES contexts|max_environments|erun_tenant|SELECT contexts|max_environments|erun_tenant|UPDATE contexts|name|erun_operations|INSERT contexts|name|erun_operations|REFERENCES contexts|name|erun_operations|SELECT contexts|name|erun_operations|UPDATE contexts|name|erun_tenant|INSERT contexts|name|erun_tenant|REFERENCES contexts|name|erun_tenant|SELECT contexts|name|erun_tenant|UPDATE contexts|provider|erun_operations|INSERT contexts|provider|erun_operations|REFERENCES contexts|provider|erun_operations|SELECT contexts|provider|erun_operations|UPDATE contexts|provider|erun_tenant|INSERT contexts|provider|erun_tenant|REFERENCES contexts|provider|erun_tenant|SELECT contexts|provider|erun_tenant|UPDATE contexts|provision_error|erun_operations|INSERT contexts|provision_error|erun_operations|REFERENCES contexts|provision_error|erun_operations|SELECT contexts|provision_error|erun_operations|UPDATE contexts|provision_error|erun_tenant|INSERT contexts|provision_error|erun_tenant|REFERENCES contexts|provision_error|erun_tenant|SELECT contexts|provision_error|erun_tenant|UPDATE contexts|public_ip|erun_operations|INSERT contexts|public_ip|erun_operations|REFERENCES contexts|public_ip|erun_operations|SELECT contexts|public_ip|erun_operations|UPDATE contexts|public_ip|erun_tenant|INSERT contexts|public_ip|erun_tenant|REFERENCES contexts|public_ip|erun_tenant|SELECT contexts|public_ip|erun_tenant|UPDATE contexts|region|erun_operations|INSERT contexts|region|erun_operations|REFERENCES contexts|region|erun_operations|SELECT contexts|region|erun_operations|UPDATE contexts|region|erun_tenant|INSERT contexts|region|erun_tenant|REFERENCES contexts|region|erun_tenant|SELECT contexts|region|erun_tenant|UPDATE contexts|status|erun_operations|INSERT contexts|status|erun_operations|REFERENCES contexts|status|erun_operations|SELECT contexts|status|erun_operations|UPDATE contexts|status|erun_tenant|INSERT contexts|status|erun_tenant|REFERENCES contexts|status|erun_tenant|SELECT contexts|status|erun_tenant|UPDATE contexts|tenant_id|erun_operations|INSERT contexts|tenant_id|erun_operations|REFERENCES contexts|tenant_id|erun_operations|SELECT contexts|tenant_id|erun_operations|UPDATE contexts|tenant_id|erun_tenant|INSERT contexts|tenant_id|erun_tenant|REFERENCES contexts|tenant_id|erun_tenant|SELECT contexts|tenant_id|erun_tenant|UPDATE contexts|updated_at|erun_operations|INSERT contexts|updated_at|erun_operations|REFERENCES contexts|updated_at|erun_operations|SELECT contexts|updated_at|erun_operations|UPDATE contexts|updated_at|erun_tenant|INSERT contexts|updated_at|erun_tenant|REFERENCES contexts|updated_at|erun_tenant|SELECT contexts|updated_at|erun_tenant|UPDATE environment_definitions|created_at|erun_operations|INSERT environment_definitions|created_at|erun_operations|REFERENCES environment_definitions|created_at|erun_operations|SELECT environment_definitions|created_at|erun_operations|UPDATE environment_definitions|created_at|erun_tenant|INSERT environment_definitions|created_at|erun_tenant|REFERENCES environment_definitions|created_at|erun_tenant|SELECT environment_definitions|created_at|erun_tenant|UPDATE environment_definitions|definition|erun_operations|INSERT environment_definitions|definition|erun_operations|REFERENCES environment_definitions|definition|erun_operations|SELECT environment_definitions|definition|erun_operations|UPDATE environment_definitions|definition|erun_tenant|INSERT environment_definitions|definition|erun_tenant|REFERENCES environment_definitions|definition|erun_tenant|SELECT environment_definitions|definition|erun_tenant|UPDATE environment_definitions|environment_id|erun_operations|INSERT environment_definitions|environment_id|erun_operations|REFERENCES environment_definitions|environment_id|erun_operations|SELECT environment_definitions|environment_id|erun_operations|UPDATE environment_definitions|environment_id|erun_tenant|INSERT environment_definitions|environment_id|erun_tenant|REFERENCES environment_definitions|environment_id|erun_tenant|SELECT environment_definitions|environment_id|erun_tenant|UPDATE environment_definitions|revision|erun_operations|INSERT environment_definitions|revision|erun_operations|REFERENCES environment_definitions|revision|erun_operations|SELECT environment_definitions|revision|erun_operations|UPDATE environment_definitions|revision|erun_tenant|INSERT environment_definitions|revision|erun_tenant|REFERENCES environment_definitions|revision|erun_tenant|SELECT environment_definitions|revision|erun_tenant|UPDATE environment_definitions|tenant_id|erun_operations|INSERT environment_definitions|tenant_id|erun_operations|REFERENCES environment_definitions|tenant_id|erun_operations|SELECT environment_definitions|tenant_id|erun_operations|UPDATE environment_definitions|tenant_id|erun_tenant|INSERT environment_definitions|tenant_id|erun_tenant|REFERENCES environment_definitions|tenant_id|erun_tenant|SELECT environment_definitions|tenant_id|erun_tenant|UPDATE environment_definitions|updated_at|erun_operations|INSERT environment_definitions|updated_at|erun_operations|REFERENCES environment_definitions|updated_at|erun_operations|SELECT environment_definitions|updated_at|erun_operations|UPDATE environment_definitions|updated_at|erun_tenant|INSERT environment_definitions|updated_at|erun_tenant|REFERENCES environment_definitions|updated_at|erun_tenant|SELECT environment_definitions|updated_at|erun_tenant|UPDATE environment_definitions|written_by_user_id|erun_operations|INSERT environment_definitions|written_by_user_id|erun_operations|REFERENCES environment_definitions|written_by_user_id|erun_operations|SELECT environment_definitions|written_by_user_id|erun_operations|UPDATE environment_definitions|written_by_user_id|erun_tenant|INSERT environment_definitions|written_by_user_id|erun_tenant|REFERENCES environment_definitions|written_by_user_id|erun_tenant|SELECT environment_definitions|written_by_user_id|erun_tenant|UPDATE environment_events|created_at|erun_operations|INSERT environment_events|created_at|erun_operations|REFERENCES environment_events|created_at|erun_operations|SELECT environment_events|created_at|erun_operations|UPDATE environment_events|created_at|erun_tenant|INSERT environment_events|created_at|erun_tenant|REFERENCES environment_events|created_at|erun_tenant|SELECT environment_events|created_at|erun_tenant|UPDATE environment_events|detail|erun_operations|INSERT environment_events|detail|erun_operations|REFERENCES environment_events|detail|erun_operations|SELECT environment_events|detail|erun_operations|UPDATE environment_events|detail|erun_tenant|INSERT environment_events|detail|erun_tenant|REFERENCES environment_events|detail|erun_tenant|SELECT environment_events|detail|erun_tenant|UPDATE environment_events|environment_event_id|erun_operations|INSERT environment_events|environment_event_id|erun_operations|REFERENCES environment_events|environment_event_id|erun_operations|SELECT environment_events|environment_event_id|erun_operations|UPDATE environment_events|environment_event_id|erun_tenant|INSERT environment_events|environment_event_id|erun_tenant|REFERENCES environment_events|environment_event_id|erun_tenant|SELECT environment_events|environment_event_id|erun_tenant|UPDATE environment_events|environment_event_seq|erun_operations|INSERT environment_events|environment_event_seq|erun_operations|REFERENCES environment_events|environment_event_seq|erun_operations|SELECT environment_events|environment_event_seq|erun_operations|UPDATE environment_events|environment_event_seq|erun_tenant|INSERT environment_events|environment_event_seq|erun_tenant|REFERENCES environment_events|environment_event_seq|erun_tenant|SELECT environment_events|environment_event_seq|erun_tenant|UPDATE environment_events|environment_id|erun_operations|INSERT environment_events|environment_id|erun_operations|REFERENCES environment_events|environment_id|erun_operations|SELECT environment_events|environment_id|erun_operations|UPDATE environment_events|environment_id|erun_tenant|INSERT environment_events|environment_id|erun_tenant|REFERENCES environment_events|environment_id|erun_tenant|SELECT environment_events|environment_id|erun_tenant|UPDATE environment_events|kind|erun_operations|INSERT environment_events|kind|erun_operations|REFERENCES environment_events|kind|erun_operations|SELECT environment_events|kind|erun_operations|UPDATE environment_events|kind|erun_tenant|INSERT environment_events|kind|erun_tenant|REFERENCES environment_events|kind|erun_tenant|SELECT environment_events|kind|erun_tenant|UPDATE environment_events|occurred_at|erun_operations|INSERT environment_events|occurred_at|erun_operations|REFERENCES environment_events|occurred_at|erun_operations|SELECT environment_events|occurred_at|erun_operations|UPDATE environment_events|occurred_at|erun_tenant|INSERT environment_events|occurred_at|erun_tenant|REFERENCES environment_events|occurred_at|erun_tenant|SELECT environment_events|occurred_at|erun_tenant|UPDATE environment_events|tenant_id|erun_operations|INSERT environment_events|tenant_id|erun_operations|REFERENCES environment_events|tenant_id|erun_operations|SELECT environment_events|tenant_id|erun_operations|UPDATE environment_events|tenant_id|erun_tenant|INSERT environment_events|tenant_id|erun_tenant|REFERENCES environment_events|tenant_id|erun_tenant|SELECT environment_events|tenant_id|erun_tenant|UPDATE environment_events|updated_at|erun_operations|INSERT environment_events|updated_at|erun_operations|REFERENCES environment_events|updated_at|erun_operations|SELECT environment_events|updated_at|erun_operations|UPDATE environment_events|updated_at|erun_tenant|INSERT environment_events|updated_at|erun_tenant|REFERENCES environment_events|updated_at|erun_tenant|SELECT environment_events|updated_at|erun_tenant|UPDATE environments|context_id|erun_operations|INSERT environments|context_id|erun_operations|REFERENCES environments|context_id|erun_operations|SELECT environments|context_id|erun_operations|UPDATE environments|context_id|erun_tenant|INSERT environments|context_id|erun_tenant|REFERENCES environments|context_id|erun_tenant|SELECT environments|context_id|erun_tenant|UPDATE environments|created_at|erun_operations|INSERT environments|created_at|erun_operations|REFERENCES environments|created_at|erun_operations|SELECT environments|created_at|erun_operations|UPDATE environments|created_at|erun_tenant|INSERT environments|created_at|erun_tenant|REFERENCES environments|created_at|erun_tenant|SELECT environments|created_at|erun_tenant|UPDATE environments|delete_attempts|erun_operations|INSERT environments|delete_attempts|erun_operations|REFERENCES environments|delete_attempts|erun_operations|SELECT environments|delete_attempts|erun_operations|UPDATE environments|delete_attempts|erun_tenant|INSERT environments|delete_attempts|erun_tenant|REFERENCES environments|delete_attempts|erun_tenant|SELECT environments|delete_attempts|erun_tenant|UPDATE environments|delete_error|erun_operations|INSERT environments|delete_error|erun_operations|REFERENCES environments|delete_error|erun_operations|SELECT environments|delete_error|erun_operations|UPDATE environments|delete_error|erun_tenant|INSERT environments|delete_error|erun_tenant|REFERENCES environments|delete_error|erun_tenant|SELECT environments|delete_error|erun_tenant|UPDATE environments|deployed_version|erun_operations|INSERT environments|deployed_version|erun_operations|REFERENCES environments|deployed_version|erun_operations|SELECT environments|deployed_version|erun_operations|UPDATE environments|deployed_version|erun_tenant|INSERT environments|deployed_version|erun_tenant|REFERENCES environments|deployed_version|erun_tenant|SELECT environments|deployed_version|erun_tenant|UPDATE environments|environment_id|erun_operations|INSERT environments|environment_id|erun_operations|REFERENCES environments|environment_id|erun_operations|SELECT environments|environment_id|erun_operations|UPDATE environments|environment_id|erun_tenant|INSERT environments|environment_id|erun_tenant|REFERENCES environments|environment_id|erun_tenant|SELECT environments|environment_id|erun_tenant|UPDATE environments|expose_error|erun_operations|INSERT environments|expose_error|erun_operations|REFERENCES environments|expose_error|erun_operations|SELECT environments|expose_error|erun_operations|UPDATE environments|expose_error|erun_tenant|INSERT environments|expose_error|erun_tenant|REFERENCES environments|expose_error|erun_tenant|SELECT environments|expose_error|erun_tenant|UPDATE environments|exposed_hostname|erun_operations|INSERT environments|exposed_hostname|erun_operations|REFERENCES environments|exposed_hostname|erun_operations|SELECT environments|exposed_hostname|erun_operations|UPDATE environments|exposed_hostname|erun_tenant|INSERT environments|exposed_hostname|erun_tenant|REFERENCES environments|exposed_hostname|erun_tenant|SELECT environments|exposed_hostname|erun_tenant|UPDATE environments|kubernetes_context|erun_operations|INSERT environments|kubernetes_context|erun_operations|REFERENCES environments|kubernetes_context|erun_operations|SELECT environments|kubernetes_context|erun_operations|UPDATE environments|kubernetes_context|erun_tenant|INSERT environments|kubernetes_context|erun_tenant|REFERENCES environments|kubernetes_context|erun_tenant|SELECT environments|kubernetes_context|erun_tenant|UPDATE environments|name|erun_operations|INSERT environments|name|erun_operations|REFERENCES environments|name|erun_operations|SELECT environments|name|erun_operations|UPDATE environments|name|erun_tenant|INSERT environments|name|erun_tenant|REFERENCES environments|name|erun_tenant|SELECT environments|name|erun_tenant|UPDATE environments|provision_error|erun_operations|INSERT environments|provision_error|erun_operations|REFERENCES environments|provision_error|erun_operations|SELECT environments|provision_error|erun_operations|UPDATE environments|provision_error|erun_tenant|INSERT environments|provision_error|erun_tenant|REFERENCES environments|provision_error|erun_tenant|SELECT environments|provision_error|erun_tenant|UPDATE environments|runtime_version|erun_operations|INSERT environments|runtime_version|erun_operations|REFERENCES environments|runtime_version|erun_operations|SELECT environments|runtime_version|erun_operations|UPDATE environments|runtime_version|erun_tenant|INSERT environments|runtime_version|erun_tenant|REFERENCES environments|runtime_version|erun_tenant|SELECT environments|runtime_version|erun_tenant|UPDATE environments|status|erun_operations|INSERT environments|status|erun_operations|REFERENCES environments|status|erun_operations|SELECT environments|status|erun_operations|UPDATE environments|status|erun_tenant|INSERT environments|status|erun_tenant|REFERENCES environments|status|erun_tenant|SELECT environments|status|erun_tenant|UPDATE environments|tenant_id|erun_operations|INSERT environments|tenant_id|erun_operations|REFERENCES environments|tenant_id|erun_operations|SELECT environments|tenant_id|erun_operations|UPDATE environments|tenant_id|erun_tenant|INSERT environments|tenant_id|erun_tenant|REFERENCES environments|tenant_id|erun_tenant|SELECT environments|tenant_id|erun_tenant|UPDATE environments|type|erun_operations|INSERT environments|type|erun_operations|REFERENCES environments|type|erun_operations|SELECT environments|type|erun_operations|UPDATE environments|type|erun_tenant|INSERT environments|type|erun_tenant|REFERENCES environments|type|erun_tenant|SELECT environments|type|erun_tenant|UPDATE environments|updated_at|erun_operations|INSERT environments|updated_at|erun_operations|REFERENCES environments|updated_at|erun_operations|SELECT environments|updated_at|erun_operations|UPDATE environments|updated_at|erun_tenant|INSERT environments|updated_at|erun_tenant|REFERENCES environments|updated_at|erun_tenant|SELECT environments|updated_at|erun_tenant|UPDATE gate_runs|created_at|erun_operations|INSERT gate_runs|created_at|erun_operations|REFERENCES gate_runs|created_at|erun_operations|SELECT gate_runs|created_at|erun_operations|UPDATE gate_runs|created_at|erun_tenant|INSERT gate_runs|created_at|erun_tenant|REFERENCES gate_runs|created_at|erun_tenant|SELECT gate_runs|created_at|erun_tenant|UPDATE gate_runs|failing_step|erun_operations|INSERT gate_runs|failing_step|erun_operations|REFERENCES gate_runs|failing_step|erun_operations|SELECT gate_runs|failing_step|erun_operations|UPDATE gate_runs|failing_step|erun_tenant|INSERT gate_runs|failing_step|erun_tenant|REFERENCES gate_runs|failing_step|erun_tenant|SELECT gate_runs|failing_step|erun_tenant|UPDATE gate_runs|gate_run_id|erun_operations|INSERT gate_runs|gate_run_id|erun_operations|REFERENCES gate_runs|gate_run_id|erun_operations|SELECT gate_runs|gate_run_id|erun_operations|UPDATE gate_runs|gate_run_id|erun_tenant|INSERT gate_runs|gate_run_id|erun_tenant|REFERENCES gate_runs|gate_run_id|erun_tenant|SELECT gate_runs|gate_run_id|erun_tenant|UPDATE gate_runs|log_ref|erun_operations|INSERT gate_runs|log_ref|erun_operations|REFERENCES gate_runs|log_ref|erun_operations|SELECT gate_runs|log_ref|erun_operations|UPDATE gate_runs|log_ref|erun_tenant|INSERT gate_runs|log_ref|erun_tenant|REFERENCES gate_runs|log_ref|erun_tenant|SELECT gate_runs|log_ref|erun_tenant|UPDATE gate_runs|merge_commit|erun_operations|INSERT gate_runs|merge_commit|erun_operations|REFERENCES gate_runs|merge_commit|erun_operations|SELECT gate_runs|merge_commit|erun_operations|UPDATE gate_runs|merge_commit|erun_tenant|INSERT gate_runs|merge_commit|erun_tenant|REFERENCES gate_runs|merge_commit|erun_tenant|SELECT gate_runs|merge_commit|erun_tenant|UPDATE gate_runs|review_id|erun_operations|INSERT gate_runs|review_id|erun_operations|REFERENCES gate_runs|review_id|erun_operations|SELECT gate_runs|review_id|erun_operations|UPDATE gate_runs|review_id|erun_tenant|INSERT gate_runs|review_id|erun_tenant|REFERENCES gate_runs|review_id|erun_tenant|SELECT gate_runs|review_id|erun_tenant|UPDATE gate_runs|source_branch|erun_operations|INSERT gate_runs|source_branch|erun_operations|REFERENCES gate_runs|source_branch|erun_operations|SELECT gate_runs|source_branch|erun_operations|UPDATE gate_runs|source_branch|erun_tenant|INSERT gate_runs|source_branch|erun_tenant|REFERENCES gate_runs|source_branch|erun_tenant|SELECT gate_runs|source_branch|erun_tenant|UPDATE gate_runs|source_commit|erun_operations|INSERT gate_runs|source_commit|erun_operations|REFERENCES gate_runs|source_commit|erun_operations|SELECT gate_runs|source_commit|erun_operations|UPDATE gate_runs|source_commit|erun_tenant|INSERT gate_runs|source_commit|erun_tenant|REFERENCES gate_runs|source_commit|erun_tenant|SELECT gate_runs|source_commit|erun_tenant|UPDATE gate_runs|status|erun_operations|INSERT gate_runs|status|erun_operations|REFERENCES gate_runs|status|erun_operations|SELECT gate_runs|status|erun_operations|UPDATE gate_runs|status|erun_tenant|INSERT gate_runs|status|erun_tenant|REFERENCES gate_runs|status|erun_tenant|SELECT gate_runs|status|erun_tenant|UPDATE gate_runs|target_branch|erun_operations|INSERT gate_runs|target_branch|erun_operations|REFERENCES gate_runs|target_branch|erun_operations|SELECT gate_runs|target_branch|erun_operations|UPDATE gate_runs|target_branch|erun_tenant|INSERT gate_runs|target_branch|erun_tenant|REFERENCES gate_runs|target_branch|erun_tenant|SELECT gate_runs|target_branch|erun_tenant|UPDATE gate_runs|tenant_id|erun_operations|INSERT gate_runs|tenant_id|erun_operations|REFERENCES gate_runs|tenant_id|erun_operations|SELECT gate_runs|tenant_id|erun_operations|UPDATE gate_runs|tenant_id|erun_tenant|INSERT gate_runs|tenant_id|erun_tenant|REFERENCES gate_runs|tenant_id|erun_tenant|SELECT gate_runs|tenant_id|erun_tenant|UPDATE gate_runs|updated_at|erun_operations|INSERT gate_runs|updated_at|erun_operations|REFERENCES gate_runs|updated_at|erun_operations|SELECT gate_runs|updated_at|erun_operations|UPDATE gate_runs|updated_at|erun_tenant|INSERT gate_runs|updated_at|erun_tenant|REFERENCES gate_runs|updated_at|erun_tenant|SELECT gate_runs|updated_at|erun_tenant|UPDATE invite_requests|created_at|erun_operations|INSERT invite_requests|created_at|erun_operations|REFERENCES invite_requests|created_at|erun_operations|SELECT invite_requests|created_at|erun_operations|UPDATE invite_requests|created_at|erun_tenant|INSERT invite_requests|created_at|erun_tenant|REFERENCES invite_requests|created_at|erun_tenant|SELECT invite_requests|created_at|erun_tenant|UPDATE invite_requests|decided_by_user_id|erun_operations|INSERT invite_requests|decided_by_user_id|erun_operations|REFERENCES invite_requests|decided_by_user_id|erun_operations|SELECT invite_requests|decided_by_user_id|erun_operations|UPDATE invite_requests|decided_by_user_id|erun_tenant|INSERT invite_requests|decided_by_user_id|erun_tenant|REFERENCES invite_requests|decided_by_user_id|erun_tenant|SELECT invite_requests|decided_by_user_id|erun_tenant|UPDATE invite_requests|decline_reason|erun_operations|INSERT invite_requests|decline_reason|erun_operations|REFERENCES invite_requests|decline_reason|erun_operations|SELECT invite_requests|decline_reason|erun_operations|UPDATE invite_requests|decline_reason|erun_tenant|INSERT invite_requests|decline_reason|erun_tenant|REFERENCES invite_requests|decline_reason|erun_tenant|SELECT invite_requests|decline_reason|erun_tenant|UPDATE invite_requests|display_name|erun_operations|INSERT invite_requests|display_name|erun_operations|REFERENCES invite_requests|display_name|erun_operations|SELECT invite_requests|display_name|erun_operations|UPDATE invite_requests|display_name|erun_tenant|INSERT invite_requests|display_name|erun_tenant|REFERENCES invite_requests|display_name|erun_tenant|SELECT invite_requests|display_name|erun_tenant|UPDATE invite_requests|email|erun_operations|INSERT invite_requests|email|erun_operations|REFERENCES invite_requests|email|erun_operations|SELECT invite_requests|email|erun_operations|UPDATE invite_requests|email|erun_tenant|INSERT invite_requests|email|erun_tenant|REFERENCES invite_requests|email|erun_tenant|SELECT invite_requests|email|erun_tenant|UPDATE invite_requests|environment_name|erun_operations|INSERT invite_requests|environment_name|erun_operations|REFERENCES invite_requests|environment_name|erun_operations|SELECT invite_requests|environment_name|erun_operations|UPDATE invite_requests|environment_name|erun_tenant|INSERT invite_requests|environment_name|erun_tenant|REFERENCES invite_requests|environment_name|erun_tenant|SELECT invite_requests|environment_name|erun_tenant|UPDATE invite_requests|invite_request_id|erun_operations|INSERT invite_requests|invite_request_id|erun_operations|REFERENCES invite_requests|invite_request_id|erun_operations|SELECT invite_requests|invite_request_id|erun_operations|UPDATE invite_requests|invite_request_id|erun_tenant|INSERT invite_requests|invite_request_id|erun_tenant|REFERENCES invite_requests|invite_request_id|erun_tenant|SELECT invite_requests|invite_request_id|erun_tenant|UPDATE invite_requests|issuer|erun_operations|INSERT invite_requests|issuer|erun_operations|REFERENCES invite_requests|issuer|erun_operations|SELECT invite_requests|issuer|erun_operations|UPDATE invite_requests|issuer|erun_tenant|INSERT invite_requests|issuer|erun_tenant|REFERENCES invite_requests|issuer|erun_tenant|SELECT invite_requests|issuer|erun_tenant|UPDATE invite_requests|kind|erun_operations|INSERT invite_requests|kind|erun_operations|REFERENCES invite_requests|kind|erun_operations|SELECT invite_requests|kind|erun_operations|UPDATE invite_requests|kind|erun_tenant|INSERT invite_requests|kind|erun_tenant|REFERENCES invite_requests|kind|erun_tenant|SELECT invite_requests|kind|erun_tenant|UPDATE invite_requests|minted_invite_id|erun_operations|INSERT invite_requests|minted_invite_id|erun_operations|REFERENCES invite_requests|minted_invite_id|erun_operations|SELECT invite_requests|minted_invite_id|erun_operations|UPDATE invite_requests|minted_invite_id|erun_tenant|INSERT invite_requests|minted_invite_id|erun_tenant|REFERENCES invite_requests|minted_invite_id|erun_tenant|SELECT invite_requests|minted_invite_id|erun_tenant|UPDATE invite_requests|note|erun_operations|INSERT invite_requests|note|erun_operations|REFERENCES invite_requests|note|erun_operations|SELECT invite_requests|note|erun_operations|UPDATE invite_requests|note|erun_tenant|INSERT invite_requests|note|erun_tenant|REFERENCES invite_requests|note|erun_tenant|SELECT invite_requests|note|erun_tenant|UPDATE invite_requests|status|erun_operations|INSERT invite_requests|status|erun_operations|REFERENCES invite_requests|status|erun_operations|SELECT invite_requests|status|erun_operations|UPDATE invite_requests|status|erun_tenant|INSERT invite_requests|status|erun_tenant|REFERENCES invite_requests|status|erun_tenant|SELECT invite_requests|status|erun_tenant|UPDATE invite_requests|subject|erun_operations|INSERT invite_requests|subject|erun_operations|REFERENCES invite_requests|subject|erun_operations|SELECT invite_requests|subject|erun_operations|UPDATE invite_requests|subject|erun_tenant|INSERT invite_requests|subject|erun_tenant|REFERENCES invite_requests|subject|erun_tenant|SELECT invite_requests|subject|erun_tenant|UPDATE invite_requests|tenant_name|erun_operations|INSERT invite_requests|tenant_name|erun_operations|REFERENCES invite_requests|tenant_name|erun_operations|SELECT invite_requests|tenant_name|erun_operations|UPDATE invite_requests|tenant_name|erun_tenant|INSERT invite_requests|tenant_name|erun_tenant|REFERENCES invite_requests|tenant_name|erun_tenant|SELECT invite_requests|tenant_name|erun_tenant|UPDATE invite_requests|updated_at|erun_operations|INSERT invite_requests|updated_at|erun_operations|REFERENCES invite_requests|updated_at|erun_operations|SELECT invite_requests|updated_at|erun_operations|UPDATE invite_requests|updated_at|erun_tenant|INSERT invite_requests|updated_at|erun_tenant|REFERENCES invite_requests|updated_at|erun_tenant|SELECT invite_requests|updated_at|erun_tenant|UPDATE invites|consumed_at|erun_operations|INSERT invites|consumed_at|erun_operations|REFERENCES invites|consumed_at|erun_operations|SELECT invites|consumed_at|erun_operations|UPDATE invites|consumed_at|erun_tenant|INSERT invites|consumed_at|erun_tenant|REFERENCES invites|consumed_at|erun_tenant|SELECT invites|consumed_at|erun_tenant|UPDATE invites|created_at|erun_operations|INSERT invites|created_at|erun_operations|REFERENCES invites|created_at|erun_operations|SELECT invites|created_at|erun_operations|UPDATE invites|created_at|erun_tenant|INSERT invites|created_at|erun_tenant|REFERENCES invites|created_at|erun_tenant|SELECT invites|created_at|erun_tenant|UPDATE invites|created_by_user_id|erun_operations|INSERT invites|created_by_user_id|erun_operations|REFERENCES invites|created_by_user_id|erun_operations|SELECT invites|created_by_user_id|erun_operations|UPDATE invites|created_by_user_id|erun_tenant|INSERT invites|created_by_user_id|erun_tenant|REFERENCES invites|created_by_user_id|erun_tenant|SELECT invites|created_by_user_id|erun_tenant|UPDATE invites|email|erun_operations|INSERT invites|email|erun_operations|REFERENCES invites|email|erun_operations|SELECT invites|email|erun_operations|UPDATE invites|email|erun_tenant|INSERT invites|email|erun_tenant|REFERENCES invites|email|erun_tenant|SELECT invites|email|erun_tenant|UPDATE invites|expires_at|erun_operations|INSERT invites|expires_at|erun_operations|REFERENCES invites|expires_at|erun_operations|SELECT invites|expires_at|erun_operations|UPDATE invites|expires_at|erun_tenant|INSERT invites|expires_at|erun_tenant|REFERENCES invites|expires_at|erun_tenant|SELECT invites|expires_at|erun_tenant|UPDATE invites|invite_id|erun_operations|INSERT invites|invite_id|erun_operations|REFERENCES invites|invite_id|erun_operations|SELECT invites|invite_id|erun_operations|UPDATE invites|invite_id|erun_tenant|INSERT invites|invite_id|erun_tenant|REFERENCES invites|invite_id|erun_tenant|SELECT invites|invite_id|erun_tenant|UPDATE invites|issuer|erun_operations|INSERT invites|issuer|erun_operations|REFERENCES invites|issuer|erun_operations|SELECT invites|issuer|erun_operations|UPDATE invites|issuer|erun_tenant|INSERT invites|issuer|erun_tenant|REFERENCES invites|issuer|erun_tenant|SELECT invites|issuer|erun_tenant|UPDATE invites|tenant_id|erun_operations|INSERT invites|tenant_id|erun_operations|REFERENCES invites|tenant_id|erun_operations|SELECT invites|tenant_id|erun_operations|UPDATE invites|tenant_id|erun_tenant|INSERT invites|tenant_id|erun_tenant|REFERENCES invites|tenant_id|erun_tenant|SELECT invites|tenant_id|erun_tenant|UPDATE invites|token|erun_operations|INSERT invites|token|erun_operations|REFERENCES invites|token|erun_operations|SELECT invites|token|erun_operations|UPDATE invites|token|erun_tenant|INSERT invites|token|erun_tenant|REFERENCES invites|token|erun_tenant|SELECT invites|token|erun_tenant|UPDATE invites|updated_at|erun_operations|INSERT invites|updated_at|erun_operations|REFERENCES invites|updated_at|erun_operations|SELECT invites|updated_at|erun_operations|UPDATE invites|updated_at|erun_tenant|INSERT invites|updated_at|erun_tenant|REFERENCES invites|updated_at|erun_tenant|SELECT invites|updated_at|erun_tenant|UPDATE issuers|created_at|erun_operations|INSERT issuers|created_at|erun_operations|REFERENCES issuers|created_at|erun_operations|SELECT issuers|created_at|erun_operations|UPDATE issuers|created_at|erun_tenant|SELECT issuers|issuer|erun_operations|INSERT issuers|issuer|erun_operations|REFERENCES issuers|issuer|erun_operations|SELECT issuers|issuer|erun_operations|UPDATE issuers|issuer|erun_tenant|SELECT issuers|org_field_key|erun_operations|INSERT issuers|org_field_key|erun_operations|REFERENCES issuers|org_field_key|erun_operations|SELECT issuers|org_field_key|erun_operations|UPDATE issuers|org_field_key|erun_tenant|SELECT issuers|updated_at|erun_operations|INSERT issuers|updated_at|erun_operations|REFERENCES issuers|updated_at|erun_operations|SELECT issuers|updated_at|erun_operations|UPDATE issuers|updated_at|erun_tenant|SELECT jobs|actor_id|erun_operations|INSERT jobs|actor_id|erun_operations|REFERENCES jobs|actor_id|erun_operations|SELECT jobs|actor_id|erun_operations|UPDATE jobs|actor_id|erun_tenant|INSERT jobs|actor_id|erun_tenant|REFERENCES jobs|actor_id|erun_tenant|SELECT jobs|actor_id|erun_tenant|UPDATE jobs|actor_kind|erun_operations|INSERT jobs|actor_kind|erun_operations|REFERENCES jobs|actor_kind|erun_operations|SELECT jobs|actor_kind|erun_operations|UPDATE jobs|actor_kind|erun_tenant|INSERT jobs|actor_kind|erun_tenant|REFERENCES jobs|actor_kind|erun_tenant|SELECT jobs|actor_kind|erun_tenant|UPDATE jobs|created_at|erun_operations|INSERT jobs|created_at|erun_operations|REFERENCES jobs|created_at|erun_operations|SELECT jobs|created_at|erun_operations|UPDATE jobs|created_at|erun_tenant|INSERT jobs|created_at|erun_tenant|REFERENCES jobs|created_at|erun_tenant|SELECT jobs|created_at|erun_tenant|UPDATE jobs|ended_at|erun_operations|INSERT jobs|ended_at|erun_operations|REFERENCES jobs|ended_at|erun_operations|SELECT jobs|ended_at|erun_operations|UPDATE jobs|ended_at|erun_tenant|INSERT jobs|ended_at|erun_tenant|REFERENCES jobs|ended_at|erun_tenant|SELECT jobs|ended_at|erun_tenant|UPDATE jobs|environment_id|erun_operations|INSERT jobs|environment_id|erun_operations|REFERENCES jobs|environment_id|erun_operations|SELECT jobs|environment_id|erun_operations|UPDATE jobs|environment_id|erun_tenant|INSERT jobs|environment_id|erun_tenant|REFERENCES jobs|environment_id|erun_tenant|SELECT jobs|environment_id|erun_tenant|UPDATE jobs|issue_ref|erun_operations|INSERT jobs|issue_ref|erun_operations|REFERENCES jobs|issue_ref|erun_operations|SELECT jobs|issue_ref|erun_operations|UPDATE jobs|issue_ref|erun_tenant|INSERT jobs|issue_ref|erun_tenant|REFERENCES jobs|issue_ref|erun_tenant|SELECT jobs|issue_ref|erun_tenant|UPDATE jobs|job_id|erun_operations|INSERT jobs|job_id|erun_operations|REFERENCES jobs|job_id|erun_operations|SELECT jobs|job_id|erun_operations|UPDATE jobs|job_id|erun_tenant|INSERT jobs|job_id|erun_tenant|REFERENCES jobs|job_id|erun_tenant|SELECT jobs|job_id|erun_tenant|UPDATE jobs|job_type|erun_operations|INSERT jobs|job_type|erun_operations|REFERENCES jobs|job_type|erun_operations|SELECT jobs|job_type|erun_operations|UPDATE jobs|job_type|erun_tenant|INSERT jobs|job_type|erun_tenant|REFERENCES jobs|job_type|erun_tenant|SELECT jobs|job_type|erun_tenant|UPDATE jobs|local_job_id|erun_operations|INSERT jobs|local_job_id|erun_operations|REFERENCES jobs|local_job_id|erun_operations|SELECT jobs|local_job_id|erun_operations|UPDATE jobs|local_job_id|erun_tenant|INSERT jobs|local_job_id|erun_tenant|REFERENCES jobs|local_job_id|erun_tenant|SELECT jobs|local_job_id|erun_tenant|UPDATE jobs|scope|erun_operations|INSERT jobs|scope|erun_operations|REFERENCES jobs|scope|erun_operations|SELECT jobs|scope|erun_operations|UPDATE jobs|scope|erun_tenant|INSERT jobs|scope|erun_tenant|REFERENCES jobs|scope|erun_tenant|SELECT jobs|scope|erun_tenant|UPDATE jobs|started_at|erun_operations|INSERT jobs|started_at|erun_operations|REFERENCES jobs|started_at|erun_operations|SELECT jobs|started_at|erun_operations|UPDATE jobs|started_at|erun_tenant|INSERT jobs|started_at|erun_tenant|REFERENCES jobs|started_at|erun_tenant|SELECT jobs|started_at|erun_tenant|UPDATE jobs|status|erun_operations|INSERT jobs|status|erun_operations|REFERENCES jobs|status|erun_operations|SELECT jobs|status|erun_operations|UPDATE jobs|status|erun_tenant|INSERT jobs|status|erun_tenant|REFERENCES jobs|status|erun_tenant|SELECT jobs|status|erun_tenant|UPDATE jobs|summary|erun_operations|INSERT jobs|summary|erun_operations|REFERENCES jobs|summary|erun_operations|SELECT jobs|summary|erun_operations|UPDATE jobs|summary|erun_tenant|INSERT jobs|summary|erun_tenant|REFERENCES jobs|summary|erun_tenant|SELECT jobs|summary|erun_tenant|UPDATE jobs|tenant_id|erun_operations|INSERT jobs|tenant_id|erun_operations|REFERENCES jobs|tenant_id|erun_operations|SELECT jobs|tenant_id|erun_operations|UPDATE jobs|tenant_id|erun_tenant|INSERT jobs|tenant_id|erun_tenant|REFERENCES jobs|tenant_id|erun_tenant|SELECT jobs|tenant_id|erun_tenant|UPDATE jobs|updated_at|erun_operations|INSERT jobs|updated_at|erun_operations|REFERENCES jobs|updated_at|erun_operations|SELECT jobs|updated_at|erun_operations|UPDATE jobs|updated_at|erun_tenant|INSERT jobs|updated_at|erun_tenant|REFERENCES jobs|updated_at|erun_tenant|SELECT jobs|updated_at|erun_tenant|UPDATE platform_rate_limits|created_at|erun_operations|INSERT platform_rate_limits|created_at|erun_operations|REFERENCES platform_rate_limits|created_at|erun_operations|SELECT platform_rate_limits|created_at|erun_operations|UPDATE platform_rate_limits|created_at|erun_tenant|SELECT platform_rate_limits|invite_request_window_seconds|erun_operations|INSERT platform_rate_limits|invite_request_window_seconds|erun_operations|REFERENCES platform_rate_limits|invite_request_window_seconds|erun_operations|SELECT platform_rate_limits|invite_request_window_seconds|erun_operations|UPDATE platform_rate_limits|invite_request_window_seconds|erun_tenant|SELECT platform_rate_limits|singleton|erun_operations|INSERT platform_rate_limits|singleton|erun_operations|REFERENCES platform_rate_limits|singleton|erun_operations|SELECT platform_rate_limits|singleton|erun_operations|UPDATE platform_rate_limits|singleton|erun_tenant|SELECT platform_rate_limits|updated_at|erun_operations|INSERT platform_rate_limits|updated_at|erun_operations|REFERENCES platform_rate_limits|updated_at|erun_operations|SELECT platform_rate_limits|updated_at|erun_operations|UPDATE platform_rate_limits|updated_at|erun_tenant|SELECT releases|attempt|erun_operations|INSERT releases|attempt|erun_operations|REFERENCES releases|attempt|erun_operations|SELECT releases|attempt|erun_operations|UPDATE releases|attempt|erun_tenant|INSERT releases|attempt|erun_tenant|REFERENCES releases|attempt|erun_tenant|SELECT releases|attempt|erun_tenant|UPDATE releases|build_id|erun_operations|INSERT releases|build_id|erun_operations|REFERENCES releases|build_id|erun_operations|SELECT releases|build_id|erun_operations|UPDATE releases|build_id|erun_tenant|INSERT releases|build_id|erun_tenant|REFERENCES releases|build_id|erun_tenant|SELECT releases|build_id|erun_tenant|UPDATE releases|commit_id|erun_operations|INSERT releases|commit_id|erun_operations|REFERENCES releases|commit_id|erun_operations|SELECT releases|commit_id|erun_operations|UPDATE releases|commit_id|erun_tenant|INSERT releases|commit_id|erun_tenant|REFERENCES releases|commit_id|erun_tenant|SELECT releases|commit_id|erun_tenant|UPDATE releases|created_at|erun_operations|INSERT releases|created_at|erun_operations|REFERENCES releases|created_at|erun_operations|SELECT releases|created_at|erun_operations|UPDATE releases|created_at|erun_tenant|INSERT releases|created_at|erun_tenant|REFERENCES releases|created_at|erun_tenant|SELECT releases|created_at|erun_tenant|UPDATE releases|failure_reason|erun_operations|INSERT releases|failure_reason|erun_operations|REFERENCES releases|failure_reason|erun_operations|SELECT releases|failure_reason|erun_operations|UPDATE releases|failure_reason|erun_tenant|INSERT releases|failure_reason|erun_tenant|REFERENCES releases|failure_reason|erun_tenant|SELECT releases|failure_reason|erun_tenant|UPDATE releases|release_id|erun_operations|INSERT releases|release_id|erun_operations|REFERENCES releases|release_id|erun_operations|SELECT releases|release_id|erun_operations|UPDATE releases|release_id|erun_tenant|INSERT releases|release_id|erun_tenant|REFERENCES releases|release_id|erun_tenant|SELECT releases|release_id|erun_tenant|UPDATE releases|review_id|erun_operations|INSERT releases|review_id|erun_operations|REFERENCES releases|review_id|erun_operations|SELECT releases|review_id|erun_operations|UPDATE releases|review_id|erun_tenant|INSERT releases|review_id|erun_tenant|REFERENCES releases|review_id|erun_tenant|SELECT releases|review_id|erun_tenant|UPDATE releases|status|erun_operations|INSERT releases|status|erun_operations|REFERENCES releases|status|erun_operations|SELECT releases|status|erun_operations|UPDATE releases|status|erun_tenant|INSERT releases|status|erun_tenant|REFERENCES releases|status|erun_tenant|SELECT releases|status|erun_tenant|UPDATE releases|target_branch|erun_operations|INSERT releases|target_branch|erun_operations|REFERENCES releases|target_branch|erun_operations|SELECT releases|target_branch|erun_operations|UPDATE releases|target_branch|erun_tenant|INSERT releases|target_branch|erun_tenant|REFERENCES releases|target_branch|erun_tenant|SELECT releases|target_branch|erun_tenant|UPDATE releases|tenant_id|erun_operations|INSERT releases|tenant_id|erun_operations|REFERENCES releases|tenant_id|erun_operations|SELECT releases|tenant_id|erun_operations|UPDATE releases|tenant_id|erun_tenant|INSERT releases|tenant_id|erun_tenant|REFERENCES releases|tenant_id|erun_tenant|SELECT releases|tenant_id|erun_tenant|UPDATE releases|updated_at|erun_operations|INSERT releases|updated_at|erun_operations|REFERENCES releases|updated_at|erun_operations|SELECT releases|updated_at|erun_operations|UPDATE releases|updated_at|erun_tenant|INSERT releases|updated_at|erun_tenant|REFERENCES releases|updated_at|erun_tenant|SELECT releases|updated_at|erun_tenant|UPDATE releases|version|erun_operations|INSERT releases|version|erun_operations|REFERENCES releases|version|erun_operations|SELECT releases|version|erun_operations|UPDATE releases|version|erun_tenant|INSERT releases|version|erun_tenant|REFERENCES releases|version|erun_tenant|SELECT releases|version|erun_tenant|UPDATE retention_runs|created_at|erun_operations|INSERT retention_runs|created_at|erun_operations|SELECT retention_runs|deleted_count|erun_operations|INSERT retention_runs|deleted_count|erun_operations|SELECT retention_runs|dry_run|erun_operations|INSERT retention_runs|dry_run|erun_operations|SELECT retention_runs|eligible_count|erun_operations|INSERT retention_runs|eligible_count|erun_operations|SELECT retention_runs|policy_name|erun_operations|INSERT retention_runs|policy_name|erun_operations|SELECT retention_runs|retention_run_id|erun_operations|INSERT retention_runs|retention_run_id|erun_operations|SELECT retention_runs|table_name|erun_operations|INSERT retention_runs|table_name|erun_operations|SELECT review_merge_queue|created_at|erun_operations|INSERT review_merge_queue|created_at|erun_operations|REFERENCES review_merge_queue|created_at|erun_operations|SELECT review_merge_queue|created_at|erun_operations|UPDATE review_merge_queue|created_at|erun_tenant|INSERT review_merge_queue|created_at|erun_tenant|REFERENCES review_merge_queue|created_at|erun_tenant|SELECT review_merge_queue|created_at|erun_tenant|UPDATE review_merge_queue|review_id|erun_operations|INSERT review_merge_queue|review_id|erun_operations|REFERENCES review_merge_queue|review_id|erun_operations|SELECT review_merge_queue|review_id|erun_operations|UPDATE review_merge_queue|review_id|erun_tenant|INSERT review_merge_queue|review_id|erun_tenant|REFERENCES review_merge_queue|review_id|erun_tenant|SELECT review_merge_queue|review_id|erun_tenant|UPDATE review_merge_queue|review_merge_queue_id|erun_operations|INSERT review_merge_queue|review_merge_queue_id|erun_operations|REFERENCES review_merge_queue|review_merge_queue_id|erun_operations|SELECT review_merge_queue|review_merge_queue_id|erun_operations|UPDATE review_merge_queue|review_merge_queue_id|erun_tenant|INSERT review_merge_queue|review_merge_queue_id|erun_tenant|REFERENCES review_merge_queue|review_merge_queue_id|erun_tenant|SELECT review_merge_queue|review_merge_queue_id|erun_tenant|UPDATE review_merge_queue|target_branch|erun_operations|INSERT review_merge_queue|target_branch|erun_operations|REFERENCES review_merge_queue|target_branch|erun_operations|SELECT review_merge_queue|target_branch|erun_operations|UPDATE review_merge_queue|target_branch|erun_tenant|INSERT review_merge_queue|target_branch|erun_tenant|REFERENCES review_merge_queue|target_branch|erun_tenant|SELECT review_merge_queue|target_branch|erun_tenant|UPDATE review_merge_queue|tenant_id|erun_operations|INSERT review_merge_queue|tenant_id|erun_operations|REFERENCES review_merge_queue|tenant_id|erun_operations|SELECT review_merge_queue|tenant_id|erun_operations|UPDATE review_merge_queue|tenant_id|erun_tenant|INSERT review_merge_queue|tenant_id|erun_tenant|REFERENCES review_merge_queue|tenant_id|erun_tenant|SELECT review_merge_queue|tenant_id|erun_tenant|UPDATE review_merge_queue|updated_at|erun_operations|INSERT review_merge_queue|updated_at|erun_operations|REFERENCES review_merge_queue|updated_at|erun_operations|SELECT review_merge_queue|updated_at|erun_operations|UPDATE review_merge_queue|updated_at|erun_tenant|INSERT review_merge_queue|updated_at|erun_tenant|REFERENCES review_merge_queue|updated_at|erun_tenant|SELECT review_merge_queue|updated_at|erun_tenant|UPDATE review_reviewers|created_at|erun_operations|INSERT review_reviewers|created_at|erun_operations|REFERENCES review_reviewers|created_at|erun_operations|SELECT review_reviewers|created_at|erun_operations|UPDATE review_reviewers|created_at|erun_tenant|INSERT review_reviewers|created_at|erun_tenant|REFERENCES review_reviewers|created_at|erun_tenant|SELECT review_reviewers|created_at|erun_tenant|UPDATE review_reviewers|review_id|erun_operations|INSERT review_reviewers|review_id|erun_operations|REFERENCES review_reviewers|review_id|erun_operations|SELECT review_reviewers|review_id|erun_operations|UPDATE review_reviewers|review_id|erun_tenant|INSERT review_reviewers|review_id|erun_tenant|REFERENCES review_reviewers|review_id|erun_tenant|SELECT review_reviewers|review_id|erun_tenant|UPDATE review_reviewers|tenant_id|erun_operations|INSERT review_reviewers|tenant_id|erun_operations|REFERENCES review_reviewers|tenant_id|erun_operations|SELECT review_reviewers|tenant_id|erun_operations|UPDATE review_reviewers|tenant_id|erun_tenant|INSERT review_reviewers|tenant_id|erun_tenant|REFERENCES review_reviewers|tenant_id|erun_tenant|SELECT review_reviewers|tenant_id|erun_tenant|UPDATE review_reviewers|updated_at|erun_operations|INSERT review_reviewers|updated_at|erun_operations|REFERENCES review_reviewers|updated_at|erun_operations|SELECT review_reviewers|updated_at|erun_operations|UPDATE review_reviewers|updated_at|erun_tenant|INSERT review_reviewers|updated_at|erun_tenant|REFERENCES review_reviewers|updated_at|erun_tenant|SELECT review_reviewers|updated_at|erun_tenant|UPDATE review_reviewers|user_id|erun_operations|INSERT review_reviewers|user_id|erun_operations|REFERENCES review_reviewers|user_id|erun_operations|SELECT review_reviewers|user_id|erun_operations|UPDATE review_reviewers|user_id|erun_tenant|INSERT review_reviewers|user_id|erun_tenant|REFERENCES review_reviewers|user_id|erun_tenant|SELECT review_reviewers|user_id|erun_tenant|UPDATE reviews|author_user_id|erun_operations|INSERT reviews|author_user_id|erun_operations|REFERENCES reviews|author_user_id|erun_operations|SELECT reviews|author_user_id|erun_operations|UPDATE reviews|author_user_id|erun_tenant|INSERT reviews|author_user_id|erun_tenant|REFERENCES reviews|author_user_id|erun_tenant|SELECT reviews|author_user_id|erun_tenant|UPDATE reviews|created_at|erun_operations|INSERT reviews|created_at|erun_operations|REFERENCES reviews|created_at|erun_operations|SELECT reviews|created_at|erun_operations|UPDATE reviews|created_at|erun_tenant|INSERT reviews|created_at|erun_tenant|REFERENCES reviews|created_at|erun_tenant|SELECT reviews|created_at|erun_tenant|UPDATE reviews|issue_ref|erun_operations|INSERT reviews|issue_ref|erun_operations|REFERENCES reviews|issue_ref|erun_operations|SELECT reviews|issue_ref|erun_operations|UPDATE reviews|issue_ref|erun_tenant|INSERT reviews|issue_ref|erun_tenant|REFERENCES reviews|issue_ref|erun_tenant|SELECT reviews|issue_ref|erun_tenant|UPDATE reviews|last_failed_build_id|erun_operations|INSERT reviews|last_failed_build_id|erun_operations|REFERENCES reviews|last_failed_build_id|erun_operations|SELECT reviews|last_failed_build_id|erun_operations|UPDATE reviews|last_failed_build_id|erun_tenant|INSERT reviews|last_failed_build_id|erun_tenant|REFERENCES reviews|last_failed_build_id|erun_tenant|SELECT reviews|last_failed_build_id|erun_tenant|UPDATE reviews|last_merged_build_id|erun_operations|INSERT reviews|last_merged_build_id|erun_operations|REFERENCES reviews|last_merged_build_id|erun_operations|SELECT reviews|last_merged_build_id|erun_operations|UPDATE reviews|last_merged_build_id|erun_tenant|INSERT reviews|last_merged_build_id|erun_tenant|REFERENCES reviews|last_merged_build_id|erun_tenant|SELECT reviews|last_merged_build_id|erun_tenant|UPDATE reviews|last_ready_build_id|erun_operations|INSERT reviews|last_ready_build_id|erun_operations|REFERENCES reviews|last_ready_build_id|erun_operations|SELECT reviews|last_ready_build_id|erun_operations|UPDATE reviews|last_ready_build_id|erun_tenant|INSERT reviews|last_ready_build_id|erun_tenant|REFERENCES reviews|last_ready_build_id|erun_tenant|SELECT reviews|last_ready_build_id|erun_tenant|UPDATE reviews|name|erun_operations|INSERT reviews|name|erun_operations|REFERENCES reviews|name|erun_operations|SELECT reviews|name|erun_operations|UPDATE reviews|name|erun_tenant|INSERT reviews|name|erun_tenant|REFERENCES reviews|name|erun_tenant|SELECT reviews|name|erun_tenant|UPDATE reviews|repository|erun_operations|INSERT reviews|repository|erun_operations|REFERENCES reviews|repository|erun_operations|SELECT reviews|repository|erun_operations|UPDATE reviews|repository|erun_tenant|INSERT reviews|repository|erun_tenant|REFERENCES reviews|repository|erun_tenant|SELECT reviews|repository|erun_tenant|UPDATE reviews|review_id|erun_operations|INSERT reviews|review_id|erun_operations|REFERENCES reviews|review_id|erun_operations|SELECT reviews|review_id|erun_operations|UPDATE reviews|review_id|erun_tenant|INSERT reviews|review_id|erun_tenant|REFERENCES reviews|review_id|erun_tenant|SELECT reviews|review_id|erun_tenant|UPDATE reviews|source_branch|erun_operations|INSERT reviews|source_branch|erun_operations|REFERENCES reviews|source_branch|erun_operations|SELECT reviews|source_branch|erun_operations|UPDATE reviews|source_branch|erun_tenant|INSERT reviews|source_branch|erun_tenant|REFERENCES reviews|source_branch|erun_tenant|SELECT reviews|source_branch|erun_tenant|UPDATE reviews|status|erun_operations|INSERT reviews|status|erun_operations|REFERENCES reviews|status|erun_operations|SELECT reviews|status|erun_operations|UPDATE reviews|status|erun_tenant|INSERT reviews|status|erun_tenant|REFERENCES reviews|status|erun_tenant|SELECT reviews|status|erun_tenant|UPDATE reviews|target_branch|erun_operations|INSERT reviews|target_branch|erun_operations|REFERENCES reviews|target_branch|erun_operations|SELECT reviews|target_branch|erun_operations|UPDATE reviews|target_branch|erun_tenant|INSERT reviews|target_branch|erun_tenant|REFERENCES reviews|target_branch|erun_tenant|SELECT reviews|target_branch|erun_tenant|UPDATE reviews|tenant_id|erun_operations|INSERT reviews|tenant_id|erun_operations|REFERENCES reviews|tenant_id|erun_operations|SELECT reviews|tenant_id|erun_operations|UPDATE reviews|tenant_id|erun_tenant|INSERT reviews|tenant_id|erun_tenant|REFERENCES reviews|tenant_id|erun_tenant|SELECT reviews|tenant_id|erun_tenant|UPDATE reviews|updated_at|erun_operations|INSERT reviews|updated_at|erun_operations|REFERENCES reviews|updated_at|erun_operations|SELECT reviews|updated_at|erun_operations|UPDATE reviews|updated_at|erun_tenant|INSERT reviews|updated_at|erun_tenant|REFERENCES reviews|updated_at|erun_tenant|SELECT reviews|updated_at|erun_tenant|UPDATE role_permissions|api_method|erun_operations|INSERT role_permissions|api_method|erun_operations|REFERENCES role_permissions|api_method|erun_operations|SELECT role_permissions|api_method|erun_operations|UPDATE role_permissions|api_method|erun_tenant|INSERT role_permissions|api_method|erun_tenant|REFERENCES role_permissions|api_method|erun_tenant|SELECT role_permissions|api_method|erun_tenant|UPDATE role_permissions|api_method_pattern|erun_operations|INSERT role_permissions|api_method_pattern|erun_operations|REFERENCES role_permissions|api_method_pattern|erun_operations|SELECT role_permissions|api_method_pattern|erun_operations|UPDATE role_permissions|api_method_pattern|erun_tenant|INSERT role_permissions|api_method_pattern|erun_tenant|REFERENCES role_permissions|api_method_pattern|erun_tenant|SELECT role_permissions|api_method_pattern|erun_tenant|UPDATE role_permissions|api_path|erun_operations|INSERT role_permissions|api_path|erun_operations|REFERENCES role_permissions|api_path|erun_operations|SELECT role_permissions|api_path|erun_operations|UPDATE role_permissions|api_path|erun_tenant|INSERT role_permissions|api_path|erun_tenant|REFERENCES role_permissions|api_path|erun_tenant|SELECT role_permissions|api_path|erun_tenant|UPDATE role_permissions|api_path_pattern|erun_operations|INSERT role_permissions|api_path_pattern|erun_operations|REFERENCES role_permissions|api_path_pattern|erun_operations|SELECT role_permissions|api_path_pattern|erun_operations|UPDATE role_permissions|api_path_pattern|erun_tenant|INSERT role_permissions|api_path_pattern|erun_tenant|REFERENCES role_permissions|api_path_pattern|erun_tenant|SELECT role_permissions|api_path_pattern|erun_tenant|UPDATE role_permissions|created_at|erun_operations|INSERT role_permissions|created_at|erun_operations|REFERENCES role_permissions|created_at|erun_operations|SELECT role_permissions|created_at|erun_operations|UPDATE role_permissions|created_at|erun_tenant|INSERT role_permissions|created_at|erun_tenant|REFERENCES role_permissions|created_at|erun_tenant|SELECT role_permissions|created_at|erun_tenant|UPDATE role_permissions|role_id|erun_operations|INSERT role_permissions|role_id|erun_operations|REFERENCES role_permissions|role_id|erun_operations|SELECT role_permissions|role_id|erun_operations|UPDATE role_permissions|role_id|erun_tenant|INSERT role_permissions|role_id|erun_tenant|REFERENCES role_permissions|role_id|erun_tenant|SELECT role_permissions|role_id|erun_tenant|UPDATE role_permissions|role_permission_id|erun_operations|INSERT role_permissions|role_permission_id|erun_operations|REFERENCES role_permissions|role_permission_id|erun_operations|SELECT role_permissions|role_permission_id|erun_operations|UPDATE role_permissions|role_permission_id|erun_tenant|INSERT role_permissions|role_permission_id|erun_tenant|REFERENCES role_permissions|role_permission_id|erun_tenant|SELECT role_permissions|role_permission_id|erun_tenant|UPDATE role_permissions|tenant_id|erun_operations|INSERT role_permissions|tenant_id|erun_operations|REFERENCES role_permissions|tenant_id|erun_operations|SELECT role_permissions|tenant_id|erun_operations|UPDATE role_permissions|tenant_id|erun_tenant|INSERT role_permissions|tenant_id|erun_tenant|REFERENCES role_permissions|tenant_id|erun_tenant|SELECT role_permissions|tenant_id|erun_tenant|UPDATE role_permissions|updated_at|erun_operations|INSERT role_permissions|updated_at|erun_operations|REFERENCES role_permissions|updated_at|erun_operations|SELECT role_permissions|updated_at|erun_operations|UPDATE role_permissions|updated_at|erun_tenant|INSERT role_permissions|updated_at|erun_tenant|REFERENCES role_permissions|updated_at|erun_tenant|SELECT role_permissions|updated_at|erun_tenant|UPDATE roles|created_at|erun_operations|INSERT roles|created_at|erun_operations|REFERENCES roles|created_at|erun_operations|SELECT roles|created_at|erun_operations|UPDATE roles|created_at|erun_tenant|INSERT roles|created_at|erun_tenant|REFERENCES roles|created_at|erun_tenant|SELECT roles|created_at|erun_tenant|UPDATE roles|name|erun_operations|INSERT roles|name|erun_operations|REFERENCES roles|name|erun_operations|SELECT roles|name|erun_operations|UPDATE roles|name|erun_tenant|INSERT roles|name|erun_tenant|REFERENCES roles|name|erun_tenant|SELECT roles|name|erun_tenant|UPDATE roles|role_id|erun_operations|INSERT roles|role_id|erun_operations|REFERENCES roles|role_id|erun_operations|SELECT roles|role_id|erun_operations|UPDATE roles|role_id|erun_tenant|INSERT roles|role_id|erun_tenant|REFERENCES roles|role_id|erun_tenant|SELECT roles|role_id|erun_tenant|UPDATE roles|tenant_id|erun_operations|INSERT roles|tenant_id|erun_operations|REFERENCES roles|tenant_id|erun_operations|SELECT roles|tenant_id|erun_operations|UPDATE roles|tenant_id|erun_tenant|INSERT roles|tenant_id|erun_tenant|REFERENCES roles|tenant_id|erun_tenant|SELECT roles|tenant_id|erun_tenant|UPDATE roles|updated_at|erun_operations|INSERT roles|updated_at|erun_operations|REFERENCES roles|updated_at|erun_operations|SELECT roles|updated_at|erun_operations|UPDATE roles|updated_at|erun_tenant|INSERT roles|updated_at|erun_tenant|REFERENCES roles|updated_at|erun_tenant|SELECT roles|updated_at|erun_tenant|UPDATE tenant_issuers|created_at|erun_operations|INSERT tenant_issuers|created_at|erun_operations|REFERENCES tenant_issuers|created_at|erun_operations|SELECT tenant_issuers|created_at|erun_operations|UPDATE tenant_issuers|created_at|erun_tenant|SELECT tenant_issuers|issuer|erun_operations|INSERT tenant_issuers|issuer|erun_operations|REFERENCES tenant_issuers|issuer|erun_operations|SELECT tenant_issuers|issuer|erun_operations|UPDATE tenant_issuers|issuer|erun_tenant|SELECT tenant_issuers|name|erun_operations|INSERT tenant_issuers|name|erun_operations|REFERENCES tenant_issuers|name|erun_operations|SELECT tenant_issuers|name|erun_operations|UPDATE tenant_issuers|name|erun_tenant|SELECT tenant_issuers|name|erun_tenant|UPDATE tenant_issuers|org_field_value|erun_operations|INSERT tenant_issuers|org_field_value|erun_operations|REFERENCES tenant_issuers|org_field_value|erun_operations|SELECT tenant_issuers|org_field_value|erun_operations|UPDATE tenant_issuers|org_field_value|erun_tenant|SELECT tenant_issuers|tenant_id|erun_operations|INSERT tenant_issuers|tenant_id|erun_operations|REFERENCES tenant_issuers|tenant_id|erun_operations|SELECT tenant_issuers|tenant_id|erun_operations|UPDATE tenant_issuers|tenant_id|erun_tenant|SELECT tenant_issuers|updated_at|erun_operations|INSERT tenant_issuers|updated_at|erun_operations|REFERENCES tenant_issuers|updated_at|erun_operations|SELECT tenant_issuers|updated_at|erun_operations|UPDATE tenant_issuers|updated_at|erun_tenant|SELECT tenant_quotas|created_at|erun_operations|INSERT tenant_quotas|created_at|erun_operations|REFERENCES tenant_quotas|created_at|erun_operations|SELECT tenant_quotas|created_at|erun_operations|UPDATE tenant_quotas|created_at|erun_tenant|INSERT tenant_quotas|created_at|erun_tenant|REFERENCES tenant_quotas|created_at|erun_tenant|SELECT tenant_quotas|created_at|erun_tenant|UPDATE tenant_quotas|max_cpu_millicores|erun_operations|INSERT tenant_quotas|max_cpu_millicores|erun_operations|REFERENCES tenant_quotas|max_cpu_millicores|erun_operations|SELECT tenant_quotas|max_cpu_millicores|erun_operations|UPDATE tenant_quotas|max_cpu_millicores|erun_tenant|INSERT tenant_quotas|max_cpu_millicores|erun_tenant|REFERENCES tenant_quotas|max_cpu_millicores|erun_tenant|SELECT tenant_quotas|max_cpu_millicores|erun_tenant|UPDATE tenant_quotas|max_environments|erun_operations|INSERT tenant_quotas|max_environments|erun_operations|REFERENCES tenant_quotas|max_environments|erun_operations|SELECT tenant_quotas|max_environments|erun_operations|UPDATE tenant_quotas|max_environments|erun_tenant|INSERT tenant_quotas|max_environments|erun_tenant|REFERENCES tenant_quotas|max_environments|erun_tenant|SELECT tenant_quotas|max_environments|erun_tenant|UPDATE tenant_quotas|max_memory_mb|erun_operations|INSERT tenant_quotas|max_memory_mb|erun_operations|REFERENCES tenant_quotas|max_memory_mb|erun_operations|SELECT tenant_quotas|max_memory_mb|erun_operations|UPDATE tenant_quotas|max_memory_mb|erun_tenant|INSERT tenant_quotas|max_memory_mb|erun_tenant|REFERENCES tenant_quotas|max_memory_mb|erun_tenant|SELECT tenant_quotas|max_memory_mb|erun_tenant|UPDATE tenant_quotas|max_storage_gb|erun_operations|INSERT tenant_quotas|max_storage_gb|erun_operations|REFERENCES tenant_quotas|max_storage_gb|erun_operations|SELECT tenant_quotas|max_storage_gb|erun_operations|UPDATE tenant_quotas|max_storage_gb|erun_tenant|INSERT tenant_quotas|max_storage_gb|erun_tenant|REFERENCES tenant_quotas|max_storage_gb|erun_tenant|SELECT tenant_quotas|max_storage_gb|erun_tenant|UPDATE tenant_quotas|max_total_cpu_millicores|erun_operations|INSERT tenant_quotas|max_total_cpu_millicores|erun_operations|REFERENCES tenant_quotas|max_total_cpu_millicores|erun_operations|SELECT tenant_quotas|max_total_cpu_millicores|erun_operations|UPDATE tenant_quotas|max_total_cpu_millicores|erun_tenant|INSERT tenant_quotas|max_total_cpu_millicores|erun_tenant|REFERENCES tenant_quotas|max_total_cpu_millicores|erun_tenant|SELECT tenant_quotas|max_total_cpu_millicores|erun_tenant|UPDATE tenant_quotas|max_total_memory_mb|erun_operations|INSERT tenant_quotas|max_total_memory_mb|erun_operations|REFERENCES tenant_quotas|max_total_memory_mb|erun_operations|SELECT tenant_quotas|max_total_memory_mb|erun_operations|UPDATE tenant_quotas|max_total_memory_mb|erun_tenant|INSERT tenant_quotas|max_total_memory_mb|erun_tenant|REFERENCES tenant_quotas|max_total_memory_mb|erun_tenant|SELECT tenant_quotas|max_total_memory_mb|erun_tenant|UPDATE tenant_quotas|max_total_storage_gb|erun_operations|INSERT tenant_quotas|max_total_storage_gb|erun_operations|REFERENCES tenant_quotas|max_total_storage_gb|erun_operations|SELECT tenant_quotas|max_total_storage_gb|erun_operations|UPDATE tenant_quotas|max_total_storage_gb|erun_tenant|INSERT tenant_quotas|max_total_storage_gb|erun_tenant|REFERENCES tenant_quotas|max_total_storage_gb|erun_tenant|SELECT tenant_quotas|max_total_storage_gb|erun_tenant|UPDATE tenant_quotas|tenant_id|erun_operations|INSERT tenant_quotas|tenant_id|erun_operations|REFERENCES tenant_quotas|tenant_id|erun_operations|SELECT tenant_quotas|tenant_id|erun_operations|UPDATE tenant_quotas|tenant_id|erun_tenant|INSERT tenant_quotas|tenant_id|erun_tenant|REFERENCES tenant_quotas|tenant_id|erun_tenant|SELECT tenant_quotas|tenant_id|erun_tenant|UPDATE tenant_quotas|updated_at|erun_operations|INSERT tenant_quotas|updated_at|erun_operations|REFERENCES tenant_quotas|updated_at|erun_operations|SELECT tenant_quotas|updated_at|erun_operations|UPDATE tenant_quotas|updated_at|erun_tenant|INSERT tenant_quotas|updated_at|erun_tenant|REFERENCES tenant_quotas|updated_at|erun_tenant|SELECT tenant_quotas|updated_at|erun_tenant|UPDATE tenants|created_at|erun_operations|INSERT tenants|created_at|erun_operations|REFERENCES tenants|created_at|erun_operations|SELECT tenants|created_at|erun_operations|UPDATE tenants|created_at|erun_tenant|SELECT tenants|name|erun_operations|INSERT tenants|name|erun_operations|REFERENCES tenants|name|erun_operations|SELECT tenants|name|erun_operations|UPDATE tenants|name|erun_tenant|SELECT tenants|tenant_id|erun_operations|INSERT tenants|tenant_id|erun_operations|REFERENCES tenants|tenant_id|erun_operations|SELECT tenants|tenant_id|erun_operations|UPDATE tenants|tenant_id|erun_tenant|SELECT tenants|type|erun_operations|INSERT tenants|type|erun_operations|REFERENCES tenants|type|erun_operations|SELECT tenants|type|erun_operations|UPDATE tenants|type|erun_tenant|SELECT tenants|updated_at|erun_operations|INSERT tenants|updated_at|erun_operations|REFERENCES tenants|updated_at|erun_operations|SELECT tenants|updated_at|erun_operations|UPDATE tenants|updated_at|erun_tenant|SELECT usage_events|cpu_millicores|erun_operations|INSERT usage_events|cpu_millicores|erun_operations|REFERENCES usage_events|cpu_millicores|erun_operations|SELECT usage_events|cpu_millicores|erun_tenant|INSERT usage_events|cpu_millicores|erun_tenant|REFERENCES usage_events|cpu_millicores|erun_tenant|SELECT usage_events|created_at|erun_operations|INSERT usage_events|created_at|erun_operations|REFERENCES usage_events|created_at|erun_operations|SELECT usage_events|created_at|erun_tenant|INSERT usage_events|created_at|erun_tenant|REFERENCES usage_events|created_at|erun_tenant|SELECT usage_events|environment_id|erun_operations|INSERT usage_events|environment_id|erun_operations|REFERENCES usage_events|environment_id|erun_operations|SELECT usage_events|environment_id|erun_tenant|INSERT usage_events|environment_id|erun_tenant|REFERENCES usage_events|environment_id|erun_tenant|SELECT usage_events|event_type|erun_operations|INSERT usage_events|event_type|erun_operations|REFERENCES usage_events|event_type|erun_operations|SELECT usage_events|event_type|erun_tenant|INSERT usage_events|event_type|erun_tenant|REFERENCES usage_events|event_type|erun_tenant|SELECT usage_events|memory_mb|erun_operations|INSERT usage_events|memory_mb|erun_operations|REFERENCES usage_events|memory_mb|erun_operations|SELECT usage_events|memory_mb|erun_tenant|INSERT usage_events|memory_mb|erun_tenant|REFERENCES usage_events|memory_mb|erun_tenant|SELECT usage_events|storage_gb|erun_operations|INSERT usage_events|storage_gb|erun_operations|REFERENCES usage_events|storage_gb|erun_operations|SELECT usage_events|storage_gb|erun_tenant|INSERT usage_events|storage_gb|erun_tenant|REFERENCES usage_events|storage_gb|erun_tenant|SELECT usage_events|tenant_id|erun_operations|INSERT usage_events|tenant_id|erun_operations|REFERENCES usage_events|tenant_id|erun_operations|SELECT usage_events|tenant_id|erun_tenant|INSERT usage_events|tenant_id|erun_tenant|REFERENCES usage_events|tenant_id|erun_tenant|SELECT usage_events|usage_event_id|erun_operations|INSERT usage_events|usage_event_id|erun_operations|REFERENCES usage_events|usage_event_id|erun_operations|SELECT usage_events|usage_event_id|erun_tenant|INSERT usage_events|usage_event_id|erun_tenant|REFERENCES usage_events|usage_event_id|erun_tenant|SELECT user_external_ids|created_at|erun_operations|INSERT user_external_ids|created_at|erun_operations|REFERENCES user_external_ids|created_at|erun_operations|SELECT user_external_ids|created_at|erun_operations|UPDATE user_external_ids|created_at|erun_tenant|INSERT user_external_ids|created_at|erun_tenant|REFERENCES user_external_ids|created_at|erun_tenant|SELECT user_external_ids|created_at|erun_tenant|UPDATE user_external_ids|external_id|erun_operations|INSERT user_external_ids|external_id|erun_operations|REFERENCES user_external_ids|external_id|erun_operations|SELECT user_external_ids|external_id|erun_operations|UPDATE user_external_ids|external_id|erun_tenant|INSERT user_external_ids|external_id|erun_tenant|REFERENCES user_external_ids|external_id|erun_tenant|SELECT user_external_ids|external_id|erun_tenant|UPDATE user_external_ids|issuer|erun_operations|INSERT user_external_ids|issuer|erun_operations|REFERENCES user_external_ids|issuer|erun_operations|SELECT user_external_ids|issuer|erun_operations|UPDATE user_external_ids|issuer|erun_tenant|INSERT user_external_ids|issuer|erun_tenant|REFERENCES user_external_ids|issuer|erun_tenant|SELECT user_external_ids|issuer|erun_tenant|UPDATE user_external_ids|tenant_id|erun_operations|INSERT user_external_ids|tenant_id|erun_operations|REFERENCES user_external_ids|tenant_id|erun_operations|SELECT user_external_ids|tenant_id|erun_operations|UPDATE user_external_ids|tenant_id|erun_tenant|INSERT user_external_ids|tenant_id|erun_tenant|REFERENCES user_external_ids|tenant_id|erun_tenant|SELECT user_external_ids|tenant_id|erun_tenant|UPDATE user_external_ids|updated_at|erun_operations|INSERT user_external_ids|updated_at|erun_operations|REFERENCES user_external_ids|updated_at|erun_operations|SELECT user_external_ids|updated_at|erun_operations|UPDATE user_external_ids|updated_at|erun_tenant|INSERT user_external_ids|updated_at|erun_tenant|REFERENCES user_external_ids|updated_at|erun_tenant|SELECT user_external_ids|updated_at|erun_tenant|UPDATE user_external_ids|user_id|erun_operations|INSERT user_external_ids|user_id|erun_operations|REFERENCES user_external_ids|user_id|erun_operations|SELECT user_external_ids|user_id|erun_operations|UPDATE user_external_ids|user_id|erun_tenant|INSERT user_external_ids|user_id|erun_tenant|REFERENCES user_external_ids|user_id|erun_tenant|SELECT user_external_ids|user_id|erun_tenant|UPDATE user_roles|created_at|erun_operations|INSERT user_roles|created_at|erun_operations|REFERENCES user_roles|created_at|erun_operations|SELECT user_roles|created_at|erun_operations|UPDATE user_roles|created_at|erun_tenant|INSERT user_roles|created_at|erun_tenant|REFERENCES user_roles|created_at|erun_tenant|SELECT user_roles|created_at|erun_tenant|UPDATE user_roles|role_id|erun_operations|INSERT user_roles|role_id|erun_operations|REFERENCES user_roles|role_id|erun_operations|SELECT user_roles|role_id|erun_operations|UPDATE user_roles|role_id|erun_tenant|INSERT user_roles|role_id|erun_tenant|REFERENCES user_roles|role_id|erun_tenant|SELECT user_roles|role_id|erun_tenant|UPDATE user_roles|tenant_id|erun_operations|INSERT user_roles|tenant_id|erun_operations|REFERENCES user_roles|tenant_id|erun_operations|SELECT user_roles|tenant_id|erun_operations|UPDATE user_roles|tenant_id|erun_tenant|INSERT user_roles|tenant_id|erun_tenant|REFERENCES user_roles|tenant_id|erun_tenant|SELECT user_roles|tenant_id|erun_tenant|UPDATE user_roles|updated_at|erun_operations|INSERT user_roles|updated_at|erun_operations|REFERENCES user_roles|updated_at|erun_operations|SELECT user_roles|updated_at|erun_operations|UPDATE user_roles|updated_at|erun_tenant|INSERT user_roles|updated_at|erun_tenant|REFERENCES user_roles|updated_at|erun_tenant|SELECT user_roles|updated_at|erun_tenant|UPDATE user_roles|user_id|erun_operations|INSERT user_roles|user_id|erun_operations|REFERENCES user_roles|user_id|erun_operations|SELECT user_roles|user_id|erun_operations|UPDATE user_roles|user_id|erun_tenant|INSERT user_roles|user_id|erun_tenant|REFERENCES user_roles|user_id|erun_tenant|SELECT user_roles|user_id|erun_tenant|UPDATE users|created_at|erun_operations|INSERT users|created_at|erun_operations|REFERENCES users|created_at|erun_operations|SELECT users|created_at|erun_operations|UPDATE users|created_at|erun_tenant|INSERT users|created_at|erun_tenant|REFERENCES users|created_at|erun_tenant|SELECT users|created_at|erun_tenant|UPDATE users|tenant_id|erun_operations|INSERT users|tenant_id|erun_operations|REFERENCES users|tenant_id|erun_operations|SELECT users|tenant_id|erun_operations|UPDATE users|tenant_id|erun_tenant|INSERT users|tenant_id|erun_tenant|REFERENCES users|tenant_id|erun_tenant|SELECT users|tenant_id|erun_tenant|UPDATE users|updated_at|erun_operations|INSERT users|updated_at|erun_operations|REFERENCES users|updated_at|erun_operations|SELECT users|updated_at|erun_operations|UPDATE users|updated_at|erun_tenant|INSERT users|updated_at|erun_tenant|REFERENCES users|updated_at|erun_tenant|SELECT users|updated_at|erun_tenant|UPDATE users|user_id|erun_operations|INSERT users|user_id|erun_operations|REFERENCES users|user_id|erun_operations|SELECT users|user_id|erun_operations|UPDATE users|user_id|erun_tenant|INSERT users|user_id|erun_tenant|REFERENCES users|user_id|erun_tenant|SELECT users|user_id|erun_tenant|UPDATE users|username|erun_operations|INSERT users|username|erun_operations|REFERENCES users|username|erun_operations|SELECT users|username|erun_operations|UPDATE users|username|erun_tenant|INSERT users|username|erun_tenant|REFERENCES users|username|erun_tenant|SELECT users|username|erun_tenant|UPDATE ### FUNCTIONS erun_current_tenant_id|CREATE OR REPLACE FUNCTION public.erun_current_tenant_id() RETURNS uuid LANGUAGE sql STABLE AS $function$ SELECT NULLIF(current_setting('erun.tenant_id', true), '')::UUID $function$ erun_current_user_id|CREATE OR REPLACE FUNCTION public.erun_current_user_id() RETURNS uuid LANGUAGE sql STABLE AS $function$ SELECT NULLIF(current_setting('erun.user_id', true), '')::UUID $function$ erun_set_timestamps|CREATE OR REPLACE FUNCTION public.erun_set_timestamps() RETURNS trigger LANGUAGE plpgsql AS $function$ BEGIN IF TG_OP = 'INSERT' THEN NEW.created_at = COALESCE(NEW.created_at, NOW()); NEW.updated_at = COALESCE(NEW.updated_at, NEW.created_at); ELSE NEW.created_at = OLD.created_at; NEW.updated_at = NOW(); END IF; RETURN NEW; END; $function$ erun_validate_comments|CREATE OR REPLACE FUNCTION public.erun_validate_comments() RETURNS trigger LANGUAGE plpgsql AS $function$ BEGIN IF TG_OP = 'UPDATE' THEN IF NEW.comment_id IS DISTINCT FROM OLD.comment_id OR NEW.tenant_id IS DISTINCT FROM OLD.tenant_id OR NEW.review_id IS DISTINCT FROM OLD.review_id OR NEW.creator_user_id IS DISTINCT FROM OLD.creator_user_id OR NEW.parent_comment_id IS DISTINCT FROM OLD.parent_comment_id OR NEW.commit_id IS DISTINCT FROM OLD.commit_id OR NEW.file_path IS DISTINCT FROM OLD.file_path OR NEW.line IS DISTINCT FROM OLD.line OR NEW.body IS DISTINCT FROM OLD.body THEN RAISE EXCEPTION 'comment thread identity fields cannot be updated' USING ERRCODE = 'check_violation'; END IF; END IF; IF NEW.parent_comment_id IS NULL THEN IF EXISTS ( SELECT 1 FROM comments existing WHERE existing.tenant_id = NEW.tenant_id AND existing.review_id = NEW.review_id AND existing.commit_id = NEW.commit_id AND existing.file_path = NEW.file_path AND existing.line = NEW.line AND existing.parent_comment_id IS NULL AND (TG_OP = 'INSERT' OR existing.comment_id <> OLD.comment_id) ) THEN RAISE EXCEPTION 'root comment already exists for review %, commit %, file %, line %', NEW.review_id, NEW.commit_id, NEW.file_path, NEW.line USING ERRCODE = 'unique_violation'; END IF; ELSE IF NOT EXISTS ( SELECT 1 FROM comments parent WHERE parent.tenant_id = NEW.tenant_id AND parent.review_id = NEW.review_id AND parent.comment_id = NEW.parent_comment_id AND parent.commit_id = NEW.commit_id AND parent.file_path = NEW.file_path AND parent.line = NEW.line AND parent.parent_comment_id IS NULL ) THEN RAISE EXCEPTION 'child comments must reference the root comment for the same review, commit, file, and line' USING ERRCODE = 'check_violation'; END IF; END IF; IF TG_OP = 'UPDATE' AND NEW.status <> OLD.status THEN IF OLD.parent_comment_id IS NOT NULL THEN RAISE EXCEPTION 'only the root comment of a thread can have its status updated' USING ERRCODE = 'check_violation'; END IF; IF OLD.creator_user_id <> NULLIF(current_setting('erun.user_id', true), '')::UUID THEN RAISE EXCEPTION 'only the root comment creator can update comment status' USING ERRCODE = 'insufficient_privilege'; END IF; END IF; RETURN NEW; END; $function$