summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-10-18 19:00:05 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2013-10-18 19:00:05 -0400
commitfff90799098bd14ea68c158c787585f6dec130d4 (patch)
tree1cdbfe02a8374ac627451e11e3c7508dfb3f15d6
parentca02882c6a0d66562d86bf55d5449a04825fa354 (diff)
downloadsqlalchemy-fff90799098bd14ea68c158c787585f6dec130d4.tar.gz
- 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. [ticket:2844]
-rw-r--r--doc/build/changelog/changelog_08.rst9
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py3
-rw-r--r--test/dialect/postgresql/test_reflection.py11
3 files changed, 21 insertions, 2 deletions
diff --git a/doc/build/changelog/changelog_08.rst b/doc/build/changelog/changelog_08.rst
index 7a3909a9a..126f3a3b8 100644
--- a/doc/build/changelog/changelog_08.rst
+++ b/doc/build/changelog/changelog_08.rst
@@ -11,6 +11,15 @@
: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
:versions: 0.9.0
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index 5efa2e983..fdb6e3b4a 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -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)
diff --git a/test/dialect/postgresql/test_reflection.py b/test/dialect/postgresql/test_reflection.py
index fb399b546..1f2c1e94b 100644
--- a/test/dialect/postgresql/test_reflection.py
+++ b/test/dialect/postgresql/test_reflection.py
@@ -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))