Hey,

I was going through the different kinds of types compatibility and found
that I need help in understanding them. Therefore, I tried to figure out
what is used where, in particular, what means that two types are
"compatible", "valueCompatible" or "serializationCompatible".

I found https://issues.apache.org/jira/browse/CASSANDRA-14476 as a place
where I can put my work. The ticket includes a comment with some problems
I've seen. I've prepared a pull request that has not fixed anything yet,
but it adds a bunch of tests that verify whether the assumed properties of
different types are confirmed.

There are some apparent problems with missing compatibilities of primitive
types. However, for me, there are more critical questions:

1. "isCompatibleWith" is used when replacing function/aggregate to check if
the new return type is more generic than the old one. To me, it is wrong,
and the condition should be the opposite - the old return type should be
more generic than the new one

2. For all multi-cell types, "isCompatibleWith" should be equivalent to
their frozen version, but it is not. It should be because, in reality, the
"compareCustom" method does not consider whether the type is frozen.

Can anybody answer those questions?

Thanks,
Jacek

Reply via email to