-
-
Notifications
You must be signed in to change notification settings - Fork 224
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
TASK: Fix and improve find
and children
flowQuery operation
#4712
base: 9.0
Are you sure you want to change the base?
Conversation
13dc5bd
to
209df71
Compare
@mhsdesign @nezaniel it is vary well possible that i cracked the !! The linting errors are coming from upstream !! |
0aaed67
to
43dac6b
Compare
Neos.ContentRepository.NodeAccess/Classes/Filter/NodeFilterCriteriaGroup.php
Outdated
Show resolved
Hide resolved
Neos.ContentRepository.NodeAccess/Classes/Filter/NodeFilterCriteriaGroup.php
Outdated
Show resolved
Hide resolved
We put this aside as the node filter criteria did not provide the same case-related behavior as the old flowQuery implementation … maybe this has changed in the meantime Other than that we considered this a bit too dangerous and thought about moving this to a third party package |
Yes once #4725 introduces case insensitive operators we might be able to use satisfy the old flow query api? i understand that the new cr subgraph api has different features than the feature set of neos 8.3's For legacy use cases we could possibly ship a legacy implementation of |
43dac6b
to
a4d7230
Compare
43dac6b
to
4167f9b
Compare
The flowQuery operations find and children are fixed optimized for the new cr to use a combined query for nodetype and property criteria. The number of performed db-queries is the number of contextNodes times the number of filterGroups (comma separated parts) In addition the `find` operation now can also handle single property criteria and does not rely on having an instanceof filter first.
With the case sensitive operations in place this might be feasible now ... |
4167f9b
to
1f8b2b2
Compare
…teriaGroup.php Co-authored-by: Marc Henry Schultz <85400359+mhsdesign@users.noreply.github.com>
Co-authored-by: Marc Henry Schultz <85400359+mhsdesign@users.noreply.github.com>
Neos.ContentRepository.NodeAccess/Classes/Filter/NodeFilterCriteria.php
Outdated
Show resolved
Hide resolved
I almost thought this was merged already. Ill will play around with this a bit but then i think (as all the blockers and adjustments were solved) this is ready to be merged? Would be great to find a second reviewer as well :) |
the current |
As outlined here #4205 (comment) the performance of the subgraph itself are not desirable and the effort here to apply more specific filters to avoid returning too many nodes and filtering them in php later has only little impact currently. Also this pr introduces some new complexity for optimising the flow queries with the risk of loosing accidentally features. Under that aspect i think we can close this. Thanks for the work still!!! |
The flowQuery operations
find
andchildren
are fixed & optimized for the new cr. They now use a combined query with nodetype and property criteria when possible. The number of performed db-queries is the number of contextNodes times the number of filterGroups (comma separated parts)In addition the
find
operation now can also handle single property criteria and does not rely on having an instanceof filter first.The solution adds a
NodeFilterCriteria
class that encapsulatesnodeTypeCriteria
andPropertyConstraints
. The collection objectNodeFilterCriteriaGroup
combines multiple of those. TheNodeFilterCriteriaGroupFactory
allows to take a fizzle-expression and create aNodeFilterCriteriaGroup
once only Attribute filters (instanceof and property) are used.Upgrade instructions
Review instructions
This based on #4699 and should be merged afterwards.
Also we should discuss how to proceed regarding the case insensitive operators feature neos/flow-development-collection#2600 currently those are handled by the legacy code as fallback.
Checklist
FEATURE|TASK|BUGFIX
!!!
and have upgrade-instructions