Your message dated Mon, 28 Oct 2013 22:49:45 +0100
with message-id <[email protected]>
and subject line fixed in 0.8.2
has caused the Debian Bug report #711932,
regarding python-sqlalchemy: Firebird type translation is wrong
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
711932: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=711932
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: python-sqlalchemy
Version: 0.7.8-1.1
Severity: normal
Tags: upstream patch
The description I submitted upstream:
The firebird backend translates Firebird's types incorrectly.
Firstly, a firebird LONG is 32 bits, a INT64 is 64 bigs. Secondly,
all firebird integer types have a precision and scale. If they
are 0 the raw type can be used, otherwise NUMERIC must be used.
The attached patch fixes the problem. The patch is for 0.7.8, but
master looks the same.
-- System Information:
Debian Release: 7.0
APT prefers stable
APT policy: (990, 'stable'), (500, 'stable-updates'), (50, 'testing'), (40,
'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages python-sqlalchemy depends on:
ii python 2.7.3-4
Versions of packages python-sqlalchemy recommends:
ii python-sqlalchemy-ext 0.7.8-1.1
Versions of packages python-sqlalchemy suggests:
ii python-kinterbasdb 3.3.0-3
pn python-mysqldb <none>
pn python-psycopg2 <none>
pn python-pymssql <none>
ii python-sqlalchemy-doc 0.7.8-1.1
-- no debconf information
Description: Fix mapping of firebird types
Firebird integer types can be either the raw type or NUMERIC,
depending on whether they have a precision and scale.
Author: Russell Stuart <[email protected]>
Bug: http://www.sqlalchemy.org/trac/ticket/2757
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/lib/sqlalchemy/dialects/firebird/base.py
+++ b/lib/sqlalchemy/dialects/firebird/base.py
@@ -69,7 +69,7 @@
"""
-import datetime, re
+import datetime, inspect, re
from sqlalchemy import schema as sa_schema
from sqlalchemy import exc, types as sqltypes, sql, util
@@ -78,9 +78,8 @@
from sqlalchemy.sql import compiler
-from sqlalchemy.types import (BIGINT, BLOB, BOOLEAN, DATE,
- FLOAT, INTEGER, NUMERIC, SMALLINT,
- TEXT, TIME, TIMESTAMP)
+from sqlalchemy.types import (BIGINT, BLOB, DATE, FLOAT, INTEGER, NUMERIC,
+ SMALLINT, TEXT, TIME, TIMESTAMP, Integer)
RESERVED_WORDS = set([
@@ -149,13 +148,13 @@
ischema_names = {
'SHORT': SMALLINT,
- 'LONG': BIGINT,
+ 'LONG': INTEGER,
'QUAD': FLOAT,
'FLOAT': FLOAT,
'DATE': DATE,
'TIME': TIME,
'TEXT': TEXT,
- 'INT64': NUMERIC,
+ 'INT64': BIGINT,
'DOUBLE': FLOAT,
'TIMESTAMP': TIMESTAMP,
'VARYING': VARCHAR,
@@ -561,8 +560,8 @@
util.warn("Did not recognize type '%s' of column '%s'" %
(colspec, name))
coltype = sqltypes.NULLTYPE
- elif colspec == 'INT64':
- coltype = coltype(
+ elif Integer in inspect.getmro(coltype) and row['fprec'] != 0:
+ coltype = NUMERIC(
precision=row['fprec'],
scale=row['fscale'] * -1)
elif colspec in ('VARYING', 'CSTRING'):
--- End Message ---
--- Begin Message ---
Source: sqlalchemy
Source-Version: 0.8.2-1
I'll try to update stable to 0.7.10 (or .11) and add this fix.
--- End Message ---