]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed bug whereby if FetchedValue was passed
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 23 Apr 2011 16:38:30 +0000 (12:38 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 23 Apr 2011 16:38:30 +0000 (12:38 -0400)
to column server_onupdate, it would not
have its parent "column" assigned, added
test coverage for all column default assignment
patterns.  [ticket:2147]

CHANGES
lib/sqlalchemy/schema.py
test/engine/test_metadata.py

diff --git a/CHANGES b/CHANGES
index 6c25ec7a4096eeb7cd866a950ee95ca06bccee92..4fa2fe702f0f3ef0543a06f825132705513cf15c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,13 @@ CHANGES
     invalid, this condition now raises a deprecation warning.
     [ticket:2144]
 
+- sql
+  - Fixed bug whereby if FetchedValue was passed
+    to column server_onupdate, it would not
+    have its parent "column" assigned, added
+    test coverage for all column default assignment
+    patterns.  [ticket:2147]
+
 0.6.7
 =====
 - orm
index 78b7495dffa5724525a4993769d19c461e44f461..6c73aabfa3ea76c7b7354ce467a17b437dd0033e 100644 (file)
@@ -794,7 +794,7 @@ class Column(SchemaItem, expression.ColumnClause):
 
         if self.server_onupdate is not None:
             if isinstance(self.server_onupdate, FetchedValue):
-                args.append(self.server_default)
+                args.append(self.server_onupdate)
             else:
                 args.append(DefaultClause(self.server_onupdate,
                                             for_update=True))
index 4b8b661998d0638df55f62be09c63554f85dcc4f..f4678cb185455f13e3be48a4ea9a208322e07bc8 100644 (file)
@@ -401,6 +401,85 @@ class MetaDataTest(TestBase, ComparesTables):
                           'fake_table',
                           MetaData(testing.db), autoload=True)
 
+class ColumnDefaultsTest(TestBase):
+    """test assignment of default fixtures to columns"""
+
+    def _fixture(self, *arg, **kw):
+        return Column('x', Integer, *arg, **kw)
+
+    def test_server_default_positional(self):
+        target = schema.DefaultClause('y')
+        c = self._fixture(target)
+        assert c.server_default is target
+        assert target.column is c
+
+    def test_server_default_keyword_as_schemaitem(self):
+        target = schema.DefaultClause('y')
+        c = self._fixture(server_default=target)
+        assert c.server_default is target
+        assert target.column is c
+
+    def test_server_default_keyword_as_clause(self):
+        target = 'y'
+        c = self._fixture(server_default=target)
+        assert c.server_default.arg == target
+        assert c.server_default.column is c
+
+    def test_server_default_onupdate_positional(self):
+        target = schema.DefaultClause('y', for_update=True)
+        c = self._fixture(target)
+        assert c.server_onupdate is target
+        assert target.column is c
+
+    def test_server_default_onupdate_keyword_as_schemaitem(self):
+        target = schema.DefaultClause('y', for_update=True)
+        c = self._fixture(server_onupdate=target)
+        assert c.server_onupdate is target
+        assert target.column is c
+
+    def test_server_default_onupdate_keyword_as_clause(self):
+        target = 'y'
+        c = self._fixture(server_onupdate=target)
+        assert c.server_onupdate.arg == target
+        assert c.server_onupdate.column is c
+
+    def test_column_default_positional(self):
+        target = schema.ColumnDefault('y')
+        c = self._fixture(target)
+        assert c.default is target
+        assert target.column is c
+
+    def test_column_default_keyword_as_schemaitem(self):
+        target = schema.ColumnDefault('y')
+        c = self._fixture(default=target)
+        assert c.default is target
+        assert target.column is c
+
+    def test_column_default_keyword_as_clause(self):
+        target = 'y'
+        c = self._fixture(default=target)
+        assert c.default.arg == target
+        assert c.default.column is c
+
+    def test_column_default_onupdate_positional(self):
+        target = schema.ColumnDefault('y', for_update=True)
+        c = self._fixture(target)
+        assert c.onupdate is target
+        assert target.column is c
+
+    def test_column_default_onupdate_keyword_as_schemaitem(self):
+        target = schema.ColumnDefault('y', for_update=True)
+        c = self._fixture(onupdate=target)
+        assert c.onupdate is target
+        assert target.column is c
+
+    def test_column_default_onupdate_keyword_as_clause(self):
+        target = 'y'
+        c = self._fixture(onupdate=target)
+        assert c.onupdate.arg == target
+        assert c.onupdate.column is c
+
+
 
 class TableOptionsTest(TestBase, AssertsCompiledSQL):
     def test_prefixes(self):