Skip to content

Commit 19ef27b

Browse files
committed
BUG23567724: Fix operator names
The operator names were transformed to upper case before being sent to the server. But the X Plugin expects the operator names to be in lower case. With this patch, the Expression Parser converts all operator names to lower case. Tests added for regression.
1 parent 92563be commit 19ef27b

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

lib/mysqlx/expr.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ def lex_alpha(self, i):
256256
i = i + 1
257257
val = self.string[start:i]
258258
try:
259-
token = Token(reservedWords[val.lower()], val.upper(), len(val))
259+
token = Token(reservedWords[val.lower()], val.lower(), len(val))
260260
except KeyError:
261261
token = Token(TokenType.IDENT, val, len(val))
262262
return token

tests/test_mysqlx_crud.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,11 @@ def test_find(self):
490490
self.assertEqual(42, docs[1]["age"])
491491
self.assertEqual(1, len(docs[1].keys()))
492492

493+
# test like operator
494+
result = collection.find("$.name like 'B%'").execute()
495+
docs = result.fetch_all()
496+
self.assertEqual(2, len(docs))
497+
493498
self.schema.drop_collection(collection_name)
494499

495500
def test_modify(self):
@@ -723,6 +728,11 @@ def test_select(self):
723728
rows = result.fetch_all()
724729
self.assertEqual(4, len(rows))
725730

731+
# test like operator
732+
result = table.select().where("name like 'B%'").execute()
733+
rows = result.fetch_all()
734+
self.assertEqual(2, len(rows))
735+
726736
self.schema.drop_table("test")
727737

728738
def test_having(self):

0 commit comments

Comments
 (0)