You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Quote SQL identifiers across all database adapters to prevent reserved word conflicts
Add adapter-specific identifier quoting ($quoteIdentifier) for all 6 database adapters:
- MySQL: backticks (`name`)
- SQL Server: square brackets ([name])
- PostgreSQL, Oracle, SQLite: double-quotes ("name")
- H2: no-op (case-sensitive with quoted identifiers)
Quote table names in FROM, JOIN, DELETE, UPDATE, INSERT clauses and column names
in WHERE, SET, ORDER BY, INSERT column lists, and JOIN ON conditions. SELECT
clause only quotes table name prefixes (not column names) to maintain compatibility
with SQL Server's triple-subquery pagination.
Add $stripIdentifierQuotes helper for comparing rendered SQL containing mixed
quoting styles (used in MSSQL pagination and $identitySelect across all adapters).
Fix read.cfc empty-result regex to handle quoted table prefixes in column lists.
Update test expectations to be adapter-aware using qi() helper that delegates
to the current adapter's quoting character.
Closes#1856
Co-Authored-By: Claude Opus 4.6 <[email protected]>
if (!ListFindNoCase(local.thirdSelectStripped, local.itemStripped) &&!ListFindNoCase(local.thirdSelect, local.item)) {
144
147
// The test "order_clause_with_paginated_include_and_ambiguous_columns" passes in a complex order (CASE WHEN registration IN ('foo') THEN 0 ELSE 1 END DESC).
145
148
// This gets moved up to the SELECT clause to support pagination.
146
149
// However, we need to add "AS" to it otherwise we get a "No column name was specified" error.
// Lucee/ACF doesn't support PostgreSQL natively when it comes to returning the primary key value of the last inserted record so we have to do it manually by using the sequence.
155
158
if (!ListFindNoCase(local.columnList, ListFirst(arguments.primaryKey))) {
0 commit comments