Revision: 38ed5babd818
Author: Aleksey Yeschenko <[email protected]>
Date: Thu May 30 19:47:46 2013
Log: Fix CQL3+boolean quoting
http://code.google.com/a/apache-extras.org/p/cassandra-dbapi2/source/detail?r=38ed5babd818
Modified:
/cql/cursor.py
/cql/query.py
=======================================
--- /cql/cursor.py Thu Oct 18 16:19:52 2012
+++ /cql/cursor.py Thu May 30 19:47:46 2013
@@ -64,7 +64,7 @@
def prepare_inline(self, query, params):
try:
- return prepare_inline(query, params)
+ return prepare_inline(query, params, self.cql_major_version)
except KeyError, e:
raise cql.ProgrammingError("Unmatched named substitution: " +
"%s not given for %r" % (e, query))
=======================================
--- /cql/query.py Sun Aug 19 13:16:40 2012
+++ /cql/query.py Thu May 30 19:47:46 2013
@@ -59,7 +59,7 @@
def encode_params(self, params):
return [t.to_binary(t.validate(params[n])) for (n, t) in
zip(self.paramnames, self.vartypes)]
-def prepare_inline(query, params):
+def prepare_inline(query, params, cql_major_version=3):
"""
For every match of the form ":param_name", call cql_quote
on kwargs['param_name'] and replace that section of the query
@@ -67,7 +67,7 @@
"""
def param_replacer(match):
- return match.group(1) + cql_quote(params[match.group(2)])
+ return match.group(1) + cql_quote(params[match.group(2)],
cql_major_version)
return replace_param_substitutions(query, param_replacer)
def prepare_query(querytext):
@@ -80,11 +80,13 @@
transformed_query = replace_param_substitutions(querytext, found_param)
return transformed_query, paramnames
-def cql_quote(term):
+def cql_quote(term, cql_major_version=3):
if isinstance(term, unicode):
return "'%s'" % __escape_quotes(term.encode('utf8'))
- elif isinstance(term, (str, bool)):
+ elif isinstance(term, str):
return "'%s'" % __escape_quotes(str(term))
+ elif isinstance(term, bool) and cql_major_version == 2:
+ return "'%s'" % str(term)
else:
return str(term)