From 3806734716fc109397d3e0eebe9882443316f772 Mon Sep 17 00:00:00 2001 From: akshath <akshath.t@vtiger.com> Date: Fri, 30 Oct 2020 10:46:51 +0530 Subject: [PATCH] Fix for #1520 - Eliminate MySQL CAST on datetime columns when expected value type is datetime. --- .../QueryGenerator/EnhancedQueryGenerator.php | 4 ++-- include/QueryGenerator/QueryGenerator.php | 4 ++-- modules/CustomView/CustomView.php | 4 ++-- modules/Reports/ReportRun.php | 18 +++++++++--------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/QueryGenerator/EnhancedQueryGenerator.php b/include/QueryGenerator/EnhancedQueryGenerator.php index 5b139793b..67c7275c4 100644 --- a/include/QueryGenerator/EnhancedQueryGenerator.php +++ b/include/QueryGenerator/EnhancedQueryGenerator.php @@ -726,7 +726,7 @@ class EnhancedQueryGenerator extends QueryGenerator { $startDateValue = explode(' ', $values[0]); $endDateValue = explode(' ', $values[1]); if (count($startDateValue) == 2 && count($endDateValue) == 2) { - $fieldSql .= " CAST(CONCAT($dateFieldColumnName,' ',$timeFieldColumnName) AS DATETIME) $valueSql"; + $fieldSql .= " CONCAT($dateFieldColumnName,' ',$timeFieldColumnName) $valueSql"; } else { $fieldSql .= "$dateFieldColumnName $valueSql"; } @@ -736,7 +736,7 @@ class EnhancedQueryGenerator extends QueryGenerator { } $values = explode(' ', $value); if (count($values) == 2) { - $fieldSql .= "$fieldGlue CAST(CONCAT($dateFieldColumnName,' ',$timeFieldColumnName) AS DATETIME) $valueSql "; + $fieldSql .= "$fieldGlue CONCAT($dateFieldColumnName,' ',$timeFieldColumnName) $valueSql "; } else { $fieldSql .= "$fieldGlue $dateFieldColumnName $valueSql"; } diff --git a/include/QueryGenerator/QueryGenerator.php b/include/QueryGenerator/QueryGenerator.php index bafbd821a..3f452468e 100644 --- a/include/QueryGenerator/QueryGenerator.php +++ b/include/QueryGenerator/QueryGenerator.php @@ -799,7 +799,7 @@ class QueryGenerator { $startDateValue = explode(' ', $values[0]); $endDateValue = explode(' ', $values[1]); if(count($startDateValue) == 2 && count($endDateValue) == 2) { - $fieldSql .= " CAST(CONCAT($dateFieldColumnName,' ',$timeFieldColumnName) AS DATETIME) $valueSql"; + $fieldSql .= " CONCAT($dateFieldColumnName,' ',$timeFieldColumnName) $valueSql"; } else { $fieldSql .= "$dateFieldColumnName $valueSql"; } @@ -809,7 +809,7 @@ class QueryGenerator { } $values = explode(' ', $value); if(count($values) == 2) { - $fieldSql .= "$fieldGlue CAST(CONCAT($dateFieldColumnName,' ',$timeFieldColumnName) AS DATETIME) $valueSql "; + $fieldSql .= "$fieldGlue CONCAT($dateFieldColumnName,' ',$timeFieldColumnName) $valueSql "; } else { $fieldSql .= "$fieldGlue $dateFieldColumnName $valueSql"; } diff --git a/modules/CustomView/CustomView.php b/modules/CustomView/CustomView.php index af3ea9c50..d83ac0661 100644 --- a/modules/CustomView/CustomView.php +++ b/modules/CustomView/CustomView.php @@ -1182,9 +1182,9 @@ class CustomView extends CRMEntity { if ($this->customviewmodule == 'Calendar' && ($columns[1] == 'date_start' || $columns[1] == 'due_date')) { $tableColumnSql = ''; if ($columns[1] == 'date_start') { - $tableColumnSql = "CAST((CONCAT(date_start,' ',time_start)) AS DATETIME)"; + $tableColumnSql = "(CONCAT(date_start,' ',time_start))"; } else { - $tableColumnSql = "CAST((CONCAT(due_date,' ',time_end)) AS DATETIME)"; + $tableColumnSql = "(CONCAT(due_date,' ',time_end))"; } } else { $tableColumnSql = $columns[0] . "." . $columns[1]; diff --git a/modules/Reports/ReportRun.php b/modules/Reports/ReportRun.php index 0dc0f675c..b4515a308 100644 --- a/modules/Reports/ReportRun.php +++ b/modules/Reports/ReportRun.php @@ -541,7 +541,7 @@ class ReportRun extends CRMEntity { if ($module == 'Emails') { $columnSQL = "YEAR(cast(concat($emailTableName.date_start,' ',$emailTableName.time_start) as DATE)) AS Emails_Date_Sent_Year"; } else { - $columnSQL = "YEAR(cast(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start) as DATETIME)) AS Calendar_Start_Date_and_Time_Year"; + $columnSQL = "YEAR(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start)) AS Calendar_Start_Date_and_Time_Year"; } } else if ($selectedfields[0] == "vtiger_crmentity" . $this->primarymodule) { $columnSQL = "YEAR(vtiger_crmentity." . $selectedfields[1] . ") AS '" . decode_html($header_label) . "_Year'"; @@ -554,7 +554,7 @@ class ReportRun extends CRMEntity { if ($module == 'Emails') { $columnSQL = "MONTHNAME(cast(concat($emailTableName.date_start,' ',$emailTableName.time_start) as DATE)) AS Emails_Date_Sent_Month"; } else { - $columnSQL = "MONTHNAME(cast(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start) as DATETIME)) AS Calendar_Start_Date_and_Time_Month"; + $columnSQL = "MONTHNAME(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start)) AS Calendar_Start_Date_and_Time_Month"; } } else if ($selectedfields[0] == "vtiger_crmentity" . $this->primarymodule) { $columnSQL = "MONTHNAME(vtiger_crmentity." . $selectedfields[1] . ") AS '" . decode_html($header_label) . "_Month'"; @@ -567,7 +567,7 @@ class ReportRun extends CRMEntity { if ($module == 'Emails') { $columnSQL = "CONCAT('Week ',WEEK(cast(concat($emailTableName.date_start,' ',$emailTableName.time_start) as DATE), 1)) AS Emails_Date_Sent_Week"; } else { - $columnSQL = "CONCAT('Week ',WEEK(cast(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start) as DATETIME), 1)) AS Calendar_Start_Date_and_Time_Week"; + $columnSQL = "CONCAT('Week ',WEEK(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start), 1)) AS Calendar_Start_Date_and_Time_Week"; } } else if ($selectedfields[0] == "vtiger_crmentity" . $this->primarymodule) { $columnSQL = "CONCAT('Week ',WEEK(vtiger_crmentity." . $selectedfields[1] . ", 1)) AS '" . decode_html($header_label) . "_Week'"; @@ -580,7 +580,7 @@ class ReportRun extends CRMEntity { if ($module == 'Emails') { $columnSQL = "date_format(cast(concat($emailTableName.date_start,' ',$emailTableName.time_start) as DATE), '%M %Y') AS Emails_Date_Sent_Month"; } else { - $columnSQL = "date_format(cast(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start) as DATETIME), '%M %Y') AS Calendar_Start_Date_and_Time_Month"; + $columnSQL = "date_format(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start), '%M %Y') AS Calendar_Start_Date_and_Time_Month"; } } else if ($selectedfields[0] == "vtiger_crmentity" . $this->primarymodule) { $columnSQL = "date_format(vtiger_crmentity." . $selectedfields[1] . ", '%M %Y') AS '" . decode_html($header_label) . "_Month'"; @@ -593,7 +593,7 @@ class ReportRun extends CRMEntity { if ($module == 'Emails') { $columnSQL = "cast(concat($emailTableName.date_start,' ',$emailTableName.time_start) as DATE) AS Emails_Date_Sent"; } else { - $columnSQL = "cast(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start) as DATETIME) AS Calendar_Start_Date_and_Time"; + $columnSQL = "concat(vtiger_activity.date_start,' ',vtiger_activity.time_start) AS Calendar_Start_Date_and_Time"; } } else if ($selectedfields[0] == "vtiger_crmentity" . $this->primarymodule) { $columnSQL = "vtiger_crmentity." . $selectedfields[1] . " AS '" . decode_html($header_label) . "'"; @@ -608,7 +608,7 @@ class ReportRun extends CRMEntity { if ($module == 'Emails') { $columnSQL = "cast(concat($emailTableName.date_start,' ',$emailTableName.time_start) as DATE) AS Emails_Date_Sent"; } else { - $columnSQL = "cast(concat(vtiger_activity.date_start,' ',vtiger_activity.time_start) as DATETIME) AS Calendar_Start_Date_and_Time"; + $columnSQL = "concat(vtiger_activity.date_start,' ',vtiger_activity.time_start) AS Calendar_Start_Date_and_Time"; } } elseif (stristr($selectedfields[0], "vtiger_users") && ($selectedfields[1] == 'user_name')) { $temp_module_from_tablename = str_replace("vtiger_users", "", $selectedfields[0]); @@ -1079,7 +1079,7 @@ class ReportRun extends CRMEntity { $endDateTime = "DATE_FORMAT('$endDateTime', '%m%d')"; } else { if ($selectedFields[0] == 'vtiger_activity' && ($selectedFields[1] == 'date_start')) { - $tableColumnSql = 'CAST((CONCAT(date_start, " ", time_start)) AS DATETIME)'; + $tableColumnSql = '(CONCAT(date_start, " ", time_start))'; } else { if (empty($emailTableName)) { $tableColumnSql = $selectedFields[0] . '.' . $selectedFields[1]; @@ -1110,7 +1110,7 @@ class ReportRun extends CRMEntity { } if ($selectedFields[0] == 'vtiger_activity' && ($selectedFields[1] == 'date_start')) { - $tableColumnSql = 'CAST((CONCAT(date_start, " ", time_start)) AS DATETIME)'; + $tableColumnSql = '(CONCAT(date_start, " ", time_start))'; } else { if (empty($emailTableName)) { $tableColumnSql = $selectedFields[0] . '.' . $selectedFields[1]; @@ -1532,7 +1532,7 @@ class ReportRun extends CRMEntity { } else { if ($selectedfields[0] == 'vtiger_activity' && ($selectedfields[1] == 'date_start')) { $tableColumnSql = ''; - $tableColumnSql = "CAST((CONCAT(date_start,' ',time_start)) AS DATETIME)"; + $tableColumnSql = "(CONCAT(date_start,' ',time_start))"; } else { $tableColumnSql = $selectedfields[0] . "." . $selectedfields[1]; } -- GitLab