Avoid UnicodeDecodeError when query string is unicode
Fixes PYTHON-76
This commit is contained in:
@@ -35,6 +35,7 @@ Bug Fixes
|
|||||||
* Fix cassandra.concurrent behavior when dealing with automatic paging
|
* Fix cassandra.concurrent behavior when dealing with automatic paging
|
||||||
(PYTHON-81)
|
(PYTHON-81)
|
||||||
* Properly defunct connections after protocol errors
|
* Properly defunct connections after protocol errors
|
||||||
|
* Avoid UnicodeDecodeError when query string is unicode (PYTHON-76)
|
||||||
|
|
||||||
2.0.2
|
2.0.2
|
||||||
=====
|
=====
|
||||||
|
@@ -1253,8 +1253,10 @@ class Session(object):
|
|||||||
|
|
||||||
if isinstance(query, SimpleStatement):
|
if isinstance(query, SimpleStatement):
|
||||||
query_string = query.query_string
|
query_string = query.query_string
|
||||||
|
if six.PY2 and isinstance(query_string, six.text_type):
|
||||||
|
query_string = query_string.encode('utf-8')
|
||||||
if parameters:
|
if parameters:
|
||||||
query_string = bind_params(query.query_string, parameters, self.encoders)
|
query_string = bind_params(query_string, parameters, self.encoders)
|
||||||
message = QueryMessage(
|
message = QueryMessage(
|
||||||
query_string, cl, query.serial_consistency_level,
|
query_string, cl, query.serial_consistency_level,
|
||||||
fetch_size, timestamp=timestamp)
|
fetch_size, timestamp=timestamp)
|
||||||
|
@@ -436,3 +436,10 @@ class TypeTests(unittest.TestCase):
|
|||||||
prepared = s.prepare("SELECT b FROM mytable WHERE a=?")
|
prepared = s.prepare("SELECT b FROM mytable WHERE a=?")
|
||||||
self.assertEqual(complete, s.execute(prepared, (2,))[0].b)
|
self.assertEqual(complete, s.execute(prepared, (2,))[0].b)
|
||||||
self.assertEqual(partial_result, s.execute(prepared, (3,))[0].b)
|
self.assertEqual(partial_result, s.execute(prepared, (3,))[0].b)
|
||||||
|
|
||||||
|
def test_unicode_query_string(self):
|
||||||
|
c = Cluster(protocol_version=PROTOCOL_VERSION)
|
||||||
|
s = c.connect()
|
||||||
|
|
||||||
|
query = u"SELECT * FROM system.schema_columnfamilies WHERE keyspace_name = 'ef\u2052ef' AND columnfamily_name = %s"
|
||||||
|
s.execute(query, (u"fe\u2051fe",))
|
||||||
|
Reference in New Issue
Block a user