[ https://issues.apache.org/jira/browse/CASSANDRA-6643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13947406#comment-13947406 ]
Russ Hatch commented on CASSANDRA-6643: --------------------------------------- I don't have a strong opinion, but I think it seems reasonable when creating a table with user type to re-use the statement keyspace from the table (falling back to logged in keyspace if table has no prefix), since the tables/types will belong to the same keyspace anyway. But I think if the type keyspace is explicitly given we should use that, and not do anything surprising like switching it. So I guess I vote for leaving it the same. So in the above scenario: {noformat} USE ks2; CREATE TABLE ks1.mytable (k mytype PRIMARY KEY); {noformat} Effectively becomes: {noformat} USE ks2; CREATE TABLE ks1.mytable (k [ks1].mytype PRIMARY KEY); {noformat} But if you try this you should get an error (differing table keyspace and type keyspace): {noformat} USE ks2; CREATE TABLE ks1.mytable (k ks2.mytype PRIMARY KEY); {noformat} I assume this wouldn't have any impact on the CREATE TYPE syntax, so I'm assuming that would still be consistent with how CREATE TABLE figures out the keyspace. > Limit user types to the keyspace they are defined in > ---------------------------------------------------- > > Key: CASSANDRA-6643 > URL: https://issues.apache.org/jira/browse/CASSANDRA-6643 > Project: Cassandra > Issue Type: Bug > Environment: java version "1.7.0_51" > cassandra from trunk, 4b54b8... > Reporter: Russ Hatch > Assignee: Sylvain Lebresne > Priority: Minor > Fix For: 2.1 beta2 > > > I'm not 100% certain this is a bug. > The current syntax for "alter type rename" requires the keyspace on the old > and new table name (if a keyspace is not active). So, to rename the type > 'foo' to 'bar', you have to issue this statement: > ALTER TYPE ks.foo rename to ks.bar . > As a result, this syntax will also allow renaming the type into another > existing keyspace, which updates the metadata in system.schema_usertypes. > I'm wondering if perhaps we can omit the second keyspace prefix and > implicitly rename into the same keyspace. > To reproduce: > {noformat} > cqlsh> create keyspace user_types with replication = > {'class':'SimpleStrategy', 'replication_factor':3} ; > cqlsh> create keyspace user_types2 with replication = > {'class':'SimpleStrategy', 'replication_factor':3} ; > cqlsh> CREATE TYPE user_types.simple_type (user_number int); > cqlsh> alter type user_types.simple_type rename to user_types2.simple_type; > {noformat} > Renaming to another keyspace is also possible when a keyspace is active, like > so: > {noformat} > cqlsh:user_types> alter type simple_type rename to user_types2.simple_type; > {noformat} -- This message was sent by Atlassian JIRA (v6.2#6252)