From: Mike Bayer Date: Thu, 15 Oct 2009 21:23:45 +0000 (+0000) Subject: - Added BigInteger to global imports X-Git-Tag: rel_0_6beta1~249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53f1c775db8f58ed33f3e35bbb3bd36961442c0c;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Added BigInteger to global imports - Oracle compiles BigInteger into NUMBER(19), finishes [ticket:1125] --- diff --git a/CHANGES b/CHANGES index 0db98ae60d..583e56009c 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 31469ee5ae..545214fcd4 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 a0ba292698..bc48e6aa57 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 4f37412ebd..8af28c8e53 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 cdd5439db8..9fa59600fc 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'