summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/dialects')
-rw-r--r--lib/sqlalchemy/dialects/access/base.py4
-rw-r--r--lib/sqlalchemy/dialects/informix/base.py4
-rw-r--r--lib/sqlalchemy/dialects/maxdb/base.py6
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py32
-rw-r--r--lib/sqlalchemy/dialects/mysql/base.py76
-rw-r--r--lib/sqlalchemy/dialects/oracle/base.py6
-rw-r--r--lib/sqlalchemy/dialects/oracle/cx_oracle.py4
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py4
-rw-r--r--lib/sqlalchemy/dialects/sqlite/base.py2
-rw-r--r--lib/sqlalchemy/dialects/sybase/base.py12
-rw-r--r--lib/sqlalchemy/dialects/type_migration_guidelines.txt2
11 files changed, 37 insertions, 115 deletions
diff --git a/lib/sqlalchemy/dialects/access/base.py b/lib/sqlalchemy/dialects/access/base.py
index d665dbda1..a46ad247a 100644
--- a/lib/sqlalchemy/dialects/access/base.py
+++ b/lib/sqlalchemy/dialects/access/base.py
@@ -95,7 +95,7 @@ class AcChar(types.CHAR):
def get_col_spec(self):
return "TEXT" + (self.length and ("(%d)" % self.length) or "")
-class AcBinary(types.Binary):
+class AcBinary(types.LargeBinary):
def get_col_spec(self):
return "BINARY"
@@ -170,7 +170,7 @@ class AccessDialect(default.DefaultDialect):
types.DateTime : AcDateTime,
types.Date : AcDate,
types.String : AcString,
- types.Binary : AcBinary,
+ types.LargeBinary : AcBinary,
types.Boolean : AcBoolean,
types.Text : AcText,
types.CHAR: AcChar,
diff --git a/lib/sqlalchemy/dialects/informix/base.py b/lib/sqlalchemy/dialects/informix/base.py
index c11917c0f..2802d493a 100644
--- a/lib/sqlalchemy/dialects/informix/base.py
+++ b/lib/sqlalchemy/dialects/informix/base.py
@@ -65,7 +65,7 @@ ischema_names = {
7 : sqltypes.DATE, # DATE
8 : sqltypes.Numeric, # MONEY
10 : sqltypes.DATETIME, # DATETIME
- 11 : sqltypes.Binary, # BYTE
+ 11 : sqltypes.LargeBinary, # BYTE
12 : sqltypes.TEXT, # TEXT
13 : sqltypes.VARCHAR, # VARCHAR
15 : sqltypes.NCHAR, # NCHAR
@@ -85,7 +85,7 @@ class InfoTypeCompiler(compiler.GenericTypeCompiler):
def visit_TIME(self, type_):
return "DATETIME HOUR TO SECOND"
- def visit_binary(self, type_):
+ def visit_large_binary(self, type_):
return "BYTE"
def visit_boolean(self, type_):
diff --git a/lib/sqlalchemy/dialects/maxdb/base.py b/lib/sqlalchemy/dialects/maxdb/base.py
index 891547ac3..2e0b9518b 100644
--- a/lib/sqlalchemy/dialects/maxdb/base.py
+++ b/lib/sqlalchemy/dialects/maxdb/base.py
@@ -263,7 +263,7 @@ class MaxTime(sqltypes.Time):
return process
-class MaxBlob(sqltypes.Binary):
+class MaxBlob(sqltypes.LargeBinary):
def bind_processor(self, dialect):
def process(value):
if value is None:
@@ -306,7 +306,7 @@ class MaxDBTypeCompiler(compiler.GenericTypeCompiler):
def visit_string(self, type_):
return self._string_spec("VARCHAR", type_)
- def visit_binary(self, type_):
+ def visit_large_binary(self, type_):
return "LONG BYTE"
def visit_numeric(self, type_):
@@ -327,7 +327,7 @@ colspecs = {
sqltypes.Time: MaxTime,
sqltypes.String: MaxString,
sqltypes.Unicode:MaxUnicode,
- sqltypes.Binary: MaxBlob,
+ sqltypes.LargeBinary: MaxBlob,
sqltypes.Text: MaxText,
sqltypes.CHAR: MaxChar,
sqltypes.TIMESTAMP: MaxTimestamp,
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index 8f52c4b12..4e58d64b3 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -235,7 +235,8 @@ from sqlalchemy.engine import default, base, reflection
from sqlalchemy import types as sqltypes
from decimal import Decimal as _python_Decimal
from sqlalchemy.types import INTEGER, BIGINT, SMALLINT, DECIMAL, NUMERIC, \
- FLOAT, TIMESTAMP, DATETIME, DATE
+ FLOAT, TIMESTAMP, DATETIME, DATE, BINARY,\
+ VARBINARY, BLOB
from sqlalchemy.dialects.mssql import information_schema as ischema
@@ -592,13 +593,7 @@ class NCHAR(_StringType, sqltypes.NCHAR):
_StringType.__init__(self, collation)
sqltypes.NCHAR.__init__(self, *args, **kw)
-class BINARY(sqltypes.Binary):
- __visit_name__ = 'BINARY'
-
-class VARBINARY(sqltypes.Binary):
- __visit_name__ = 'VARBINARY'
-
-class IMAGE(sqltypes.Binary):
+class IMAGE(sqltypes.LargeBinary):
__visit_name__ = 'IMAGE'
class BIT(sqltypes.TypeEngine):
@@ -772,27 +767,12 @@ class MSTypeCompiler(compiler.GenericTypeCompiler):
else:
return self.visit_TIME(type_)
- def visit_binary(self, type_):
- if type_.length:
- return self.visit_BINARY(type_)
- else:
- return self.visit_IMAGE(type_)
-
- def visit_BINARY(self, type_):
- if type_.length:
- return "BINARY(%s)" % type_.length
- else:
- return "BINARY"
+ def visit_large_binary(self, type_):
+ return self.visit_IMAGE(type_)
def visit_IMAGE(self, type_):
return "IMAGE"
- def visit_VARBINARY(self, type_):
- if type_.length:
- return "VARBINARY(%s)" % type_.length
- else:
- return "VARBINARY"
-
def visit_boolean(self, type_):
return self.visit_BIT(type_)
@@ -1290,7 +1270,7 @@ class MSDialect(default.DefaultDialect):
coltype = self.ischema_names.get(type, None)
kwargs = {}
- if coltype in (MSString, MSChar, MSNVarchar, MSNChar, MSText, MSNText, MSBinary, MSVarBinary, sqltypes.Binary):
+ if coltype in (MSString, MSChar, MSNVarchar, MSNChar, MSText, MSNText, MSBinary, MSVarBinary, sqltypes.LargeBinary):
kwargs['length'] = charlen
if collation:
kwargs['collation'] = collation
diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py
index e3235783c..1a85babe4 100644
--- a/lib/sqlalchemy/dialects/mysql/base.py
+++ b/lib/sqlalchemy/dialects/mysql/base.py
@@ -197,7 +197,8 @@ from sqlalchemy.engine import reflection
from sqlalchemy.engine import base as engine_base, default
from sqlalchemy import types as sqltypes
-from sqlalchemy.types import DATE, DATETIME, BOOLEAN, TIME
+from sqlalchemy.types import DATE, DATETIME, BOOLEAN, TIME, \
+ BLOB, BINARY, VARBINARY
RESERVED_WORDS = set(
['accessible', 'add', 'all', 'alter', 'analyze','and', 'as', 'asc',
@@ -305,11 +306,6 @@ class _StringType(sqltypes.String):
', '.join(['%s=%r' % (k, params[k]) for k in params]))
-class _BinaryType(sqltypes.Binary):
- """Base for MySQL binary types."""
-
- pass
-
class NUMERIC(_NumericType, sqltypes.NUMERIC):
"""MySQL NUMERIC type."""
@@ -826,62 +822,18 @@ class NCHAR(_StringType, sqltypes.NCHAR):
-class VARBINARY(_BinaryType):
- """MySQL VARBINARY type, for variable length binary data."""
-
- __visit_name__ = 'VARBINARY'
-
- def __init__(self, length=None, **kw):
- """Construct a VARBINARY. Arguments are:
-
- :param length: Maximum data length, in characters.
-
- """
- super(VARBINARY, self).__init__(length=length, **kw)
-
-class BINARY(_BinaryType):
- """MySQL BINARY type, for fixed length binary data"""
-
- __visit_name__ = 'BINARY'
-
- def __init__(self, length=None, **kw):
- """Construct a BINARY.
-
- This is a fixed length type, and short values will be right-padded
- with a server-version-specific pad value.
-
- :param length: Maximum data length, in bytes.
-
- """
- super(BINARY, self).__init__(length=length, **kw)
-class BLOB(_BinaryType, sqltypes.BLOB):
- """MySQL BLOB type, for binary data up to 2^16 bytes"""
-
- __visit_name__ = 'BLOB'
-
- def __init__(self, length=None, **kw):
- """Construct a BLOB. Arguments are:
-
- :param length: Optional, if provided the server may optimize storage
- by substituting the smallest TEXT type sufficient to store
- ``length`` characters.
-
- """
- super(BLOB, self).__init__(length=length, **kw)
-
-
-class TINYBLOB(_BinaryType):
+class TINYBLOB(sqltypes._Binary):
"""MySQL TINYBLOB type, for binary data up to 2^8 bytes."""
__visit_name__ = 'TINYBLOB'
-class MEDIUMBLOB(_BinaryType):
+class MEDIUMBLOB(sqltypes._Binary):
"""MySQL MEDIUMBLOB type, for binary data up to 2^24 bytes."""
__visit_name__ = 'MEDIUMBLOB'
-class LONGBLOB(_BinaryType):
+class LONGBLOB(sqltypes._Binary):
"""MySQL LONGBLOB type, for binary data up to 2^32 bytes."""
__visit_name__ = 'LONGBLOB'
@@ -1122,7 +1074,6 @@ MSInteger = INTEGER
colspecs = {
sqltypes.Numeric: NUMERIC,
sqltypes.Float: FLOAT,
- sqltypes.Binary: _BinaryType,
sqltypes.Time: _MSTime,
sqltypes.Enum: ENUM,
}
@@ -1217,7 +1168,7 @@ class MySQLCompiler(compiler.SQLCompiler):
return 'CHAR(%s)' % type_.length
else:
return 'CHAR'
- elif isinstance(type_, sqltypes.Binary):
+ elif isinstance(type_, sqltypes._Binary):
return 'BINARY'
elif isinstance(type_, NUMERIC):
return self.dialect.type_compiler.process(type_).replace('NUMERIC', 'DECIMAL')
@@ -1425,7 +1376,7 @@ class MySQLTypeCompiler(compiler.GenericTypeCompiler):
if c is not None])
def _mysql_type(self, type_):
- return isinstance(type_, (_StringType, _NumericType, _BinaryType))
+ return isinstance(type_, (_StringType, _NumericType))
def visit_NUMERIC(self, type_):
if type_.precision is None:
@@ -1564,12 +1515,9 @@ class MySQLTypeCompiler(compiler.GenericTypeCompiler):
return self._extend_string(type_, {'national':True}, "CHAR")
def visit_VARBINARY(self, type_):
- if type_.length:
- return "VARBINARY(%d)" % type_.length
- else:
- return self.visit_BLOB(type_)
+ return "VARBINARY(%d)" % type_.length
- def visit_binary(self, type_):
+ def visit_large_binary(self, type_):
return self.visit_BLOB(type_)
def visit_enum(self, type_):
@@ -1578,12 +1526,6 @@ class MySQLTypeCompiler(compiler.GenericTypeCompiler):
else:
return self.visit_ENUM(type_)
- def visit_BINARY(self, type_):
- if type_.length:
- return "BINARY(%d)" % type_.length
- else:
- return "BINARY"
-
def visit_BLOB(self, type_):
if type_.length:
return "BLOB(%d)" % type_.length
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py
index 882505a40..926796961 100644
--- a/lib/sqlalchemy/dialects/oracle/base.py
+++ b/lib/sqlalchemy/dialects/oracle/base.py
@@ -122,7 +122,7 @@ from sqlalchemy.types import VARCHAR, NVARCHAR, CHAR, DATE, DATETIME, \
RESERVED_WORDS = set('''SHARE RAW DROP BETWEEN FROM DESC OPTION PRIOR LONG THEN DEFAULT ALTER IS INTO MINUS INTEGER NUMBER GRANT IDENTIFIED ALL TO ORDER ON FLOAT DATE HAVING CLUSTER NOWAIT RESOURCE ANY TABLE INDEX FOR UPDATE WHERE CHECK SMALLINT WITH DELETE BY ASC REVOKE LIKE SIZE RENAME NOCOMPRESS NULL GROUP VALUES AS IN VIEW EXCLUSIVE COMPRESS SYNONYM SELECT INSERT EXISTS NOT TRIGGER ELSE CREATE INTERSECT PCTFREE DISTINCT USER CONNECT SET MODE OF UNIQUE VARCHAR2 VARCHAR LOCK OR CHAR DECIMAL UNION PUBLIC AND START UID COMMENT'''.split())
-class RAW(sqltypes.Binary):
+class RAW(sqltypes.LargeBinary):
pass
OracleRaw = RAW
@@ -157,7 +157,7 @@ class DOUBLE_PRECISION(sqltypes.Numeric):
super(DOUBLE_PRECISION, self).__init__(precision=precision, scale=scale, asdecimal=asdecimal)
-class BFILE(sqltypes.Binary):
+class BFILE(sqltypes.LargeBinary):
__visit_name__ = 'BFILE'
class LONG(sqltypes.Text):
@@ -282,7 +282,7 @@ class OracleTypeCompiler(compiler.GenericTypeCompiler):
def visit_unicode_text(self, type_):
return self.visit_NCLOB(type_)
- def visit_binary(self, type_):
+ def visit_large_binary(self, type_):
return self.visit_BLOB(type_)
def visit_big_integer(self, type_):
diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py
index 6b1d7e5b9..d0058e454 100644
--- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py
+++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py
@@ -160,7 +160,7 @@ class _OracleInteger(sqltypes.Integer):
return val
return to_int
-class _OracleBinary(_LOBMixin, sqltypes.Binary):
+class _OracleBinary(_LOBMixin, sqltypes.LargeBinary):
def get_dbapi_type(self, dbapi):
return dbapi.BLOB
@@ -176,7 +176,7 @@ class _OracleRaw(oracle.RAW):
colspecs = {
sqltypes.Date : _OracleDate,
- sqltypes.Binary : _OracleBinary,
+ sqltypes.LargeBinary : _OracleBinary,
sqltypes.Boolean : oracle._OracleBoolean,
sqltypes.Interval : _OracleInterval,
oracle.INTERVAL : _OracleInterval,
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index bc5459f3a..cfbef69e8 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -83,7 +83,7 @@ from sqlalchemy.types import INTEGER, BIGINT, SMALLINT, VARCHAR, \
class REAL(sqltypes.Float):
__visit_name__ = "REAL"
-class BYTEA(sqltypes.Binary):
+class BYTEA(sqltypes.LargeBinary):
__visit_name__ = 'BYTEA'
class DOUBLE_PRECISION(sqltypes.Float):
@@ -476,7 +476,7 @@ class PGTypeCompiler(compiler.GenericTypeCompiler):
def visit_UUID(self, type_):
return "UUID"
- def visit_binary(self, type_):
+ def visit_large_binary(self, type_):
return self.visit_BYTEA(type_)
def visit_BYTEA(self, type_):
diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py
index 85f1157e0..93e62ec24 100644
--- a/lib/sqlalchemy/dialects/sqlite/base.py
+++ b/lib/sqlalchemy/dialects/sqlite/base.py
@@ -300,7 +300,7 @@ class SQLiteDDLCompiler(compiler.DDLCompiler):
return text
class SQLiteTypeCompiler(compiler.GenericTypeCompiler):
- def visit_binary(self, type_):
+ def visit_large_binary(self, type_):
return self.visit_BLOB(type_)
class SQLiteIdentifierPreparer(compiler.IdentifierPreparer):
diff --git a/lib/sqlalchemy/dialects/sybase/base.py b/lib/sqlalchemy/dialects/sybase/base.py
index 63e1d01aa..cdbf6138d 100644
--- a/lib/sqlalchemy/dialects/sybase/base.py
+++ b/lib/sqlalchemy/dialects/sybase/base.py
@@ -99,7 +99,7 @@ RESERVED_WORDS = set([
])
-class SybaseImage(sqltypes.Binary):
+class SybaseImage(sqltypes.LargeBinary):
__visit_name__ = 'IMAGE'
class SybaseBit(sqltypes.TypeEngine):
@@ -135,7 +135,7 @@ class SybaseBoolean(sqltypes.Boolean):
return process
class SybaseTypeCompiler(compiler.GenericTypeCompiler):
- def visit_binary(self, type_):
+ def visit_large_binary(self, type_):
return self.visit_IMAGE(type_)
def visit_boolean(self, type_):
@@ -157,7 +157,7 @@ class SybaseTypeCompiler(compiler.GenericTypeCompiler):
return "UNIQUEIDENTIFIER"
colspecs = {
- sqltypes.Binary : SybaseImage,
+ sqltypes.LargeBinary : SybaseImage,
sqltypes.Boolean : SybaseBoolean,
}
@@ -176,9 +176,9 @@ ischema_names = {
'numeric' : sqltypes.NUMERIC,
'float' : sqltypes.FLOAT,
'double' : sqltypes.Numeric,
- 'binary' : sqltypes.Binary,
- 'long binary' : sqltypes.Binary,
- 'varbinary' : sqltypes.Binary,
+ 'binary' : sqltypes.LargeBinary,
+ 'long binary' : sqltypes.LargeBinary,
+ 'varbinary' : sqltypes.LargeBinary,
'bit': SybaseBit,
'image' : SybaseImage,
'timestamp': sqltypes.TIMESTAMP,
diff --git a/lib/sqlalchemy/dialects/type_migration_guidelines.txt b/lib/sqlalchemy/dialects/type_migration_guidelines.txt
index 8ed1a1797..c26b65e08 100644
--- a/lib/sqlalchemy/dialects/type_migration_guidelines.txt
+++ b/lib/sqlalchemy/dialects/type_migration_guidelines.txt
@@ -139,7 +139,7 @@ a subclass of compiler.GenericTypeCompiler.
arguments and flags to those types.
d. the visit_lowercase methods are overridden to provide an interpretation of a generic
- type. E.g. visit_binary() might be overridden to say "return self.visit_BIT(type_)".
+ type. E.g. visit_large_binary() might be overridden to say "return self.visit_BIT(type_)".
e. visit_lowercase methods should *never* render strings directly - it should always
be via calling a visit_UPPERCASE() method.