[ https://issues.apache.org/jira/browse/CASSANDRA-6643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13946754#comment-13946754 ]
Sylvain Lebresne commented on CASSANDRA-6643: --------------------------------------------- So I just realized that in the current code, a non qualified user type name refers to the keyspace of the statement it's in, not the keyspace logged into. Meaning that in {noformat} USE ks2; CREATE TABLE ks1.mytable (k mytype PRIMARY KEY); {noformat} {{mytype}} refers to {{ks1}}, not {{ks2}}. Honestly, that's kind of an oversight, as imo that's somewhat inconsistent with how unqualified table name work (since they do refer to the logged keyspace). That being said, before I go into changing this all over the place (turns out it requires a slight refactoring), just wanted to check that we agree it's better to change so that non-qualified type name do refer to the keyspace logged in, not the "statement" 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)