]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Removed a 128-character truncation from the reflection of the
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 18 Oct 2013 23:00:05 +0000 (19:00 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 18 Oct 2013 23:00:05 +0000 (19:00 -0400)
server default for a column; this code was original from
PG system views which truncated the string for readability.
[ticket:2844]

doc/build/changelog/changelog_08.rst
lib/sqlalchemy/dialects/postgresql/base.py
test/dialect/postgresql/test_reflection.py

index 7a3909a9a2c4c8cec7b8af5aacbf99056f90412a..126f3a3b8e1234c4f85c6dd543b7e40faf85cb63 100644 (file)
 .. changelog::
     :version: 0.8.3
 
+    .. change::
+        :tags: bug, postgresql
+        :tickets: 2844
+        :versions: 0.9.0
+
+        Removed a 128-character truncation from the reflection of the
+        server default for a column; this code was original from
+        PG system views which truncated the string for readability.
+
     .. change::
         :tags: bug, mysql
         :tickets: 2721, 2839
index 5efa2e983f26b423c6a0ab758828b049d7133d83..fdb6e3b4a6a7c31170210bd61bd9e9cb0b03bb46 100644 (file)
@@ -1687,8 +1687,7 @@ class PGDialect(default.DefaultDialect):
         SQL_COLS = """
             SELECT a.attname,
               pg_catalog.format_type(a.atttypid, a.atttypmod),
-              (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid)
-                for 128)
+              (SELECT pg_catalog.pg_get_expr(d.adbin, d.adrelid)
                 FROM pg_catalog.pg_attrdef d
                WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum
                AND a.atthasdef)
index fb399b546188f4b57acebd36c0b2a17b7777d026..1f2c1e94bf9db4a47a51961ac9feb48067674dfa 100644 (file)
@@ -159,6 +159,17 @@ class ReflectionTest(fixtures.TestBase):
                         subject.join(referer).onclause))
 
     @testing.provide_metadata
+    def test_reflect_default_over_128_chars(self):
+        Table('t', self.metadata,
+                Column('x', String(200), server_default="abcd" * 40)
+            ).create(testing.db)
+
+        m = MetaData()
+        t = Table('t', m, autoload=True, autoload_with=testing.db)
+        eq_(
+            t.c.x.server_default.arg.text, "'%s'::character varying" % ("abcd" * 40)
+        )
+    @testing.provide_metadata
     def test_renamed_sequence_reflection(self):
         metadata = self.metadata
         t = Table('t', metadata, Column('id', Integer, primary_key=True))