Skip to content

Commit dd45f61

Browse files
Merge pull request #854 from dimitri-yatsenko/cascade-delete
fix #853 -- queries with `is null` and `is not null` work correctly
2 parents 952607c + d0138e4 commit dd45f61

File tree

5 files changed

+13
-5
lines changed

5 files changed

+13
-5
lines changed

LNX-docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ services:
3232
interval: 1s
3333
fakeservices.datajoint.io:
3434
<<: *net
35-
image: raphaelguzman/nginx:v0.0.10
35+
image: raphaelguzman/nginx:v0.0.13
3636
environment:
3737
- ADD_db_TYPE=DATABASE
3838
- ADD_db_ENDPOINT=db:3306

datajoint/condition.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,5 +202,5 @@ def extract_column_names(sql_expression):
202202
s = re.sub(r"(\b[a-z][a-z_0-9]*)\(", "(", s)
203203
remaining_tokens = set(re.findall(r"\b[a-z][a-z_0-9]*\b", s))
204204
# update result removing reserved words
205-
result.update(remaining_tokens - {"in", "between", "like", "and", "or"})
205+
result.update(remaining_tokens - {"is", "in", "between", "like", "and", "or", "null", "not"})
206206
return result

local-docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ services:
3434
interval: 1s
3535
fakeservices.datajoint.io:
3636
<<: *net
37-
image: raphaelguzman/nginx:v0.0.10
37+
image: raphaelguzman/nginx:v0.0.13
3838
environment:
3939
- ADD_db_TYPE=DATABASE
4040
- ADD_db_ENDPOINT=db:3306

tests/schema.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def make(self, key):
146146
populate with random data
147147
"""
148148
from datetime import date, timedelta
149-
users = User().fetch()['username']
149+
users = [None, None] + list(User().fetch()['username'])
150150
random.seed('Amazing Seed')
151151
self.insert(
152152
dict(key,
@@ -155,7 +155,6 @@ def make(self, key):
155155
username=random.choice(users))
156156
for experiment_id in range(self.fake_experiments_per_subject))
157157

158-
159158
@schema
160159
class Trial(dj.Imported):
161160
definition = """ # a trial within an experiment

tests/test_relational_operand.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,15 @@ def test_pandas_fetch_and_restriction():
290290
assert_true(isinstance(df, pandas.DataFrame))
291291
assert_equal(len(E & q), len(E & df))
292292

293+
@staticmethod
294+
def test_restriction_by_null():
295+
assert_true(len(Experiment & 'username is null') > 0)
296+
assert_true(len(Experiment & 'username is not null') > 0)
297+
298+
@staticmethod
299+
def test_restriction_between(): # see issue
300+
assert_true(len(Experiment & 'username between "S" and "Z"') < len(Experiment()))
301+
293302
@staticmethod
294303
def test_restrictions_by_lists():
295304
x = D()

0 commit comments

Comments
 (0)