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

Sylvain Lebresne commented on CASSANDRA-5138:
---------------------------------------------

bq. IMO we should do that extra check

To complete the reason why I haven't add it, this is mostly because of DROP 
(CASSANDRA-3919). So in practice, people may have cell that don't correspond to 
a (currently) defined CQL3 column name, even if it's only temporary. For that, 
it could seem fair game to at least let user delete those from thrift. But I 
mean, I don't really care, I'm fine doing that extra check if you still think 
it's better, just wanted to present the full reasoning.

bq. also type information, unless that's already taken care of by the other 
validation

Thrift already does validation of the cell name and cell value (as well as 
partition key). So unless you were thinking of something else, we should be 
good.
                
> Provide a better CQL error when table data does not conform to CQL metadata.
> ----------------------------------------------------------------------------
>
>                 Key: CASSANDRA-5138
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5138
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.2.0
>         Environment: Mac OS X running 1.2
>            Reporter: Brian ONeill
>            Assignee: Sylvain Lebresne
>            Priority: Minor
>             Fix For: 1.2.7
>
>         Attachments: 5138.txt, northpole.cql
>
>
> When you create a table via CQL, then insert into it via Thrift.  If you 
> inadvertently leave out a component of the column name, in CQL you receive a:
> TSocket read 0 bytes
> Server-side the following exception is logged:
> ERROR 15:19:18,016 Error occurred during processing of message.
> java.lang.ArrayIndexOutOfBoundsException: 3
>       at 
> org.apache.cassandra.cql3.statements.ColumnGroupMap.add(ColumnGroupMap.java:43)
>       at 
> org.apache.cassandra.cql3.statements.ColumnGroupMap.access$200(ColumnGroupMap.java:31)
>       at 
> org.apache.cassandra.cql3.statements.ColumnGroupMap$Builder.add(ColumnGroupMap.java:138)
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:805)
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:145)
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:134)
>       at 
> org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:61)
>       at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:132)
>       at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:140)
>       at 
> org.apache.cassandra.thrift.CassandraServer.execute_cql3_query(CassandraServer.java:1686)
>       at 
> org.apache.cassandra.thrift.Cassandra$Processor$execute_cql3_query.getResult(Cassandra.java:4074)
>       at 
> org.apache.cassandra.thrift.Cassandra$Processor$execute_cql3_query.getResult(Cassandra.java:4062)
>       at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
>       at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
>       at 
> org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:199)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at java.lang.Thread.run(Thread.java:680)
> I'll submit a schema, and steps to reproduce.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to