You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mi...@apache.org on 2014/04/19 03:18:38 UTC
[04/10] git commit: cqlsh: Updated CQL3 parser to support functions
and BLOB literals
cqlsh: Updated CQL3 parser to support functions and BLOB literals
patch by Mikhail Stepura; reviewed by Aleksey Yeschenko for CASSANDRA-7018
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/13d3a474
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/13d3a474
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/13d3a474
Branch: refs/heads/trunk
Commit: 13d3a47461af24fbd4b2ddee71a7042168ed860f
Parents: 8709706
Author: Mikhail Stepura <mi...@apache.org>
Authored: Wed Apr 16 21:10:18 2014 -0700
Committer: Mikhail Stepura <mi...@apache.org>
Committed: Fri Apr 18 18:01:41 2014 -0700
----------------------------------------------------------------------
CHANGES.txt | 1 +
bin/cqlsh | 2 +-
pylib/cqlshlib/cql3handling.py | 24 ++++++++++++++++++------
3 files changed, 20 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/13d3a474/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index bb08a37..bf80e1e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -6,6 +6,7 @@
* Non-droppable verbs shouldn't be dropped from OTC (CASSANDRA-6980)
* Shutdown batchlog executor in SS#drain() (CASSANDRA-7025)
* Fix batchlog to account for CF truncation records (CASSANDRA-6999)
+ * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
1.2.16
http://git-wip-us.apache.org/repos/asf/cassandra/blob/13d3a474/bin/cqlsh
----------------------------------------------------------------------
diff --git a/bin/cqlsh b/bin/cqlsh
index 4bf1b76..8e1e0e2 100755
--- a/bin/cqlsh
+++ b/bin/cqlsh
@@ -133,7 +133,7 @@ if os.path.exists(OLD_HISTORY):
DEFAULT_HOST = 'localhost'
DEFAULT_PORT = 9160
-DEFAULT_CQLVER = '3'
+DEFAULT_CQLVER = '3.0.5'
DEFAULT_TRANSPORT_FACTORY = 'cqlshlib.tfactory.regular_transport_factory'
DEFAULT_TIME_FORMAT = '%Y-%m-%d %H:%M:%S%z'
http://git-wip-us.apache.org/repos/asf/cassandra/blob/13d3a474/pylib/cqlshlib/cql3handling.py
----------------------------------------------------------------------
diff --git a/pylib/cqlshlib/cql3handling.py b/pylib/cqlshlib/cql3handling.py
index 50e2015..b04ba1d 100644
--- a/pylib/cqlshlib/cql3handling.py
+++ b/pylib/cqlshlib/cql3handling.py
@@ -206,6 +206,7 @@ JUNK ::= /([ \t\r\f\v]+|(--|[/][/])[^\n\r]*([\n\r]|$)|[/][*].*?[*][/])/ ;
<stringLiteral> ::= /'([^']|'')*'/ ;
<quotedName> ::= /"([^"]|"")*"/ ;
<float> ::= /-?[0-9]+\.[0-9]+/ ;
+<blobLiteral> ::= /0x[0-9a-f]+/ ;
<wholenumber> ::= /[0-9]+/ ;
<uuid> ::= /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/ ;
<identifier> ::= /[a-z][a-z0-9_]*/ ;
@@ -230,10 +231,15 @@ JUNK ::= /([ \t\r\f\v]+|(--|[/][/])[^\n\r]*([\n\r]|$)|[/][*].*?[*][/])/ ;
| <float>
| <uuid>
| <boolean>
+ | <blobLiteral>
+ | <functionName> <functionArguments>
;
+<functionArguments> ::= "(" ( <term> ( "," <term> )* )? ")"
+ ;
+
<tokenDefinition> ::= token="TOKEN" "(" <term> ( "," <term> )* ")"
- | <stringLiteral>
+ | <term>
;
<value> ::= <term>
| <collectionLiteral>
@@ -255,6 +261,9 @@ JUNK ::= /([ \t\r\f\v]+|(--|[/][/])[^\n\r]*([\n\r]|$)|[/][*].*?[*][/])/ ;
<mapLiteral> ::= "{" <term> ":" <term> ( "," <term> ":" <term> )* "}"
;
+<functionName> ::= <identifier>
+ ;
+
<statementBody> ::= <useStatement>
| <selectStatement>
| <dataChangeStatement>
@@ -739,13 +748,13 @@ syntax_rules += r'''
;
<selectStatement> ::= "SELECT" <selectClause>
"FROM" cf=<columnFamilyName>
- ("WHERE" <whereClause>)?
- ("ORDER" "BY" <orderByClause> ( "," <orderByClause> )* )?
- ("LIMIT" limit=<wholenumber>)?
+ ( "WHERE" <whereClause> )?
+ ( "ORDER" "BY" <orderByClause> ( "," <orderByClause> )* )?
+ ( "LIMIT" limit=<wholenumber> )?
;
-<whereClause> ::= <relation> ("AND" <relation>)*
+<whereClause> ::= <relation> ( "AND" <relation> )*
;
-<relation> ::= [rel_lhs]=<cident> ("=" | "<" | ">" | "<=" | ">=") <term>
+<relation> ::= [rel_lhs]=<cident> ( "=" | "<" | ">" | "<=" | ">=" ) <term>
| token="TOKEN" "(" [rel_tokname]=<cident>
( "," [rel_tokname]=<cident> )*
")" ("=" | "<" | ">" | "<=" | ">=") <tokenDefinition>
@@ -758,7 +767,10 @@ syntax_rules += r'''
<selector> ::= [colname]=<cident>
| "WRITETIME" "(" [colname]=<cident> ")"
| "TTL" "(" [colname]=<cident> ")"
+ | <functionName> <selectionFunctionArguments>
;
+<selectionFunctionArguments> ::= "(" ( <selector> ( "," <selector> )* )? ")"
+ ;
<orderByClause> ::= [ordercol]=<cident> ( "ASC" | "DESC" )?
;
'''