[
http://jira-test.nuxeo.org/jira/browse/NXP-3873?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benoit Delbosc updated NXP-3873:
--------------------------------
Nuxeo Connect Support: 5530bb8c-80cc-41de-b46c-a17880ffc620-dev (was:
1642373c-417c-4e6d-99d1-eef5d3b18adb-dev)
> Improve PostgreSQL query plan when using NX_ACCESS_ALLOWED and NX_IN_TREE
> -------------------------------------------------------------------------
>
> Key: NXP-3873
> URL: http://jira-test.nuxeo.org/jira/browse/NXP-3873
> Project: Nuxeo Enterprise Platform
> Issue Type: Improvement
> Components: Core SQL Storage
> Affects Versions: 5.2 RC1
> Reporter: Benoit Delbosc
> Assignee: Florent Guillaume
> Priority: Major
> Fix For: 5.2 RC1 SP1, 5.2 GA SP1, 5.3 RC
>
> Attachments: patch-sql-storage-subselect.diff, pgFouine PostgreSQL
> log analysis report.htm
>
>
> PostgreSQL use a default cost for nx_access_allowed function, the query
> planner choose to filter first on access instead of checking for other clause
> which is most of the time a wrong choice.
> For instance
> SELECT hierarchy.id
> FROM hierarchy
> LEFT JOIN dublincore ON hierarchy.id = dublincore.id
> LEFT JOIN versions ON hierarchy.id = versions.id
> LEFT JOIN misc ON hierarchy.id = misc.id
> WHERE
> hierarchy.primarytype IN ('MailMessage', 'Thread', 'Note',
> 'AdvancedSearch', 'Document', 'search_results',
> 'Picture', 'QueryNav', 'File', 'ContextualLink')
> AND (EXISTS (
> SELECT 1
> FROM dc_contributors
> WHERE hierarchy.id = dc_contributors.id
> AND (dc_contributors.item = 'Administrator')))
> AND (versions.id IS NULL)
> AND (misc.lifecyclestate <> 'deleted')
> AND NX_ACCESS_ALLOWED(hierarchy.id,
> '{administrators,Administrator,Everyone}',
>
> '{Browse,Read,ReadProperties,ReadRemove,ReadWrite,Everything}')
> ORDER BY dublincore.modified DESC;
> The default query plan will check nx_access_allowed before the sub query:
> Filter: (nx_access_allowed(id,
> '{administrators,Administrator,Everyone}'::character varying[],
> '{Browse,Read,ReadProperties,ReadRemove,ReadWrite,Everything}'::character
> varying[]) AND (subplan))
> this won't happen with a cost of 1000
> ALTER FUNCTION nx_access_allowed(id character varying, users character
> varying[], permissions character varying[]) COST 10000;
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira-test.nuxeo.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets