Robert Stupp created CASSANDRA-7301:
---------------------------------------
Summary: UDT - alter type add field not propagated
Key: CASSANDRA-7301
URL: https://issues.apache.org/jira/browse/CASSANDRA-7301
Project: Cassandra
Issue Type: Bug
Reporter: Robert Stupp
The {system.schema_columns} table contains the "denormalized" description of
the user type its {validator} column.
But if the type is changed after a column using that type has been created, the
column's validator column still contains the old (and now incorrect)
description of the user type.
This gets even more complicated if user types are embedded in other user
types...
{code}
cqlsh:demo> CREATE KEYSPACE demo WITH replication =
{'class':'SimpleStrategy','replication_factor':1};
cqlsh:demo> CREATE TYPE demo.address ( street varchar, city varchar, country
varchar);
cqlsh:demo> CREATE TABLE demo.user ( name varchar primary key, main_address
address);
cqlsh:demo> select * from system.schema_columns where keyspace_name='demo';
keyspace_name | columnfamily_name | column_name | component_index |
index_name | index_options | index_type | type | validator
---------------+-------------------+--------------+-----------------+------------+---------------+------------+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
demo | user | main_address | 0 |
null | null | null | regular |
org.apache.cassandra.db.marshal.UserType(demo,61646472657373,737472656574:org.apache.cassandra.db.marshal.UTF8Type,63697479:org.apache.cassandra.db.marshal.UTF8Type,636f756e747279:org.apache.cassandra.db.marshal.UTF8Type)
demo | user | name | null |
null | null | null | partition_key |
org.apache.cassandra.db.marshal.UTF8Type
(2 rows)
cqlsh:demo> alter type demo.address add zip_code text;
<ErrorMessage code=0000 [Server error] message="java.lang.RuntimeException:
java.util.concurrent.ExecutionException: java.lang.AssertionError">
cqlsh:demo> select * from system.schema_columns where keyspace_name='demo';
keyspace_name | columnfamily_name | column_name | component_index |
index_name | index_options | index_type | type | validator
---------------+-------------------+--------------+-----------------+------------+---------------+------------+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
demo | user | main_address | 0 |
null | null | null | regular |
org.apache.cassandra.db.marshal.UserType(demo,61646472657373,737472656574:org.apache.cassandra.db.marshal.UTF8Type,63697479:org.apache.cassandra.db.marshal.UTF8Type,636f756e747279:org.apache.cassandra.db.marshal.UTF8Type)
demo | user | name | null |
null | null | null | partition_key |
org.apache.cassandra.db.marshal.UTF8Type
(2 rows)
cqlsh:demo> select * from system.schema_usertypes where keyspace_name='demo';
keyspace_name | type_name | field_names |
field_types
---------------+-----------+-------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
demo | address | ['street', 'city', 'country', 'zip_code'] |
['org.apache.cassandra.db.marshal.UTF8Type',
'org.apache.cassandra.db.marshal.UTF8Type',
'org.apache.cassandra.db.marshal.UTF8Type',
'org.apache.cassandra.db.marshal.UTF8Type']
(1 rows)
{code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)