]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- add a JSON warning for coerce_compared_value
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 28 Oct 2015 15:22:55 +0000 (11:22 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 28 Oct 2015 15:22:55 +0000 (11:22 -0400)
lib/sqlalchemy/sql/type_api.py

index 3b5391234751aba66c564986fdc06a25c150b5df..bc67270eb2e6d9da1070ec59b5f3715b6d8f9be6 100644 (file)
@@ -729,6 +729,26 @@ class TypeDecorator(SchemaEventTarget, 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"