From: Mike Bayer Date: Tue, 7 Oct 2014 16:43:27 +0000 (-0400) Subject: - adjustment for ref #3200 as we need an immutabledict() here so X-Git-Tag: rel_1_0_0b1~70^2~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2885f78e4e20c2ae8552594ac7f0231b1bee4aad;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - adjustment for ref #3200 as we need an immutabledict() here so that union() can be called, in the case of a dialect that uses execution options inside of initialize() (e.g. oursql) --- diff --git a/lib/sqlalchemy/engine/strategies.py b/lib/sqlalchemy/engine/strategies.py index 49438372b5..398ef8df60 100644 --- a/lib/sqlalchemy/engine/strategies.py +++ b/lib/sqlalchemy/engine/strategies.py @@ -162,7 +162,7 @@ class DefaultEngineStrategy(EngineStrategy): def first_connect(dbapi_connection, connection_record): c = base.Connection(engine, connection=dbapi_connection, _has_events=False) - c._execution_options = {} + c._execution_options = util.immutabledict() dialect.initialize(c) event.listen(pool, 'first_connect', first_connect, once=True) diff --git a/test/engine/test_execute.py b/test/engine/test_execute.py index a80d157ed2..e0bba0afa2 100644 --- a/test/engine/test_execute.py +++ b/test/engine/test_execute.py @@ -486,6 +486,18 @@ class ExecuteTest(fixtures.TestBase): eq_(conn._execution_options, {"autocommit": True}) conn.close() + @testing.requires.ad_hoc_engines + def test_dialect_init_uses_options(self): + eng = create_engine(testing.db.url) + + def my_init(connection): + connection.execution_options(foo='bar').execute(select([1])) + + with patch.object(eng.dialect, "initialize", my_init): + conn = eng.connect() + eq_(conn._execution_options, {}) + conn.close() + @testing.requires.ad_hoc_engines def test_generative_engine_event_dispatch_hasevents(self): def l1(*arg, **kw):