]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- adjustment for ref #3200 as we need an immutabledict() here so
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 7 Oct 2014 16:43:27 +0000 (12:43 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 7 Oct 2014 16:43:27 +0000 (12:43 -0400)
that union() can be called, in the case of a dialect that uses
execution options inside of initialize() (e.g. oursql)

lib/sqlalchemy/engine/strategies.py
test/engine/test_execute.py

index 49438372b54c3cadfba8ff40c6f857efa5a51640..398ef8df60a3eacc4f91017cd83eadface986679 100644 (file)
@@ -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)
 
index a80d157ed25707d48bbcb574c5abdc564ad78903..e0bba0afa253f24299ceaf779c671e9b4df732bc 100644 (file)
@@ -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):