diff --git a/src/dialects/mssql/schema/columncompiler.js b/src/dialects/mssql/schema/columncompiler.js index eaaf3e1897..583a61db1b 100644 --- a/src/dialects/mssql/schema/columncompiler.js +++ b/src/dialects/mssql/schema/columncompiler.js @@ -30,18 +30,18 @@ assign(ColumnCompiler_MSSQL.prototype, { return `float`; }, - integer(length) { - length = length ? `(${this._num(length, 11)})` : ''; - return `int${length}`; + integer() { + // mssql does not support length + return 'int'; }, mediumint: 'int', smallint: 'smallint', - tinyint(length) { - length = length ? `(${this._num(length, 1)})` : ''; - return `tinyint${length}`; + tinyint() { + // mssql does not support length + return 'tinyint'; }, varchar(length) { diff --git a/test/integration/schema/index.js b/test/integration/schema/index.js index fbab68a937..f3914a2cf3 100644 --- a/test/integration/schema/index.js +++ b/test/integration/schema/index.js @@ -447,6 +447,35 @@ module.exports = function(knex) { }); }); + it('handles numeric length correctly', function() { + return knex.schema + .createTable('test_table_numerics', function(table) { + table.engine('InnoDB'); + table.integer('integer_column', 5); + table.tinyint('tinyint_column', 5); + table.smallint('smallint_column', 5); + table.mediumint('mediumint_column', 5); + table.bigint('bigint_column', 5); + }) + .testSql(function(tester) { + tester('mysql', [ + 'create table `test_table_numerics` (`integer_column` int(5), `tinyint_column` tinyint(5), `smallint_column` smallint, `mediumint_column` mediumint, `bigint_column` bigint) default character set utf8 engine = InnoDB', + ]); + tester('pg', [ + 'create table "test_table_numerics" ("integer_column" integer, "tinyint_column" smallint, "smallint_column" smallint, "mediumint_column" integer, "bigint_column" bigint)', + ]); + tester('sqlite3', [ + 'create table `test_table_numerics` (`integer_column` integer, `tinyint_column` tinyint, `smallint_column` integer, `mediumint_column` integer, `bigint_column` bigint)', + ]); + tester('mssql', [ + 'CREATE TABLE [test_table_numerics] ([integer_column] int, [tinyint_column] tinyint, [smallint_column] smallint, [mediumint_column] int, [bigint_column] bigint)', + ]); + }) + .then(function() { + return knex.schema.dropTable('test_table_numerics'); + }); + }); + it('supports the enum and uuid columns', function() { // NB: redshift does not... return knex.schema @@ -775,6 +804,20 @@ module.exports = function(knex) { }); }); + it('handles creating numeric columns with specified length correctly', function() { + return knex.schema + .createTable('test_table_numerics2', function(table) { + table.integer('integer_column', 5); + table.tinyint('tinyint_column', 5); + table.smallint('smallint_column', 5); + table.mediumint('mediumint_column', 5); + table.bigint('bigint_column', 5); + }) + .then(function() { + return knex.schema.dropTable('test_table_numerics2'); + }); + }); + it('allows alter column syntax', function() { if ( knex.client.driverName.match('sqlite3') ||