Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MODORDERS - 944] - Added donorOrganizationIds index #352

Merged
merged 7 commits into from
Oct 24, 2023
Merged

Conversation

azizbekxm
Copy link
Contributor

@azizbekxm azizbekxm commented Oct 23, 2023

Purpose

https://issues.folio.org/browse/MODORDERS-944

Approach

Analyzed use cases and created index for donorOrganizationIds. we assumed it can be used like this query and it involve regular index.

orders/composite-orders?query=(donorOrganizationIds==("8a33895e-2c69-4a98-ab48-b7ec1fa852d0" or "aaa541f3-39d2-4887-ab8f-6ba12d08ca52")) sortby metadata.updatedDate/sort.descending

logs

16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  RestRouting          invoking getOrdersStoragePurchaseOrders
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           loadDbSchema: Loaded templates/db_scripts/schema.json OK
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           full text index f_unaccent(purchase_order.jsonb->>'acqUnitIds') generated SQL get_tsvector(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) @@ tsquery_phrase(f_unaccent('0ebb1f7d-983f-3026-8a4c-5318e0ebc041'))
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'acqUnitIds' generated SQL CASE WHEN length(lower(f_unaccent('[]'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE lower(f_unaccent('[]')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE left(lower(f_unaccent('[]')),600) OR lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) NOT LIKE lower(f_unaccent('[]')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           full text index f_unaccent(purchase_order.jsonb->>'acqUnitIds') generated SQL get_tsvector(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) @@ tsquery_phrase(f_unaccent('0ebb1f7d-983f-3026-8a4c-5318e0ebc041'))
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'acqUnitIds' generated SQL CASE WHEN length(lower(f_unaccent('[]'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE lower(f_unaccent('[]')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE left(lower(f_unaccent('[]')),600) OR lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) NOT LIKE lower(f_unaccent('[]')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQLWrapper           CQL >>> SQL: (acqUnitIds=(0ebb1f7d-983f-3026-8a4c-5318e0ebc041) or (cql.allRecords=1 not acqUnitIds <> [])) and ((donorOrganizationIds==("8a33895e-2c69-4a98-ab48-b7ec1fa852d0" or "aaa541f3-39d2-4887-ab8f-6ba12d08ca52"))) sortby metadata.updatedDate/sort.descending >>>WHERE ((get_tsvector(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) @@ tsquery_phrase(f_unaccent('0ebb1f7d-983f-3026-8a4c-5318e0ebc041'))) OR ((true) AND ( (CASE WHEN length(lower(f_unaccent('[]'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE lower(f_unaccent('[]')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE left(lower(f_unaccent('[]')),600) OR lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) NOT LIKE lower(f_unaccent('[]')) END) IS NOT TRUE))) AND ((CASE WHEN length(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) END) OR (CASE WHEN length(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) END)) ORDER BY left(lower(f_unaccent(purchase_order.jsonb->'metadata'->>'updatedDate')),600) DESC, lower(f_unaccent(purchase_order.jsonb->'metadata'->>'updatedDate')) DESC LIMIT 10 OFFSET 0
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           full text index f_unaccent(purchase_order.jsonb->>'acqUnitIds') generated SQL get_tsvector(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) @@ tsquery_phrase(f_unaccent('0ebb1f7d-983f-3026-8a4c-5318e0ebc041'))
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'acqUnitIds' generated SQL CASE WHEN length(lower(f_unaccent('[]'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE lower(f_unaccent('[]')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE left(lower(f_unaccent('[]')),600) OR lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) NOT LIKE lower(f_unaccent('[]')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           full text index f_unaccent(purchase_order.jsonb->>'acqUnitIds') generated SQL get_tsvector(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) @@ tsquery_phrase(f_unaccent('0ebb1f7d-983f-3026-8a4c-5318e0ebc041'))
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'acqUnitIds' generated SQL CASE WHEN length(lower(f_unaccent('[]'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE lower(f_unaccent('[]')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE left(lower(f_unaccent('[]')),600) OR lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) NOT LIKE lower(f_unaccent('[]')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           full text index f_unaccent(purchase_order.jsonb->>'acqUnitIds') generated SQL get_tsvector(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) @@ tsquery_phrase(f_unaccent('0ebb1f7d-983f-3026-8a4c-5318e0ebc041'))
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'acqUnitIds' generated SQL CASE WHEN length(lower(f_unaccent('[]'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE lower(f_unaccent('[]')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')),600) NOT LIKE left(lower(f_unaccent('[]')),600) OR lower(f_unaccent(purchase_order.jsonb->>'acqUnitIds')) NOT LIKE lower(f_unaccent('[]')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('8a33895e-2c69-4a98-ab48-b7ec1fa852d0')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  CQL2PgJSON           index purchase_order.jsonb->>'donorOrganizationIds' generated SQL CASE WHEN length(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52'))) <= 600 THEN left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) ELSE left(lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')),600) LIKE left(lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')),600) AND lower(f_unaccent(purchase_order.jsonb->>'donorOrganizationIds')) LIKE lower(f_unaccent('aaa541f3-39d2-4887-ab8f-6ba12d08ca52')) END
16:13:42 [825517/orders;849897/orders-storage] [diku] [7b27d828-f9fa-5399-a368-0587f338be7e] [mod_orders_storage] INFO  LogUtil              127.0.0.1:37964 GET /orders-storage/purchase-orders offset=0&query=%28acqUnitIds%3D%280ebb1f7d-983f-3026-8a4c-5318e0ebc041%29+or+%28cql.allRecords%3D1+not+acqUnitIds+%3C%3E+%5B%5D%29%29+and+%28%28donorOrganizationIds%3D%3D%28%228a33895e-2c69-4a98-ab48-b7ec1fa852d0%22+or+%22aaa541f3-39d2-4887-ab8f-6ba12d08ca52%22%29%29%29+sortby+metadata.updatedDate%2Fsort.descending&limit=10 HTTP_1_1 200 50 8 tid=diku OK 

@azizbekxm azizbekxm changed the title Modorders 944 [MODORDERS - 944] - Added donorOrganizationIds index Oct 23, 2023
@azizbekxm azizbekxm marked this pull request as ready for review October 24, 2023 09:36
@azizbekxm azizbekxm requested a review from a team October 24, 2023 09:36
@sonarcloud
Copy link

sonarcloud bot commented Oct 24, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

@azizbekxm azizbekxm merged commit abe5661 into master Oct 24, 2023
4 checks passed
@azizbekxm azizbekxm deleted the MODORDERS-944 branch October 24, 2023 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants