it's unusual but valid to have an expression on a column w/ no metadata. 2011/3/24 Wangpei (Peter) <peter.wang...@huawei.com>: > Thanks aaron. > > Maybe we need to do more check at ThriftValidation.validateIndexClauses(), > add this: > > Map<ByteBuffer, ColumnDefinition> colDefs = > DatabaseDescriptor.getTableDefinition(keyspace).cfMetaData().get(columnFamily).getColumn_metadata(); > > for (IndexExpression expression : index_clause.expressions) > > { > > if (!colDefs.containsKey(expression.column_name)) > > throw new InvalidRequestException("No column definition for > " + expression.column_name); > > } > > > > > > 发件人: aaron morton [mailto:aa...@thelastpickle.com] > 发送时间: 2011年3月24日 12:24 > 收件人: user@cassandra.apache.org > 主题: Re: result of get_indexed_slices() seems wrong > > > > Looks like this https://issues.apache.org/jira/browse/CASSANDRA-2347 > > > > From this > discussion http://www.mail-archive.com/user@cassandra.apache.org/msg11291.html > > > > > > Aaron > > > > On 24 Mar 2011, at 17:17, Wangpei (Peter) wrote: > > Hi, > > > > This problem occurs when the clause has multi expression and a expression > with operator other than EQ. > > Is anyone meet the same problem? > > > > I trace the code, and seen this at ColumnFamilyStore.satisfies() method: > > int v = data.getComparator().compare(column.value(), > expression.value); > > It seems when I need the type of column value here, it use the type of my > column names which is UTF8Type, so give the wrong result. > > To fix it, the expression needs a optional "comparator_type" attribute, then > satisfies() can get the correct type to compare. > > pls point out if I am wrong. > > > > > >
-- Jonathan Ellis Project Chair, Apache Cassandra co-founder of DataStax, the source for professional Cassandra support http://www.datastax.com