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 Assertion error in cql3 select (CASSANDRA-4783)
* Fix list prepend logic (CQL3) (CASSANDRA-4835)
* Add booleans as literals in CQL3 (CASSANDRA-4776)
Merged from 1.1:
* fix get_paged_slice to wrap to next row correctly (CASSANDRA-4816)
* fix indexing empty column values (CASSANDRA-4832)

View File

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

View File

@ -578,7 +578,7 @@ map_literal returns [Map<Term, Term> value]
;
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); }
;
@ -641,7 +641,7 @@ property[PropertyDefinitions props]
;
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; }
;
@ -823,6 +823,9 @@ K_WRITETIME: W R I T E T I M E;
K_MAP: M A P;
K_LIST: L I S T;
K_TRUE: T R U E;
K_FALSE: F A L S E;
// Case-insensitive alpha characters
fragment A: ('a'|'A');
fragment B: ('b'|'B');

View File

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