diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-10-28 11:22:55 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-10-28 11:24:20 -0400 |
| commit | 3df364cc649ccdbadaeb234f17be626ca117fa12 (patch) | |
| tree | 9cfc2262b176580bdfc2a04bddeb17f527334506 /lib/sqlalchemy/sql | |
| parent | d204f3bb54ef9d34a5b1d548d8d6e91cc0828d10 (diff) | |
| download | sqlalchemy-3df364cc649ccdbadaeb234f17be626ca117fa12.tar.gz | |
- add a JSON warning for coerce_compared_value
(cherry picked from commit 98c1dcc6bcade313a254fe11e8efa3c5b5ad959e)
Diffstat (limited to 'lib/sqlalchemy/sql')
| -rw-r--r-- | lib/sqlalchemy/sql/type_api.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/type_api.py b/lib/sqlalchemy/sql/type_api.py index a55eed981..6bedfacc6 100644 --- a/lib/sqlalchemy/sql/type_api.py +++ b/lib/sqlalchemy/sql/type_api.py @@ -656,6 +656,26 @@ class TypeDecorator(TypeEngine): else: return self + .. warning:: + + Note that the **behavior of coerce_compared_value is not inherited + by default from that of the base type**. + If the :class:`.TypeDecorator` is augmenting a + type that requires special logic for certain types of operators, + this method **must** be overridden. A key example is when decorating + the :class:`.postgresql.JSON` and :class:`.postgresql.JSONB` types; + the default rules of :meth:`.TypeEngine.coerce_compared_value` should + be used in order to deal with operators like index operations:: + + class MyJsonType(TypeDecorator): + impl = postgresql.JSON + + def coerce_compared_value(self, op, value): + return self.impl.coerce_compared_value(op, value) + + Without the above step, index operations such as ``mycol['foo']`` + will cause the index value ``'foo'`` to be JSON encoded. + """ __visit_name__ = "type_decorator" |
