[
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)