[BUGFIX] DBAL: Properly compile CAST statement after OR condition
[Packages/TYPO3.CMS.git] / typo3 / sysext / dbal / Classes / Database / SqlCompilers / Adodb.php
index 60e565c..b47de60 100644 (file)
@@ -347,7 +347,12 @@ class Adodb extends AbstractCompiler
                 } elseif (isset($v['func']) && $v['func']['type'] === 'EXISTS') {
                     $output .= ' ' . trim($v['modifier']) . ' EXISTS (' . $this->compileSELECT($v['func']['subquery']) . ')';
                 } else {
-                    if (isset($v['func']) && $v['func']['type'] === 'LOCATE') {
+                    if (isset($v['func']) && $v['func']['type'] === 'CAST') {
+                        $output .= ' ' . trim($v['modifier']);
+                        $output .= ' CAST(';
+                        $output .= ($v['func']['table'] ? $v['func']['table'] . '.' : '') . $v['func']['field'];
+                        $output .= ' AS ' . $v['func']['datatype'][0] . ')';
+                    } elseif (isset($v['func']) && $v['func']['type'] === 'LOCATE') {
                         $output .= ' ' . trim($v['modifier']);
                         switch (true) {
                             case $this->databaseConnection->runningADOdbDriver('mssql') && $functionMapping: