You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jon Hermes (JIRA)" <ji...@apache.org> on 2011/03/15 01:01:29 UTC

[jira] Commented: (CASSANDRA-1761) Indexes: Auto-generating the CFname may collide with user-generated names

    [ https://issues.apache.org/jira/browse/CASSANDRA-1761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13006729#comment-13006729 ] 

Jon Hermes commented on CASSANDRA-1761:
---------------------------------------

Because the column_metadata has to be passed in full, it can be fully validated in ThriftValidation of the cf_def in the system_{update,add}_column_family and system_add_keyspace calls.

In related news, I also found out that we never validated CfDefs in system_update_column_family, so I'm surprised to say the least and glad it was found in an innocuous bug instead of something more serious.

As for the one-schema-change-at-a-time rule, this is now enforced by default with validateSchemaAgreement() calls in CassandraServer.

> Indexes: Auto-generating the CFname may collide with user-generated names
> -------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1761
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1761
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.7 beta 3
>            Reporter: Jon Hermes
>            Assignee: Jon Hermes
>            Priority: Minor
>             Fix For: 0.7.5
>
>         Attachments: 1761.txt
>
>   Original Estimate: 16h
>  Remaining Estimate: 16h
>
> {noformat}column_families:
>   - name: CF
>     comparator: BytesType
>     column_metadata: 
>       - name: foo
>         index_name: 626172
>         index_type: KEYS
>       - name: bar
>         index_type: KEYS{noformat}
> Auto-generated versus user-supplied names collide in the YAML above. The code:
> {code}cfname = parentCf + "." + (info.getIndexName() == null ? FBUtilities.bytesToHex(info.name) : info.getIndexName()){code}
> From the first ColumnDefinition, we create cfname = "CF.626172" (from the fail clause of the ternany, user-supplied name)
> From the second ColumnDefinition, we create cfname = "CF.626172" (from the pass clause of the ternary, we generate the name)
> They're in hex form. This is possible, but fairly unlikely that someone will do this.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira