]> 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:34:17 +0000 (12:34 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 23 Apr 2011 16:34:17 +0000 (12:34 -0400)
to column server_onupdate, it would not
have its parent "column" assigned, added
test coverage for all column default assignment
patterns.  [ticket:2147]  also in 0.6.8

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

diff --git a/CHANGES b/CHANGES
index 6ba87384407af7a947907cc029347ee0e73c4a2d..3c59cf3db0bda5e1f591a760a609841812f18a14 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -30,6 +30,12 @@ CHANGES
   - Added explicit check for when Column .name
     is assigned as blank string [ticket:2140]
 
+  - 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]  also in 0.6.8
+
 - postgresql
   - Fixed the psycopg2_version parsing in the 
     psycopg2 dialect.
index bff3e8d6351d26e87944ebd28bc22e02c6797420..72516acd6ee9cf9fe21de2046e724464c22f4c84 100644 (file)
@@ -836,7 +836,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 87d8ae51687e18cbc98b11c413355e169e6b9066..ea18229def721baf31b4341ad8f5fb42fcce4784 100644 (file)
@@ -979,6 +979,84 @@ class ColumnDefinitionTest(AssertsCompiledSQL, fixtures.TestBase):
             getattr, select([t1.select().alias()]), 'c'
         )
 
+class ColumnDefaultsTest(fixtures.TestBase):
+    """test assignment of default fixures 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 ColumnOptionsTest(fixtures.TestBase):
 
     def test_default_generators(self):