summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES2
-rw-r--r--lib/sqlalchemy/databases/postgres.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 827cc0589..cc0c1b906 100644
--- a/CHANGES
+++ b/CHANGES
@@ -22,6 +22,8 @@
- mysql:
- fix to reflection on older DB's that might return array() type for
"show variables like" statements
+- postgres:
+ - better reflection of sequences for alternate-schema Tables [ticket:442]
0.3.4
- general:
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py
index 7eee35320..3fea2e1a5 100644
--- a/lib/sqlalchemy/databases/postgres.py
+++ b/lib/sqlalchemy/databases/postgres.py
@@ -396,6 +396,12 @@ class PGDialect(ansisql.ANSIDialect):
coltype = coltype(*args, **kwargs)
colargs= []
if default is not None:
+ match = re.search(r"""(nextval\(')([^']+)('.*$)""", default)
+ if match is not None:
+ # the default is related to a Sequence
+ sch = table.schema
+ if '.' not in match.group(2) and sch is not None:
+ default = match.group(1) + sch + '.' + match.group(2) + match.group(3)
colargs.append(PassiveDefault(sql.text(default)))
table.append_column(schema.Column(name, coltype, nullable=nullable, *colargs))