Skip to content

Fix WorkItem Hierarchy paginaton cursor issue

Abhilash Kotte requested to merge akotte-hierarchy-widget-pagination-issue into master

What does this MR do and why?

Fix pagination issue with work_item children

Issue: #466229 (closed)

Steps to test

  1. Create a Epic work item
  2. Add enough children to paginate in the list
  3. Use the following query and check if we are getting correct results for every page

Query

query workItemChildItems(
  $fullPath: ID!
  $iid: String!
  $after: String
  $pageSize: Int
) {
  workspace: namespace(fullPath: $fullPath) {
    id
    workItem(iid: $iid) {
      id
      iid
      widgets {
        ... on WorkItemWidgetHierarchy {
          children(first: $pageSize, after: $after) {
            pageInfo {
              ...PageInfo
              __typename
            }
            nodes {
              id
              iid
              title
            }
          }
        }
      }      
    }    
  }
}

fragment PageInfo on PageInfo {
  hasNextPage
  hasPreviousPage
  startCursor
  endCursor
  __typename
}

Variables:

{
  "fullPath": "flightjs",
  "iid": "6",
  "after": "",
  "pageSize": 5
}

SQL Queries

First Page

SELECT "issues"."id", "issues"."title", "issues"."author_id", "issues"."project_id", "issues"."created_at", "issues"."updated_at",
 "issues"."description", "issues"."milestone_id", "issues"."iid", "issues"."updated_by_id", "issues"."weight", "issues"."confidential",
 "issues"."due_date", "issues"."moved_to_id", "issues"."lock_version", "issues"."title_html", "issues"."description_html",
 "issues"."time_estimate", "issues"."relative_position", "issues"."service_desk_reply_to", "issues"."cached_markdown_version",
 "issues"."last_edited_at", "issues"."last_edited_by_id", "issues"."discussion_locked", "issues"."closed_at", "issues"."closed_by_id",
 "issues"."state_id", "issues"."duplicated_to_id", "issues"."promoted_to_epic_id", "issues"."health_status", "issues"."external_key",
 "issues"."sprint_id", "issues"."blocking_issues_count", "issues"."upvotes_count", "issues"."work_item_type_id", "issues"."namespace_id",
 "issues"."start_date", "issues"."imported_from", "work_item_parent_links"."relative_position" AS parent_link_relative_position 
FROM "issues" INNER JOIN "work_item_parent_links" ON "issues"."id" = "work_item_parent_links"."work_item_id" 
WHERE "work_item_parent_links"."work_item_parent_id" = 648 
ORDER BY "work_item_parent_links"."relative_position" ASC NULLS LAST, "issues"."id" DESC LIMIT 6
Second Page

SELECT "issues"."id", "issues"."title", "issues"."author_id", "issues"."project_id", "issues"."created_at", "issues"."updated_at",
 "issues"."description", "issues"."milestone_id", "issues"."iid", "issues"."updated_by_id", "issues"."weight", "issues"."confidential",
 "issues"."due_date", "issues"."moved_to_id", "issues"."lock_version", "issues"."title_html", "issues"."description_html",
 "issues"."time_estimate", "issues"."relative_position", "issues"."service_desk_reply_to", "issues"."cached_markdown_version",
 "issues"."last_edited_at", "issues"."last_edited_by_id", "issues"."discussion_locked", "issues"."closed_at", "issues"."closed_by_id",
 "issues"."state_id", "issues"."duplicated_to_id", "issues"."promoted_to_epic_id", "issues"."health_status", "issues"."external_key",
 "issues"."sprint_id", "issues"."blocking_issues_count", "issues"."upvotes_count", "issues"."work_item_type_id", "issues"."namespace_id",
 "issues"."start_date", "issues"."imported_from", "work_item_parent_links"."relative_position" AS parent_link_relative_position,
 "work_item_parent_links"."relative_position" AS parent_link_relative_position 
FROM "issues" INNER JOIN "work_item_parent_links" ON "issues"."id" = "work_item_parent_links"."work_item_id" 
WHERE "work_item_parent_links"."work_item_parent_id" = 648 AND (2309 IS NULL AND "work_item_parent_links"."relative_position" IS NULL AND "issues"."id" < 656 OR 2309 IS NOT NULL AND "work_item_parent_links"."relative_position" IS NULL OR 2309 IS NOT NULL AND "work_item_parent_links"."relative_position" > 2309 OR 2309 IS NOT NULL AND "work_item_parent_links"."relative_position" = 2309 AND "issues"."id" < 656) 
ORDER BY "work_item_parent_links"."relative_position" ASC NULLS LAST, "issues"."id" DESC LIMIT 6
Edited by Abhilash Kotte

Merge request reports

Loading