summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/firebird
diff options
context:
space:
mode:
authorLele Gaifax <lele@metapensiero.it>2009-08-07 12:34:10 +0000
committerLele Gaifax <lele@metapensiero.it>2009-08-07 12:34:10 +0000
commit54dd8b851b8378419594b6a629c30d9b7b47b7c7 (patch)
tree867d96a7865c459f4b84a4a56fd31e08758f3001 /lib/sqlalchemy/dialects/firebird
parent8aa2886c1a31c9a9950ad00345ac0cadcf78f7e2 (diff)
downloadsqlalchemy-54dd8b851b8378419594b6a629c30d9b7b47b7c7.tar.gz
Fix #1451: take into account the actual coding system when determining the field length
Diffstat (limited to 'lib/sqlalchemy/dialects/firebird')
-rw-r--r--lib/sqlalchemy/dialects/firebird/base.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/firebird/base.py b/lib/sqlalchemy/dialects/firebird/base.py
index 020977ff5..e89945e0b 100644
--- a/lib/sqlalchemy/dialects/firebird/base.py
+++ b/lib/sqlalchemy/dialects/firebird/base.py
@@ -475,7 +475,7 @@ class FBDialect(default.DefaultDialect):
r.rdb$null_flag AS null_flag,
t.rdb$type_name AS ftype,
f.rdb$field_sub_type AS stype,
- f.rdb$field_length AS flen,
+ f.rdb$field_length/COALESCE(cs.rdb$bytes_per_character,1) AS flen,
f.rdb$field_precision AS fprec,
f.rdb$field_scale AS fscale,
COALESCE(r.rdb$default_source, f.rdb$default_source) AS fdefault
@@ -483,6 +483,7 @@ class FBDialect(default.DefaultDialect):
JOIN rdb$fields f ON r.rdb$field_source=f.rdb$field_name
JOIN rdb$types t
ON t.rdb$type=f.rdb$field_type AND t.rdb$field_name='RDB$FIELD_TYPE'
+ LEFT JOIN rdb$character_sets cs ON f.rdb$character_set_id=cs.rdb$character_set_id
WHERE f.rdb$system_flag=0 AND r.rdb$relation_name=?
ORDER BY r.rdb$field_position
"""