def temporary_views(self): """target database supports temporary views""" return only_on(["sqlite", "postgresql"]) + skip_if( self._sqlite_file_db)
def postgresql_test_dblink(self): return skip_if( lambda config: not config.file_config.has_option( "sqla_testing", "postgres_test_db_link"), "postgres_test_db_link option not specified in config", )
def savepoints_w_release(self): return self.savepoints + skip_if( ["oracle", "mssql"], "database doesn't support release of savepoint", )
def unique_constraint_reflection_no_index_overlap(self): return (self.unique_constraint_reflection + skip_if("mysql") + skip_if("oracle"))
def binary_comparisons(self): """target database/driver can allow BLOB/BINARY fields to be compared against a bound parameter value. """ return skip_if(["oracle", "mssql"], "not supported by database/driver")
def updateable_autoincrement_pks(self): """Target must support UPDATE on autoincrement/integer primary key.""" return skip_if(["mssql", "sybase"], "IDENTITY columns can't be updated")
def selectone(self): """target driver must support the literal statement 'select 1'""" return skip_if(["oracle", "firebird"], "non-standard SELECT scalar syntax")
def fetch_rows_post_commit(self): return skip_if(["firebird"], "not supported")
def ad_hoc_engines(self): return exclusions.skip_if( ["oracle"], "works, but Oracle just gets tired with " "this much connection activity", )
def python_fixed_issue_8743(self): return exclusions.skip_if( lambda: sys.version_info < (2, 7, 8), "Python issue 8743 fixed in Python 2.7.8", )
def skip_mysql_on_windows(self): """Catchall for a large variety of MySQL on Windows failures""" return skip_if(self._has_mysql_on_windows, "Not supported on MySQL + Windows")
def unbounded_varchar(self): """Target database must support VARCHAR with no length""" return skip_if(["firebird", "oracle", "mysql"], "not supported by database")
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))
def temporary_tables(self): """target database supports temporary tables""" return skip_if(["mssql", "firebird", self._sqlite_file_db], "not supported (?)")
def mysql_for_update(self): return skip_if( "mysql+mysqlconnector", "lock-sensitive operations crash on mysqlconnector", )
def insert_from_select(self): return skip_if(["firebird"], "crashes for unknown reason")
def computed_columns(self): return skip_if(["postgresql < 12", "sqlite < 3.31", "mysql < 5.7"])
def non_broken_binary(self): """target DBAPI must work fully with binary values""" # see https://github.com/pymssql/pymssql/issues/504 return skip_if(["mssql+pymssql"])
def computed_columns_stored(self): return self.computed_columns + skip_if(["oracle", "firebird"])
def independent_cursors(self): """Target must support simultaneous, independent database cursors on a single connection.""" return skip_if(["mssql", "mysql"], "no driver support")
def computed_columns_virtual(self): return self.computed_columns + skip_if(["postgresql", "firebird"])
def computed_columns_on_update_returning(self): return self.computed_columns + skip_if("oracle")
def computed_columns_reflect_persisted(self): return self.computed_columns + skip_if("oracle")
def schemas(self): """Target database must support external schemas, and have one named 'test_schema'.""" return skip_if(["firebird"], "no schema support")
def standalone_binds(self): """target database/driver supports bound parameters as column expressions without being in the context of a typed column. """ return skip_if(["firebird", "mssql+mxodbc"], "not supported by driver")
def temp_table_names(self): """target dialect supports listing of temporary table names""" return only_on(["sqlite", "oracle"]) + skip_if(self._sqlite_file_db)
def no_quoting_special_bind_names(self): """Target database will quote bound parameter names, doesn't support EXPANDING""" return skip_if(["oracle"])
def update_nowait(self): """Target database must support SELECT...FOR UPDATE NOWAIT""" return skip_if( ["firebird", "mssql", "mysql", "sqlite", "sybase"], "no FOR UPDATE NOWAIT support", )
def fetch_null_from_numeric(self): return skip_if(("mssql+pyodbc", None, None, "crashes due to bug #351"))