[
https://issues.apache.org/jira/browse/CASSANDRA-10661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15085957#comment-15085957
]
Sam Tunnicliffe commented on CASSANDRA-10661:
---------------------------------------------
This is looking pretty good.
A problem (which isn't caught by any of the unit tests btw) is that due to the
fact that under the hood 3.x considers all compact storage columns as static.
This breaks interactions with sasi-indexed tables via CQL - for example, try
running through the examples in the original [SASI
readme|https://github.com/xedin/sasi/blob/master/README.md] and you'll find
querying mostly broken.
{code}
cqlsh:demo> select first_name, last_name, age, height, created_at from sasi
where first_name = 'M';
InvalidRequest: code=2200 [Invalid query] message="Queries using 2ndary indexes
don't support selecting only static columns"
cqlsh:demo>
cqlsh:demo>
cqlsh:demo> select * from sasi where first_name = 'M';
id | age | created_at | first_name | height | last_name
----+-----+------------+------------+--------+-----------
(0 rows)
{code}
Fortunately, I believe we can simply drop the use of COMPACT STORAGE. My
(limited) testing suggests that when tables are created without it, everything
that's currently implemented works as expected.
The new SASI specific tests look good and are all green, but we obviously need
to run this through CI before it's committed. On a related note, are there any
dtests that may be worth adding? The utest coverage is pretty comprehensive
(modulo the CQL issues) so I wouldn't say it was absolutely critical, but some
multi-node & CQL based tests would be nice to have.
Otherwise, this first phase of integration looks good to me. On initial review
I found one bug and a handful of nits. I have a few scenarios I want to run
through, mostly to verify how sasi interacts with some of the parts of the
index subsystem that were changed in 3.0.
Initial review comments:
* The regex matching in o.a.c.io.sstable.Component.Type::fromRepresentation
throws an NPE when it encounters an unknown name and tries to match it to a
CUSTOM component.
* In SASIIndex, getMetadataReloadTask & getBlockingFlushTask should be able to
just return null (like getInitializationTask does). In the case of the former,
that is true right now as the only call site is in SIM where nulls are properly
handled. getBlockingFlushTask is also called from KeyCacheCqlTest which doesn't
check for nulls so would need tweaking slightly. (This is totally minor, the
irregularity in SASIIndex just bugged me).
* I couldn't see why a PeekingIterator is used in OnDiskIndex::search
* The use of "a" and "b" in the o.a.c.i.sasi.plan.Expression ctor seems like it
could have the potential for pain when debugging. I'm sure that it isn't very
likely we'll ever care too much & I don't have any particularly better
suggestion but if you do, could these be changed to something more greppable
(or extracted to constants)?
* The anonymous extension of Expression in Operation::analyzeGroup can be
replaced with {{perColumn.add(new Expression(controller,
columnIndex).add(e.operator(), token));}}
* MemIndex::estimateSize is unused
* It doesn't really affect anything, but just for clarity I would rename
MemoryUtil.DIRECT_BYTE_BUFFER_R_CLASS to RO_DIRECT_BYTE_BUFFER_CLASS
* Most trivial of nits: brace placement in SchemaLoader (ln 255)
> Integrate SASI to Cassandra
> ---------------------------
>
> Key: CASSANDRA-10661
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10661
> Project: Cassandra
> Issue Type: Improvement
> Components: Local Write-Read Paths
> Reporter: Pavel Yaskevich
> Assignee: Pavel Yaskevich
> Labels: sasi
> Fix For: 3.x
>
>
> We have recently released new secondary index engine
> (https://github.com/xedin/sasi) build using SecondaryIndex API, there are
> still couple of things to work out regarding 3.x since it's currently
> targeted on 2.0 released. I want to make this an umbrella issue to all of the
> things related to integration of SASI, which are also tracked in
> [sasi_issues|https://github.com/xedin/sasi/issues], into mainline Cassandra
> 3.x release.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)