Skip to content

Commit 3402c7e

Browse files
committed
Revert "[_600] prevent case-sensitive testing with BETWEEN where infeasible"
This reverts commit 2c6e9f8.
1 parent 2c6e9f8 commit 3402c7e

1 file changed

Lines changed: 22 additions & 52 deletions

File tree

irods/test/query_test.py

Lines changed: 22 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -44,49 +44,16 @@ def rows_returned(query):
4444

4545

4646
class TestQuery(unittest.TestCase):
47-
48-
_csq = None
49-
5047
Iterate_to_exhaust_statement_table = range(IRODS_STATEMENT_TABLE_SIZE + 1)
5148

5249
More_than_one_batch = 2 * MAX_SQL_ROWS # may need to increase if PRC default page
5350
# size is increased beyond 500
5451

5552
register_resc = ""
5653

57-
@property
58-
def case_sensitive_testing_feasible(self):
59-
"""
60-
Return result of the probe into whether lexical order of query columns has been found compatible with
61-
case sensitive operators such as >, <, between. (MySQL can fail in the default DB configuration,
62-
whereas PostgreSQL does not).
63-
"""
64-
return self._csq in (True,)
65-
66-
@staticmethod
67-
def _query_columns_case_sensitive_by_default(ses):
68-
home = helpers.home_collection(ses)
69-
data_objs = []
70-
try:
71-
for x in ('a', 'b', 'A', 'B'):
72-
data_objs.append(ses.data_objects.create(f'{home}/{x}'))
73-
lower = { r[DataObject.name] for r in ses.query(DataObject.name).filter(DataObject.name >= 'a', DataObject.name <= 'b') }
74-
if {'A','B'} & lower:
75-
return False
76-
upper = { r[DataObject.name] for r in ses.query(DataObject.name).filter(DataObject.name >= 'A', DataObject.name <= 'B') }
77-
if {'a','b'} & upper:
78-
return False
79-
return True
80-
finally:
81-
for d in data_objs:
82-
d.unlink(force=True)
83-
8454
@classmethod
8555
def setUpClass(cls):
8656
with helpers.make_session() as sess:
87-
if cls._csq is None:
88-
cls._csq = cls._query_columns_case_sensitive_by_default(sess)
89-
9057
resource_name = helpers.get_register_resource(sess)
9158
if resource_name:
9259
cls.register_resc = resource_name
@@ -247,25 +214,28 @@ def test_files_query_case_sensitive(self):
247214
self.assertEqual(len(result12), 0)
248215

249216
# BETWEEN tests
250-
if self.case_sensitive_testing_feasible:
251-
result13 = self.sess.query(DataObject.name).filter(
252-
Collection.name == self.coll_path).filter(
253-
Between(DataObject.name, [self.case_sensitive_obj_name1,
254-
self.case_sensitive_obj_name1 + "_"])).all()
255-
self.assertTrue(result13.has_value(self.case_sensitive_obj_name1))
256-
self.assertEqual(len(result13), 1)
257-
258-
result14 = self.sess.query(DataObject.name).filter(
259-
Collection.name == self.coll_path).filter(
260-
Between(DataObject.name, [str.lower(self.case_sensitive_obj_name1),
261-
str.lower(self.case_sensitive_obj_name1) + "_"])).all()
262-
self.assertEqual(len(result14), 0)
263-
264-
result15 = self.sess.query(DataObject.name).filter(
265-
Collection.name == self.coll_path).filter(
266-
Between(DataObject.name, [str.upper(self.case_sensitive_obj_name1),
267-
str.upper(self.case_sensitive_obj_name1) + "_"])).all()
268-
self.assertEqual(len(result15), 0)
217+
218+
# TODO(#600): Uncomment these lines and/or make a new test when database flavor can be detected.
219+
# The resultset for BETWEEN queries can differ from database to database.
220+
221+
# result13 = self.sess.query(DataObject.name).filter(
222+
# Collection.name == self.coll_path).filter(
223+
# Between(DataObject.name, [self.case_sensitive_obj_name1,
224+
# self.case_sensitive_obj_name1 + "_"])).all()
225+
# self.assertTrue(result13.has_value(self.case_sensitive_obj_name1))
226+
# self.assertEqual(len(result13), 1)
227+
228+
# result14 = self.sess.query(DataObject.name).filter(
229+
# Collection.name == self.coll_path).filter(
230+
# Between(DataObject.name, [str.lower(self.case_sensitive_obj_name1),
231+
# str.lower(self.case_sensitive_obj_name1) + "_"])).all()
232+
# self.assertEqual(len(result14), 0)
233+
234+
# result15 = self.sess.query(DataObject.name).filter(
235+
# Collection.name == self.coll_path).filter(
236+
# Between(DataObject.name, [str.upper(self.case_sensitive_obj_name1),
237+
# str.upper(self.case_sensitive_obj_name1) + "_"])).all()
238+
# self.assertEqual(len(result15), 0)
269239

270240
def test_files_query_case_insensitive(self):
271241
# This tests that GenQueries are case-insensitive when the case_sensitive

0 commit comments

Comments
 (0)