Author: brandonwilliams
Date: Mon Aug  8 23:18:29 2011
New Revision: 1155147

URL: http://svn.apache.org/viewvc?rev=1155147&view=rev
Log:
Allow escaping of colons in the python cql driver.
Patch by brandonwilliams, reviewed by Blake Visin for CASSANDRA-2898

Modified:
    cassandra/drivers/py/cql/marshal.py

Modified: cassandra/drivers/py/cql/marshal.py
URL: 
http://svn.apache.org/viewvc/cassandra/drivers/py/cql/marshal.py?rev=1155147&r1=1155146&r2=1155147&view=diff
==============================================================================
--- cassandra/drivers/py/cql/marshal.py (original)
+++ cassandra/drivers/py/cql/marshal.py Mon Aug  8 23:18:29 2011
@@ -29,7 +29,7 @@ if hasattr(struct, 'Struct'): # new in P
 else:
     _have_struct = False
 
-_param_re = re.compile(r"(?<!strategy_options)(:[a-zA-Z_][a-zA-Z0-9_]*)", re.M)
+_param_re = 
re.compile(r"(?<!strategy_options)(?<!\\)(:[a-zA-Z_][a-zA-Z0-9_]*)", re.M)
 
 BYTES_TYPE = "org.apache.cassandra.db.marshal.BytesType"
 ASCII_TYPE = "org.apache.cassandra.db.marshal.AsciiType"
@@ -48,7 +48,7 @@ def prepare(query, params):
     new, count = re.subn(_param_re, lambda m: marshal(params[m.group(1)[1:]]), 
query)
     if len(params) > count:
         raise cql.ProgrammingError("More keywords were provided than 
parameters")
-    return new
+    return new.replace("\:", ":")
 
 def marshal(term):
     if isinstance(term, unicode):


Reply via email to