]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- add a unit test for r6089 / [ticket:1438]
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 17 Jan 2010 21:49:31 +0000 (21:49 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 17 Jan 2010 21:49:31 +0000 (21:49 +0000)
lib/sqlalchemy/dialects/oracle/base.py
test/dialect/test_oracle.py

index a22b01f3db5e2cb222bc348d7084ccfe8fb6ce93..b63953959513849206793abcd459f156475cfcd6 100644 (file)
@@ -440,7 +440,7 @@ class OracleDDLCompiler(compiler.DDLCompiler):
         if constraint.onupdate is not None:
             util.warn(
                 "Oracle does not contain native UPDATE CASCADE "
-                 "functionality - onupdates will not be rendered for foreign keys."
+                 "functionality - onupdates will not be rendered for foreign keys. "
                  "Consider using deferrable=True, initially='deferred' or triggers.")
         
         return text
index c047c84304b0740fb757c69612ec09c2b76fee79..0dea6c719d8ec0d46b0a66aec981e4dfb407f957 100644 (file)
@@ -2,10 +2,10 @@
 
 from sqlalchemy.test.testing import eq_
 from sqlalchemy import *
-from sqlalchemy import types as sqltypes
+from sqlalchemy import types as sqltypes, exc
 from sqlalchemy.sql import table, column
 from sqlalchemy.test import *
-from sqlalchemy.test.testing import eq_
+from sqlalchemy.test.testing import eq_, assert_raises
 from sqlalchemy.test.engines import testing_engine
 from sqlalchemy.dialects.oracle import cx_oracle, base as oracle
 from sqlalchemy.engine import default
@@ -354,7 +354,34 @@ drop synonym test_schema.ptable;
         self.assert_compile(parent.join(child), "test_schema.ptable JOIN test_schema.ctable ON test_schema.ptable.id = test_schema.ctable.parent_id")
         select([parent, child]).select_from(parent.join(child)).execute().fetchall()
 
+class ConstraintTest(TestBase):
+    __only_on__ = 'oracle'
+    
+    def test_oracle_has_no_on_update_cascade(self):
+        m = MetaData(testing.db)
+        
+        foo = Table('foo', m,
+                Column('id', Integer, primary_key=True),
+        )
+        foo.create(checkfirst=True)
+        try:
+            bar = Table('bar', m,
+                    Column('id', Integer, primary_key=True),
+                    Column('foo_id', Integer, ForeignKey('foo.id', onupdate="CASCADE"))
+            )
+            assert_raises(exc.SAWarning, bar.create)
+
+            bat = Table('bat', m,
+                    Column('id', Integer, primary_key=True),
+                    Column('foo_id', Integer),
+                    ForeignKeyConstraint(['foo_id'], ['foo.id'], onupdate="CASCADE")
+            )
+            assert_raises(exc.SAWarning, bat.create)
+            
+        finally:
+            m.drop_all()
+        
+        
 class TypesTest(TestBase, AssertsCompiledSQL):
     __only_on__ = 'oracle'
 
@@ -651,5 +678,8 @@ class SequenceTest(TestBase, AssertsCompiledSQL):
 class ExecuteTest(TestBase):
     __only_on__ = 'oracle'
     def test_basic(self):
-        assert testing.db.execute("/*+ this is a comment */ SELECT 1 FROM DUAL").fetchall() == [(1,)]
+        eq_(
+            testing.db.execute("/*+ this is a comment */ SELECT 1 FROM DUAL").fetchall(),
+            [(1,)]
+        )