[jira] [Commented] (CASSANDRA-5198) Fix CQL3 loose type validation of constants

2013-02-04 Thread Sylvain Lebresne (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13570091#comment-13570091
 ] 

Sylvain Lebresne commented on CASSANDRA-5198:
-

Agreed. I've re-allowed strings-as-blobs in commit 
b251e7aec03273ac14eeae79bee13422068d508b while (hopefully) making it clear it 
is deprecated (in particular it logs a warning (only once to avoid flooding) if 
you use a string as blob).

 Fix CQL3 loose type validation of constants 
 

 Key: CASSANDRA-5198
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5198
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.1
Reporter: Edward Capriolo
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 1.2.2

 Attachments: 0001-Respect-CQL3-constant-types.txt, 
 0002-Improve-printing-of-type-in-error-message.txt, 
 0003-Respect-partitioner-type-for-Token-function.txt


 This works as it should.
 {noformat}
 cqlsh:movies select * from users where token (username)  token('') ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
 bsmith | null |  null |   bob |smith | null
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token('bsmith') ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token('scapriolo') 
 ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 {noformat}
 But look what happens when you supply numbers into the token function.
 {noformat}
 qlsh:movies select * from users where token (username)  token(0) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134314) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
 bsmith | null |  null |   bob |smith | null
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(113431431) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134434) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
 {noformat}
 This does not make sense to me. The token function is apparently converting 
 integers to strings leading to seemingly unpredictable results. 
 However I find this syntax odd, I feel like I should be able to say 
 'token(username)  0 and token(username)  10' because from a thrift side I 
 can page tokens or I can page keys. In this case, I guess, I am only able to 
 page keys because the token is not returned to the user.
 Is token 0 = ''? How do I arrive at the minimal token for and int column. 
 Should the token() function at least be smart enough to reject integers for 
 string columns?

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


[jira] [Commented] (CASSANDRA-5198) Fix CQL3 loose type validation of constants

2013-02-01 Thread T Jake Luciani (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13569019#comment-13569019
 ] 

T Jake Luciani commented on CASSANDRA-5198:
---

This is a breaking change for us or anyone who is using CQL with blobs.

Since we no longer accept '' hex but 0x didn't previously work till now, there 
is no way to upgrade 1.2.x to 1.2.2 due to this change.

I suggest you allow both formats for a single release and add a note in 
NEWS.txt, that way someone can deploy 1.2.2 then update their app to the new 
syntax

 Fix CQL3 loose type validation of constants 
 

 Key: CASSANDRA-5198
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5198
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.1
Reporter: Edward Capriolo
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 1.2.2

 Attachments: 0001-Respect-CQL3-constant-types.txt, 
 0002-Improve-printing-of-type-in-error-message.txt, 
 0003-Respect-partitioner-type-for-Token-function.txt


 This works as it should.
 {noformat}
 cqlsh:movies select * from users where token (username)  token('') ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
 bsmith | null |  null |   bob |smith | null
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token('bsmith') ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token('scapriolo') 
 ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 {noformat}
 But look what happens when you supply numbers into the token function.
 {noformat}
 qlsh:movies select * from users where token (username)  token(0) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134314) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
 bsmith | null |  null |   bob |smith | null
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(113431431) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134434) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
 {noformat}
 This does not make sense to me. The token function is apparently converting 
 integers to strings leading to seemingly unpredictable results. 
 However I find this syntax odd, I feel like I should be able to say 
 'token(username)  0 and token(username)  10' because from a thrift side I 
 can page tokens or I can page keys. In this case, I guess, I am only able to 
 page keys because the token is not returned to the user.
 Is token 0 = ''? How do I arrive at the minimal token for and int column. 
 Should the token() function at least be smart enough to reject integers for 
 string columns?

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


[jira] [Commented] (CASSANDRA-5198) Fix CQL3 loose type validation of constants

2013-02-01 Thread Aleksey Yeschenko (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13569024#comment-13569024
 ] 

Aleksey Yeschenko commented on CASSANDRA-5198:
--

bq. I suggest you allow both formats for a single release and add a note in 
NEWS.txt, that way someone can deploy 1.2.2 then update their app to the new 
syntax

+1

 Fix CQL3 loose type validation of constants 
 

 Key: CASSANDRA-5198
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5198
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.1
Reporter: Edward Capriolo
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 1.2.2

 Attachments: 0001-Respect-CQL3-constant-types.txt, 
 0002-Improve-printing-of-type-in-error-message.txt, 
 0003-Respect-partitioner-type-for-Token-function.txt


 This works as it should.
 {noformat}
 cqlsh:movies select * from users where token (username)  token('') ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
 bsmith | null |  null |   bob |smith | null
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token('bsmith') ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token('scapriolo') 
 ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 {noformat}
 But look what happens when you supply numbers into the token function.
 {noformat}
 qlsh:movies select * from users where token (username)  token(0) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134314) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
 bsmith | null |  null |   bob |smith | null
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(113431431) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  ecapriolo | null |  null |edward | capriolo | null
 cqlsh:movies select * from users where token (username)  token(1134434) ;
  username  | created_date | email | firstname | lastname | password
 ---+--+---+---+--+--
  scapriolo | null |  null |stacey | capriolo | null
 {noformat}
 This does not make sense to me. The token function is apparently converting 
 integers to strings leading to seemingly unpredictable results. 
 However I find this syntax odd, I feel like I should be able to say 
 'token(username)  0 and token(username)  10' because from a thrift side I 
 can page tokens or I can page keys. In this case, I guess, I am only able to 
 page keys because the token is not returned to the user.
 Is token 0 = ''? How do I arrive at the minimal token for and int column. 
 Should the token() function at least be smart enough to reject integers for 
 string columns?

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