From bbebcdf8f526226d2d64a91dfc306086fc9873f4 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sun, 28 Oct 2007 21:28:53 +0000 Subject: - fixed INSERT statements w.r.t. primary key columns that have SQL-expression based default generators on them; SQL expression executes inline as normal but will not trigger a "postfetch" condition for the column, for those DB's who provide it via cursor.lastrowid --- test/sql/defaults.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'test/sql/defaults.py') diff --git a/test/sql/defaults.py b/test/sql/defaults.py index c29ffa3b3..da23a67a2 100644 --- a/test/sql/defaults.py +++ b/test/sql/defaults.py @@ -243,6 +243,34 @@ class DefaultTest(PersistTest): finally: testbase.db.execute("drop table speedy_users", None) +class PKDefaultTest(PersistTest): + def setUpAll(self): + global metadata, t1, t2 + + metadata = MetaData(testbase.db) + + t2 = Table('t2', metadata, + Column('nextid', Integer)) + + t1 = Table('t1', metadata, + Column('id', Integer, primary_key=True, default=select([func.max(t2.c.nextid)]).as_scalar()), + Column('data', String(30))) + + metadata.create_all() + + def tearDownAll(self): + metadata.drop_all() + + def test_basic(self): + t2.insert().execute(nextid=1) + r = t1.insert().execute(data='hi') + assert r.last_inserted_ids() == [1] + + t2.insert().execute(nextid=2) + r = t1.insert().execute(data='there') + assert r.last_inserted_ids() == [2] + + class AutoIncrementTest(PersistTest): def setUp(self): global aitable, aimeta -- cgit v1.2.1