Skip to content

Draft: Use explicit columns for namespaces

Abdul Wadood requested to merge 412824-use-explicit-namespaces-columns into master

What does this MR do and why?

Here we use enumerate_columns_in_select_statements to explicitly select all columns from the namespaces table. We can do so for all the tables by changing the rails config (see https://guides.rubyonrails.org/configuring.html#config-active-record-enumerate-columns-in-select-statements).

But to do a POC namespaces table is good. Follow the steps below to validate locally.

SQL Queries

Before

Before
SELECT COUNT(*) -- before
FROM (SELECT 1 AS one
      FROM (SELECT DISTINCT ON (user_id, invite_email) member_union.id,
                                                       COALESCE(project_authorizations.access_level,
                                                                member_union.access_level) access_level,
                                                       member_union.source_id,
                                                       member_union.source_type,
                                                       member_union.user_id,
                                                       member_union.notification_level,
                                                       member_union.type,
                                                       member_union.created_at,
                                                       member_union.updated_at,
                                                       member_union.created_by_id,
                                                       member_union.invite_email,
                                                       member_union.invite_token,
                                                       member_union.invite_accepted_at,
                                                       member_union.requested_at,
                                                       member_union.expires_at,
                                                       member_union.ldap,
                                                       member_union.override,
                                                       member_union.state,
                                                       member_union.invite_email_success,
                                                       member_union.member_namespace_id,
                                                       member_union.member_role_id
            FROM ((SELECT "members".*
                   FROM (SELECT DISTINCT ON (user_id, invite_email) *
                         FROM ((SELECT "members"."id",
                                       "members"."access_level",
                                       "members"."source_id",
                                       "members"."source_type",
                                       "members"."user_id",
                                       "members"."notification_level",
                                       "members"."type",
                                       "members"."created_at",
                                       "members"."updated_at",
                                       "members"."created_by_id",
                                       "members"."invite_email",
                                       "members"."invite_token",
                                       "members"."invite_accepted_at",
                                       "members"."requested_at",
                                       "members"."expires_at",
                                       "members"."ldap",
                                       "members"."override",
                                       "members"."state",
                                       "members"."invite_email_success",
                                       "members"."member_namespace_id",
                                       "members"."member_role_id"
                                FROM "members"
                                WHERE "members"."type" = 'GroupMember'
                                  AND "members"."source_type" = 'Namespace'
                                  AND "members"."requested_at" IS NULL
                                  AND "members"."source_id" IN (SELECT "namespaces"."id"
                                                                FROM ((SELECT "namespaces".*
                                                                       FROM "namespaces"
                                                                       WHERE "namespaces"."type" = 'Group'
                                                                         AND "namespaces"."id" = 22)) namespaces
                                                                WHERE "namespaces"."type" = 'Group'))
                               UNION
                               (SELECT "members"."id",
                                       LEAST("group_group_links"."group_access", "members"."access_level") AS access_level,
                                       "members"."source_id",
                                       "members"."source_type",
                                       "members"."user_id",
                                       "members"."notification_level",
                                       "members"."type",
                                       "members"."created_at",
                                       "members"."updated_at",
                                       "members"."created_by_id",
                                       "members"."invite_email",
                                       "members"."invite_token",
                                       "members"."invite_accepted_at",
                                       "members"."requested_at",
                                       "members"."expires_at",
                                       "members"."ldap",
                                       "members"."override",
                                       "members"."state",
                                       "members"."invite_email_success",
                                       "members"."member_namespace_id",
                                       "members"."member_role_id"
                                FROM "members"
                                         LEFT OUTER JOIN group_group_links
                                                         ON members.source_id = group_group_links.shared_with_group_id
                                WHERE "members"."type" = 'GroupMember'
                                  AND "members"."source_type" = 'Namespace'
                                  AND "members"."requested_at" IS NULL
                                  AND "members"."source_id" IN (SELECT "namespaces"."id"
                                                                FROM "namespaces"
                                                                         INNER JOIN "group_group_links"
                                                                                    ON "group_group_links"."shared_with_group_id" = "namespaces"."id"
                                                                WHERE "namespaces"."type" = 'Group'
                                                                  AND "group_group_links"."shared_group_id" IN
                                                                      (SELECT "namespaces"."id"
                                                                       FROM "namespaces"
                                                                       WHERE "namespaces"."type" = 'Group'
                                                                         AND "namespaces"."id" = 22)
                                                                  AND ("namespaces"."visibility_level" IN (10, 20) OR
                                                                       EXISTS(SELECT 1
                                                                              FROM (SELECT "namespaces".*
                                                                                    FROM ((WITH "direct_groups"
                                                                                                    AS MATERIALIZED (SELECT "namespaces".*
                                                                                                                     FROM ((SELECT "namespaces"."id",
                                                                                                                                   "namespaces"."name",
                                                                                                                                   "namespaces"."path",
                                                                                                                                   "namespaces"."owner_id",
                                                                                                                                   "namespaces"."created_at",
                                                                                                                                   "namespaces"."updated_at",
                                                                                                                                   "namespaces"."type",
                                                                                                                                   "namespaces"."description",
                                                                                                                                   "namespaces"."avatar",
                                                                                                                                   "namespaces"."membership_lock",
                                                                                                                                   "namespaces"."share_with_group_lock",
                                                                                                                                   "namespaces"."visibility_level",
                                                                                                                                   "namespaces"."request_access_enabled",
                                                                                                                                   "namespaces"."ldap_sync_status",
                                                                                                                                   "namespaces"."ldap_sync_error",
                                                                                                                                   "namespaces"."ldap_sync_last_update_at",
                                                                                                                                   "namespaces"."ldap_sync_last_successful_update_at",
                                                                                                                                   "namespaces"."ldap_sync_last_sync_at",
                                                                                                                                   "namespaces"."description_html",
                                                                                                                                   "namespaces"."lfs_enabled",
                                                                                                                                   "namespaces"."parent_id",
                                                                                                                                   "namespaces"."shared_runners_minutes_limit",
                                                                                                                                   "namespaces"."repository_size_limit",
                                                                                                                                   "namespaces"."require_two_factor_authentication",
                                                                                                                                   "namespaces"."two_factor_grace_period",
                                                                                                                                   "namespaces"."cached_markdown_version",
                                                                                                                                   "namespaces"."project_creation_level",
                                                                                                                                   "namespaces"."runners_token",
                                                                                                                                   "namespaces"."file_template_project_id",
                                                                                                                                   "namespaces"."saml_discovery_token",
                                                                                                                                   "namespaces"."runners_token_encrypted",
                                                                                                                                   "namespaces"."custom_project_templates_group_id",
                                                                                                                                   "namespaces"."auto_devops_enabled",
                                                                                                                                   "namespaces"."extra_shared_runners_minutes_limit",
                                                                                                                                   "namespaces"."last_ci_minutes_notification_at",
                                                                                                                                   "namespaces"."last_ci_minutes_usage_notification_level",
                                                                                                                                   "namespaces"."subgroup_creation_level",
                                                                                                                                   "namespaces"."emails_disabled",
                                                                                                                                   "namespaces"."max_pages_size",
                                                                                                                                   "namespaces"."max_artifacts_size",
                                                                                                                                   "namespaces"."mentions_disabled",
                                                                                                                                   "namespaces"."default_branch_protection",
                                                                                                                                   "namespaces"."unlock_membership_to_ldap",
                                                                                                                                   "namespaces"."max_personal_access_token_lifetime",
                                                                                                                                   "namespaces"."push_rule_id",
                                                                                                                                   "namespaces"."shared_runners_enabled",
                                                                                                                                   "namespaces"."allow_descendants_override_disabled_shared_runners",
                                                                                                                                   "namespaces"."traversal_ids"
                                                                                                                            FROM "namespaces"
                                                                                                                                     INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
                                                                                                                            WHERE "members"."type" = 'GroupMember'
                                                                                                                              AND "members"."source_type" = 'Namespace'
                                                                                                                              AND "namespaces"."type" = 'Group'
                                                                                                                              AND "members"."user_id" = 11
                                                                                                                              AND "members"."requested_at" IS NULL
                                                                                                                              AND (access_level >= 10))
                                                                                                                           UNION
                                                                                                                           (SELECT "namespaces"."id",
                                                                                                                                   "namespaces"."name",
                                                                                                                                   "namespaces"."path",
                                                                                                                                   "namespaces"."owner_id",
                                                                                                                                   "namespaces"."created_at",
                                                                                                                                   "namespaces"."updated_at",
                                                                                                                                   "namespaces"."type",
                                                                                                                                   "namespaces"."description",
                                                                                                                                   "namespaces"."avatar",
                                                                                                                                   "namespaces"."membership_lock",
                                                                                                                                   "namespaces"."share_with_group_lock",
                                                                                                                                   "namespaces"."visibility_level",
                                                                                                                                   "namespaces"."request_access_enabled",
                                                                                                                                   "namespaces"."ldap_sync_status",
                                                                                                                                   "namespaces"."ldap_sync_error",
                                                                                                                                   "namespaces"."ldap_sync_last_update_at",
                                                                                                                                   "namespaces"."ldap_sync_last_successful_update_at",
                                                                                                                                   "namespaces"."ldap_sync_last_sync_at",
                                                                                                                                   "namespaces"."description_html",
                                                                                                                                   "namespaces"."lfs_enabled",
                                                                                                                                   "namespaces"."parent_id",
                                                                                                                                   "namespaces"."shared_runners_minutes_limit",
                                                                                                                                   "namespaces"."repository_size_limit",
                                                                                                                                   "namespaces"."require_two_factor_authentication",
                                                                                                                                   "namespaces"."two_factor_grace_period",
                                                                                                                                   "namespaces"."cached_markdown_version",
                                                                                                                                   "namespaces"."project_creation_level",
                                                                                                                                   "namespaces"."runners_token",
                                                                                                                                   "namespaces"."file_template_project_id",
                                                                                                                                   "namespaces"."saml_discovery_token",
                                                                                                                                   "namespaces"."runners_token_encrypted",
                                                                                                                                   "namespaces"."custom_project_templates_group_id",
                                                                                                                                   "namespaces"."auto_devops_enabled",
                                                                                                                                   "namespaces"."extra_shared_runners_minutes_limit",
                                                                                                                                   "namespaces"."last_ci_minutes_notification_at",
                                                                                                                                   "namespaces"."last_ci_minutes_usage_notification_level",
                                                                                                                                   "namespaces"."subgroup_creation_level",
                                                                                                                                   "namespaces"."emails_disabled",
                                                                                                                                   "namespaces"."max_pages_size",
                                                                                                                                   "namespaces"."max_artifacts_size",
                                                                                                                                   "namespaces"."mentions_disabled",
                                                                                                                                   "namespaces"."default_branch_protection",
                                                                                                                                   "namespaces"."unlock_membership_to_ldap",
                                                                                                                                   "namespaces"."max_personal_access_token_lifetime",
                                                                                                                                   "namespaces"."push_rule_id",
                                                                                                                                   "namespaces"."shared_runners_enabled",
                                                                                                                                   "namespaces"."allow_descendants_override_disabled_shared_runners",
                                                                                                                                   "namespaces"."traversal_ids"
                                                                                                                            FROM "projects"
                                                                                                                                     INNER JOIN "project_authorizations"
                                                                                                                                                ON "projects"."id" = "project_authorizations"."project_id"
                                                                                                                                     INNER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id"
                                                                                                                            WHERE "project_authorizations"."user_id" = 11)) namespaces
                                                                                                                     WHERE "namespaces"."type" = 'Group')
                                                                                           SELECT "namespaces".*
                                                                                           FROM ((SELECT "namespaces".*
                                                                                                  FROM "direct_groups" "namespaces"
                                                                                                  WHERE "namespaces"."type" = 'Group')
                                                                                                 UNION
                                                                                                 (SELECT "namespaces".*
                                                                                                  FROM "namespaces"
                                                                                                           INNER JOIN "group_group_links"
                                                                                                                      ON "group_group_links"."shared_group_id" = "namespaces"."id"
                                                                                                  WHERE "namespaces"."type" = 'Group'
                                                                                                    AND "group_group_links"."shared_with_group_id" IN
                                                                                                        (SELECT "namespaces"."id"
                                                                                                         FROM "direct_groups" "namespaces"
                                                                                                         WHERE "namespaces"."type" = 'Group'))) namespaces
                                                                                           WHERE "namespaces"."type" = 'Group')
                                                                                          UNION
                                                                                          (SELECT "namespaces".*
                                                                                           FROM "namespaces"
                                                                                                    INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
                                                                                           WHERE "members"."type" = 'GroupMember'
                                                                                             AND "members"."source_type" = 'Namespace'
                                                                                             AND "namespaces"."type" = 'Group'
                                                                                             AND "members"."user_id" = 11
                                                                                             AND "members"."access_level" = 5)) namespaces
                                                                                    WHERE "namespaces"."type" = 'Group') authorized
                                                                              WHERE authorized."id" = "namespaces"."id"))))) members
                         WHERE "members"."type" = 'GroupMember'
                           AND "members"."source_type" = 'Namespace'
                         ORDER BY user_id, invite_email, access_level DESC, expires_at DESC, created_at ASC) members
                   WHERE "members"."type" = 'GroupMember'
                     AND "members"."invite_token" IS NULL
                     AND (members.access_level > 5))
                  UNION ALL
                  (SELECT "members".*
                   FROM "members"
                   WHERE "members"."type" = 'GroupMember'
                     AND "members"."source_type" = 'Namespace'
                     AND "members"."source_id" IN
                         (WITH "base_ancestors_cte" AS MATERIALIZED (SELECT "namespaces"."traversal_ids"
                                                                     FROM "namespaces"
                                                                              INNER JOIN "project_group_links"
                                                                                         ON "namespaces"."id" = "project_group_links"."group_id"
                                                                     WHERE "namespaces"."type" = 'Group'
                                                                       AND "project_group_links"."project_id" = 2)
                          SELECT "id"
                          FROM "namespaces"
                                   INNER JOIN (SELECT DISTINCT UNNEST("base_ancestors_cte"."traversal_ids")
                                               FROM base_ancestors_cte) AS ancestors(ancestor_id)
                                              ON namespaces.id = ancestors.ancestor_id
                          WHERE "namespaces"."type" = 'Group'
                            AND ("namespaces"."visibility_level" IN (10, 20) OR EXISTS(SELECT 1
                                                                                       FROM (SELECT "namespaces".*
                                                                                             FROM ((WITH "direct_groups"
                                                                                                             AS MATERIALIZED (SELECT "namespaces".*
                                                                                                                              FROM ((SELECT "namespaces"."id",
                                                                                                                                            "namespaces"."name",
                                                                                                                                            "namespaces"."path",
                                                                                                                                            "namespaces"."owner_id",
                                                                                                                                            "namespaces"."created_at",
                                                                                                                                            "namespaces"."updated_at",
                                                                                                                                            "namespaces"."type",
                                                                                                                                            "namespaces"."description",
                                                                                                                                            "namespaces"."avatar",
                                                                                                                                            "namespaces"."membership_lock",
                                                                                                                                            "namespaces"."share_with_group_lock",
                                                                                                                                            "namespaces"."visibility_level",
                                                                                                                                            "namespaces"."request_access_enabled",
                                                                                                                                            "namespaces"."ldap_sync_status",
                                                                                                                                            "namespaces"."ldap_sync_error",
                                                                                                                                            "namespaces"."ldap_sync_last_update_at",
                                                                                                                                            "namespaces"."ldap_sync_last_successful_update_at",
                                                                                                                                            "namespaces"."ldap_sync_last_sync_at",
                                                                                                                                            "namespaces"."description_html",
                                                                                                                                            "namespaces"."lfs_enabled",
                                                                                                                                            "namespaces"."parent_id",
                                                                                                                                            "namespaces"."shared_runners_minutes_limit",
                                                                                                                                            "namespaces"."repository_size_limit",
                                                                                                                                            "namespaces"."require_two_factor_authentication",
                                                                                                                                            "namespaces"."two_factor_grace_period",
                                                                                                                                            "namespaces"."cached_markdown_version",
                                                                                                                                            "namespaces"."project_creation_level",
                                                                                                                                            "namespaces"."runners_token",
                                                                                                                                            "namespaces"."file_template_project_id",
                                                                                                                                            "namespaces"."saml_discovery_token",
                                                                                                                                            "namespaces"."runners_token_encrypted",
                                                                                                                                            "namespaces"."custom_project_templates_group_id",
                                                                                                                                            "namespaces"."auto_devops_enabled",
                                                                                                                                            "namespaces"."extra_shared_runners_minutes_limit",
                                                                                                                                            "namespaces"."last_ci_minutes_notification_at",
                                                                                                                                            "namespaces"."last_ci_minutes_usage_notification_level",
                                                                                                                                            "namespaces"."subgroup_creation_level",
                                                                                                                                            "namespaces"."emails_disabled",
                                                                                                                                            "namespaces"."max_pages_size",
                                                                                                                                            "namespaces"."max_artifacts_size",
                                                                                                                                            "namespaces"."mentions_disabled",
                                                                                                                                            "namespaces"."default_branch_protection",
                                                                                                                                            "namespaces"."unlock_membership_to_ldap",
                                                                                                                                            "namespaces"."max_personal_access_token_lifetime",
                                                                                                                                            "namespaces"."push_rule_id",
                                                                                                                                            "namespaces"."shared_runners_enabled",
                                                                                                                                            "namespaces"."allow_descendants_override_disabled_shared_runners",
                                                                                                                                            "namespaces"."traversal_ids"
                                                                                                                                     FROM "namespaces"
                                                                                                                                              INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
                                                                                                                                     WHERE "members"."type" = 'GroupMember'
                                                                                                                                       AND "members"."source_type" = 'Namespace'
                                                                                                                                       AND "namespaces"."type" = 'Group'
                                                                                                                                       AND "members"."user_id" = 11
                                                                                                                                       AND "members"."requested_at" IS NULL
                                                                                                                                       AND (access_level >= 10))
                                                                                                                                    UNION
                                                                                                                                    (SELECT "namespaces"."id",
                                                                                                                                            "namespaces"."name",
                                                                                                                                            "namespaces"."path",
                                                                                                                                            "namespaces"."owner_id",
                                                                                                                                            "namespaces"."created_at",
                                                                                                                                            "namespaces"."updated_at",
                                                                                                                                            "namespaces"."type",
                                                                                                                                            "namespaces"."description",
                                                                                                                                            "namespaces"."avatar",
                                                                                                                                            "namespaces"."membership_lock",
                                                                                                                                            "namespaces"."share_with_group_lock",
                                                                                                                                            "namespaces"."visibility_level",
                                                                                                                                            "namespaces"."request_access_enabled",
                                                                                                                                            "namespaces"."ldap_sync_status",
                                                                                                                                            "namespaces"."ldap_sync_error",
                                                                                                                                            "namespaces"."ldap_sync_last_update_at",
                                                                                                                                            "namespaces"."ldap_sync_last_successful_update_at",
                                                                                                                                            "namespaces"."ldap_sync_last_sync_at",
                                                                                                                                            "namespaces"."description_html",
                                                                                                                                            "namespaces"."lfs_enabled",
                                                                                                                                            "namespaces"."parent_id",
                                                                                                                                            "namespaces"."shared_runners_minutes_limit",
                                                                                                                                            "namespaces"."repository_size_limit",
                                                                                                                                            "namespaces"."require_two_factor_authentication",
                                                                                                                                            "namespaces"."two_factor_grace_period",
                                                                                                                                            "namespaces"."cached_markdown_version",
                                                                                                                                            "namespaces"."project_creation_level",
                                                                                                                                            "namespaces"."runners_token",
                                                                                                                                            "namespaces"."file_template_project_id",
                                                                                                                                            "namespaces"."saml_discovery_token",
                                                                                                                                            "namespaces"."runners_token_encrypted",
                                                                                                                                            "namespaces"."custom_project_templates_group_id",
                                                                                                                                            "namespaces"."auto_devops_enabled",
                                                                                                                                            "namespaces"."extra_shared_runners_minutes_limit",
                                                                                                                                            "namespaces"."last_ci_minutes_notification_at",
                                                                                                                                            "namespaces"."last_ci_minutes_usage_notification_level",
                                                                                                                                            "namespaces"."subgroup_creation_level",
                                                                                                                                            "namespaces"."emails_disabled",
                                                                                                                                            "namespaces"."max_pages_size",
                                                                                                                                            "namespaces"."max_artifacts_size",
                                                                                                                                            "namespaces"."mentions_disabled",
                                                                                                                                            "namespaces"."default_branch_protection",
                                                                                                                                            "namespaces"."unlock_membership_to_ldap",
                                                                                                                                            "namespaces"."max_personal_access_token_lifetime",
                                                                                                                                            "namespaces"."push_rule_id",
                                                                                                                                            "namespaces"."shared_runners_enabled",
                                                                                                                                            "namespaces"."allow_descendants_override_disabled_shared_runners",
                                                                                                                                            "namespaces"."traversal_ids"
                                                                                                                                     FROM "projects"
                                                                                                                                              INNER JOIN "project_authorizations"
                                                                                                                                                         ON "projects"."id" = "project_authorizations"."project_id"
                                                                                                                                              INNER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id"
                                                                                                                                     WHERE "project_authorizations"."user_id" = 11)) namespaces
                                                                                                                              WHERE "namespaces"."type" = 'Group')
                                                                                                    SELECT "namespaces".*
                                                                                                    FROM ((SELECT "namespaces".*
                                                                                                           FROM "direct_groups" "namespaces"
                                                                                                           WHERE "namespaces"."type" = 'Group')
                                                                                                          UNION
                                                                                                          (SELECT "namespaces".*
                                                                                                           FROM "namespaces"
                                                                                                                    INNER JOIN "group_group_links"
                                                                                                                               ON "group_group_links"."shared_group_id" = "namespaces"."id"
                                                                                                           WHERE "namespaces"."type" = 'Group'
                                                                                                             AND "group_group_links"."shared_with_group_id" IN
                                                                                                                 (SELECT "namespaces"."id"
                                                                                                                  FROM "direct_groups" "namespaces"
                                                                                                                  WHERE "namespaces"."type" = 'Group'))) namespaces
                                                                                                    WHERE "namespaces"."type" = 'Group')
                                                                                                   UNION
                                                                                                   (SELECT "namespaces".*
                                                                                                    FROM "namespaces"
                                                                                                             INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
                                                                                                    WHERE "members"."type" = 'GroupMember'
                                                                                                      AND "members"."source_type" = 'Namespace'
                                                                                                      AND "namespaces"."type" = 'Group'
                                                                                                      AND "members"."user_id" = 11
                                                                                                      AND "members"."access_level" = 5)) namespaces
                                                                                             WHERE "namespaces"."type" = 'Group') authorized
                                                                                       WHERE authorized."id" = "namespaces"."id")))
                     AND (members.access_level > 5))
                  UNION ALL
                  (SELECT "members".*
                   FROM "members"
                   WHERE "members"."type" = 'ProjectMember'
                     AND "members"."member_namespace_id" = 24
                     AND "members"."requested_at" IS NULL
                     AND "members"."invite_token" IS NULL)) AS member_union
                     LEFT JOIN users ON users.id = member_union.user_id
                     LEFT JOIN project_authorizations ON project_authorizations.user_id = users.id
                AND
                                                         project_authorizations.project_id = 2
            ORDER BY user_id,
                     invite_email,
                     CASE
                         WHEN type = 'ProjectMember' THEN 1
                         WHEN type = 'GroupMember' THEN 2
                         ELSE 3
                         END
           ) AS members
      WHERE "members"."invite_token" IS NULL
        AND "members"."requested_at" IS NULL
      LIMIT 10001) subquery_for_count;

The after query is without "namespaces".*

After
SELECT COUNT(*) -- after
FROM (SELECT 1 AS one
      FROM (SELECT DISTINCT ON (user_id, invite_email) member_union.id,
          COALESCE(project_authorizations.access_level,
          member_union.access_level) access_level,
          member_union.source_id,
          member_union.source_type,
          member_union.user_id,
          member_union.notification_level,
          member_union.type,
          member_union.created_at,
          member_union.updated_at,
          member_union.created_by_id,
          member_union.invite_email,
          member_union.invite_token,
          member_union.invite_accepted_at,
          member_union.requested_at,
          member_union.expires_at,
          member_union.ldap,
          member_union.override,
          member_union.state,
          member_union.invite_email_success,
          member_union.member_namespace_id,
          member_union.member_role_id
            FROM ((SELECT "members".*
                FROM (SELECT DISTINCT ON (user_id, invite_email) *
                FROM ((SELECT "members"."id",
                "members"."access_level",
                "members"."source_id",
                "members"."source_type",
                "members"."user_id",
                "members"."notification_level",
                "members"."type",
                "members"."created_at",
                "members"."updated_at",
                "members"."created_by_id",
                "members"."invite_email",
                "members"."invite_token",
                "members"."invite_accepted_at",
                "members"."requested_at",
                "members"."expires_at",
                "members"."ldap",
                "members"."override",
                "members"."state",
                "members"."invite_email_success",
                "members"."member_namespace_id",
                "members"."member_role_id"
                FROM "members"
                WHERE "members"."type" = 'GroupMember'
                AND "members"."source_type" = 'Namespace'
                AND "members"."requested_at" IS NULL
                AND "members"."source_id" IN (SELECT "namespaces"."id"
                FROM ((SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM "namespaces"
                WHERE "namespaces"."type" = 'Group'
                AND "namespaces"."id" = 22)) namespaces
                WHERE "namespaces"."type" = 'Group'))
                UNION
                (SELECT "members"."id",
                LEAST("group_group_links"."group_access", "members"."access_level") AS access_level,
                "members"."source_id",
                "members"."source_type",
                "members"."user_id",
                "members"."notification_level",
                "members"."type",
                "members"."created_at",
                "members"."updated_at",
                "members"."created_by_id",
                "members"."invite_email",
                "members"."invite_token",
                "members"."invite_accepted_at",
                "members"."requested_at",
                "members"."expires_at",
                "members"."ldap",
                "members"."override",
                "members"."state",
                "members"."invite_email_success",
                "members"."member_namespace_id",
                "members"."member_role_id"
                FROM "members"
                LEFT OUTER JOIN group_group_links
                ON members.source_id = group_group_links.shared_with_group_id
                WHERE "members"."type" = 'GroupMember'
                AND "members"."source_type" = 'Namespace'
                AND "members"."requested_at" IS NULL
                AND "members"."source_id" IN (SELECT "namespaces"."id"
                FROM "namespaces"
                INNER JOIN "group_group_links"
                ON "group_group_links"."shared_with_group_id" = "namespaces"."id"
                WHERE "namespaces"."type" = 'Group'
                AND "group_group_links"."shared_group_id" IN
                (SELECT "namespaces"."id"
                FROM "namespaces"
                WHERE "namespaces"."type" = 'Group'
                AND "namespaces"."id" = 22)
                AND ("namespaces"."visibility_level" IN (10, 20) OR
                EXISTS(SELECT 1
                FROM (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM ((WITH "direct_groups"
                AS MATERIALIZED (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM ((SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids",
                "namespaces"."organization_id"
                FROM "namespaces"
                INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
                WHERE "members"."type" = 'GroupMember'
                AND "members"."source_type" = 'Namespace'
                AND "namespaces"."type" = 'Group'
                AND "members"."user_id" = 11
                AND "members"."requested_at" IS NULL
                AND (access_level >= 10))
                UNION
                (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids",
                "namespaces"."organization_id"
                FROM "projects"
                INNER JOIN "project_authorizations"
                ON "projects"."id" = "project_authorizations"."project_id"
                INNER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id"
                WHERE "project_authorizations"."user_id" = 11)) namespaces
                WHERE "namespaces"."type" = 'Group')
                SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM ((SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM "direct_groups" "namespaces"
                WHERE "namespaces"."type" = 'Group')
                UNION
                (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM "namespaces"
                INNER JOIN "group_group_links"
                ON "group_group_links"."shared_group_id" = "namespaces"."id"
                WHERE "namespaces"."type" = 'Group'
                AND "group_group_links"."shared_with_group_id" IN
                (SELECT "namespaces"."id"
                FROM "direct_groups" "namespaces"
                WHERE "namespaces"."type" = 'Group'))) namespaces
                WHERE "namespaces"."type" = 'Group')
                UNION
                (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM "namespaces"
                INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
                WHERE "members"."type" = 'GroupMember'
                AND "members"."source_type" = 'Namespace'
                AND "namespaces"."type" = 'Group'
                AND "members"."user_id" = 11
                AND "members"."access_level" = 5)) namespaces
                WHERE "namespaces"."type" = 'Group') authorized
                WHERE authorized."id" = "namespaces"."id"))))) members
                WHERE "members"."type" = 'GroupMember'
                AND "members"."source_type" = 'Namespace'
                ORDER BY user_id, invite_email, access_level DESC, expires_at DESC, created_at ASC) members
                WHERE "members"."type" = 'GroupMember'
                AND "members"."invite_token" IS NULL
                AND (members.access_level > 5))
                UNION ALL
                (SELECT "members".*
                FROM "members"
                WHERE "members"."type" = 'GroupMember'
                AND "members"."source_type" = 'Namespace'
                AND "members"."source_id" IN
                (WITH "base_ancestors_cte" AS MATERIALIZED (SELECT "namespaces"."traversal_ids"
                FROM "namespaces"
                INNER JOIN "project_group_links"
                ON "namespaces"."id" = "project_group_links"."group_id"
                WHERE "namespaces"."type" = 'Group'
                AND "project_group_links"."project_id" = 2)
                SELECT "id"
                FROM "namespaces"
                INNER JOIN (SELECT DISTINCT UNNEST("base_ancestors_cte"."traversal_ids")
                FROM base_ancestors_cte) AS ancestors(ancestor_id)
                ON namespaces.id = ancestors.ancestor_id
                WHERE "namespaces"."type" = 'Group'
                AND ("namespaces"."visibility_level" IN (10, 20) OR EXISTS(SELECT 1
                FROM (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM ((WITH "direct_groups"
                AS MATERIALIZED (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM ((SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids",
                "namespaces"."organization_id"
                FROM "namespaces"
                INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
                WHERE "members"."type" = 'GroupMember'
                AND "members"."source_type" = 'Namespace'
                AND "namespaces"."type" = 'Group'
                AND "members"."user_id" = 11
                AND "members"."requested_at" IS NULL
                AND (access_level >= 10))
                UNION
                (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids",
                "namespaces"."organization_id"
                FROM "projects"
                INNER JOIN "project_authorizations"
                ON "projects"."id" = "project_authorizations"."project_id"
                INNER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id"
                WHERE "project_authorizations"."user_id" = 11)) namespaces
                WHERE "namespaces"."type" = 'Group')
                SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM ((SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM "direct_groups" "namespaces"
                WHERE "namespaces"."type" = 'Group')
                UNION
                (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM "namespaces"
                INNER JOIN "group_group_links"
                ON "group_group_links"."shared_group_id" = "namespaces"."id"
                WHERE "namespaces"."type" = 'Group'
                AND "group_group_links"."shared_with_group_id" IN
                (SELECT "namespaces"."id"
                FROM "direct_groups" "namespaces"
                WHERE "namespaces"."type" = 'Group'))) namespaces
                WHERE "namespaces"."type" = 'Group')
                UNION
                (SELECT "namespaces"."id",
                "namespaces"."name",
                "namespaces"."path",
                "namespaces"."owner_id",
                "namespaces"."created_at",
                "namespaces"."updated_at",
                "namespaces"."type",
                "namespaces"."description",
                "namespaces"."avatar",
                "namespaces"."membership_lock",
                "namespaces"."share_with_group_lock",
                "namespaces"."visibility_level",
                "namespaces"."request_access_enabled",
                "namespaces"."ldap_sync_status",
                "namespaces"."ldap_sync_error",
                "namespaces"."ldap_sync_last_update_at",
                "namespaces"."ldap_sync_last_successful_update_at",
                "namespaces"."ldap_sync_last_sync_at",
                "namespaces"."description_html",
                "namespaces"."lfs_enabled",
                "namespaces"."parent_id",
                "namespaces"."shared_runners_minutes_limit",
                "namespaces"."repository_size_limit",
                "namespaces"."require_two_factor_authentication",
                "namespaces"."two_factor_grace_period",
                "namespaces"."cached_markdown_version",
                "namespaces"."project_creation_level",
                "namespaces"."runners_token",
                "namespaces"."file_template_project_id",
                "namespaces"."saml_discovery_token",
                "namespaces"."runners_token_encrypted",
                "namespaces"."custom_project_templates_group_id",
                "namespaces"."auto_devops_enabled",
                "namespaces"."extra_shared_runners_minutes_limit",
                "namespaces"."last_ci_minutes_notification_at",
                "namespaces"."last_ci_minutes_usage_notification_level",
                "namespaces"."subgroup_creation_level",
                "namespaces"."emails_disabled",
                "namespaces"."max_pages_size",
                "namespaces"."max_artifacts_size",
                "namespaces"."mentions_disabled",
                "namespaces"."default_branch_protection",
                "namespaces"."unlock_membership_to_ldap",
                "namespaces"."max_personal_access_token_lifetime",
                "namespaces"."push_rule_id",
                "namespaces"."shared_runners_enabled",
                "namespaces"."allow_descendants_override_disabled_shared_runners",
                "namespaces"."traversal_ids"
                FROM "namespaces"
                INNER JOIN "members" ON "namespaces"."id" = "members"."source_id"
                WHERE "members"."type" = 'GroupMember'
                AND "members"."source_type" = 'Namespace'
                AND "namespaces"."type" = 'Group'
                AND "members"."user_id" = 11
                AND "members"."access_level" = 5)) namespaces
                WHERE "namespaces"."type" = 'Group') authorized
                WHERE authorized."id" = "namespaces"."id")))
                AND (members.access_level > 5))
                UNION ALL
                (SELECT "members".*
                FROM "members"
                WHERE "members"."type" = 'ProjectMember'
                AND "members"."member_namespace_id" = 24
                AND "members"."requested_at" IS NULL
                AND "members"."invite_token" IS NULL)) AS member_union
                LEFT JOIN users ON users.id = member_union.user_id
                LEFT JOIN project_authorizations ON project_authorizations.user_id = users.id
                AND
                project_authorizations.project_id = 2
            ORDER BY user_id,
                invite_email,
                CASE
                WHEN type = 'ProjectMember' THEN 1
                WHEN type = 'GroupMember' THEN 2
                ELSE 3
                END
           ) AS members
      WHERE "members"."invite_token" IS NULL
        AND "members"."requested_at" IS NULL
          LIMIT 10001) subquery_for_count;

How to set up and validate locally

Follow the steps here and you shouldn't get the 500 error gitlab-com/gl-infra/production#14470 (comment 1402753645)

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #412824 (closed)

Edited by Abdul Wadood

Merge request reports