修复:强化装填事务一致性

This commit is contained in:
焦龙言
2026-07-26 17:56:58 +08:00
parent 18abe861f9
commit f6e994d95f
4 changed files with 182 additions and 22 deletions
@@ -502,6 +502,24 @@ class TestMasterDao(unittest.IsolatedAsyncioTestCase):
self.assertIn(f'FROM {table}', sql)
self.assertIn(f'{table}.{id_field} = 9', sql)
async def test_locking_master_gets_use_current_reads_and_refresh_identity_map(self) -> None:
strain_lock_parameter = inspect.signature(MasterDao.get_strain).parameters.get('for_update')
self.assertIsNotNone(strain_lock_parameter)
self.assertIs(inspect.Parameter.KEYWORD_ONLY, strain_lock_parameter.kind)
self.assertFalse(strain_lock_parameter.default)
for resource in ('warehouse', 'strain'):
with self.subTest(resource=resource):
result = MagicMock()
result.scalar_one_or_none.return_value = None
self.db.execute = AsyncMock(return_value=result)
await getattr(MasterDao, f'get_{resource}')(self.db, 9, for_update=True)
statement = self.db.execute.await_args.args[0]
self.assertIn('FOR UPDATE', compile_sql(statement))
self.assertIs(True, statement.get_execution_options().get('populate_existing'))
async def test_unique_queries_use_global_or_parent_scoped_predicates(self) -> None:
cases = (
('strain', ('S001',), 'biz_strain', ('strain_code',)),