LogoLogo
8.9.0
8.9.0
  • Introduction
  • What's New?
  • Installation & Usage
  • Migration Guide
  • Contributing & Filing Issues
  • Query Builder
    • Getting a New Query
    • Building Queries
      • Selects
      • From
      • Joins
      • Wheres
      • Order By
      • Group By and Having
      • Limit, Offset, and Pagination
      • Locks
      • Unions
      • Common Table Expressions (i.e. CTEs)
      • Raw Expressions
      • When / Conditionals
      • Query Parameters and Bindings
    • Executing Queries
      • Retrieving Results
      • Aggregates
      • Inserts, Updates, and Deletes
    • Options and Utilities
      • Query Options
      • Clone and Reset
      • Return Format
      • Column Formatter
      • Parent Query
      • Interception Points
    • Debugging
  • Schema Builder
    • Overview
    • Create
    • Columns
    • Column Modifiers
    • Column Constraints
    • Creating Table Constraints
    • Alter
    • Drop
  • External Links
    • API Docs
    • Source Code
    • Issue Tracker
Powered by GitBook
On this page
  • 8.9.1
  • 8.9.0
  • 8.8.1
  • 8.8.0
  • New Features and Improvements
  • Bug Fixes
  • 8.7.8
  • 8.7.7
  • 8.7.6
  • 8.7.5
  • 8.7.2
  • 8.7.1
  • 8.7.0
  • New Features and Improvements
  • Bug Fixes
  • 8.6.1
  • 8.6.0
  • 8.5.0
  • QueryBuilder
  • SchemaBuilder
  • 8.4.9
  • 8.4.8
  • 8.4.7
  • 8.4.6
  • 8.4.5
  • 8.4.1 - 8.4.4
  • 8.4.0
  • 8.3.0
  • 8.2.2
  • 8.2.1
  • 8.2.0
  • 8.1.0
  • 8.0.3
  • 8.0.2
  • 8.0.1
  • 8.0.0
  • 7.10.0
  • 7.9.9
  • 7.9.8
  • 7.9.7
  • 7.9.6
  • 7.9.5
  • 7.9.4
  • 7.9.3
  • 7.9.2
  • 7.9.1
  • 7.9.0
  • 7.8.0
  • 7.7.3
  • 7.7.2
  • 7.7.1
  • 7.7.0
  • 7.6.2
  • 7.6.1
  • 7.6.0
  • 7.5.1
  • 7.5.0
  • 7.4.0
  • 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
  • 7.3.0
  • 7.2.0
  • 7.1.0
  • 7.0.0
  • 6.4.0

Was this helpful?

Edit on GitHub
Export as PDF

What's New?

8.9.1

  • HOLDLOCK and READPAST are mutually exclusive table locks in SQL Server but were mistakenly being applied together.

8.9.0

  • Specify defaultOptions inside of your ColdBox config.

8.8.1

  • Better parsing of raw statements when deriving insertUsing columns.

8.8.0

New Features and Improvements

  • Insert data based off of a callback or builder using insertUsing.

  • Insert data ignoring duplicate key errors using insertIgnore.

  • Use a callback or builder as the source for an upsert statement.

  • Allow for deleting unmatched source records in upserts (SQL Server only).

  • Add a new skipLocked flag to lockForUpdate.

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

  • Add an upsert method. upsert can update or insert multiple records at once depending on if a column is matched.

  • Allow expressions in value and values. Also add a valueRaw and valuesRaw helper method to make that pattern more ergonomic.

  • Allow JOIN statements in UPDATE statements. (This is not supported on Oracle.)

  • Allow updates with subselects using closures or builder instances.

Bug Fixes

  • Better handling of group by and having clauses in pagination queries.

  • Allow any value to be returned from aggregates including strings, numbers, and dates.

  • Provide default values for sum and count if no records are returned.

  • Test in CI with full null support.

8.6.1

  • Correctly wrap CTE expressions with parenthesis when required in certain grammars.

8.6.0

  • SchemaBuilder can now be configured with default query options. (Default options will still be overridden by options passed to each SchemaBuilder method.)

8.5.0

QueryBuilder

  • Add a reset method to QueryBuilder.

  • Add locking helpers such as lock, noLock, lockForUpdate, and sharedLock.

  • Correct return aggregate values for date values from max and min executors.

  • Automatically add a scale to an incoming query param when needed.

  • Add a 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.

SchemaBuilder

  • Add support for stored computed columns and virtual computed columns.

8.4.9

  • Swap master branch to main branch.

8.4.8

  • Remove unnecessary injection for QueryUtils.

8.4.7

  • Account for raw expressions when generating mementos for comparison

8.4.6

  • Add support for mediumtext & longtext types for MySQLGrammar.

8.4.5

  • Fix limit on simplePaginate.

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

  • Introduce a numericSQLType setting to specify the default numeric SQL type.

8.2.2

  • Default to html for the dump format argument to writeDump.

8.2.1

  • Correctly use the passed in strictDateDetection to the QueryUtils.cfc.

8.2.0

📹 Watch a walkthrough of this change on CFCasts.

  • Added a dump command to aid in debugging a query while chaining.

8.1.0

📹 Watch a walkthrough of these changes on CFCasts.

  • ``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 isDate.

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

📹 Watch a walkthrough of these changes on CFCasts.

BREAKING CHANGES

  • ``when callbacks now automatically scope and group where clauses when an OR combinator is used.

Other Changes

  • Combine clearOrders and orderBy with a new reordermethod.

  • Clear current selected columns with clearSelect.

  • Combine clearSelect and either select or selectRaw with reselect and reselectRaw respectively.

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

  • Allow nullable timestamps in MySQL.

7.9.7

  • Return 0 on null aggregates.

7.9.6

  • Match type hints to documentation for join functions

7.9.5

  • Handle enhanced numeric checks with Secure Profile enabled.

7.9.4

  • Allow raw statements in basic where clauses.

7.9.3

  • Passed along the options struct to the count method when calling paginate.

7.9.2

  • Allow for space-delimited sort directions like column DESC.

  • Add helpful message when trying to use a closure with from instead of fromSub.

  • ``value and values now work with column formatters.

  • Correctly format RETURNING clauses with column formatters and ignoring table qualifiers.

7.9.1

  • Handle multi-word columns in queryRemoveColumns.

7.9.0

  • Remove elvis operator due to ACF compatibility issues

7.8.0

  • Add support for MONEY and SMALLMONEY data types to SchemaBuilder.

7.7.3

  • Fix wrapping of enum types for Postgres.

7.7.2

  • Compatibility fix for ACF 2018 and listLast parsing.

  • Include current_timestamp default for timestamp columns in SchemaBuilder.

  • 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.

  • Add a 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.

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

Enhance order by's with more direction options (c767ac8)

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

  • Fix using whereBetween with query param structs (07c9b72)

7.3.14

  • Ignore orders in aggregate queries (39e1338)

7.3.13

  • Format with cfformat (dc2a9b6)

7.3.12

  • Improve column wrapping with trimming (d98a5cb)

  • Prefer the parent query over magic methods when the parent query has the exact method. (f9fd8d1)

7.3.9, 7.3.10, 7.3.11

  • Switch to using ForgeBox Storage.

7.3.8

  • Allow passing query options in to paginate (cdecfb3)

7.3.7

  • Fix for inserting null values directly (1de27a6)

7.3.5, 7.3.6

  • Use cfformat for automatic formatting (119e434)

  • Add a type to the onMissingMethod exception (90d1093)

7.3.4

  • Correctly wrap comments in MySQLGrammar.

7.3.2, 7.3.3

  • Publish qb apidocs to Ortus API Docs.

7.3.1

  • Fix for null values breaking the new checkIsActuallyNumeric method in QueryUtils.

7.3.0

  • Add a 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.

7.2.0

  • Allow a parent query to be set. A parent query will receive any method calls that are not found on the Query Builder instance. This is especially useful for instances like Quick to allow Quick features like scopes to be available inside any closures.

7.1.0

  • Lambdas (arrow functions) are now allowed wherever closures are allowed.

  • Add an orderByRaw method.

  • Allow for fully-qualified column names (table_name.column.name) in the value and values methods.

7.0.0

BREAKING CHANGES

Please see the Migration Guide for more information on these changes.

  • Drop support for Lucee 4.5 and Adobe ColdFusion 11.

  • MSSQLGrammar renamed to SqlServerGrammar

  • 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 become MSSQLGrammar@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 new paginate method.

  • Add 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.)

Other Changes

  • Completely revamped documentation! (You're looking at it right now.)

  • Add new flag to toSQL( showBindings = true ) to replace question marks (?) with cfqueryparam-compatible structs for debugging.

  • Preserve column case and order when converting a query to an array using the default "array" return format.

  • Add a new paginate method to generate a pagination struct alongside the results. This can be customized using a custom PaginationCollector.

  • Allow raw values in insert calls.

  • Allow default queryExecute options to be configure at a Query Builder level. This also enables custom QueryBuilders a la Hyper.

  • Add a whereLike method.

  • Allow closures to be used in left and right joins.

  • Provide an 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.

  • Add raw in alterTable segments.

  • Add dropAllObjects support for SqlServerGrammar and OracleGrammar to support migrate fresh from cfmigrations.

  • Add a renameTable alias for rename.

  • 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

  • Allow Expressions (query.raw) in update statements.

PreviousIntroductionNextInstallation & Usage

Last updated 2 years ago

Was this helpful?