From: Mike Bayer Date: Thu, 10 Feb 2011 20:22:07 +0000 (-0500) Subject: - mssql VARBINARY emits 'max' for length when no length specified, as is X-Git-Tag: rel_0_7b1~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bc52cae455577fec6d97a7273adb04d2a8c0fba6;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - mssql VARBINARY emits 'max' for length when no length specified, as is the case already for VARCHAR, NVARCHAR [ticket:1833] --- diff --git a/CHANGES b/CHANGES index 11b65b6f8a..e3682d6885 100644 --- a/CHANGES +++ b/CHANGES @@ -220,9 +220,14 @@ CHANGES - mssql - the String/Unicode types, and their counterparts VARCHAR/ NVARCHAR, emit "max" as the length when no length is - specified. This makes it more compatible with Postgresql's - VARCHAR type which is similarly unbounded when no length - specified. + specified, so that the default length, normally '1' + as per SQL server documentation, is instead + 'unbounded'. This also occurs for the VARBINARY type. + [ticket:1833]. + + This behavior makes these types more closely compatible + with Postgresql's VARCHAR type which is similarly unbounded + when no length is specified. - mysql - New DBAPI support for pymysql, a pure Python port diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index 0faa970777..c7fd20068f 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -604,6 +604,12 @@ class MSTypeCompiler(compiler.GenericTypeCompiler): def visit_IMAGE(self, type_): return "IMAGE" + def visit_VARBINARY(self, type_): + return self._extend( + "VARBINARY", + type_, + length=type_.length or 'max') + def visit_boolean(self, type_): return self.visit_BIT(type_) diff --git a/test/dialect/test_mssql.py b/test/dialect/test_mssql.py index 42d3cdcd1e..fbefcfed92 100644 --- a/test/dialect/test_mssql.py +++ b/test/dialect/test_mssql.py @@ -1284,14 +1284,14 @@ class TypesTest(TestBase, AssertsExecutionResults, ComparesTables): 'BINARY(10)'), (mssql.MSVarBinary, [], {}, - 'VARBINARY'), + 'VARBINARY(max)'), (mssql.MSVarBinary, [10], {}, 'VARBINARY(10)'), - (types.VARBINARY, [], {}, - 'VARBINARY'), (types.VARBINARY, [10], {}, 'VARBINARY(10)'), + (types.VARBINARY, [], {}, + 'VARBINARY(max)'), (mssql.MSImage, [], {}, 'IMAGE'),