[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-06-10 Thread Jonathan Ellis (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis updated CASSANDRA-2480:
--

  Component/s: (was: Core)
Affects Version/s: 0.8.0
Fix Version/s: (was: 1.0)

> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API
>Affects Versions: 0.8.0
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 0.8.1
>
> Attachments: 2480-v4-wip.txt, CASSANDRA-2480-v2.patch, 
> CASSANDRA-2480-v3.patch, CASSANDRA-2480-v5.patch, CASSANDRA-2480.patch
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-06-10 Thread Pavel Yaskevich (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Yaskevich updated CASSANDRA-2480:
---

Attachment: CASSANDRA-2480-v5.patch

AM is set to use String keyName instead of BB, validateKeyAlias changed to do 
only one BB->String conversion. WhereClause.extractKeysFromColumns(CFMetaData) 
modified to use iterator.

> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 0.8.1, 1.0
>
> Attachments: 2480-v4-wip.txt, CASSANDRA-2480-v2.patch, 
> CASSANDRA-2480-v3.patch, CASSANDRA-2480-v5.patch, CASSANDRA-2480.patch
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-06-10 Thread Jonathan Ellis (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis updated CASSANDRA-2480:
--

Attachment: 2480-v4-wip.txt

Started doing some cleanup to extractKeysFromColumns. I think it still doesn't 
quite get the case comparisons right -- it uppercases the cql input but not the 
key name.

Looks like things would be a lot simpler if we stored the cql input key as 
String instead of bytebuffer.

> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 0.8.1, 1.0
>
> Attachments: 2480-v4-wip.txt, CASSANDRA-2480-v2.patch, 
> CASSANDRA-2480-v3.patch, CASSANDRA-2480.patch
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-06-09 Thread Pavel Yaskevich (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Yaskevich updated CASSANDRA-2480:
---

Attachment: CASSANDRA-2480-v3.patch

removed KEY special case.

> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 0.8.1, 1.0
>
> Attachments: CASSANDRA-2480-v2.patch, CASSANDRA-2480-v3.patch, 
> CASSANDRA-2480.patch
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-06-08 Thread Pavel Yaskevich (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Yaskevich updated CASSANDRA-2480:
---

Attachment: CASSANDRA-2480-v2.patch

v2 introduces following behavior: when alias key was set you won't be able to 
use KEY keyword in any of the operations for that CF - UPDATE, INSERT, SELECT, 
DELETE.

> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 0.8.1, 1.0
>
> Attachments: CASSANDRA-2480-v2.patch, CASSANDRA-2480.patch
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-06-08 Thread Pavel Yaskevich (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Yaskevich updated CASSANDRA-2480:
---

Attachment: (was: CASSANDRA-2480.patch)

> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 0.8.1, 1.0
>
> Attachments: CASSANDRA-2480.patch
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-06-08 Thread Pavel Yaskevich (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Yaskevich updated CASSANDRA-2480:
---

Attachment: CASSANDRA-2480.patch

> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 0.8.1, 1.0
>
> Attachments: CASSANDRA-2480.patch
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-06-08 Thread Pavel Yaskevich (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Yaskevich updated CASSANDRA-2480:
---

Attachment: CASSANDRA-2480.patch

work branch: cassandra-0.8, the latest commit 
5bd1258a0c328dd3317e48fc2bf0281216830780
 
Key alias support for CREATE COLUMNFAMILY, INSERT, UPDATE, DELETE, SELECT 
statements.

Example:
{noformat}
CREATE COLUMNFAMILY KeyAliasCF ('id' varint PRIMARY KEY, 'username' text) WITH 
default_validation = ascii;

INSERT INTO KeyAliasCF (KEY, username) VALUES (1, jbellis);

UPDATE KeyAliasCF SET username = 'xedin' WHERE id = 2;

SELECT * FROM KeyAliasCF WHERE id = 2;
SELECT username, id FROM KeyAliasCF WHERE id = 2;

DELETE FROM KeyAliasCF WHERE id = 2;
{noformat}

CQL doc and tests are updated.


> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 1.0
>
> Attachments: CASSANDRA-2480.patch
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-05-16 Thread Jonathan Ellis (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis updated CASSANDRA-2480:
--

Assignee: Pavel Yaskevich
  Labels: cql  (was: )

> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
>Assignee: Pavel Yaskevich
>  Labels: cql
> Fix For: 1.0
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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


[jira] [Updated] (CASSANDRA-2480) Named keys / virtual columns

2011-04-14 Thread Eric Evans (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eric Evans updated CASSANDRA-2480:
--

Description: 
With the completion of CASSANDRA-2396, it is now possible to attach a name to 
keys (column family-wide).  This could be utilized to introduce the concept of 
"virtual columns" in CQL. Here's how that would work:

Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
example:

{code:SQL|title=CQL 1.0}
INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
-- or alternately
UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1

SELECT name1,name2 FROM cf WHERE KEY = key1
{code}

For CQL 1.1, that syntax would continue to work, but upon the completion of 
this issue it should also be possible to assign a name to the key and treat as 
if it were another column.  For example:

{code:SQL|title=CQL 1.1}
INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
-- or alternately
UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1

-- Note how the keyname can now be used in the projection
SELECT keyname, name1, name2 FROM cf WHERE keyname = key1

-- And, there is no restriction on the order
SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
{code}

The semantics will be such that the existing behavior is maintained (read: when 
using the {{KEY}} keyword), but if the key is named, and the name is used in a 
{{SELECT}}, the key's name and value will be returned in the column results, 
sorted according to the comparator (_Note: we'll need to figure out what that 
means with respect to differently typed keys_).



> Named keys / virtual columns
> 
>
> Key: CASSANDRA-2480
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2480
> Project: Cassandra
>  Issue Type: Sub-task
>  Components: API, Core
>Reporter: Eric Evans
> Fix For: 1.0
>
>
> With the completion of CASSANDRA-2396, it is now possible to attach a name to 
> keys (column family-wide).  This could be utilized to introduce the concept 
> of "virtual columns" in CQL. Here's how that would work:
> Typically you would use the CQL keyword {{KEY}} to specify a row key, for 
> example:
> {code:SQL|title=CQL 1.0}
> INSERT INTO cf (KEY, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE KEY = key1
> SELECT name1,name2 FROM cf WHERE KEY = key1
> {code}
> For CQL 1.1, that syntax would continue to work, but upon the completion of 
> this issue it should also be possible to assign a name to the key and treat 
> as if it were another column.  For example:
> {code:SQL|title=CQL 1.1}
> INSERT INTO cf (keyname, name1, name2) VALUES (key1, value1, value2)
> -- or alternately
> UPDATE cf SET name1 = value1, name2 = value2 WHERE keyname = key1
> -- Note how the keyname can now be used in the projection
> SELECT keyname, name1, name2 FROM cf WHERE keyname = key1
> -- And, there is no restriction on the order
> SELECT name1, name2, keyname FROM cf WHERE keyname = key1 AND name2 = value2
> {code}
> The semantics will be such that the existing behavior is maintained (read: 
> when using the {{KEY}} keyword), but if the key is named, and the name is 
> used in a {{SELECT}}, the key's name and value will be returned in the column 
> results, sorted according to the comparator (_Note: we'll need to figure out 
> what that means with respect to differently typed keys_).

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