You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jim Ancona (JIRA)" <ji...@apache.org> on 2010/10/31 01:23:19 UTC

[jira] Created: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Enhance cassandra-cli with more flexible querying and better data type support
------------------------------------------------------------------------------

                 Key: CASSANDRA-1688
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
             Project: Cassandra
          Issue Type: Improvement
          Components: Tools
            Reporter: Jim Ancona


In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 

It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.

Syntax overview:

getSlice examples:
{noformat}
get CF2 key Long(12345) columns from 10000 to 99999999999
get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
{noformat}

getRangeSlices examples:
{noformat}
get CF2 keys all columns from 10000 to 99999999999
get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
{noformat}

Pseudo-Antlr syntax
{noformat}
thriftGetSlice
    : K_GET columnParent 'KEY' keyValue columnSlice?

thriftGetRangeSlices
    : K_GET columnParent keyRange? columnSlice?

columnParent
    : columnFamily ('SUPERCOLUMN' superColumnName)?

columnSlice
    : (columnList | columnRange | allColumns)
 
columnList
    : 'COLUMNS' columnSpec (',' columnSpec)*
 
columnRange
    : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
    
allColumns
    : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?

keyRange
    : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?

columnSpec
    : columnName ('AS' typeIdentifier)?

value: (Identifier | IntegerLiteral | StringLiteral | functionCall );

functionCall 
    : functionName=Identifier '(' functionArgument ')'
{noformat}


Questions:

* Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
* Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.

Additional work:

* The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
* The LIST command should be deprecated or removed.
* The SET command should be enhanced to allow for non-string keys and column names.
* I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Andy Grundman (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992140#comment-12992140 ] 

Andy Grundman commented on CASSANDRA-1688:
------------------------------------------

OK it looks like any data coming to/from Thrift does not get converted by the validator class.  The CliClient is the one doing the string -> int conversion when doing set.

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992161#comment-12992161 ] 

Jonathan Ellis commented on CASSANDRA-1688:
-------------------------------------------

It sounds to me like your Thrift code is setting the value to something that is NOT the correct bytes for IntegerType(119).  If it were the CLI not applying metadata correctly then {{get Users[119] as IntegerType}} as in Pavel's example would fix it.  But I am betting that will not change what you see, since the problem happened at insert time not at read time.

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Andy Grundman (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992111#comment-12992111 ] 

Andy Grundman commented on CASSANDRA-1688:
------------------------------------------

Hmm, I just tested with trunk. Wonder if I'm doing something wrong:

    ColumnFamily: Users
      Columns sorted by: org.apache.cassandra.db.marshal.AsciiType
      Row cache size / save period: 0.0/0
      Key cache size / save period: 200000.0/14400
      Memtable thresholds: 0.29062499999999997/62/60
      GC grace seconds: 864000
      Compaction min/max thresholds: 4/32
      Read repair chance: 1.0
      Built indexes: []
      Column Metadata:
        Column Name: id (id)
          Validation Class: org.apache.cassandra.db.marshal.IntegerType

list Users;

RowKey: 119
=> (column=id, value=3223865, timestamp=1297187818869394)


> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Andy Grundman (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992173#comment-12992173 ] 

Andy Grundman commented on CASSANDRA-1688:
------------------------------------------

I'm writing a Perl client by the way. Asking client users to manually pack and unpack data according to validator_class seems a bit wrong, this may even be rather difficult in some languages. I'm sort of thinking that if the server is validating data, it should also store the data in the appropriate form, converting from Thrift's string format to whatever native Java type is necessary. I suppose I could have the user provide a list of columns and types and perform the conversions automatically...

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992102#comment-12992102 ] 

Jonathan Ellis commented on CASSANDRA-1688:
-------------------------------------------

bq. a column with validator_class=IntegerType and a value of 119 is printed as 3223865

It prints 119 in 0.7.

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Pavel Yaskevich (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992141#comment-12992141 ] 

Pavel Yaskevich commented on CASSANDRA-1688:
--------------------------------------------

Branch trunk (latest commit 804729f1ee53c8314b7415f36924c772c4d48bf0)

CLI session:
{code}
[default@unknown] create keyspace ks1;
19b893f0-33bc-11e0-0000-242d50ca1fbe
[default@unknown] use ks1;
Authenticated to keyspace: ks1
[default@ks1] create column family Users with comparator=AsciiType and column_metadata=[{column_name:id, validation_class:IntegerType}];
19b893f0-33bc-11e0-0000-242d50cf1fbe
default@ks1] set Users[119][id] = 119;
Value inserted.
[default@ks1] list Users;  
Using default limit of 100
-------------------
RowKey: 119
=> (column=id, value=119, timestamp=1297194393696000)

1 Row Returned.
[default@ks1] get Users[119];
=> (column=id, value=119, timestamp=1297194393696000)
Returned 1 results.
default@ks1] get Users[119] as IntegerType; 
=> (column=id, value=119, timestamp=1297194393696000)
Returned 1 results.
[default@ks1] describe keyspace;
eyspace: ks1:
  Replication Strategy: org.apache.cassandra.locator.SimpleStrategy
    Replication Factor: 1
  Column Families:
    ColumnFamily: Users
      Columns sorted by: org.apache.cassandra.db.marshal.AsciiType
      Row cache size / save period: 0.0/0
      Key cache size / save period: 200000.0/3600
      Memtable thresholds: 0.29062499999999997/62/60
      GC grace seconds: 864000
      Compaction min/max thresholds: 4/32
      Read repair chance: 1.0
      Built indexes: []
      Column Metadata:
        Column Name: id (id)
          Validation Class: org.apache.cassandra.db.marshal.IntegerType
{code}

Restarting CLI and doing `list Users;`, `get Users[119];`, `get Users[119] as IntegerType;` gives the same _right_ result.

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Updated: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Jim Ancona (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jim Ancona updated CASSANDRA-1688:
----------------------------------

    Attachment: cli-enhanced-get.patch

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Andy Grundman (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992128#comment-12992128 ] 

Andy Grundman commented on CASSANDRA-1688:
------------------------------------------

Some more info: If I do set Users[119][id] = 119; in the CLI, the value is then printed correctly.

The 3223865 value is coming from another app setting the value over Thrift. Reading the data back out with Thrift does return 119, though. I'm getting the feeling this may need to be a new bug.

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Andy Grundman (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992178#comment-12992178 ] 

Andy Grundman commented on CASSANDRA-1688:
------------------------------------------

Actually, I can just automatically call describe_keyspace and use that to setup automatic value conversion. This should be a reasonable workaround for now, but I expect this issue will come up again in the future.  Sorry for the noise. :)

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12926663#action_12926663 ] 

Jonathan Ellis commented on CASSANDRA-1688:
-------------------------------------------

It works fine for multiple columns of different types, as long as those are defined in the metadata.

It also works fine for multiple columns of the _same_ type (the CF level validator).

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Jim Ancona (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12926660#action_12926660 ] 

Jim Ancona edited comment on CASSANDRA-1688 at 10/30/10 7:46 PM:
-----------------------------------------------------------------

The CASSANDRA-1603 solution doesn't work well for multiple columns of different types.

How about:

{noformat}
get CF2[long(12345)][10000:20000]  as Integer
get CF2[long(12345)][count as long, name as utf8]
{noformat}

The LIST versions would be the same, except taking ranges of keys.


      was (Author: jancona):
    The CASSANDRA-1603 solution doesn't work well for multiple columns of different types.

How about:

{unformatted}
get CF2[long(12345)][10000:20000]  as Integer
get CF2[long(12345)][count as long, name as utf8]
{unformatted}

The LIST versions would be the same, except taking ranges of keys.

  
> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Jim Ancona (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12926660#action_12926660 ] 

Jim Ancona commented on CASSANDRA-1688:
---------------------------------------

The CASSANDRA-1603 solution doesn't work well for multiple columns of different types.

How about:

{unformatted}
get CF2[long(12345)][10000:20000]  as Integer
get CF2[long(12345)][count as long, name as utf8]
{unformatted}

The LIST versions would be the same, except taking ranges of keys.


> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Andy Grundman (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992097#comment-12992097 ] 

Andy Grundman commented on CASSANDRA-1688:
------------------------------------------

I'm interested in the data type part of this issue. Currently all values that are not strings don't seem to print correctly. For example, a column with validator_class=IntegerType and a value of 119 is printed as 3223865. I've poked around in CliClient and the validator getString methods but wasn't able to get anywhere. I also checked the attached patch but it seems to use the same code for output. Can anyone point me in the right direction?

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12926657#action_12926657 ] 

Jonathan Ellis commented on CASSANDRA-1688:
-------------------------------------------

I would rather see the smaller change of adding : for slicing columns:

{code}
get CF2[long(12345)][10000:20000]
{code}

The rest can be done with appropriate metadata either server-side or as specified for CASSANDRA-1603

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis resolved CASSANDRA-1688.
---------------------------------------

    Resolution: Not A Problem

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Andy Grundman (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992157#comment-12992157 ] 

Andy Grundman commented on CASSANDRA-1688:
------------------------------------------

Yeah, the problem only occurs with Thrift <-> CLI.

Should I open a new bug? I'm not sure what the intended behavior is here. Converting Thrift input to match validator_class may be too much overhead just to support the CLI, I'm not sure.

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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

        

[jira] Commented: (CASSANDRA-1688) Enhance cassandra-cli with more flexible querying and better data type support

Posted by "Andy Grundman (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992185#comment-12992185 ] 

Andy Grundman commented on CASSANDRA-1688:
------------------------------------------

Sorry I ended up hijacking this bug a bit, since my issue turned out not to be really with the CLI. I don't think you should close this enhancement yet.

> Enhance cassandra-cli with more flexible querying and better data type support
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1688
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1688
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jim Ancona
>         Attachments: cli-enhanced-get.patch
>
>
> In trying to use cassandra-cli, I've felt the need to have better support for non-String data types, and more flexibility in the types of queries possible. The attached patch is an attempt to address some of those issues. 
> It enhances the GET command with a more flexible syntax, outlined below. The new syntax adds to and partially duplicates the current GET syntax, but is more verbose. Functionally it's a superset of the LIST command, but I haven't removed any functionality yet. I added support for the Thrift getSlice and getRangeSlices calls.
> Syntax overview:
> getSlice examples:
> {noformat}
> get CF2 key Long(12345) columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' key 'hello' columns 'world' as integer, 'moon' as ascii, 
> {noformat}
> getRangeSlices examples:
> {noformat}
> get CF2 keys all columns from 10000 to 99999999999
> get SCF1 supercolumn 'super' keys from Integer(1234567876) limit 500 columns 'world' as integer
> get CF2 keys from 'A' to 'Z' columns from 10000 to 99999999999 limit 50
> {noformat}
> Pseudo-Antlr syntax
> {noformat}
> thriftGetSlice
>     : K_GET columnParent 'KEY' keyValue columnSlice?
> thriftGetRangeSlices
>     : K_GET columnParent keyRange? columnSlice?
> columnParent
>     : columnFamily ('SUPERCOLUMN' superColumnName)?
> columnSlice
>     : (columnList | columnRange | allColumns)
>  
> columnList
>     : 'COLUMNS' columnSpec (',' columnSpec)*
>  
> columnRange
>     : 'COLUMNS' ('FROM' startColumn)? ('TO' endColumn)? ('AS' typeIdentifier)? ('LIMIT' limit)?
>     
> allColumns
>     : 'COLUMNS' 'ALL' ('AS' typeIdentifier)? ('LIMIT' limit)?
> keyRange
>     : 'KEYS' ( ('FROM' startKeyValue)? ('TO' endKeyValue)? |  ALL ) ('LIMIT' limit=IntegerLiteral)?
> columnSpec
>     : columnName ('AS' typeIdentifier)?
> value: (Identifier | IntegerLiteral | StringLiteral | functionCall );
> functionCall 
>     : functionName=Identifier '(' functionArgument ')'
> {noformat}
> Questions:
> * Should I use a different keyword? Perhaps GET should be reserved for the simple bracket-based, single-key case and this functionality should use LIST or SELECT as a keyword.
> * Should the syntax be more SQL-like? I started out doing that, but it seemed to me that the C* model is so different that mapping it to the SQL syntax was difficult. I haven't looked at Eric Evans' CQL work in any detail yet, but perhaps that is a better model.
> Additional work:
> * The KEYS and COLUMNS keywords should be added to the GET / WHERE syntax for getIndexedSlices.
> * The LIST command should be deprecated or removed.
> * The SET command should be enhanced to allow for non-string keys and column names.
> * I've used a different model for processing the syntax tree in the code. If other people like it, it would make sense to convert the rest of CliClient to the same model.

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