summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2022-09-26 01:17:44 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2022-09-26 01:17:44 +0000
commit6201b4d88666983b883b96d22a159aa2594de94b (patch)
tree4036c155ca7c274ea4bd12c059fd8fcd277fc026 /lib/sqlalchemy/testing
parentf81fdd9a9008a6517f89f2115765b7db9a32721b (diff)
parenta8029f5a7e3e376ec57f1614ab0294b717d53c05 (diff)
downloadsqlalchemy-6201b4d88666983b883b96d22a159aa2594de94b.tar.gz
Merge "ORM bulk insert via execute" into main
Diffstat (limited to 'lib/sqlalchemy/testing')
-rw-r--r--lib/sqlalchemy/testing/assertsql.py13
-rw-r--r--lib/sqlalchemy/testing/fixtures.py22
-rw-r--r--lib/sqlalchemy/testing/suite/test_rowcount.py7
3 files changed, 29 insertions, 13 deletions
diff --git a/lib/sqlalchemy/testing/assertsql.py b/lib/sqlalchemy/testing/assertsql.py
index 4416fe630..b3a71dbff 100644
--- a/lib/sqlalchemy/testing/assertsql.py
+++ b/lib/sqlalchemy/testing/assertsql.py
@@ -68,7 +68,7 @@ class CursorSQL(SQLMatchRule):
class CompiledSQL(SQLMatchRule):
def __init__(
- self, statement, params=None, dialect="default", enable_returning=False
+ self, statement, params=None, dialect="default", enable_returning=True
):
self.statement = statement
self.params = params
@@ -90,6 +90,17 @@ class CompiledSQL(SQLMatchRule):
dialect.insert_returning = (
dialect.update_returning
) = dialect.delete_returning = True
+ dialect.use_insertmanyvalues = True
+ dialect.supports_multivalues_insert = True
+ dialect.update_returning_multifrom = True
+ dialect.delete_returning_multifrom = True
+ # dialect.favor_returning_over_lastrowid = True
+ # dialect.insert_null_pk_still_autoincrements = True
+
+ # this is calculated but we need it to be True for this
+ # to look like all the current RETURNING dialects
+ assert dialect.insert_executemany_returning
+
return dialect
else:
return url.URL.create(self.dialect).get_dialect()()
diff --git a/lib/sqlalchemy/testing/fixtures.py b/lib/sqlalchemy/testing/fixtures.py
index 20dee5273..ef284babc 100644
--- a/lib/sqlalchemy/testing/fixtures.py
+++ b/lib/sqlalchemy/testing/fixtures.py
@@ -23,7 +23,6 @@ from .util import adict
from .util import drop_all_tables_from_metadata
from .. import event
from .. import util
-from ..orm import declarative_base
from ..orm import DeclarativeBase
from ..orm import MappedAsDataclass
from ..orm import registry
@@ -117,7 +116,7 @@ class TestBase:
metadata=metadata,
type_annotation_map={
str: sa.String().with_variant(
- sa.String(50), "mysql", "mariadb"
+ sa.String(50), "mysql", "mariadb", "oracle"
)
},
)
@@ -132,7 +131,7 @@ class TestBase:
metadata = _md
type_annotation_map = {
str: sa.String().with_variant(
- sa.String(50), "mysql", "mariadb"
+ sa.String(50), "mysql", "mariadb", "oracle"
)
}
@@ -780,18 +779,19 @@ class DeclarativeMappedTest(MappedTest):
def _with_register_classes(cls, fn):
cls_registry = cls.classes
- class DeclarativeBasic:
+ class _DeclBase(DeclarativeBase):
__table_cls__ = schema.Table
+ metadata = cls._tables_metadata
+ type_annotation_map = {
+ str: sa.String().with_variant(
+ sa.String(50), "mysql", "mariadb", "oracle"
+ )
+ }
- def __init_subclass__(cls) -> None:
+ def __init_subclass__(cls, **kw) -> None:
assert cls_registry is not None
cls_registry[cls.__name__] = cls
- super().__init_subclass__()
-
- _DeclBase = declarative_base(
- metadata=cls._tables_metadata,
- cls=DeclarativeBasic,
- )
+ super().__init_subclass__(**kw)
cls.DeclarativeBasic = _DeclBase
diff --git a/lib/sqlalchemy/testing/suite/test_rowcount.py b/lib/sqlalchemy/testing/suite/test_rowcount.py
index b7d4b7452..8e19a24a8 100644
--- a/lib/sqlalchemy/testing/suite/test_rowcount.py
+++ b/lib/sqlalchemy/testing/suite/test_rowcount.py
@@ -89,8 +89,13 @@ class RowCountTest(fixtures.TablesTest):
eq_(r.rowcount, 3)
@testing.requires.update_returning
- @testing.requires.sane_rowcount_w_returning
def test_update_rowcount_return_defaults(self, connection):
+ """note this test should succeed for all RETURNING backends
+ as of 2.0. In
+ Idf28379f8705e403a3c6a937f6a798a042ef2540 we changed rowcount to use
+ len(rows) when we have implicit returning
+
+ """
employees_table = self.tables.employees
department = employees_table.c.department