summaryrefslogtreecommitdiff
path: root/test/orm/inheritance
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2022-12-16 16:56:56 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2022-12-16 16:56:56 +0000
commitbd5a4611c34d25cf21607544c01ce7fcb886e0a9 (patch)
tree76ef80b434565b6a9ba3e5ddc113f6581a2d3ede /test/orm/inheritance
parent5bb48511a126b66ed06abf76d706ab707afafbf1 (diff)
parent8e4e325319eaadb81cc1b6e8c8db7cc1a6b920bd (diff)
downloadsqlalchemy-bd5a4611c34d25cf21607544c01ce7fcb886e0a9.tar.gz
Merge "add eager_defaults="auto" for inserts" into main
Diffstat (limited to 'test/orm/inheritance')
-rw-r--r--test/orm/inheritance/test_basic.py64
1 files changed, 49 insertions, 15 deletions
diff --git a/test/orm/inheritance/test_basic.py b/test/orm/inheritance/test_basic.py
index 0ba900798..5803d51bc 100644
--- a/test/orm/inheritance/test_basic.py
+++ b/test/orm/inheritance/test_basic.py
@@ -3074,9 +3074,15 @@ class OptimizedLoadTest(fixtures.MappedTest):
eq_(s1test.comp, Comp("ham", "cheese"))
eq_(s2test.comp, Comp("bacon", "eggs"))
- def test_load_expired_on_pending(self):
+ @testing.variation("eager_defaults", [True, False])
+ def test_load_expired_on_pending(self, eager_defaults):
base, sub = self.tables.base, self.tables.sub
+ expected_eager_defaults = bool(eager_defaults)
+ expect_returning = (
+ expected_eager_defaults and testing.db.dialect.insert_returning
+ )
+
class Base(fixtures.BasicEntity):
pass
@@ -3084,7 +3090,11 @@ class OptimizedLoadTest(fixtures.MappedTest):
pass
self.mapper_registry.map_imperatively(
- Base, base, polymorphic_on=base.c.type, polymorphic_identity="base"
+ Base,
+ base,
+ polymorphic_on=base.c.type,
+ polymorphic_identity="base",
+ eager_defaults=bool(eager_defaults),
)
self.mapper_registry.map_imperatively(
Sub, sub, inherits=Base, polymorphic_identity="sub"
@@ -3095,13 +3105,30 @@ class OptimizedLoadTest(fixtures.MappedTest):
self.assert_sql_execution(
testing.db,
sess.flush,
- CompiledSQL(
- "INSERT INTO base (data, type) VALUES (:data, :type)",
- [{"data": "s1", "type": "sub"}],
- ),
- CompiledSQL(
- "INSERT INTO sub (id, sub) VALUES (:id, :sub)",
- lambda ctx: {"id": s1.id, "sub": None},
+ Conditional(
+ expect_returning,
+ [
+ CompiledSQL(
+ "INSERT INTO base (data, type) VALUES (:data, :type) "
+ "RETURNING base.id, base.counter",
+ [{"data": "s1", "type": "sub"}],
+ ),
+ CompiledSQL(
+ "INSERT INTO sub (id, sub) VALUES (:id, :sub) "
+ "RETURNING sub.subcounter, sub.subcounter2",
+ lambda ctx: {"id": s1.id, "sub": None},
+ ),
+ ],
+ [
+ CompiledSQL(
+ "INSERT INTO base (data, type) VALUES (:data, :type)",
+ [{"data": "s1", "type": "sub"}],
+ ),
+ CompiledSQL(
+ "INSERT INTO sub (id, sub) VALUES (:id, :sub)",
+ lambda ctx: {"id": s1.id, "sub": None},
+ ),
+ ],
),
)
@@ -3111,12 +3138,19 @@ class OptimizedLoadTest(fixtures.MappedTest):
self.assert_sql_execution(
testing.db,
go,
- CompiledSQL(
- "SELECT base.counter AS base_counter, "
- "sub.subcounter AS sub_subcounter, "
- "sub.subcounter2 AS sub_subcounter2 FROM base JOIN sub "
- "ON base.id = sub.id WHERE base.id = :pk_1",
- lambda ctx: {"pk_1": s1.id},
+ Conditional(
+ expect_returning,
+ [],
+ [
+ CompiledSQL(
+ "SELECT base.counter AS base_counter, "
+ "sub.subcounter AS sub_subcounter, "
+ "sub.subcounter2 AS sub_subcounter2 "
+ "FROM base JOIN sub "
+ "ON base.id = sub.id WHERE base.id = :pk_1",
+ lambda ctx: {"pk_1": s1.id},
+ ),
+ ],
),
)