You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ca...@codespot.com on 2012/03/24 21:11:48 UTC
[cassandra-dbapi2] 2 new revisions pushed by pcannon@gmail.com on
2012-03-24 20:10 GMT
2 new revisions:
Revision: 3b4e2f99c5fd
Author: paul cannon <pa...@datastax.com>
Date: Sat Mar 24 12:56:27 2012
Log: fix recognition of named params within 1 char...
http://code.google.com/a/apache-extras.org/p/cassandra-dbapi2/source/detail?r=3b4e2f99c5fd
Revision: 5ac6b7467053
Author: paul cannon <pa...@datastax.com>
Date: Sat Mar 24 13:09:16 2012
Log: skip cql3 tests when not supported...
http://code.google.com/a/apache-extras.org/p/cassandra-dbapi2/source/detail?r=5ac6b7467053
==============================================================================
Revision: 3b4e2f99c5fd
Author: paul cannon <pa...@datastax.com>
Date: Sat Mar 24 12:56:27 2012
Log: fix recognition of named params within 1 char
the regex matched the preceding and succeeding character, so two params
separated by only one character (like ':a,:b') were considered
overlapping, so the second was unmatched.
can't come up with something better and of similar simplicity without
doing a lookahead assertion, so I guess that's what we'll do.
also, fix tests to know that comments are no longer elided from queries
during prepare.
http://code.google.com/a/apache-extras.org/p/cassandra-dbapi2/source/detail?r=3b4e2f99c5fd
Modified:
/cql/marshal.py
/test/test_query_inline_prep.py
=======================================
--- /cql/marshal.py Fri Mar 23 17:10:42 2012
+++ /cql/marshal.py Sat Mar 24 12:56:27 2012
@@ -69,11 +69,11 @@
stringlit_re = re.compile(r"""('[^']*'|"[^"]*")""")
comments_re = re.compile(r'(/\*(?:[^*]|\*[^/])*\*/|//.*$|--.*$)',
re.MULTILINE)
param_re = re.compile(r'''
- ( [^a-z0-9_] ) # don't match : at the beginning of the text
(meaning it
+ ( \W ) # don't match : at the beginning of the text
(meaning it
# immediately follows a comment or string literal) or
# right after an identifier character
- : ( [a-z0-9_]+ )
- ( [^a-z0-9_] ) # and don't match a param that is immediately
followed by
+ : ( \w+ )
+ (?= \W ) # and don't match a param that is immediately
followed by
# a comment or string literal either
''', re.IGNORECASE | re.VERBOSE)
@@ -115,7 +115,7 @@
"""
def param_replacer(match):
- return match.group(1) + cql_quote(params[match.group(2)]) +
match.group(3)
+ return match.group(1) + cql_quote(params[match.group(2)])
return replace_param_substitutions(query, param_replacer)
def prepare_query(querytext):
@@ -123,9 +123,8 @@
def found_param(match):
pre_param_text = match.group(1)
paramname = match.group(2)
- post_param_text = match.group(3)
paramnames.append(paramname)
- return pre_param_text + '?' + post_param_text
+ return pre_param_text + '?'
transformed_query = replace_param_substitutions(querytext, found_param)
return transformed_query, paramnames
=======================================
--- /test/test_query_inline_prep.py Fri Feb 10 08:31:22 2012
+++ /test/test_query_inline_prep.py Sat Mar 24 12:56:27 2012
@@ -76,7 +76,7 @@
':suffix;
""",
"""
-SELECT ' '..':hi' FROM ColumnFamily WHERE KEY=':dontsubstthis' AND col
> 0.2;
+SELECT ' '..':hi' FROM ColumnFamily WHERE KEY=':dontsubstthis' AND col >
/* ignore :this */ 0.2;
""",
"""
USE 'abc';
==============================================================================
Revision: 5ac6b7467053
Author: paul cannon <pa...@datastax.com>
Date: Sat Mar 24 13:09:16 2012
Log: skip cql3 tests when not supported
fixes #16.
http://code.google.com/a/apache-extras.org/p/cassandra-dbapi2/source/detail?r=5ac6b7467053
Modified:
/test/test_prepared_queries.py
=======================================
--- /test/test_prepared_queries.py Fri Feb 10 08:31:22 2012
+++ /test/test_prepared_queries.py Sat Mar 24 13:09:16 2012
@@ -37,11 +37,19 @@
dbconn = None
def setUp(self):
- self.dbconn = cql.connect(TEST_HOST, TEST_PORT,
cql_version=TEST_CQL_VERSION)
+ try:
+ self.dbconn = cql.connect(TEST_HOST, TEST_PORT,
cql_version=TEST_CQL_VERSION)
+ except cql.cursor.TApplicationException:
+ # set_cql_version (and thus, cql3) not supported; skip all of
these
+ self.cursor = None
+ return
+
self.cursor = self.dbconn.cursor()
self.keyspace = self.create_schema()
def tearDown(self):
+ if self.cursor is None:
+ return
try:
self.cursor.execute("drop keyspace %s" % self.keyspace)
except:
@@ -71,6 +79,9 @@
return ksname
def test_prepared_select(self):
+ if self.cursor is None:
+ return
+
q = self.cursor.prepare_query("select thekey, thedecimal, theblob
from abc where thekey=:key")
self.cursor.execute_prepared(q, {'key': '1999-12-31+0000'})
@@ -82,6 +93,9 @@
self.assertEqual(results[2], '\x00\xff\x80\x08')
def test_prepared_insert(self):
+ if self.cursor is None:
+ return
+
q = self.cursor.prepare_query("insert into abc (thekey, theint)
values (:key, :ival)")
self.cursor.execute_prepared(q, {'key': '1991-10-05+0000', 'ival':
2})
@@ -95,6 +109,9 @@
self.assertEqual(results[1], -200000)
def test_prepared_update(self):
+ if self.cursor is None:
+ return
+
q = self.cursor.prepare_query("update abc set theblob=:myblob
where thekey = :mykey")
self.cursor.execute_prepared(q,
{'mykey': '2305-07-13+0000', 'myblob': '\0foo\0'})
@@ -108,6 +125,9 @@
self.assertEqual(results[1], '')
def test_prepared_increment(self):
+ if self.cursor is None:
+ return
+
q = self.cursor.prepare_query("update counterito set feet=feet
+ :inc where id = :id and name = 'krang'")
self.cursor.execute_prepared(q, {'inc': 12, 'id': 1})
@@ -121,6 +141,9 @@
self.assertEqual(results[1], 8)
def test_prepared_decrement(self):
+ if self.cursor is None:
+ return
+
q = self.cursor.prepare_query("update counterito set feet=feet
- :inc where id = :id and name = 'krang'")
self.cursor.execute_prepared(q, {'inc': -100, 'id': 2})