Important: #94697 - Quote database identifiers when used instead of globally upfront¶
See forge#94697
Description¶
When using TCA
keys that contain SQL fragments like foreign_table_where
,
MM_table_where
and search.andWhere
, it is important to use a special syntax
for SQL field names to stay DBAL compatible.
See #81751 for details.
It boils down to: Use {#colPos}=0
instead of colPos=0
to stay DBAL
compatible. The core then takes care field names are properly quoted for the
specific DBMS that is used.
This quoting preparation has been performed during TCA cache warmup until now. This had the main disadvantage that this early boostrap step already needs a working database connection. The core however plans to introduce features to allow cache warmups as separate step in CI/CD systems. Those usually don't have the target database available, and in general it's ugly that an early warmup needs a database connection.
Therefore, the field name quoting of SQL fragments is now no longer performed during TCA cache warmup, but instead directly done in places where those TCA keys are used to create the final queries.
Since extensions might rely on identifiers within these settings being properly
quoted, a feature flag called runtimeDbQuotingOfTcaConfiguration
is introduced
to revert to the old behaviour with TYPO3 v11.
Extension authors who access these TCA properties, which is quite unlikely, can use the feature flag to support both variants to ensure compatibility between TYPO3 v10, v11 and TYPO3 v12.
Starting with TYPO3 v12.0, this feature flag will be enabled at all times.