Skip to content

Commit

Permalink
Override the implementation of the standard LENGTH function for mssql…
Browse files Browse the repository at this point in the history
… which calls it LEN.
  • Loading branch information
danrzeppa committed Aug 12, 2015
1 parent 40272b5 commit 45b9297
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/dialect/mssql.js
Expand Up @@ -234,6 +234,14 @@ Mssql.prototype.visitDrop = function(drop) {
return ['IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES '+whereClause+') BEGIN '+dropResult.join(' ')+' END'];
};

Mssql.prototype.visitFunctionCall = function(functionCall) {
var name=functionCall.name
// override the LENGTH function since mssql calls it LEN
if (name=="LENGTH") name="LEN"
var txt = name + '(' + functionCall.nodes.map(this.visit.bind(this)).join(', ') + ')';
return [txt];
};

Mssql.prototype.visitOrderBy = function(orderBy) {
var result=Mssql.super_.prototype.visitOrderBy.call(this, orderBy);
var offsetNode=orderBy.msSQLOffsetNode;
Expand Down
32 changes: 32 additions & 0 deletions test/dialects/function-tests.js
@@ -0,0 +1,32 @@
'use strict';

var Harness = require('./support');
var Sql = require('../../lib');

var post = Harness.definePostTable();

Harness.test({
query: post.select(Sql.functions.LENGTH(post.content)),
pg: {
text : 'SELECT LENGTH("post"."content") FROM "post"',
string: 'SELECT LENGTH("post"."content") FROM "post"'
},
sqlite: {
text : 'SELECT LENGTH("post"."content") FROM "post"',
string: 'SELECT LENGTH("post"."content") FROM "post"'
},
mysql: {
text : 'SELECT LENGTH(`post`.`content`) FROM `post`',
string: 'SELECT LENGTH(`post`.`content`) FROM `post`'
},
mssql: {
text : 'SELECT LEN([post].[content]) FROM [post]',
string: 'SELECT LEN([post].[content]) FROM [post]'
},
oracle: {
text : 'SELECT LENGTH("post"."content") FROM "post"',
string: 'SELECT LENGTH("post"."content") FROM "post"'
},
params: []
});

0 comments on commit 45b9297

Please sign in to comment.