oninsert and onupdate values weren't called upon for the embedded
statement.
+ .. change::
+ :tags: bug, sql
+ :tickets: 3744
+
+ Fixed bug in new CTE feature for update/insert/delete whereby
+ an anoymous (e.g. no name passed) :class:`.CTE` construct around
+ the statement would fail.
+
.. change::
:tags: bug, ext
_hints = util.immutabledict()
_parameter_ordering = None
_prefixes = ()
+ named_with_column = False
def _process_colparams(self, parameters):
def process_single(p):
"upsert.quantity FROM upsert))"
)
+ def test_anon_update_cte(self):
+ orders = table(
+ 'orders',
+ column('region')
+ )
+ stmt = orders.update().where(orders.c.region == 'x').\
+ values(region='y').\
+ returning(orders.c.region).cte()
+
+ self.assert_compile(
+ stmt.select(),
+ "WITH anon_1 AS (UPDATE orders SET region=:region "
+ "WHERE orders.region = :region_1 RETURNING orders.region) "
+ "SELECT anon_1.region FROM anon_1"
+ )
+
+ def test_anon_insert_cte(self):
+ orders = table(
+ 'orders',
+ column('region')
+ )
+ stmt = orders.insert().\
+ values(region='y').\
+ returning(orders.c.region).cte()
+
+ self.assert_compile(
+ stmt.select(),
+ "WITH anon_1 AS (INSERT INTO orders (region) "
+ "VALUES (:region) RETURNING orders.region) "
+ "SELECT anon_1.region FROM anon_1"
+ )
+
def test_pg_example_one(self):
products = table('products', column('id'), column('date'))
products_log = table('products_log', column('id'), column('date'))