mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-20 15:42:11 -04:00
77f987022c
Extended the ``cache_ok`` flag and corresponding warning message if this
flag is not defined, a behavior first established for
:class:`.TypeDecorator` as part of 🎫`6436`, to also take place for
:class:`.UserDefinedType`, by generalizing the flag and associated caching
logic to a new common base for these two types, :class:`.ExternalType`.
The change means any current :class:`.UserDefinedType` will now cause SQL
statement caching to no longer take place for statements which make use of
the datatype, along with a warning being emitted, unless the class defines
the :attr:`.UserDefinedType.cache_ok` flag as True. If the datatype cannot
form a deterministic, hashable cache key derived from its arguments, it may return
False which will continue to keep caching disabled but will suppress the
warning. In particular, custom datatypes currently used in packages such as
SQLAlchemy-utils will need to implement this flag. The issue was observed
as a result of a SQLAlchemy-utils datatype that is not currently cacheable.
Fixes: #7319
Change-Id: Ie0b5d4587df87bfe66d2fe7cd4585c3882584575
(cherry picked from commit 4761e6878b)
120 lines
2.9 KiB
Python
120 lines
2.9 KiB
Python
# types.py
|
|
# Copyright (C) 2005-2021 the SQLAlchemy authors and contributors
|
|
# <see AUTHORS file>
|
|
#
|
|
# This module is part of SQLAlchemy and is released under
|
|
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
|
|
|
"""Compatibility namespace for sqlalchemy.sql.types.
|
|
|
|
"""
|
|
|
|
__all__ = [
|
|
"TypeEngine",
|
|
"TypeDecorator",
|
|
"UserDefinedType",
|
|
"ExternalType",
|
|
"INT",
|
|
"CHAR",
|
|
"VARCHAR",
|
|
"NCHAR",
|
|
"NVARCHAR",
|
|
"TEXT",
|
|
"Text",
|
|
"FLOAT",
|
|
"NUMERIC",
|
|
"REAL",
|
|
"DECIMAL",
|
|
"TIMESTAMP",
|
|
"DATETIME",
|
|
"CLOB",
|
|
"BLOB",
|
|
"BINARY",
|
|
"VARBINARY",
|
|
"BOOLEAN",
|
|
"BIGINT",
|
|
"SMALLINT",
|
|
"INTEGER",
|
|
"DATE",
|
|
"TIME",
|
|
"TupleType",
|
|
"String",
|
|
"Integer",
|
|
"SmallInteger",
|
|
"BigInteger",
|
|
"Numeric",
|
|
"Float",
|
|
"DateTime",
|
|
"Date",
|
|
"Time",
|
|
"LargeBinary",
|
|
"Boolean",
|
|
"Unicode",
|
|
"Concatenable",
|
|
"UnicodeText",
|
|
"PickleType",
|
|
"Interval",
|
|
"Enum",
|
|
"Indexable",
|
|
"ARRAY",
|
|
"JSON",
|
|
]
|
|
|
|
from .sql.sqltypes import _Binary
|
|
from .sql.sqltypes import ARRAY
|
|
from .sql.sqltypes import BIGINT
|
|
from .sql.sqltypes import BigInteger
|
|
from .sql.sqltypes import BINARY
|
|
from .sql.sqltypes import BLOB
|
|
from .sql.sqltypes import BOOLEAN
|
|
from .sql.sqltypes import Boolean
|
|
from .sql.sqltypes import CHAR
|
|
from .sql.sqltypes import CLOB
|
|
from .sql.sqltypes import Concatenable
|
|
from .sql.sqltypes import DATE
|
|
from .sql.sqltypes import Date
|
|
from .sql.sqltypes import DATETIME
|
|
from .sql.sqltypes import DateTime
|
|
from .sql.sqltypes import DECIMAL
|
|
from .sql.sqltypes import Enum
|
|
from .sql.sqltypes import FLOAT
|
|
from .sql.sqltypes import Float
|
|
from .sql.sqltypes import Indexable
|
|
from .sql.sqltypes import INT
|
|
from .sql.sqltypes import INTEGER
|
|
from .sql.sqltypes import Integer
|
|
from .sql.sqltypes import Interval
|
|
from .sql.sqltypes import JSON
|
|
from .sql.sqltypes import LargeBinary
|
|
from .sql.sqltypes import MatchType
|
|
from .sql.sqltypes import NCHAR
|
|
from .sql.sqltypes import NULLTYPE
|
|
from .sql.sqltypes import NullType
|
|
from .sql.sqltypes import NUMERIC
|
|
from .sql.sqltypes import Numeric
|
|
from .sql.sqltypes import NVARCHAR
|
|
from .sql.sqltypes import PickleType
|
|
from .sql.sqltypes import REAL
|
|
from .sql.sqltypes import SchemaType
|
|
from .sql.sqltypes import SMALLINT
|
|
from .sql.sqltypes import SmallInteger
|
|
from .sql.sqltypes import String
|
|
from .sql.sqltypes import STRINGTYPE
|
|
from .sql.sqltypes import TEXT
|
|
from .sql.sqltypes import Text
|
|
from .sql.sqltypes import TIME
|
|
from .sql.sqltypes import Time
|
|
from .sql.sqltypes import TIMESTAMP
|
|
from .sql.sqltypes import TupleType
|
|
from .sql.sqltypes import Unicode
|
|
from .sql.sqltypes import UnicodeText
|
|
from .sql.sqltypes import VARBINARY
|
|
from .sql.sqltypes import VARCHAR
|
|
from .sql.type_api import adapt_type
|
|
from .sql.type_api import ExternalType
|
|
from .sql.type_api import to_instance
|
|
from .sql.type_api import TypeDecorator
|
|
from .sql.type_api import TypeEngine
|
|
from .sql.type_api import UserDefinedType
|
|
from .sql.type_api import Variant
|