summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES10
-rw-r--r--lib/sqlalchemy/__init__.py1
-rw-r--r--lib/sqlalchemy/dialects/informix/base.py3
-rw-r--r--lib/sqlalchemy/dialects/oracle/base.py26
-rw-r--r--lib/sqlalchemy/types.py2
5 files changed, 30 insertions, 12 deletions
diff --git a/CHANGES b/CHANGES
index 0db98ae60..583e56009 100644
--- a/CHANGES
+++ b/CHANGES
@@ -388,7 +388,10 @@ CHANGES
- using new dialect.initialize() feature to set up
version-dependent behavior.
-
+
+ - using types.BigInteger with Oracle will generate
+ NUMBER(19) [ticket:1125]
+
- firebird
- the keys() method of RowProxy() now returns the result
column names *normalized* to be SQLAlchemy case
@@ -463,7 +466,10 @@ CHANGES
- AbstractType.get_search_list() is removed - the games
that was used for are no longer necessary.
-
+
+ - Added a generic BigInteger type, compiles to
+ BIGINT or NUMBER(19). [ticket:1125]
+
0.5.7
=====
- orm
diff --git a/lib/sqlalchemy/__init__.py b/lib/sqlalchemy/__init__.py
index 31469ee5a..545214fcd 100644
--- a/lib/sqlalchemy/__init__.py
+++ b/lib/sqlalchemy/__init__.py
@@ -50,6 +50,7 @@ from sqlalchemy.sql import (
from sqlalchemy.types import (
BLOB,
BOOLEAN,
+ BigInteger,
Binary,
Boolean,
CHAR,
diff --git a/lib/sqlalchemy/dialects/informix/base.py b/lib/sqlalchemy/dialects/informix/base.py
index a0ba29269..bc48e6aa5 100644
--- a/lib/sqlalchemy/dialects/informix/base.py
+++ b/lib/sqlalchemy/dialects/informix/base.py
@@ -7,8 +7,11 @@
# the MIT License: http://www.opensource.org/licenses/mit-license.php
"""Support for the Informix database.
+This dialect is *not* ported to SQLAlchemy 0.6.
+
This dialect is *not* tested on SQLAlchemy 0.6.
+
"""
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py
index 4f37412eb..8af28c8e5 100644
--- a/lib/sqlalchemy/dialects/oracle/base.py
+++ b/lib/sqlalchemy/dialects/oracle/base.py
@@ -132,7 +132,6 @@ class NCLOB(sqltypes.Text):
VARCHAR2 = VARCHAR
NVARCHAR2 = NVARCHAR
-
class NUMBER(sqltypes.Numeric, sqltypes.Integer):
__visit_name__ = 'NUMBER'
@@ -220,16 +219,22 @@ class OracleTypeCompiler(compiler.GenericTypeCompiler):
def visit_DOUBLE_PRECISION(self, type_):
return self._generate_numeric(type_, "DOUBLE PRECISION")
- def visit_NUMBER(self, type_):
- return self._generate_numeric(type_, "NUMBER")
+ def visit_NUMBER(self, type_, **kw):
+ return self._generate_numeric(type_, "NUMBER", **kw)
- def _generate_numeric(self, type_, name):
- if type_.precision is None:
+ def _generate_numeric(self, type_, name, precision=None, scale=None):
+ if precision is None:
+ precision = type_.precision
+
+ if scale is None:
+ scale = getattr(type_, 'scale', None)
+
+ if precision is None:
return name
- elif type_.scale is None:
- return "%(name)s(%(precision)s)" % {'name':name,'precision': type_.precision}
+ elif scale is None:
+ return "%(name)s(%(precision)s)" % {'name':name,'precision': precision}
else:
- return "%(name)s(%(precision)s, %(scale)s)" % {'name':name,'precision': type_.precision, 'scale' : type_.scale}
+ return "%(name)s(%(precision)s, %(scale)s)" % {'name':name,'precision': precision, 'scale' : scale}
def visit_VARCHAR(self, type_):
return "VARCHAR(%(length)s)" % {'length' : type_.length}
@@ -245,7 +250,10 @@ class OracleTypeCompiler(compiler.GenericTypeCompiler):
def visit_binary(self, type_):
return self.visit_BLOB(type_)
-
+
+ def visit_big_integer(self, type_):
+ return self.visit_NUMBER(type_, precision=19)
+
def visit_boolean(self, type_):
return self.visit_SMALLINT(type_)
diff --git a/lib/sqlalchemy/types.py b/lib/sqlalchemy/types.py
index cdd5439db..9fa59600f 100644
--- a/lib/sqlalchemy/types.py
+++ b/lib/sqlalchemy/types.py
@@ -15,7 +15,7 @@ __all__ = [ 'TypeEngine', 'TypeDecorator', 'AbstractType', 'UserDefinedType',
'INT', 'CHAR', 'VARCHAR', 'NCHAR', 'NVARCHAR','TEXT', 'Text', 'FLOAT',
'NUMERIC', 'DECIMAL', 'TIMESTAMP', 'DATETIME', 'CLOB', 'BLOB',
'BOOLEAN', 'SMALLINT', 'INTEGER', 'DATE', 'TIME',
- 'String', 'Integer', 'SmallInteger',
+ 'String', 'Integer', 'SmallInteger', 'BigInteger',
'Numeric', 'Float', 'DateTime', 'Date', 'Time', 'Binary',
'Boolean', 'Unicode', 'MutableType', 'Concatenable', 'UnicodeText', 'PickleType', 'Interval',
'type_map'