summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLele Gaifax <lele@metapensiero.it>2010-01-22 19:02:57 +0000
committerLele Gaifax <lele@metapensiero.it>2010-01-22 19:02:57 +0000
commit247d7eaca3df99cfd23f23911e3ca689046c18ad (patch)
tree4365d6f54ec2674087dfacb1864df88aba2bf219
parente1b22962e5672f67ca77806b1a8abfc49b661615 (diff)
downloadsqlalchemy-247d7eaca3df99cfd23f23911e3ca689046c18ad.tar.gz
Fix #1582, backporting [6257]: handle spurious spaces reflecting default values on Firebird
-rw-r--r--CHANGES6
-rw-r--r--lib/sqlalchemy/databases/firebird.py11
2 files changed, 13 insertions, 4 deletions
diff --git a/CHANGES b/CHANGES
index 1071f0132..0068cc20b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,12 @@
CHANGES
=======
+0.5.9
+=====
+- firebird
+ - Fix reflection of default values with spurious spaces
+ (backport of r6257). [ticket:1582]
+
0.5.8
=====
- sql
diff --git a/lib/sqlalchemy/databases/firebird.py b/lib/sqlalchemy/databases/firebird.py
index d61e8092b..32dc211b6 100644
--- a/lib/sqlalchemy/databases/firebird.py
+++ b/lib/sqlalchemy/databases/firebird.py
@@ -497,10 +497,13 @@ class FBDialect(default.DefaultDialect):
# does it have a default value?
if row['fdefault'] is not None:
- # the value comes down as "DEFAULT 'value'"
- assert row['fdefault'].upper().startswith('DEFAULT '), row
- defvalue = row['fdefault'][8:]
- args.append(schema.DefaultClause(sql.text(defvalue)))
+ # the value comes down as "DEFAULT 'value'": there may be
+ # more than one space around the "DEFAULT" keyword
+ defexpr = row['fdefault'].lstrip()
+ assert defexpr.startswith('DEFAULT '), "Unrecognized default value: %s" % defexpr
+ defvalue = defexpr[8:].strip()
+ if defvalue != 'NULL':
+ args.append(schema.DefaultClause(sql.text(defvalue)))
col = schema.Column(*args, **kw)
if kw['primary_key']: