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 Tue, 27 Oct 2015 19:01:27 GMT

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

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

Thanks for your revision. I have uploaded a new version of the patch for 2.2. I have fixed
the validation in {{CassandraServer.createMutationList}} and I have added tests for the three
{{CassandraServer}} methods. All the tests check validation both in key and columns. I hope
you find it OK, and sorry for the inconvenience, I'm not familiarized with the Thrift API.

> 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
>            Assignee: Andrés de la Peña
>            Priority: Minor
>              Labels: 2i, secondary_index, validation
>             Fix For: 2.1.x, 2.2.x
>
>         Attachments: CASSANDRA-10092_v2.patch, CASSANDRA-10092_v3.patch, 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