Hi, Thanks for your replay.
I was starting to suspect something like this, by your description there dosen't seam to be a straight forward fix for the issue, if it can be fixed at all in a good way. For me this was a really minor issue, it was just in a test case that I could rewrite so I didn't have to recreate the column. Thanks, Tommy On tor, 2019-11-21 at 23:01 -0800, Andrew Prudhomme wrote: It looks like there are a couple of things going on here. The type check when adding a UDT column: new_type.isValueCompatibleWith(dropped_type) will only be true if the dropped type is a UDT. This however will never be the case, since UDT types are replaced with tuple when converted to a dropped column type. Though re-adding the UDT should be safe, it will not always be safe. Since there is currently no way to record a non-frozen tuple, a frozen and non-frozen UDT will both produce the same dropped column type (leading to CASSANDRA-14673). So it is technically safer to reject the add (though the table would already be corrupted and this would keep you from fixing it). However, there are some inconsistencies. Had this check used the (presumably stricter) isCompatibleWith check, it would have passed since it treats both as tuple type. Also, you are able to re-add the column as a tuple, which would be incompatible with non-frozen UDT data. On Thu, Nov 21, 2019 at 5:59 AM Tommy Stendahl <tommy.stend...@ericsson.com.invalid> wrote: Hi, I run in to problem with 3.11.5, I think its related to "* Toughen up column drop/recreate type validations (CASSANDRA-15204)" I have a user defined type and I have a table with a column that has this UDF as type, if I drop the column and recreate it with the same name it fails. I think this should work, it did in 3.11.4, or I'm I missing something? I recreated this in cqlsh: cqlsh> CREATE KEYSPACE foo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}; cqlsh> CREATE TYPE foo.my_type (a int, b int ); cqlsh> CREATE TABLE foo.bar ( x int PRIMARY KEY, y int, z frozen<my_type> ); cqlsh> ALTER TABLE foo.bar DROP z ; cqlsh> ALTER TABLE foo.bar ADD z frozen<my_type>; InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot re-add previously dropped column 'z' of type frozen<my_type>, incompatible with previous type frozen<tuple<int, int>>" cqlsh> Regards, Tommy