Author: eevans
Date: Thu Mar 24 22:22:30 2011
New Revision: 1085166

URL: http://svn.apache.org/viewvc?rev=1085166&view=rev
Log:
system test for escaped quotes (+ discovered bug)

Patch by eevans

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g
    cassandra/trunk/test/system/test_cql.py

Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g?rev=1085166&r1=1085165&r2=1085166&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g Thu Mar 24 22:22:30 
2011
@@ -411,7 +411,7 @@ STRING_LITERAL
     : '\''
       { StringBuilder b = new StringBuilder(); }
       ( c=~('\''|'\r'|'\n') { b.appendCodePoint(c);}
-      | '\'' '\''            { b.appendCodePoint('"');}
+      | '\'' '\''            { b.appendCodePoint('\'');}
       )*
       '\''
       { setText(b.toString()); }

Modified: cassandra/trunk/test/system/test_cql.py
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_cql.py?rev=1085166&r1=1085165&r2=1085166&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_cql.py (original)
+++ cassandra/trunk/test/system/test_cql.py Thu Mar 24 22:22:30 2011
@@ -570,4 +570,17 @@ class TestCql(ThriftTester):
                 "returned %d columns, expected %d" % (len(r[0]), 10)
             assert r[0][0].name == -10
             assert r[0][9].name == -1
+            
+    def test_escaped_quotes(self):
+        "reading and writing strings w/ escaped quotes"
+        conn = init()
         
+        conn.execute("""
+            UPDATE StandardString1 SET 'x''and''y' = z WHERE KEY = ?
+        """, "test_escaped_quotes")
+                     
+        r = conn.execute("""
+            SELECT 'x''and''y' FROM StandardString1 WHERE KEY = ?
+        """, "test_escaped_quotes")
+        assert (len(r) == 1) and (len(r[0]) == 1), "wrong number of results"
+        assert r[0][0].name == "x\'and\'y"


Reply via email to