Since this is an important subject, I thought it also makes sense to start
a mailing list thread.

You may know that in 4.0 there was a plan to drop compact storage and
related code. However, there are several behavioural changes related to
compact storage, and difference in visible behaviour between "normal" and
compact tables are larger than most of us have anticipated: we first
thought there’ll be only “appearing column” in dense case, but there’s
implicit nulls in clusterings thing, and row vs column deletion now, TTL,
and more.

Some of the recent issues on the subject are: CASSANDRA-16048
<https://issues.apache.org/jira/browse/CASSANDRA-16048>, which allows to
ignore these differences. The other one was an attempt to improve the user
experience of anyone still using compact storage: CASSANDRA-15811
<https://issues.apache.org/jira/browse/CASSANDRA-15811>.

Easily reproducible differences are:

(1) hidden columns show up, which breaks SELECT * queries
(2) DELETE v and UPDATE v WITH TTL would result into row removals in
non-dense compact tables (CASSANDRA-16069
<https://issues.apache.org/jira/browse/CASSANDRA-16069>)
(3) INSERT allows skipping clusterings, which are filled with nulls by
default.

Some of these are tricky to support, as 15811 has shown. Anyone who might
want to upgrade to 4.0 while still using compact storage might be affected
by being forced into one of these behaviours.

Possible solutions are to document these behaviours, or to bring back a
minimal set of COMPACT STORAGE and keep supporting these in 4.0

It looks like it is possible to leave some of the functionality related to
DENSE flag and allow it to be present in 4.0, but only for these three (and
potential related, however not directly visible) cases.

You can find more details on the subject here:
https://issues.apache.org/jira/browse/CASSANDRA-16217

Thank you,

-- Alex

Reply via email to