summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2016-02-11 11:57:56 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2016-02-11 11:57:56 -0500
commitb653ee1822483de060e32b98424c15eb0f915634 (patch)
tree12d6f94b9d640c2c5b6716e0b78fa1cf0374d2e7
parentf2e90fa205b2528b67a935dc976006aafc6f3c09 (diff)
downloadsqlalchemy-b653ee1822483de060e32b98424c15eb0f915634.tar.gz
- more tests
-rw-r--r--test/sql/test_cte.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/sql/test_cte.py b/test/sql/test_cte.py
index 4a91a2324..aa674403e 100644
--- a/test/sql/test_cte.py
+++ b/test/sql/test_cte.py
@@ -607,3 +607,36 @@ class CTETest(fixtures.TestBase, AssertsCompiledSQL):
"(SELECT included_parts.part FROM included_parts) "
"RETURNING parts.part"
)
+
+ def test_insert_in_the_cte(self):
+ products = table('products', column('id'), column('price'))
+
+ cte = products.insert().values(id=1, price=27.0).\
+ returning(*products.c).cte('pd')
+
+ stmt = select([cte])
+
+ self.assert_compile(
+ stmt,
+ "WITH pd AS "
+ "(INSERT INTO products (id, price) VALUES (:id, :price) "
+ "RETURNING products.id, products.price) "
+ "SELECT pd.id, pd.price "
+ "FROM pd"
+ )
+
+ def test_update_pulls_from_cte(self):
+ products = table('products', column('id'), column('price'))
+
+ cte = products.select().cte('pd')
+
+ stmt = products.update().where(products.c.price == cte.c.price)
+
+ self.assert_compile(
+ stmt,
+ "WITH pd AS "
+ "(SELECT products.id AS id, products.price AS price "
+ "FROM products) "
+ "UPDATE products SET id=:id, price=:price FROM pd "
+ "WHERE products.price = pd.price"
+ )