Add boolean as literals in CQL3

patch by slebresne and iamaleksey; reviewed by jbellis for CASSANDRA-4776
This commit is contained in:
Sylvain Lebresne 2012-10-25 17:55:58 +02:00
parent 10777f2cc8
commit ff817cf633
4 changed files with 15 additions and 3 deletions

View File

@ -36,6 +36,7 @@
* Fix Subcolumn slice ends not respected (CASSANDRA-4826) * Fix Subcolumn slice ends not respected (CASSANDRA-4826)
* Fix Assertion error in cql3 select (CASSANDRA-4783) * Fix Assertion error in cql3 select (CASSANDRA-4783)
* Fix list prepend logic (CQL3) (CASSANDRA-4835) * Fix list prepend logic (CQL3) (CASSANDRA-4835)
* Add booleans as literals in CQL3 (CASSANDRA-4776)
Merged from 1.1: Merged from 1.1:
* fix get_paged_slice to wrap to next row correctly (CASSANDRA-4816) * fix get_paged_slice to wrap to next row correctly (CASSANDRA-4816)
* fix indexing empty column values (CASSANDRA-4832) * fix indexing empty column values (CASSANDRA-4832)

View File

@ -208,6 +208,9 @@ JUNK ::= /([ \t\r\f\v]+|(--|[/][/])[^\n\r]*([\n\r]|$)|[/][*].*?[*][/])/ ;
<brackets> ::= /[][{}]/ ; <brackets> ::= /[][{}]/ ;
<integer> ::= "-"? <wholenumber> ; <integer> ::= "-"? <wholenumber> ;
<boolean> ::= "true"
| "false"
;
<unclosedString> ::= /'([^']|'')*/ ; <unclosedString> ::= /'([^']|'')*/ ;
<unclosedName> ::= /"([^"]|"")*/ ; <unclosedName> ::= /"([^"]|"")*/ ;
@ -217,6 +220,7 @@ JUNK ::= /([ \t\r\f\v]+|(--|[/][/])[^\n\r]*([\n\r]|$)|[/][*].*?[*][/])/ ;
| <integer> | <integer>
| <float> | <float>
| <uuid> | <uuid>
| <boolean>
; ;
<tokenDefinition> ::= token="TOKEN" "(" <term> ( "," <term> )* ")" <tokenDefinition> ::= token="TOKEN" "(" <term> ( "," <term> )* ")"
@ -841,6 +845,8 @@ def insert_newval_completer(ctxt, cass):
return ['{'] return ['{']
if coltype == 'list': if coltype == 'list':
return ['['] return ['[']
if coltype == 'boolean':
return ['true', 'false']
return [Hint('<value for %s (%s)>' % (maybe_escape_name(curcol), return [Hint('<value for %s (%s)>' % (maybe_escape_name(curcol),
cqltype.cql_parameterized_type()))] cqltype.cql_parameterized_type()))]

View File

@ -578,7 +578,7 @@ map_literal returns [Map<Term, Term> value]
; ;
term returns [Term term] term returns [Term term]
: t=(STRING_LITERAL | UUID | INTEGER | FLOAT ) { $term = new Term($t.text, $t.type); } : t=(STRING_LITERAL | UUID | INTEGER | FLOAT | K_TRUE | K_FALSE ) { $term = new Term($t.text, $t.type); }
| t=QMARK { $term = new Term($t.text, $t.type, ++currentBindMarkerIdx); } | t=QMARK { $term = new Term($t.text, $t.type, ++currentBindMarkerIdx); }
; ;
@ -641,7 +641,7 @@ property[PropertyDefinitions props]
; ;
propertyValue returns [String str] propertyValue returns [String str]
: v=(STRING_LITERAL | IDENT | INTEGER | FLOAT) { $str = $v.text; } : v=(STRING_LITERAL | IDENT | INTEGER | FLOAT | K_TRUE | K_FALSE) { $str = $v.text; }
| u=unreserved_keyword { $str = u; } | u=unreserved_keyword { $str = u; }
; ;
@ -823,6 +823,9 @@ K_WRITETIME: W R I T E T I M E;
K_MAP: M A P; K_MAP: M A P;
K_LIST: L I S T; K_LIST: L I S T;
K_TRUE: T R U E;
K_FALSE: F A L S E;
// Case-insensitive alpha characters // Case-insensitive alpha characters
fragment A: ('a'|'A'); fragment A: ('a'|'A');
fragment B: ('b'|'B'); fragment B: ('b'|'B');

View File

@ -30,7 +30,7 @@ public class Term
{ {
public enum Type public enum Type
{ {
STRING, INTEGER, UUID, FLOAT, QMARK; STRING, INTEGER, UUID, FLOAT, BOOLEAN, QMARK;
static Type forInt(int type) static Type forInt(int type)
{ {
@ -42,6 +42,8 @@ public class Term
return UUID; return UUID;
else if (type == CqlParser.FLOAT) else if (type == CqlParser.FLOAT)
return FLOAT; return FLOAT;
else if (type == CqlParser.K_TRUE || type == CqlParser.K_FALSE)
return BOOLEAN;
else if (type == CqlParser.QMARK) else if (type == CqlParser.QMARK)
return QMARK; return QMARK;