Commits

Mike Bayer committed 3c363e1

- use inline=True for the insert..select here so it works on oracle

Comments (0)

Files changed (2)

lib/sqlalchemy/sql/expression.py

          would normally raise an exception if these column lists don't
          correspond.
 
+        .. note::
+
+           Depending on backend, it may be necessary for the :class:`.Insert`
+           statement to be constructed using the ``inline=True`` flag; this
+           flag will prevent the implicit usage of ``RETURNING`` when the
+           ``INSERT`` statement is rendered, which isn't supported on a backend
+           such as Oracle in conjunction with an ``INSERT..SELECT`` combination::
+
+             sel = select([table1.c.a, table1.c.b]).where(table1.c.c > 5)
+             ins = table2.insert(inline=True).from_select(['a', 'b'], sel)
+
         .. versionadded:: 0.8.3
 
         """

lib/sqlalchemy/testing/suite/test_insert.py

 
 
         config.db.execute(
-                table.insert().
+                table.insert(inline=True).
                     from_select(
-                        ("data",), select([table.c.data]).where(
+                        ("id", "data",), select([table.c.id + 5, table.c.data]).where(
                                 table.c.data.in_(["data2", "data3"]))
                     ),
         )