[ 
https://issues.apache.org/jira/browse/OAK-597?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13567506#comment-13567506
 ] 

Jukka Zitting commented on OAK-597:
-----------------------------------

This could be made to work would be to run the commit hook that updates the 
query indexes first and only then the validator to check for uniqueness 
violations. The way I see it, that's more complicated and also less efficient 
than having the indexer directly refuse duplicates of unique entries.

Alternatively, if having the uniqueness check being a part of the normal index 
update is considered too complicated, I'd rather consider decoupling the 
uniqueness checks entirely from the query mechanism. The check for uniqueness 
could simply maintain it's own hidden metadata and use it *only* to enforce 
uniqueness.
                
> Uniqueness validator instead of unique index
> --------------------------------------------
>
>                 Key: OAK-597
>                 URL: https://issues.apache.org/jira/browse/OAK-597
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core, query
>            Reporter: Thomas Mueller
>            Priority: Minor
>
> We currently have a few unique indexes that ensure only one node may exist 
> for a given node type / property name / property value combination (for 
> example the jcr:uuid needs to be unique).
> While this works, I see some problems with this approach:
> - Indexes might be removed by an admin or they might not be available due to 
> misconfiguration.
> - It (slightly) complicates the index implementation.
> - The index needs to do something that is not obvious (the index has to act 
> like a constraint / validator). Updating an index can fail for different 
> reasons that have a different meaning: updating the index might fail due to 
> duplicate key (which is not recoverable), and it might fail due to a conflict 
> (which is recoverable).
> Instead of using unique indexes, I propose to use a validator instead. The 
> validator can internally run a query to check if such a value already exists.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to