Skip to content

[5.2.2]: Some getValueSql database queries fail since update #15271

@robinbisping

Description

@robinbisping

What happened?

Description

Since the update to version 5.2.2, certain database queries that worked before fail. I verified that the queries were working with version 5.2.1.

One such query is:

{% set years = craft.entries()
    .section('issues')
    .select(
        craft.app.entries
            .getEntryTypeByHandle('issue')
            .getFieldLayout()
            .getFieldByHandle('issueYear')
            .getValueSql()
    )
    .distinct()
    .orderBy('issueYear DESC')
    .column() %}

It throws the following error:

QLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`16))`
FROM (SELECT `elements`.`id` AS `elementsId`, `elements_sites`.`id` AS `s' at line 1
The SQL being executed was: SELECT DISTINCT CAST((`elements_sites`.`content`->>'$.\"9a38f6db-7baa-4c66-b21b-46268af7ea8f\"') AS DECIMAL(65, `16))`
FROM (SELECT `elements`.`id` AS `elementsId`, `elements_sites`.`id` AS `siteSettingsId`
FROM `elements` `elements`
INNER JOIN `entries` `entries` ON `entries`.`id` = `elements`.`id`
INNER JOIN `elements_sites` `elements_sites` ON `elements_sites`.`elementId` = `elements`.`id`
WHERE (`entries`.`sectionId`=3) AND (((`elements`.`enabled`=TRUE) AND (`elements_sites`.`enabled`=TRUE)) AND (`entries`.`postDate` <= '2024-06-30 14:49:59') AND ((`entries`.`expiryDate` IS NULL) OR (`entries`.`expiryDate` > '2024-06-30 14:49:59'))) AND (`elements`.`archived`=FALSE) AND (`elements`.`dateDeleted` IS NULL) AND (`elements`.`draftId` IS NULL) AND (`elements`.`revisionId` IS NULL)
ORDER BY CAST((`elements_sites`.`content`->>'$.\"9a38f6db-7baa-4c66-b21b-46268af7ea8f\"') AS DECIMAL(65,16)) DESC) `subquery`
INNER JOIN `elements` `elements` ON `elements`.`id` = `subquery`.`elementsId`
INNER JOIN `elements_sites` `elements_sites` ON `elements_sites`.`id` = `subquery`.`siteSettingsId`
INNER JOIN `entries` `entries` ON `entries`.`id` = `subquery`.`elementsId`
ORDER BY CAST((`elements_sites`.`content`->>'$.\"9a38f6db-7baa-4c66-b21b-46268af7ea8f\"') AS DECIMAL(65,16)) DESC

Craft CMS version

5.2.2

PHP version

No response

Operating system and version

No response

Database type and version

MySQL

Image driver and version

No response

Installed plugins and versions

No response

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions