cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrés de la Peña (JIRA) <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-10092) Generalize PerRowSecondaryIndex validation
Date Wed, 14 Oct 2015 19:17:05 GMT

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

Andrés de la Peña commented on CASSANDRA-10092:
-----------------------------------------------

Thanks for your response, [~beobal]. It would be great to have this small but useful changes
available in the latest 2.X versions. If it is not possible, we will wait for the exciting
new 2i API in 3.0.

> Generalize PerRowSecondaryIndex validation
> ------------------------------------------
>
>                 Key: CASSANDRA-10092
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10092
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Andrés de la Peña
>            Priority: Minor
>              Labels: 2i, secondary_index, validation
>             Fix For: 2.1.x, 2.2.x
>
>         Attachments: improve_2i_validation.patch
>
>
> Index validation is currently done in a per-cell basis. However, per-row secondary index
developers can be interested in validating all the written columns at once, because some implementations
need to check the validity of a row write by comparing some column values against others.
For example, a per row 2i implementation indexing time ranges (composed by a start date column
and an end date column) should check that the start date is before the stop date.
> I'm attaching a patch adding a new method to {{PerRowSecondaryIndex}}:
> {code:java}
> public void validate(ByteBuffer key, ColumnFamily cf) throws InvalidRequestException
{}
> {code}
> and a new method to {{SecondaryIndexManager}}:
> {code:java}
> public void validateRowLevelIndexes(ByteBuffer key, ColumnFamily cf) throws InvalidRequestException
>   {
>       for (SecondaryIndex index : rowLevelIndexMap.values())
>       {
>           ((PerRowSecondaryIndex) index).validate(key, cf);
>       }
>   }
> {code}
> This method is invoked in CQL {{UpdateStatement#validateIndexedColumns}}. This way, {{PerRowSecondaryIndex}}
could perform complex write validation.
> I have tried to do the patch in the least invasive way possible. Maybe the current method
{{SecondaryIndex#validate(ByteBuffer, Cell)}} should be moved to {{PerColumnSecondaryIndex}},
and the {{InvalidRequestException}} that informs about the particular 64k limitation should
be thrown by {{AbstractSimplePerColumnSecondaryIndex}}. However, given the incoming  [CASSANDRA-9459|https://issues.apache.org/jira/browse/CASSANDRA-9459],
I think that the proposed patch is more than enough to provide rich validation features to
2i implementations based on 2.1.x and 2.2.x.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message