What's New?
9.1.5
Switch from table_catalog
to table_schema
when referencing schema for PostgresGrammar
.
9.1.4
CommandBox-friendly injections for SQL Commenter.
9.1.3
Add support for from
bindings, used especially in fromSub
queries.
9.1.2
This release reverts the use of native returntype
s. There are too many bugs between engine implementations to make it viable. No end-user changes should be visible.
9.1.1
Make withReturnFormat
a public method.
9.1.0
New Features
Add ability to inline bindings when calling toSQL
and dump
. These strings can be executed in a DBMS application.
Bug Fixes
Move
coldbox
namespace injection to the function body so CommandBox doesn't blow up.Correctly apply native returntypes after
newQuery
andwithReturnFormat
.
9.0.2
Fix losing
defaultOptions
when callingnewQuery
.Shortcut for no return format using
none
.Allow for native struct returntypes. Requires a return format of
none
.
9.0.1
Fix RouteInfoCommenter
file name.
9.0.0
Breaking Changes
Dropped support for Adobe ColdFusion 2016
Adobe has ended support for ACF 2016, and so must we.
CFML's uuid
does not match other languages; it's one character shorter. Because of this, the value from createUUID()
cannot be used in some database column types like SQL Server's uniqueidentifier
. This made for some confusion in SchemaBuilder since it wasn't clear if uuid
meant CFML's definition or the wider world's definition.
Popular grid frameworks like Quasar and Datatables use values of 0 or -1 to return all rows from a query. This is now supported in qb. Previously, it generated an invalid query (SELECT * FROM users LIMIT 0 OFFSET 0
).
This behavior can be customized by providing a callback to the shouldMaxRowsOverrideToAll
setting or init
argument. For instance, to revert to the previous behavior you would set the function as follows:
Note: the option to revert to the old behavior will be removed in the next major version.
Note: the option to revert to the old behavior may be removed in the next major version.
New Features and Improvements
SQLite Grammar Support
There's a new shortcut method to return qb.sum( qb.raw( expression ) )
. You're welcome. 😉
Bug Fixes
Correctly compile
insertUsing
statements that use Common Table Expressions (CTEs).Update
announceInterception
calls for ColdBox 7. (Thank you, Michael Born.)Fixed
insertUsing
not placing Common Table Expressions (CTEs) in the correct order.Don't add
DISTINCT
when doing aCOUNT(*)
.Support aggregates for unioned queries.
8.10.0
8.9.1
HOLDLOCK
andREADPAST
are mutually exclusive table locks in SQL Server but were mistakenly being applied together.
8.9.0
8.8.1
8.8.0
New Features and Improvements
Bug Fixes
Don't uppercase quoted aliases in Oracle.
Fix for aliases in update statements.
Don't sort columns for
insertUsing
.Add subquery bindings in insert and upsert statements.
Maintain column order when using source in upsert.
8.7.8
Fix for Oracle returning custom column types when renaming a column.
8.7.7
Explicit arguments scoping.
8.7.6
arrayEach
is slow compared to merging arrays.
8.7.5
Fix wheres with joins in update statements.
8.7.2
Add better null handling to
inferSqlType
.
8.7.1
Correctly format columns being updated.
8.7.0
New Features and Improvements
Bug Fixes
8.6.1
Correctly wrap CTE expressions with parenthesis when required in certain grammars.
8.6.0
8.5.0
QueryBuilder
Correct return aggregate values for date values from
max
andmin
executors.Correctly format a
COUNT(DISTINCT column)
query.Only use bulk insert syntax when needed in OracleGrammar due to interactions between the
result
parameter tocfquery
, Lucee, and the Oracle JDBC driver.
SchemaBuilder
8.4.9
Swap
master
branch tomain
branch.
8.4.8
Remove unnecessary injection for QueryUtils.
8.4.7
Account for raw expressions when generating mementos for comparison
8.4.6
8.4.5
8.4.1 - 8.4.4
Migrate release process to GitHub Actions.
8.4.0
Add a
simplePaginate
pagination method for quicker performance when total records or total pages are not needed or too slow.
8.3.0
8.2.2
Default to
html
for thedump
format argument towriteDump
.
8.2.1
Correctly use the passed in
strictDateDetection
to theQueryUtils.cfc
.
8.2.0
8.1.0
8.0.3
Ignore select bindings for aggregate queries.
Allow spaces in table aliases.
Split FLOAT and DECIMAL column types in SQL Server.
8.0.2
Clear orderBy bindings when calling
clearOrders
.
8.0.1
Trim table definitions before searching for aliases. Makes qb more lenient with extra whitespace.
8.0.0
BREAKING CHANGES
Other Changes
7.10.0
Expose nested where functions to enable advanced query manipulation in downstream libraries like Quick.
7.9.9
Fixes for OracleGrammar including table aliases and wrapped subqueries.
7.9.8
7.9.7
7.9.6
7.9.5
Handle enhanced numeric checks with Secure Profile enabled.
7.9.4
Allow raw statements in basic where clauses.
7.9.3
7.9.2
7.9.1
Handle multi-word columns in
queryRemoveColumns
.
7.9.0
Remove elvis operator due to ACF compatibility issues
7.8.0
7.7.3
7.7.2
Compatibility fix for ACF 2018 and
listLast
parsing.Ignore table qualifiers for insert and update.
7.7.1
Fix a bug with preventDuplicateJoins when using the closure syntax with a join.
7.7.0
Add executionTime to the data output from BaseGrammar, including being available in interceptors.
7.6.2
Fix a case where a column was not wrapped correctly when a
where
used a subquery for the value.
7.6.1
Avoid
duplicate
function due to cbORM / Hibernate bugs when used in the same application.
7.6.0
Split off a private
whereBasic
method. This is used in Quick to provide extra sql type features.
7.5.1
Fixed an issue using column formatters with update
and insert
.
7.5.0
Using a new preventDuplicateJoins
setting in the module settings, qb can detect duplicate joins and ignore them. This is especially useful in a heavily filtered and dynamic query where you may or may not need the join at all or more than one column may need the same join. preventDuplicateJoins
defaults to false
, so it is opt-in. It may be turned on by default in a future breaking release of qb.
7.4.0
You can now use two shortcut methods: orderByAsc
and orderByDesc
. Additionally, orderBySub
or using orderBy
with a closure or builder instance will respect the direction argument.
7.3.15
7.3.14
7.3.13
7.3.12
7.3.9, 7.3.10, 7.3.11
7.3.8
7.3.7
7.3.5, 7.3.6
7.3.4
7.3.2, 7.3.3
7.3.1
Fix for null values breaking the new
checkIsActuallyNumeric
method inQueryUtils
.
7.3.0
Add a
parameterLimit
public property toSqlServerGrammar
. This property is used in Quick to split up eager loading to work around the 2100 param limit of SQL Server.
7.2.0
7.1.0
Lambdas (arrow functions) are now allowed wherever closures are allowed.
7.0.0
BREAKING CHANGES
Drop support for Lucee 4.5 and Adobe ColdFusion 11.
MSSQLGrammar
renamed toSqlServerGrammar
Remove variadic parameters support in builder functions like
select
.The
defaultGrammar
mapping needs to be the full WireBox mapping, including the@qb
, if needed.For instance,
MSSQLGrammar
would becomeMSSQLGrammar@qb
.This will allow for other grammars to be more easily contributed via third party modules.
The argument names of
forPage
changed to match the newpaginate
method.Add
defaultValue
and optional exception throwing tovalue
. (This changed the argument order.)All methods that could conceivably take a subquery as well as a value now accept a closure or another builder instance to use as a subquery. (This changed the argument names in some instances.)
Other Changes
Completely revamped documentation! (You're looking at it right now.)
Preserve column case and order when converting a query to an array using the default
"array"
return format.Allow closures to be used in left and right joins.
Add
raw
inalterTable
segments.Add
dropAllObjects
support forSqlServerGrammar
andOracleGrammar
to supportmigrate fresh
from cfmigrations.Add a
renameTable
alias forrename
.Remove default constraints when dropping columns with a default on
SqlServerGrammar
.Add more column types and column helpers to
SchemaBuilder
, including:datetimeTz
lineString
nullableTimestamps
point
polygon
softDeletes
softDeletesTz
timeTz
timestamps
timestampTz
timestampsTz
withCurrent
****
6.4.0
Last updated
Was this helpful?