def reflects_json_type(self):
     return only_on([
         lambda config: against(config, "mysql >= 5.7") and not config.db.
         dialect._is_mariadb,
         "postgresql >= 9.3",
         "sqlite >= 3.9",
     ])
    def tuple_in(self):
        def _sqlite_tuple_in(config):
            return against(
                config, "sqlite"
            ) and config.db.dialect.dbapi.sqlite_version_info >= (3, 15, 0)

        return only_on(["mysql", "postgresql", _sqlite_tuple_in])
    def update_from(self):
        """Target must support UPDATE..FROM syntax"""

        return only_on(
            ["postgresql", "mssql", "mysql"],
            "Backend does not support UPDATE..FROM",
        )
 def isolation_level(self):
     return only_on(
         ("postgresql", "sqlite", "mysql", "mssql", "oracle"),
         "DBAPI has no isolation level support",
     ) + fails_on(
         "postgresql+pypostgresql",
         "pypostgresql bombs on multiple isolation level calls",
     )
    def implicit_default_schema(self):
        """target system has a strong concept of 'default' schema that can
        be referred to implicitly.

        basically, PostgreSQL.

        """
        return only_on(["postgresql"])
 def json_type(self):
     return only_on([
         lambda config: against(config, "mysql") and (
             (not config.db.dialect._is_mariadb and against(
                 config, "mysql >= 5.7")) or
             (config.db.dialect._mariadb_normalized_version_info >=
              (10, 2, 7))),
         "postgresql >= 9.3",
         self._sqlite_json,
     ])
    def ctes_with_update_delete(self):
        """target database supports CTES that ride on top of a normal UPDATE
        or DELETE statement which refers to the CTE in a correlated subquery.

        """
        return only_on([
            "postgresql",
            "mssql",
            # "oracle" - oracle can do this but SQLAlchemy doesn't support
            # their syntax yet
        ])
 def ctes(self):
     """Target database supports CTEs"""
     return only_on([
         lambda config: against(config, "mysql") and (
             (config.db.dialect._is_mariadb and config.db.dialect.
              _mariadb_normalized_version_info >=
              (10, 2)) or (not config.db.dialect._is_mariadb and config.db.
                           dialect.server_version_info >= (8, ))),
         "postgresql",
         "mssql",
         "oracle",
         "sqlite>=3.8.3",
     ])
 def delete_from(self):
     """Target must support DELETE FROM..FROM or DELETE..USING syntax"""
     return only_on(
         ["postgresql", "mssql", "mysql", "sybase"],
         "Backend does not support DELETE..FROM",
     )
Пример #10
0
 def array_type(self):
     return only_on([
         lambda config: against(config, "postgresql") and not against(
             config, "+pg8000") and not against(config, "+zxjdbc")
     ])
Пример #11
0
 def temporary_views(self):
     """target database supports temporary views"""
     return only_on(["sqlite", "postgresql"]) + skip_if(
         self._sqlite_file_db)
Пример #12
0
 def indexes_with_expressions(self):
     return only_on(["postgresql", "sqlite>=3.9.0"])
Пример #13
0
    def temp_table_names(self):
        """target dialect supports listing of temporary table names"""

        return only_on(["sqlite", "oracle"]) + skip_if(self._sqlite_file_db)
Пример #14
0
 def cross_schema_fk_reflection(self):
     """target system must support reflection of inter-schema foreign
     keys"""
     return only_on(["postgresql", "mysql", "mssql"])
Пример #15
0
 def postgresql_jsonb(self):
     return only_on("postgresql >= 9.4") + skip_if(
         lambda config: config.db.dialect.driver == "pg8000" and config.db.
         dialect._dbapi_version <= (1, 10, 1))
Пример #16
0
 def psycopg2_compatibility(self):
     return only_on(["postgresql+psycopg2", "postgresql+psycopg2cffi"])
Пример #17
0
 def foreign_key_constraint_option_reflection_onupdate(self):
     return only_on(["postgresql", "mysql", "sqlite"])
Пример #18
0
    def sequences_as_server_defaults(self):
        """Target database must support SEQUENCE as a server side default."""

        return only_on("postgresql",
                       "doesn't support sequences as a server side default.")
Пример #19
0
 def psycopg2_or_pg8000_compatibility(self):
     return only_on([
         "postgresql+psycopg2",
         "postgresql+psycopg2cffi",
         "postgresql+pg8000",
     ])
Пример #20
0
 def comment_reflection(self):
     return only_on(["postgresql", "mysql", "oracle"])
Пример #21
0
 def python_profiling_backend(self):
     return only_on([self._sqlite_memory_db])
Пример #22
0
 def mssql_freetds(self):
     return only_on(["mssql+pymssql"])
Пример #23
0
    def timestamp_microseconds(self):
        """target dialect supports representation of Python
        datetime.datetime() with microsecond objects but only
        if TIMESTAMP is used."""

        return only_on(["oracle"])
Пример #24
0
    def deferrable_fks(self):
        """target database must support deferrable fks"""

        return only_on(["oracle"])