Add an upsert method.
upsert can update or insert multiple records at once depending on if a column is matched.
JOIN statements in
UPDATE statements. (This is not supported on Oracle.)
Allow updates with subselects using closures or builder instances.
Allow any value to be returned from aggregates including strings, numbers, and dates.
Correctly wrap CTE expressions with parenthesis when required in certain grammars.
SchemaBuilder can now be configured with default query options. (Default options will still be overridden by options passed to each
reset method to QueryBuilder.
Correct return aggregate values for date values from
Automatically add a
scale to an incoming query param when needed.
whereNotLike shortcut method.
Correctly format a
COUNT(DISTINCT column) query.
Only use bulk insert syntax when needed in OracleGrammar due to interactions between the
result parameter to
cfquery, Lucee, and the Oracle JDBC driver.
master branch to
Remove unnecessary injection for QueryUtils.
Account for raw expressions when generating mementos for comparison
Fix limit on simplePaginate.
Migrate release process to GitHub Actions.
simplePaginate pagination method for quicker performance when total records or total pages are not needed or too slow.
numericSQLType setting to specify the default numeric SQL type.
html for the
dump format argument to
Correctly use the passed in
strictDateDetection to the
dump command to aid in debugging a query while chaining.
orderByRaw now can accept bindings.
A new, optional
strictDateDetection setting is available to check the underlying Java class of a date object instead of using
Ignore select bindings for aggregate queries.
Allow spaces in table aliases.
Split FLOAT and DECIMAL column types in SQL Server.
Clear orderBy bindings when calling
Trim table definitions before searching for aliases. Makes qb more lenient with extra whitespace.
when callbacks now automatically scope and group where clauses when an
OR combinator is used.
Clear current selected columns with
Expose nested where functions to enable advanced query manipulation in downstream libraries like Quick.
Fixes for OracleGrammar including table aliases and wrapped subqueries.
Allow nullable timestamps in MySQL.
Return 0 on null aggregates.
Match type hints to documentation for join functions
Handle enhanced numeric checks with Secure Profile enabled.
Allow raw statements in basic where clauses.
Allow for space-delimited sort directions like
Correctly format RETURNING clauses with column formatters and ignoring table qualifiers.
Handle multi-word columns in
Remove elvis operator due to ACF compatibility issues
Fix wrapping of enum types for Postgres.
Compatibility fix for ACF 2018 and
Include current_timestamp default for
timestamp columns in SchemaBuilder.
Ignore table qualifiers for insert and update.
Fix a bug with preventDuplicateJoins when using the closure syntax with a join.
Add executionTime to the data output from BaseGrammar, including being available in interceptors.
Fix a case where a column was not wrapped correctly when a
where used a subquery for the value.
duplicate function due to cbORM / Hibernate bugs when used in the same application.
Split off a private
whereBasic method. This is used in Quick to provide extra sql type features.
clearOrders method. Any already configured orders are cleared. Any orders added after this call will be added as normal.
selectRaw now can take an array of expressions.
Fixed an issue using column formatters with
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.
Enhance order by's with more direction options (c767ac8)
You can now use two shortcut methods:
orderBySub or using
orderBy with a closure or builder instance will respect the direction argument.
whereBetween with query param structs (07c9b72)
Ignore orders in aggregate queries (39e1338)
Format with cfformat (dc2a9b6)
Improve column wrapping with trimming (d98a5cb)
Prefer the parent query over magic methods when the parent query has the exact method. (f9fd8d1)
Switch to using ForgeBox Storage.
Allow passing query options in to paginate (cdecfb3)
Fix for inserting null values directly (1de27a6)
Use cfformat for automatic formatting (119e434)
Add a type to the onMissingMethod exception (90d1093)
Correctly wrap comments in
Publish qb apidocs to Ortus API Docs.
Fix for null values breaking the new
checkIsActuallyNumeric method in
parameterLimit public property to
SqlServerGrammar. This property is used in Quick to split up eager loading to work around the 2100 param limit of SQL Server.
Lambdas (arrow functions) are now allowed wherever closures are allowed.
Please see the Migration Guide for more information on these changes.
Drop support for Lucee 4.5 and Adobe ColdFusion 11.
MSSQLGrammar renamed to
Remove variadic parameters support in builder functions like
defaultGrammar mapping needs to be the full WireBox mapping, including the
@qb, if needed.
MSSQLGrammar would become
This will allow for other grammars to be more easily contributed via third party modules.
The argument names of
forPage changed to match the new
defaultValue and optional exception throwing to
value. (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.)
Completely revamped documentation! (You're looking at it right now.)
Add new flag to
toSQL( showBindings = true ) to replace question marks (
cfqueryparam-compatible structs for debugging.
Preserve column case and order when converting a query to an array using the default
"array" return format.
Allow raw values in
Allow closures to be used in left and right joins.
addUpdate method to programmatically build the
SET clause of an update query.
Add a new
chunk method to grab records from the database in small sets.
dropAllObjects support for
OracleGrammar to support
migrate fresh from cfmigrations.
renameTable alias for
Remove default constraints when dropping columns with a default on
Add more column types and column helpers to