ActiveRecord::StatementInvalid: PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in sele...
https://sentry.gitlab.net/gitlab/gitlabcom/issues/3436970/?referrer=gitlab_plugin
PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 13: ....id)) AND "projects"."archived" = FALSE) ORDER BY LOWER("mer...
^
lib/gitlab/database/load_balancing/connection_proxy.rb:104:in `block in read_using_load_balancer'
connection.send(...)
lib/gitlab/database/load_balancing/load_balancer.rb:55:in `read'
return yield connection
lib/gitlab/database/load_balancing/connection_proxy.rb:103:in `read_using_load_balancer'
@load_balancer.read do |connection|
lib/gitlab/database/load_balancing/connection_proxy.rb:48:in `select_all'
read_using_load_balancer(:select_all, arel, name, binds)
lib/gitlab/issuable_metadata.rb:67:in `map'
issuable_collection.map(&:id)
...
(193 additional frame(s) were not displayed)
ActiveRecord::StatementInvalid: PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 13: ....id)) AND "projects"."archived" = FALSE) ORDER BY LOWER("mer...
^
Resulting SQL:
/*application:web,correlation_id:01GC9VGHFXXYWA5GEAYFFS61PX,endpoint_id:DashboardController#merge_requests,db_config_name:main_replica*/ SELECT DISTINCT "merge_requests".* FROM "merge_requests" INNER JOIN "projects" ON "projects"."id" = "merge_requests"."target_project_id" LEFT JOIN project_features ON projects.id = project_features.project_id JOIN milestone_releases ON merge_requests.milestone_id = milestone_releases.milestone_id
JOIN releases ON milestone_releases.release_id = releases.id WHERE (EXISTS (SELECT $1 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $2 AND (project_authorizations.project_id = projects.id) AND (project_authorizations.access_level >= $3)) OR projects.visibility_level IN ($4,$5)) AND ("project_features"."merge_requests_access_level" IS NULL OR "project_features"."merge_requests_access_level" IN ($6,$7) OR ("project_features"."merge_requests_access_level" = $8 AND EXISTS (SELECT $9 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $10 AND (project_authorizations.project_id = project_features.project_id) AND (project_authorizations.access_level >= $11)))) AND ("merge_requests"."state_id" IN ($12)) AND EXISTS (SELECT "merge_request_assignees"."id", "merge_request_assignees"."user_id", "merge_request_assignees"."merge_request_id", "merge_request_assignees"."created_at" FROM "merge_request_assignees" WHERE "merge_request_assignees"."user_id" = $13 AND (merge_request_id = merge_requests.id)) AND "projects"."archived" = $14 AND "merge_requests"."id" IN (SELECT DISTINCT "merge_requests"."id" FROM ((SELECT DISTINCT "merge_requests".* FROM "merge_requests" INNER JOIN "projects" ON "projects"."id" = "merge_requests"."target_project_id" INNER JOIN "approval_merge_request_rules" ON "approval_merge_request_rules"."merge_request_id" = "merge_requests"."id" INNER JOIN "approval_merge_request_rules_users" ON "approval_merge_request_rules_users"."approval_merge_request_rule_id" = "approval_merge_request_rules"."id" INNER JOIN "users" ON "users"."id" = "approval_merge_request_rules_users"."user_id" LEFT JOIN project_features ON projects.id = project_features.project_id JOIN milestone_releases ON merge_requests.milestone_id = milestone_releases.milestone_id
JOIN releases ON milestone_releases.release_id = releases.id WHERE (EXISTS (SELECT $15 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $16 AND (project_authorizations.project_id = projects.id) AND (project_authorizations.access_level >= $17)) OR projects.visibility_level IN ($18,$19)) AND ("project_features"."merge_requests_access_level" IS NULL OR "project_features"."merge_requests_access_level" IN ($20,$21) OR ("project_features"."merge_requests_access_level" = $22 AND EXISTS (SELECT $23 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $24 AND (project_authorizations.project_id = project_features.project_id) AND (project_authorizations.access_level >= $25)))) AND ("merge_requests"."state_id" IN ($26)) AND EXISTS (SELECT "merge_request_assignees"."id", "merge_request_assignees"."user_id", "merge_request_assignees"."merge_request_id", "merge_request_assignees"."created_at" FROM "merge_request_assignees" WHERE "merge_request_assignees"."user_id" = $27 AND (merge_request_id = merge_requests.id)) AND "projects"."archived" = $28 AND "users"."username" = $29 GROUP BY "merge_requests"."id" HAVING (COUNT(users.id) = $30))
UNION
(SELECT DISTINCT "merge_requests".* FROM "merge_requests" INNER JOIN "projects" ON "projects"."id" = "merge_requests"."target_project_id" INNER JOIN "approval_merge_request_rules" ON "approval_merge_request_rules"."merge_request_id" = "merge_requests"."id" INNER JOIN "approval_merge_request_rules_groups" ON "approval_merge_request_rules_groups"."approval_merge_request_rule_id" = "approval_merge_request_rules"."id" INNER JOIN "namespaces" ON "namespaces"."id" = "approval_merge_request_rules_groups"."group_id" AND "namespaces"."type" = $31 INNER JOIN "members" ON "members"."source_type" = $32 AND "members"."requested_at" IS NULL AND "members"."access_level" != $33 AND "members"."source_id" = "namespaces"."id" AND "members"."type" = $34 INNER JOIN "users" ON "users"."id" = "members"."user_id" LEFT JOIN project_features ON projects.id = project_features.project_id JOIN milestone_releases ON merge_requests.milestone_id = milestone_releases.milestone_id
JOIN releases ON milestone_releases.release_id = releases.id WHERE (EXISTS (SELECT $35 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $36 AND (project_authorizations.project_id = projects.id) AND (project_authorizations.access_level >= $37)) OR projects.visibility_level IN ($38,$39)) AND ("project_features"."merge_requests_access_level" IS NULL OR "project_features"."merge_requests_access_level" IN ($40,$41) OR ("project_features"."merge_requests_access_level" = $42 AND EXISTS (SELECT $43 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $44 AND (project_authorizations.project_id = project_features.project_id) AND (project_authorizations.access_level >= $45)))) AND ("merge_requests"."state_id" IN ($46)) AND EXISTS (SELECT "merge_request_assignees"."id", "merge_request_assignees"."user_id", "merge_request_assignees"."merge_request_id", "merge_request_assignees"."created_at" FROM "merge_request_assignees" WHERE "merge_request_assignees"."user_id" = $47 AND (merge_request_id = merge_requests.id)) AND "projects"."archived" = $48 AND "users"."username" = $49 GROUP BY "merge_requests"."id" HAVING (COUNT(users.id) = $50))
UNION
(SELECT DISTINCT "merge_requests".* FROM "merge_requests" INNER JOIN "projects" ON "projects"."id" = "merge_requests"."target_project_id" INNER JOIN "approval_project_rules" ON "approval_project_rules"."project_id" = "projects"."id" INNER JOIN "approval_project_rules_users" ON "approval_project_rules_users"."approval_project_rule_id" = "approval_project_rules"."id" INNER JOIN "users" ON "users"."id" = "approval_project_rules_users"."user_id" LEFT OUTER JOIN "approval_merge_request_rules" ON "approval_merge_request_rules"."merge_request_id" = "merge_requests"."id" LEFT JOIN project_features ON projects.id = project_features.project_id JOIN milestone_releases ON merge_requests.milestone_id = milestone_releases.milestone_id
JOIN releases ON milestone_releases.release_id = releases.id WHERE (EXISTS (SELECT $51 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $52 AND (project_authorizations.project_id = projects.id) AND (project_authorizations.access_level >= $53)) OR projects.visibility_level IN ($54,$55)) AND ("project_features"."merge_requests_access_level" IS NULL OR "project_features"."merge_requests_access_level" IN ($56,$57) OR ("project_features"."merge_requests_access_level" = $58 AND EXISTS (SELECT $59 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $60 AND (project_authorizations.project_id = project_features.project_id) AND (project_authorizations.access_level >= $61)))) AND ("merge_requests"."state_id" IN ($62)) AND EXISTS (SELECT "merge_request_assignees"."id", "merge_request_assignees"."user_id", "merge_request_assignees"."merge_request_id", "merge_request_assignees"."created_at" FROM "merge_request_assignees" WHERE "merge_request_assignees"."user_id" = $63 AND (merge_request_id = merge_requests.id)) AND "projects"."archived" = $64 AND "approval_merge_request_rules"."id" IS NULL AND "users"."username" = $65 GROUP BY "merge_requests"."id" HAVING (COUNT(users.id) = $66))
UNION
(SELECT DISTINCT "merge_requests".* FROM "merge_requests" INNER JOIN "projects" ON "projects"."id" = "merge_requests"."target_project_id" INNER JOIN "approval_project_rules" ON "approval_project_rules"."project_id" = "projects"."id" INNER JOIN "approval_project_rules_groups" ON "approval_project_rules_groups"."approval_project_rule_id" = "approval_project_rules"."id" INNER JOIN "namespaces" ON "namespaces"."id" = "approval_project_rules_groups"."group_id" AND "namespaces"."type" = $67 INNER JOIN "members" ON "members"."source_type" = $68 AND "members"."requested_at" IS NULL AND "members"."access_level" != $69 AND "members"."source_id" = "namespaces"."id" AND "members"."type" = $70 INNER JOIN "users" ON "users"."id" = "members"."user_id" LEFT OUTER JOIN "approval_merge_request_rules" ON "approval_merge_request_rules"."merge_request_id" = "merge_requests"."id" LEFT JOIN project_features ON projects.id = project_features.project_id JOIN milestone_releases ON merge_requests.milestone_id = milestone_releases.milestone_id
JOIN releases ON milestone_releases.release_id = releases.id WHERE (EXISTS (SELECT $71 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $72 AND (project_authorizations.project_id = projects.id) AND (project_authorizations.access_level >= $73)) OR projects.visibility_level IN ($74,$75)) AND ("project_features"."merge_requests_access_level" IS NULL OR "project_features"."merge_requests_access_level" IN ($76,$77) OR ("project_features"."merge_requests_access_level" = $78 AND EXISTS (SELECT $79 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $80 AND (project_authorizations.project_id = project_features.project_id) AND (project_authorizations.access_level >= $81)))) AND ("merge_requests"."state_id" IN ($82)) AND EXISTS (SELECT "merge_request_assignees"."id", "merge_request_assignees"."user_id", "merge_request_assignees"."merge_request_id", "merge_request_assignees"."created_at" FROM "merge_request_assignees" WHERE "merge_request_assignees"."user_id" = $83 AND (merge_request_id = merge_requests.id)) AND "projects"."archived" = $84 AND "approval_merge_request_rules"."id" IS NULL AND "users"."username" = $85 GROUP BY "merge_requests"."id" HAVING (COUNT(users.id) = $86))) merge_requests INNER JOIN "projects" ON "projects"."id" = "merge_requests"."target_project_id" LEFT JOIN project_features ON projects.id = project_features.project_id JOIN milestone_releases ON merge_requests.milestone_id = milestone_releases.milestone_id
JOIN releases ON milestone_releases.release_id = releases.id WHERE (EXISTS (SELECT $87 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $88 AND (project_authorizations.project_id = projects.id) AND (project_authorizations.access_level >= $89)) OR projects.visibility_level IN ($90,$91)) AND ("project_features"."merge_requests_access_level" IS NULL OR "project_features"."merge_requests_access_level" IN ($92,$93) OR ("project_features"."merge_requests_access_level" = $94 AND EXISTS (SELECT $95 FROM "project_authorizations" WHERE "project_authorizations"."user_id" = $96 AND (project_authorizations.project_id = project_features.project_id) AND (project_authorizations.access_level >= $97)))) AND ("merge_requests"."state_id" IN ($98)) AND EXISTS (SELECT "merge_request_assignees"."id", "merge_request_assignees"."user_id", "merge_request_assignees"."merge_request_id", "merge_request_assignees"."created_at" FROM "merge_request_assignees" WHERE "merge_request_assignees"."user_id" = $99 AND (merge_request_id = merge_requests.id)) AND "projects"."archived" = $100) ORDER BY LOWER("merge_requests"."title") ASC, "merge_requests"."id" DESC LIMIT $102 OFFSET $101
PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 13: ....id)) AND "projects"."archived" = FALSE) ORDER BY LOWER("mer...
^
from activerecord (6.1.6.1) lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `exec_params'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `block (2 levels) in exec_no_cache'
from activesupport (6.1.6.1) lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
from activesupport (6.1.6.1) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
from activesupport (6.1.6.1) lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `block in exec_no_cache'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract_adapter.rb:695:in `block in log'
from activesupport (6.1.6.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract_adapter.rb:687:in `log'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/postgresql_adapter.rb:670:in `exec_no_cache'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/postgresql_adapter.rb:649:in `execute_and_clear'
from marginalia (1.10.0) lib/marginalia.rb:95:in `execute_and_clear_with_marginalia'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:55:in `exec_query'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract/database_statements.rb:532:in `select'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract/database_statements.rb:69:in `select_all'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract/query_cache.rb:101:in `block in select_all'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract/query_cache.rb:118:in `block in cache_sql'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
from activesupport (6.1.6.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract/query_cache.rb:109:in `cache_sql'
from activerecord (6.1.6.1) lib/active_record/connection_adapters/abstract/query_cache.rb:101:in `select_all'
from lib/gitlab/database/load_balancing/connection_proxy.rb:104:in `block in read_using_load_balancer'
from lib/gitlab/database/load_balancing/load_balancer.rb:55:in `read'
from lib/gitlab/database/load_balancing/connection_proxy.rb:103:in `read_using_load_balancer'
from lib/gitlab/database/load_balancing/connection_proxy.rb:48:in `select_all'
from activerecord (6.1.6.1) lib/active_record/querying.rb:47:in `find_by_sql'
from activerecord (6.1.6.1) lib/active_record/relation.rb:843:in `block in exec_queries'
from activerecord (6.1.6.1) lib/active_record/relation.rb:861:in `skip_query_cache_if_necessary'
from activerecord (6.1.6.1) lib/active_record/relation.rb:828:in `exec_queries'
from activerecord (6.1.6.1) lib/active_record/relation.rb:631:in `load'
from activerecord (6.1.6.1) lib/active_record/relation.rb:249:in `records'
from activerecord (6.1.6.1) lib/active_record/relation/delegation.rb:88:in `each'
from lib/gitlab/issuable_metadata.rb:67:in `map'
from lib/gitlab/issuable_metadata.rb:67:in `block in issuable_ids'
from lib/gitlab/utils/strong_memoize.rb:44:in `strong_memoize'
from lib/gitlab/issuable_metadata.rb:62:in `issuable_ids'
from lib/gitlab/issuable_metadata.rb:28:in `data'
from app/controllers/concerns/issuable_collections_action.rb:29:in `merge_requests'
Edited by Stan Hu