diff --git a/lib/column.js b/lib/column.js index 55a3da18..9a9cd959 100644 --- a/lib/column.js +++ b/lib/column.js @@ -65,7 +65,7 @@ Column.prototype.arrayAgg = function(alias) { Column.prototype.aggregate = function(alias, aggregator) { var context = contextify(this); context.aggregator = aggregator.toUpperCase(); - context.alias = alias || context.name + '_' + context.aggregator.toLowerCase(); + context.alias = alias || ''; return new ColumnNode(context); }; diff --git a/lib/functions.js b/lib/functions.js index fe9cdaaf..ae936baf 100644 --- a/lib/functions.js +++ b/lib/functions.js @@ -47,7 +47,8 @@ var scalarFunctions = [ 'RTRIM', 'SUBSTR', 'TRIM', - 'UPPER' + 'UPPER', + 'NULLIF' ]; var dateFunctions = [ diff --git a/lib/node/column.js b/lib/node/column.js index 6b145d74..80119e93 100644 --- a/lib/node/column.js +++ b/lib/node/column.js @@ -1,7 +1,10 @@ 'use strict'; -var Node = require('./index'); +var _ = require('lodash'); +var Node = require('./index'); +var valueExpressionMixin = require('./valueExpression'); +var valueExpressionMixed = false; module.exports = Node.define({ type: 'COLUMN', constructor: function(config) { @@ -28,6 +31,13 @@ module.exports = Node.define({ this.subfields = config.subfields; this.autoGenerated = !!config.autoGenerated; this.unique = !!config.unique; + + // Delay mixin to runtime, when all nodes have been defined, and + // mixin only once. ValueExpressionMixin has circular dependencies. + if (!valueExpressionMixed) { + valueExpressionMixed = true; + _.extend(Node.prototype, valueExpressionMixin()); + } }, as: function(alias) { this.alias = alias; diff --git a/package.json b/package.json index dc250c01..c86ed403 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "brianc ", "name": "sql", "description": "sql builder", - "version": "0.78.0", + "version": "0.78.0-var2", "homepage": "https://github.com/brianc/node-sql", "license": "MIT", "repository": { @@ -21,7 +21,7 @@ }, "dependencies": { "sliced": "0.0.x", - "lodash": "4.1.x" + "lodash": "4.17.x" }, "devDependencies": { "jshint": "*",