Make Keyset::InOperatorOptimization work with Graphql

While looking into !95685 (comment 1130870531) we discovered that Keyset::InOperatorOptimization doesn't really work with GraphQL out of the box because our GraphQL cursor doesn't recognise the order clause.

See more on https://www.youtube.com/watch?v=USTRljvvWCo

Some diff we tried on the issue
diff --git a/app/finders/releases/group_releases_finder.rb b/app/finders/releases/group_releases_finder.rb
index 08530f63ea6..5647295b707 100644
--- a/app/finders/releases/group_releases_finder.rb
+++ b/app/finders/releases/group_releases_finder.rb
@@ -14,6 +14,7 @@ def initialize(parent, current_user = nil, params = {})
       @parent = parent
       @current_user = current_user
       @params = params
+      @cursor = params[:cursor] || {}
 
       params[:sort] ||= 'desc'
     end
@@ -40,7 +41,15 @@ def get_releases
     end
 
     def releases_scope
-      Release.sort_by_attribute("released_at_#{params[:sort]}").order(id: params[:sort])
+      scope = Release.sort_by_attribute("released_at_#{params[:sort]}").order(id: params[:sort])
+      if @cursor.any?
+        scope, success = Gitlab::Pagination::Keyset::SimpleOrderBuilder.build(scope)
+        raise 'unsupported query' unless success
+
+        order = Gitlab::Pagination::Keyset::Order.extract_keyset_order_object(scope)
+        scope = order.apply_cursor_conditions(scope, @cursor)
+      end
+      scope
     end
 
     # rubocop: enable CodeReuse/ActiveRecord
diff --git a/app/graphql/resolvers/group_releases_resolver.rb b/app/graphql/resolvers/group_releases_resolver.rb
index de1fa8a977d..86e4af44e26 100644
--- a/app/graphql/resolvers/group_releases_resolver.rb
+++ b/app/graphql/resolvers/group_releases_resolver.rb
@@ -17,6 +17,8 @@ class GroupReleasesResolver < BaseResolver
     }.freeze
 
     def resolve(sort:)
+      byebug
+
       Releases::GroupReleasesFinder.new(
         group,
         current_user,
diff --git a/lib/gitlab/graphql/pagination/keyset/connection.rb b/lib/gitlab/graphql/pagination/keyset/connection.rb
index b5f2c5ee6e8..c1efa37fcc2 100644
--- a/lib/gitlab/graphql/pagination/keyset/connection.rb
+++ b/lib/gitlab/graphql/pagination/keyset/connection.rb
@@ -94,7 +94,7 @@ def nodes
 
           def items
             original_items = super
-            return original_items if Gitlab::Pagination::Keyset::Order.keyset_aware?(original_items)
+            return original_items if Gitlab::Pagination::Keyset::Order.keyset_aware?(original_items) # || order_values.eql?('1+1')
 
             strong_memoize(:keyset_pagination_items) do
               rebuilt_items_with_keyset_order, success =
Edited by Vladimir Shushlin