From 8a3a181ebac97c7f842c3900c9c050294895da78 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Mon, 17 Aug 2020 10:19:26 -0600 Subject: [PATCH] fix(QueryBuilder): Ignore select bindings for aggregate queries --- models/Query/QueryBuilder.cfc | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/models/Query/QueryBuilder.cfc b/models/Query/QueryBuilder.cfc index a7918912..c4d6e82a 100644 --- a/models/Query/QueryBuilder.cfc +++ b/models/Query/QueryBuilder.cfc @@ -2415,19 +2415,26 @@ component displayname="QueryBuilder" accessors="true" { /** * Returns a flat array of bindings. Used as the parameter list for `queryExecute`. * + * @excpet An array of binding types to ignore + * * @return array of bindings */ - public array function getBindings() { - var bindingOrder = [ - "commonTables", - "update", - "insert", - "select", - "join", - "where", - "orderBy", - "union" - ]; + public array function getBindings( array except = [] ) { + var bindingOrder = arrayFilter( + [ + "commonTables", + "update", + "insert", + "select", + "join", + "where", + "orderBy", + "union" + ], + function( type ) { + return !arrayContainsNoCase( except, type ); + } + ); var flatBindings = []; for ( var key in bindingOrder ) { @@ -2809,7 +2816,7 @@ component displayname="QueryBuilder" accessors="true" { structAppend( arguments.options, getDefaultOptions(), false ); var result = grammar.runQuery( sql, - getBindings(), + getBindings( except = getAggregate().isEmpty() ? [] : [ "select" ] ), arguments.options, returnObject );