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