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):