Comparing version 0.45.1 to 0.45.2
@@ -116,2 +116,38 @@ // TODO: visitCreate needs to support schemas | ||
// Need to implement a special version of CASE since SQL doesn't support | ||
// CASE WHEN true THEN xxx END | ||
// the "true" has to be a boolean expression like 1=1 | ||
Mssql.prototype.visitCase = function(caseExp) { | ||
var _this=this | ||
function _whenValue(node){ | ||
if (node.type!='PARAMETER') return _this.visit(node); | ||
// dealing with a true/false value | ||
var val=node.value(); | ||
if (val==true) return '1=1'; else return '0=1'; | ||
} | ||
assert(caseExp.whenList.length == caseExp.thenList.length); | ||
var self = this; | ||
var text = '(CASE'; | ||
this.visitingCase = true; | ||
for (var i = 0; i < caseExp.whenList.length; i++) { | ||
var whenExp = ' WHEN ' + _whenValue(caseExp.whenList[i]); | ||
var thenExp = ' THEN ' + this.visit(caseExp.thenList[i]); | ||
text += whenExp + thenExp; | ||
} | ||
if (null != caseExp.else && undefined != caseExp.else) { | ||
text += ' ELSE ' + this.visit(caseExp.else); | ||
} | ||
this.visitingCase = false; | ||
text += ' END)'; | ||
return [text]; | ||
} | ||
Mssql.prototype.visitColumn = function(columnNode) { | ||
@@ -118,0 +154,0 @@ var self=this; |
@@ -5,3 +5,3 @@ { | ||
"description": "sql builder", | ||
"version": "0.45.1", | ||
"version": "0.45.2", | ||
"homepage": "https://github.com/brianc/node-sql", | ||
@@ -8,0 +8,0 @@ "repository": { |
@@ -22,4 +22,5 @@ 'use strict'; | ||
mssql: { | ||
text : 'SELECT (CASE WHEN @1 THEN @2 WHEN @3 THEN @4 ELSE @5 END) FROM [customer]', | ||
string: 'SELECT (CASE WHEN TRUE THEN 0 WHEN FALSE THEN 1 ELSE 2 END) FROM [customer]' | ||
text : 'SELECT (CASE WHEN 1=1 THEN @1 WHEN 0=1 THEN @2 ELSE @3 END) FROM [customer]', | ||
string: 'SELECT (CASE WHEN 1=1 THEN 0 WHEN 0=1 THEN 1 ELSE 2 END) FROM [customer]', | ||
params: [0, 1, 2] | ||
}, | ||
@@ -45,4 +46,5 @@ params: [true, 0, false, 1, 2] | ||
mssql: { | ||
text : 'SELECT ([customer].[age] + (CASE WHEN @1 THEN @2 WHEN @3 THEN @4 ELSE @5 END)) FROM [customer]', | ||
string: 'SELECT ([customer].[age] + (CASE WHEN TRUE THEN 0 WHEN FALSE THEN 1 ELSE 2 END)) FROM [customer]' | ||
text : 'SELECT ([customer].[age] + (CASE WHEN 1=1 THEN @1 WHEN 0=1 THEN @2 ELSE @3 END)) FROM [customer]', | ||
string: 'SELECT ([customer].[age] + (CASE WHEN 1=1 THEN 0 WHEN 0=1 THEN 1 ELSE 2 END)) FROM [customer]', | ||
params: [0, 1, 2] | ||
}, | ||
@@ -68,4 +70,5 @@ params: [true, 0, false, 1, 2] | ||
mssql: { | ||
text : 'SELECT ((CASE WHEN @1 THEN @2 WHEN @3 THEN @4 ELSE @5 END) + @6) FROM [customer]', | ||
string: 'SELECT ((CASE WHEN TRUE THEN 0 WHEN FALSE THEN 1 ELSE 2 END) + 3) FROM [customer]' | ||
text : 'SELECT ((CASE WHEN 1=1 THEN @1 WHEN 0=1 THEN @2 ELSE @3 END) + @4) FROM [customer]', | ||
string: 'SELECT ((CASE WHEN 1=1 THEN 0 WHEN 0=1 THEN 1 ELSE 2 END) + 3) FROM [customer]', | ||
params: [0, 1, 2, 3] | ||
}, | ||
@@ -91,4 +94,5 @@ params: [true, 0, false, 1, 2, 3] | ||
mssql: { | ||
text : 'SELECT (CASE WHEN @1 THEN @2 WHEN @3 THEN @4 ELSE ([customer].[age] BETWEEN @5 AND @6) END) FROM [customer]', | ||
string: 'SELECT (CASE WHEN TRUE THEN 0 WHEN FALSE THEN 1 ELSE ([customer].[age] BETWEEN 10 AND 20) END) FROM [customer]' | ||
text : 'SELECT (CASE WHEN 1=1 THEN @1 WHEN 0=1 THEN @2 ELSE ([customer].[age] BETWEEN @3 AND @4) END) FROM [customer]', | ||
string: 'SELECT (CASE WHEN 1=1 THEN 0 WHEN 0=1 THEN 1 ELSE ([customer].[age] BETWEEN 10 AND 20) END) FROM [customer]', | ||
params: [0, 1, 10, 20] | ||
}, | ||
@@ -114,4 +118,5 @@ params: [true, 0, false, 1, 10, 20] | ||
mssql: { | ||
text : 'SELECT (CASE WHEN @1 THEN @2 WHEN @3 THEN @4 END) FROM [customer]', | ||
string: 'SELECT (CASE WHEN TRUE THEN 0 WHEN FALSE THEN 1 END) FROM [customer]' | ||
text : 'SELECT (CASE WHEN 1=1 THEN @1 WHEN 0=1 THEN @2 END) FROM [customer]', | ||
string: 'SELECT (CASE WHEN 1=1 THEN 0 WHEN 0=1 THEN 1 END) FROM [customer]', | ||
params: [0, 1] | ||
}, | ||
@@ -118,0 +123,0 @@ params: [true, 0, false, 1] |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
351681
9207