From: Mike Bayer Date: Sun, 28 Jan 2007 23:40:34 +0000 (+0000) Subject: added regexp search for "schema" in sequence reflection for [ticket:442], courtesy... X-Git-Tag: rel_0_3_5~82 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e47517f4876da8d5af34d29f58b9ea59da98d8f;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git added regexp search for "schema" in sequence reflection for [ticket:442], courtesy david.mugnai@spacespa.it --- diff --git a/CHANGES b/CHANGES index 827cc05898..cc0c1b9067 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 7eee35320f..3fea2e1a58 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))