Fix SimpleOrderBuilder to work with `CASE` queries
The following query errors out on staging/locally when new_graphql_keyset_pagination
FF is on
query vulnerabilities($first: Int, $last: Int, $after: String, $before: String) {
group(fullPath: "gitlab-org") {
vulnerabilities(
sort: report_type_asc
first: $first
last: $last
before: $before
after: $after
) {
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
nodes {
id
state
reportType
}
}
}
}
stack trace:
NoMethodError (undefined method `name' for #<Arel::Nodes::Case:0x00007fdcfac64010>):
lib/gitlab/pagination/keyset/simple_order_builder.rb:126:in `ordered_by_other_column_with_tie_breaker?'
lib/gitlab/pagination/keyset/simple_order_builder.rb:35:in `build'
lib/gitlab/pagination/keyset/simple_order_builder.rb:15:in `build'
lib/gitlab/graphql/pagination/keyset/generic_keyset_pagination.rb:82:in `block in items'
lib/gitlab/utils/strong_memoize.rb:30:in `strong_memoize'
lib/gitlab/graphql/pagination/keyset/generic_keyset_pagination.rb:81:in `items'
lib/gitlab/graphql/pagination/keyset/generic_keyset_pagination.rb:16:in `has_next_page'
lib/gitlab/graphql/generic_tracing.rb:40:in `with_labkit_tracing'
lib/gitlab/graphql/generic_tracing.rb:30:in `platform_trace'
lib/gitlab/graphql/generic_tracing.rb:40:in `with_labkit_tracing'
lib/gitlab/graphql/generic_tracing.rb:30:in `platform_trace'
app/graphql/gitlab_schema.rb:40:in `multiplex'
app/controllers/graphql_controller.rb:117:in `execute_query'
app/controllers/graphql_controller.rb:41:in `execute'
ee/lib/gitlab/ip_address_state.rb:10:in `with'
ee/app/controllers/ee/application_controller.rb:44:in `set_current_ip_address'
app/controllers/application_controller.rb:483:in `set_current_admin'
lib/gitlab/session.rb:11:in `with_session'
app/controllers/application_controller.rb:474:in `set_session_storage'
lib/gitlab/i18n.rb:99:in `with_locale'
lib/gitlab/i18n.rb:105:in `with_user_locale'
app/controllers/application_controller.rb:468:in `set_locale'
app/controllers/application_controller.rb:462:in `set_current_context'
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
lib/gitlab/metrics/web_transaction.rb:21:in `run'
Edited by euko