Uploaded image for project: 'mod-inventory'
  1. mod-inventory
  2. MODINV-476

Performance: Query Search: Leads to a runaway query

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • P3
    • Resolution: Duplicate
    • None
    • None
    • Prokopovych - Sprint 124, Prokopovych - Sprint 125
    • Prokopovych
    • St. Michael's College

    Description

      Steps to reproduce: 

      1. Go to https://bugfest-iris.folio.ebsco.com
      2. Go to Inventory app
      3. Conduct a query search on Instances
      4. Query is cql.allRecords=1 NOT item.hrid=""
      5. Notice that response takes ~2 mins - https://okapi-bugfest-iris.folio.ebsco.com/inventory/instances?limit=100&query=%28cql.allRecords%3D1%20NOT%20item.hrid%3D%22%22%29%20sortby%20title
      6. Go to Actions - save Instances UUIDs 
      7. There is a toast popup saying that the download will take a few minutes but never happens - https://okapi-bugfest-iris.folio.ebsco.com/record-bulk/ids?limit=2147483647&query=%28cql.allRecords%3D1%20NOT%20item.hrid%3D%22%22%29%20sortby%20title
      8. These are the corresponding SQL queries that never run to completion - 

      SELECT jsonb,id FROM fs09000000_mod_inventory_storage.instance WHERE AND ( (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE item.jsonb->>? ~ ?))) IS NOT TRUE) ORDER BY left(lower(f_unaccent(instance.jsonb->>?)),?), lower(f_unaccent(instance.jsonb->>?)) LIMIT ? OFFSET ?

      SELECT jsonb,id FROM fs09000000_mod_inventory_storage.instance WHERE (true) AND ( (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE item.jsonb->>'hrid' ~ ''))) IS NOT TRUE) ORDER BY left(lower(f_unaccent(instance.jsonb->>'title')),600), lower(f_unaccent(instance.jsonb->>'title')) LIMIT 2147483647 OFFSET 0

      WITH headrecords AS ( SELECT jsonb, (lower(f_unaccent(jsonb->>'title')) ) AS data_column FROM fs09000000_mod_inventory_storage.instance WHERE (((true) AND ( (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE item.jsonb->>'hrid' ~ ''))) IS NOT TRUE)) AND (((instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId='b2a1958d-8bd5-40f3-b083-0ef77bff5e11'))) OR (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId='c6e91fce-ef11-4829-9a64-11e1bde282c7')))) OR (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId='3cee7451-0ddd-4cc8-aa8a-a853a51853de'))))) AND left(lower(f_unaccent(jsonb->>'title')) ,600) < ( SELECT left(lower(f_unaccent(jsonb->>'title')) ,600) FROM fs09000000_mod_inventory_storage.instance ORDER BY left(lower(f_unaccent(jsonb->>'title')) ,600) OFFSET 10000 LIMIT 1 ) ORDER BY left(lower(f_unaccent(jsonb->>'title')) ,600) LIMIT 100 OFFSET 0 ), allrecords AS ( SELECT jsonb, lower(f_unaccent(jsonb->>'title')) AS data_column FROM fs09000000_mod_inventory_storage.instance WHERE (((true) AND ( (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE item.jsonb->>'hrid' ~ ''))) IS NOT TRUE)) AND (((instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId='b2a1958d-8bd5-40f3-b083-0ef77bff5e11'))) OR (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId='c6e91fce-ef11-4829-9a64-11e1bde282c7')))) OR (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId='3cee7451-0ddd-4cc8-aa8a-a853a51853de'))))) AND (SELECT COUNT FROM headrecords) < 100 ), totalCount AS (SELECT fs09000000_mod_inventory_storage.count_estimate(' SELECT lower(f_unaccent(jsonb->>''title'')) AS data_column FROM fs09000000_mod_inventory_storage.instance WHERE ((true) AND ( (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE item.jsonb->>''hrid'' ~ ''''))) IS NOT TRUE)) AND (((instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId=''b2a1958d-8bd5-40f3-b083-0ef77bff5e11''))) OR (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId=''c6e91fce-ef11-4829-9a64-11e1bde282c7'')))) OR (instance.id IN ( SELECT instanceId FROM holdings_record WHERE holdings_record.id IN ( SELECT holdingsRecordId FROM item WHERE effectiveLocationId=''3cee7451-0ddd-4cc8-aa8a-a853a51853de''))))') AS count) SELECT jsonb, data_column, (SELECT count FROM totalCount) FROM headrecords WHERE (SELECT COUNT FROM headrecords) >= 100 UNION (SELECT jsonb, data_column, (SELECT count FROM totalCount) FROM allrecords ORDER BY data_column LIMIT 100 OFFSET 0 ) ORDER BY data_column

       

      Observation is that the query keeps running for hours but never runs to completion.

      Expected Results:

      File is downloaded

      Actual results:

      File is not downloaded

       

      TestRail: Results

        Attachments

          Issue Links

            Activity

              People

                charlotte Charlotte Whitt
                sduvvuri Sobha Duvvuri
                Charlotte Whitt Charlotte Whitt
                Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:

                  TestRail: Runs

                    TestRail: Cases