'lte': '<=',
'and': '&',
'or': '|',
+ 'binary_and': '&',
+ 'binary_or': '|',
}
def table_names(self):
start = int(params['p0']) + 1
else:
left, right = where[operator]
- if left in params:
+
+ if isinstance(left, dict):
+ left = "(" + _translate_where(left) + ")"
+ elif left in params:
_cast_param(right, left)
+
+ if isinstance(right, dict):
+ right = "(" + _translate_where(right) + ")"
elif right in params:
_cast_param(left, right)
- expr = "{left} {operator} {right}".format(left=left, operator=self.operators.get(operator, operator), right=right)
+ expr = "{left} {operator} {right}".format(
+ left=left,
+ operator=self.operators.get(operator, operator),
+ right=right,
+ )
return expr
response = app_client.get(
'/test_tables.json?' + urlencode({
'sql': 'select identity from [/group1/table1] where speed > 100 and idnumber < 55',
- '_shape': 'objects'
+ '_shape': 'objects',
}),
)
data = response.json
assert {
'sql': 'select identity from [/group1/table1] where speed > 100 and idnumber < 55',
- 'params': {}
+ 'params': {},
} == data['query']
assert 4 == len(data['rows'])
assert [
{'identity': 'This is particle: 51'},
{'identity': 'This is particle: 52'},
{'identity': 'This is particle: 53'},
- {'identity': 'This is particle: 54'}
+ {'identity': 'This is particle: 54'},
] == data['rows']
assert ['identity'] == data['columns']
assert 'test_tables' == data['database']
response = app_client.get(
'/test_tables.json?' + urlencode({
'sql': 'select identity from [/group1/table1] where (speed > 100) & (speed < 500)',
- '_shape': 'objects'
- }),
+ '_shape': 'objects',
+ }),
)
data = response.json
assert {
'sql': 'select identity from [/group1/table1] where (speed > 100) & (speed < 500)',
- 'params': {}
+ 'params': {},
} == data['query']
assert 199 == len(data['rows'])
assert [
{'identity': 'This is particle: 51'},
{'identity': 'This is particle: 52'},
- {'identity': 'This is particle: 53'}
+ {'identity': 'This is particle: 53'},
] == data['rows'][:3]
assert ['identity'] == data['columns']
assert 'test_tables' == data['database']