diff options
author | Damian Dimmich <damian@tauri-tec.com> | 2014-06-28 23:11:03 +0400 |
---|---|---|
committer | Damian Dimmich <damian@tauri-tec.com> | 2014-06-28 23:11:03 +0400 |
commit | 4eca136e0914252a291046d8c2ed281fe6c56d94 (patch) | |
tree | 910f821dd5ed19f2b6e0542e99fb6fac4b861a53 | |
parent | 4e5fcee975040d6d82baceb8e0535a548411faa6 (diff) | |
download | sqlalchemy-4eca136e0914252a291046d8c2ed281fe6c56d94.tar.gz |
minor cleanup of the jsonb - had extraneous operators that where copied
from hstore that don't apply.
Add tests for ? and @> operators.
-rw-r--r-- | lib/sqlalchemy/dialects/postgresql/json.py | 6 | ||||
-rw-r--r-- | test/dialect/postgresql/test_types.py | 16 |
2 files changed, 16 insertions, 6 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/json.py b/lib/sqlalchemy/dialects/postgresql/json.py index 262ec20bd..183cb2695 100644 --- a/lib/sqlalchemy/dialects/postgresql/json.py +++ b/lib/sqlalchemy/dialects/postgresql/json.py @@ -280,7 +280,7 @@ class JSONB(JSON): def _adapt_expression(self, op, other_comparator): if isinstance(op, custom_op): - if op.opstring in ['?', '?&', '?|', '@>', '<@']: + if op.opstring in ['?', '@>']: return op, sqltypes.Boolean if op.opstring == '->': return op, sqltypes.Text @@ -299,8 +299,4 @@ class JSONB(JSON): """ return self.expr.op('@>')(other) - - - - ischema_names['jsonb'] = JSONB
\ No newline at end of file diff --git a/test/dialect/postgresql/test_types.py b/test/dialect/postgresql/test_types.py index b11c2a46c..6e6e22623 100644 --- a/test/dialect/postgresql/test_types.py +++ b/test/dialect/postgresql/test_types.py @@ -1982,7 +1982,6 @@ class JSONRoundTripTest(fixtures.TablesTest): }, ) - def test_unicode_round_trip_python(self): engine = self._non_native_engine() self._test_unicode_round_trip(engine) @@ -2001,6 +2000,21 @@ class JSONBTest(JSONTest): ) self.jsoncol = self.test_table.c.test_column + #Note - add fixture data for arrays [] + + def test_where_has_key(self): + self._test_where( + # hide from 2to3 + getattr(self.jsoncol, 'has_key')('data'), + "test_table.test_column ? %(test_column_1)s" + ) + + def test_where_contains(self): + self._test_where( + self.jsoncol.contains('{"k1": "r1v1"}'), + "test_table.test_column @> %(test_column_1)s" + ) + class JSONBRoundTripTest(JSONRoundTripTest): __only_on__ = ('postgresql >= 9.4',) |